From 0023b78e624bc9771449ef59a1255c99c0c6ecc6 Mon Sep 17 00:00:00 2001 From: jc_gargma Date: Fri, 16 Apr 2021 17:39:43 -0700 Subject: Add Map Note colours patch Upgrade custom patch for vampires Fix 300BLK subsonic ammo name Update PKGBUILD --- 0.F_backport-map-note-colours.patch | 347 ++++++++++++++++++++++++++++++++++++ 0003-inconsistent-ammo-names.patch | 11 ++ PKGBUILD | 36 ++-- custom.patch | 133 ++++++++++++++ 4 files changed, 516 insertions(+), 11 deletions(-) create mode 100644 0.F_backport-map-note-colours.patch diff --git a/0.F_backport-map-note-colours.patch b/0.F_backport-map-note-colours.patch new file mode 100644 index 0000000..fceec60 --- /dev/null +++ b/0.F_backport-map-note-colours.patch @@ -0,0 +1,347 @@ +--- a/data/json/overmap/map_extras.json ++++ b/data/json/overmap/map_extras.json +@@ -12,8 +12,8 @@ + "name": "Crater", + "description": "There is a crater here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_crater" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "o", ++ "color": "red", + "autonote": true + }, + { +@@ -32,8 +32,8 @@ + "name": "College Kids", + "description": "Several corpses of college kids are here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_collegekids" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "c", ++ "color": "light_red", + "autonote": true + }, + { +@@ -42,8 +42,8 @@ + "name": "Drug Deal", + "description": "Several corpses of drug dealers are here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_drugdeal" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "d", ++ "color": "light_red", + "autonote": true + }, + { +@@ -52,7 +52,7 @@ + "name": "Roadworks", + "description": "Roadworks are here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_roadworks" }, +- "sym": "x", ++ "sym": "X", + "color": "yellow", + "autonote": true + }, +@@ -62,8 +62,8 @@ + "name": "Road Mayhem", + "description": "Road mayhem is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_mayhem" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "M", ++ "color": "light_red", + "autonote": true + }, + { +@@ -72,8 +72,8 @@ + "name": "Roadblock (Military)", + "description": "This road is blocked by military.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_roadblock" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "X", ++ "color": "red", + "autonote": true + }, + { +@@ -82,8 +82,8 @@ + "name": "Roadblock (Bandits)", + "description": "This road is blocked by bandits.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_bandits_block" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "X", ++ "color": "red", + "autonote": true + }, + { +@@ -92,8 +92,8 @@ + "name": "Minefield", + "description": "Mines are scattered here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_minefield" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "M", ++ "color": "red", + "autonote": true + }, + { +@@ -102,7 +102,7 @@ + "name": "Supply Drop", + "description": "Several supply crates were dropped here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_supplydrop" }, +- "sym": "x", ++ "sym": "C", + "color": "yellow", + "autonote": true + }, +@@ -112,8 +112,8 @@ + "name": "Military", + "description": "Several corpses of soldiers are here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_military" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "m", ++ "color": "light_red", + "autonote": true + }, + { +@@ -122,8 +122,8 @@ + "name": "Helicopter Crash", + "description": "Helicopter crashed here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_helicopter" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "X", ++ "color": "light_blue", + "autonote": true + }, + { +@@ -132,8 +132,8 @@ + "name": "Scientists", + "description": "Several corpses of scientists are here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_science" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "s", ++ "color": "light_red", + "autonote": true + }, + { +@@ -142,8 +142,8 @@ + "name": "Portal", + "description": "Portal is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_portal" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "P", ++ "color": "magenta", + "autonote": true + }, + { +@@ -152,8 +152,8 @@ + "name": "Portal In", + "description": "Another portal is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_portal_in" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "P", ++ "color": "magenta", + "autonote": true + }, + { +@@ -162,8 +162,8 @@ + "name": "Anomaly", + "description": "Some anomaly is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_anomaly" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "O", ++ "color": "light_red", + "autonote": true + }, + { +@@ -172,7 +172,7 @@ + "name": "Spider Nest", + "description": "Spider nest is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_house_spider" }, +- "sym": "x", ++ "sym": "S", + "color": "yellow", + "autonote": true + }, +@@ -182,7 +182,7 @@ + "name": "Wasp Nest", + "description": "Wasp nest is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_house_wasp" }, +- "sym": "x", ++ "sym": "W", + "color": "yellow", + "autonote": true + }, +@@ -192,7 +192,7 @@ + "name": "Spiders", + "description": "This area is covered with webs. Probably spiders are nearby", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_spider" }, +- "sym": "x", ++ "sym": "S", + "color": "yellow", + "autonote": true + }, +@@ -202,8 +202,8 @@ + "name": "Shia LaBeouf", + "description": "Cannibal is nearby.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_shia" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "c", ++ "color": "red", + "autonote": true + }, + { +@@ -212,8 +212,8 @@ + "name": "Jabberwock", + "description": "Jabberwock is nearby.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_jabberwock" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "J", ++ "color": "red", + "autonote": true + }, + { +@@ -222,8 +222,8 @@ + "name": "Grove", + "description": "This area is covered with a single type of trees.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_grove" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "F", ++ "color": "light_green", + "autonote": true + }, + { +@@ -232,8 +232,8 @@ + "name": "Shrubberry", + "description": "This area is covered with a single type of shrubs.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_shrubbery" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "s", ++ "color": "light_green", + "autonote": true + }, + { +@@ -242,8 +242,8 @@ + "name": "Clearcut", + "description": "Most trees in this area were uniformly cut down.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_clearcut" }, +- "sym": "x", +- "color": "yellow", ++ "sym": ".", ++ "color": "brown", + "autonote": true + }, + { +@@ -252,8 +252,8 @@ + "name": "Pond", + "description": "Small pond is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_pond" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "p", ++ "color": "blue", + "autonote": true + }, + { +@@ -283,8 +283,8 @@ + "name": "Clay Deposit", + "description": "Small clay deposit is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_clay_deposit" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "c", ++ "color": "brown", + "autonote": true + }, + { +@@ -293,8 +293,8 @@ + "name": "Dead Vegetation", + "description": "Dead vegetation is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_dead_vegetation" }, +- "sym": "x", +- "color": "yellow", ++ "sym": ".", ++ "color": "brown", + "autonote": true + }, + { +@@ -303,8 +303,8 @@ + "name": "Dead Vegetation (Point)", + "description": "Dead vegetation is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_point_dead_vegetation" }, +- "sym": "x", +- "color": "yellow", ++ "sym": ".", ++ "color": "brown", + "autonote": true + }, + { +@@ -313,7 +313,7 @@ + "name": "Burned Ground", + "description": "Burned ground is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_burned_ground" }, +- "sym": "x", ++ "sym": ".", + "color": "yellow", + "autonote": true + }, +@@ -323,7 +323,7 @@ + "name": "Burned Ground (Point)", + "description": "Burned ground is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_point_burned_ground" }, +- "sym": "x", ++ "sym": ".", + "color": "yellow", + "autonote": true + }, +@@ -333,8 +333,8 @@ + "name": "Marloss Pilgrimage", + "description": "Marloss Pilgrimage is here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_marloss_pilgrimage" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "F", ++ "color": "dark_gray", + "autonote": true + }, + { +@@ -343,7 +343,7 @@ + "name": "Casings", + "description": "Several spent casings are here.", + "generator": { "generator_method": "map_extra_function", "generator_id": "mx_casings" }, +- "sym": "x", ++ "sym": "C", + "color": "yellow", + "autonote": true + }, +@@ -367,7 +367,7 @@ + "name": "Wasp Nest", + "description": "A wasp nest.", + "generator": { "generator_method": "update_mapgen", "generator_id": "mx_nest_wasp" }, +- "sym": "x", ++ "sym": "W", + "color": "yellow", + "autonote": true + }, +@@ -377,8 +377,8 @@ + "name": "Dermatik Nest", + "description": "A dermatik nest.", + "generator": { "generator_method": "update_mapgen", "generator_id": "mx_nest_dermatik" }, +- "sym": "x", +- "color": "yellow", ++ "sym": "D", ++ "color": "brown", + "autonote": true + }, + { diff --git a/0003-inconsistent-ammo-names.patch b/0003-inconsistent-ammo-names.patch index ed5528b..b9bf3e8 100644 --- a/0003-inconsistent-ammo-names.patch +++ b/0003-inconsistent-ammo-names.patch @@ -29,6 +29,17 @@ "proportional": { "price": 0.7, "damage": 0.9, "dispersion": 1.1 }, "extend": { "effects": [ "RECYCLED" ] }, "delete": { "effects": [ "NEVER_MISFIRES" ] } +--- a/data/json/items/ammo/300blk.json ++++ b/data/json/items/ammo/300blk.json +@@ -26,7 +26,7 @@ + "id": "300blk_ss", + "copy-from": "300blk", + "type": "AMMO", +- "name": { "str": ".300 AAC Blackout" }, ++ "name": { "str": ".300 AAC Blackout SS" }, + "description": "A subsonic .300 AAC Blackout round with a 220gr open tip match bullet. 300 BLK is an intermediate cartridge necked up from 5.56x45mm, designed to achieve similar ballistics to 7.62x39mm. It is compatible with standard AR-15 lower receivers and will feed from STANAG magazines.", + "weight": "21 g", + "range": 40, --- a/data/json/items/ammo/308.json +++ b/data/json/items/ammo/308.json @@ -26,7 +26,7 @@ diff --git a/PKGBUILD b/PKGBUILD index 8a7d502..2e5cb32 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -13,7 +13,7 @@ pkgname=(cataclysm-dda cataclysm-dda-tiles) pkgname=cataclysm-dda pkgver=0.E.3 _pkgver=0.E-3 -pkgrel=1.23 +pkgrel=2.1 pkgdesc="A post-apocalyptic roguelike." #url="http://cataclysmrl.blogspot.com/" #url="http://www.cataclysm.glyphgryph.com/" @@ -21,7 +21,7 @@ pkgdesc="A post-apocalyptic roguelike." url="https://cataclysmdda.org/" arch=('x86_64' 'aarch64') license=("CCPL:by-sa") -depends=('ncurses' 'lua' 'hicolor-icon-theme' 'gettext') +depends=('ncurses' 'hicolor-icon-theme' 'gettext') makedepends=('sdl2_image' 'sdl2_ttf' 'sdl2_mixer' 'freetype2' 'astyle') source=("$pkgname-$_pkgver.tar.gz::https://github.com/CleverRaven/Cataclysm-DDA/archive/$_pkgver.tar.gz" "cataclysm-dda.desktop" @@ -30,6 +30,7 @@ source=("$pkgname-$_pkgver.tar.gz::https://github.com/CleverRaven/Cataclysm-DDA/ "0.F_backport-vehicle-heater-cooler-intensity-reduced.patch" "0.F_backport-tacoma-barn-door-position.patch" "0.F_backport-make-firestation-shelter-wells-npc-drinkable.patch" + "0.F_backport-map-note-colours.patch" "0001-quiverfull-house-correct-stairs.patch" "0002-ankle-ammo-pouch-is-not-a-backpack.patch" @@ -61,9 +62,10 @@ b2sums=('7a825d8ce8827ccb45afb6005d4f33c6810e33e2fa375f2f7d1c878565fd61e00362e0d '3659d59eec3167bdb647cb622f15fe899516980ac92972393589574db23a580368b449812ec75ec74cfb86082a1c12896fc9f26b7c16c36ed9ad8506d41eac67' 'ce0dd5121e814e0fcd79d68362c80a83bfe70f970be9d5d6f6fe5f6a56ed3f041be4d560aaf02225c3ce7c457dc63bc3adf0709d4b89a81c18184ff5341eb5d3' '2cdcf9ab03eb92f384caf1a2d90f82c75f880cb6286811e83217c883e421c116e7844ca193a010dc35e12eec46ede3663171a2f45f660ef5a8be95c474f61bfc' + 'd429bdf583ba6a69814f3a33a983650bcaa61b8edaed6560491972478515adb996482af248b10df8b4435bfad487ecba6c2ca0a249a4daee54994117a2742055' '8232c6a10fd1f608304982ae7f03eb8afc663be76cdc00aee46ecb58de838e21fdc8673841266ccd00153263f7b15b59dcd1fc6ece86834509d7ccb2cacf08fa' 'af47a9372ba990bc97d17362c8d89847177e6cbefaa241c23bcdc670ef29d82bf150983f4c730753cabaa77a01f8e966307831cdc192a92237d5f3e8e6599d2b' - 'd6b6e3572edb886eb721c50bd0e00ba110c7b226c94948189be63d5fa765cfa0785f2c5f8ffd9ce8b68f327ae20e9a1d419ad2857f5af7c069c4b8ba3ef99ac0' + '3c180b3b8fed46a1f4bfd357fee3b8b541f1c86b073bbc6215ed0e4298a8d9c7527fda028227d0695c045d2198839d7042544a3467d6f8733e9ddabe884e3c2b' 'b8a64accada87ee5be989c5307805610c9b5c0327bc107aab237ac3225dd9e4c51b6c79a2a7de15fe187d3c32d7cbe1c462f9b0e9fb5d5a55a74236c7061e96e' '85aeb5920ee5879848be4057324153a077fe907bed527ed8f9b80a3c5ee1ef64786f63ee2999f5ba74e80a43e99ded3280ce27759c1f7b73259a6e2b5e584aa8' '58a94409205f7b670ab5745b8cbc234a38efd6a6217cef4efb7e397f091092e3e0c7790706b0a42accaa83d7509b8e244a98b9f0ba78349ee85f3164745c3501' @@ -77,7 +79,7 @@ b2sums=('7a825d8ce8827ccb45afb6005d4f33c6810e33e2fa375f2f7d1c878565fd61e00362e0d 'b256081baa22b6c0f2a56c4151393146451fe119cd724fc4d883331643e420348e6e6c54c4f32e34d287090e917f9223cac23b6275677e4c3d23cf4b38229904' 'ce82294e480ad42f0001c799fd8131b60024b6097653f3c57564c75e54596616e376f0d7f1cf4e54d8c302a61ef164b4323f795bfa19b2c13ab9e927d37f1600' 'd723fcc6cce65aa296bc519a07a5d003122ad698a73a3d046dac3780ea5a00fef28f78da251bb46f80f2e0577baa26a6ae13cabf525f22a7a742435e95716dae' - 'fc03723f95c83016594930e76dd585487033075d6a677dc9ee52c9ea0d280cfdc238f43179cd5a313aaab119c40e3a9fc167767b15b27ec8a87e88b1194a0284' + 'ad4e4626e1e3358059c7023eff0ac38ca5e05eb4ff86449a649fc25c88c3ce4bc27bef317b62fe42398ae24845d109a4f77aad2ed3eb9e18f2388fe9ee87368f' 'b6a6c9c1791bc625b773aa1d0b90f98f0821aa06807353f1c179cbbb9090391e9ab7fe8d567a029bcf94dddf31c40d3e525d1033d2de81520726c0e69021f278' 'f54bb10b6c5920b22942b1e312c315280afb720d3a897dce9333563cae3343668460d24b7d01bf36768974c729d92177e886f5ee0d22d746b19454a2ab6208fb' 'b9309da09b165fb57e83f84e3584d2479bd3336ed86e181e5df2d27daa92bd55d03d7f3fc226f03696af5f0f32d8e0e7ecd26ae7e50eed0200d0b0feaad07efb') @@ -86,7 +88,6 @@ prepare() { cd "Cataclysm-DDA-$_pkgver" sed -i 's/-Werror//' Makefile sed -i 's/ncursesw5-config/ncursesw6-config/' Makefile - #sed -i 's|"\(l.*h\)"|"lua5.1/\1"|' src/catalua.{h,cpp} sed -i 's/shell git/shell false/' Makefile sed -i 's/-Os/-O3/' Makefile @@ -101,6 +102,9 @@ prepare() { # Fix npcs unable to drink from firestation and shelter basecamps wells patch -Np1 -i "$srcdir"/0.F_backport-make-firestation-shelter-wells-npc-drinkable.patch + # Map note colour and symbols + patch -Np1 -i "$srcdir"/0.F_backport-map-note-colours.patch + # Various other fixes for bugs I came across # Fix Quiverfull house to have the correct stairs that modify json @@ -168,15 +172,15 @@ build() { # tests "ifdef TILES" so "TILES=0" will enable tiles! # DYNAMIC_LINKING appears to be a windows flag? - make PREFIX=/usr RELEASE=1 USE_XDG_DIR=1 BACKTRACE=0 LTO=1 - make PREFIX=/usr RELEASE=1 USE_XDG_DIR=1 BACKTRACE=0 LTO=1 TILES=1 SOUND=1 - #LUA_BINARY="/usr/bin/lua5.1" + make PREFIX=/usr RELEASE=1 USE_XDG_DIR=1 BACKTRACE=0 ZLEVELS=1 LTO=1 LOCALIZE=1 LANGUAGES=all + make PREFIX=/usr RELEASE=1 USE_XDG_DIR=1 BACKTRACE=0 ZLEVELS=1 LTO=1 LOCALIZE=1 LANGUAGES=all TILES=1 SOUND=1 + ./lang/compile_mo.sh } package_cataclysm-dda() { cd "Cataclysm-DDA-$_pkgver" - make DESTDIR="$pkgdir" PREFIX="/usr" RELEASE=1 USE_HOME_DIR=1 install + make DESTDIR="$pkgdir" PREFIX="/usr" RELEASE=1 ZLEVELS=1 USE_HOME_DIR=1 LTO=1 LOCALIZE=1 LANGUAGES=all install # Docs install -d "$pkgdir/usr/share/doc/cataclysm-dda" @@ -185,10 +189,20 @@ package_cataclysm-dda() { rm "$pkgdir/usr/share/doc/cataclysm-dda/JSON_LOADING_ORDER.md" cp --reflink 'data/json/LOADING_ORDER.md' "$pkgdir/usr/share/doc/cataclysm-dda/JSON_LOADING_ORDER.md" - # License install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE" + # Languages + cd lang/mo + for i in *; do + install -d "${pkgdir}/usr/share/locale/${i}/LC_MESSAGES" + cp "${i}/LC_MESSAGES/cataclysm-dda.mo" "${pkgdir}/usr/share/locale/${i}/LC_MESSAGES" + done + + # Help + cd ./../.. + cp -r --no-preserve=ownership "./data/help" "${pkgdir}/usr/share/${pkgname}/" + # install -Dm644 "${srcdir}/${pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop" } @@ -197,7 +211,7 @@ package_cataclysm-dda-tiles() { depends=('cataclysm-dda' 'sdl2_image' 'sdl2_ttf' 'freetype2' 'sdl2_mixer') cd "Cataclysm-DDA-$_pkgver" - make DESTDIR="$pkgdir" PREFIX="/usr" RELEASE=1 TILES=1 SOUND=1 install + make DESTDIR="$pkgdir" PREFIX="/usr" RELEASE=1 ZLEVELS=1 TILES=1 SOUND=1 LTO=1 LOCALIZE=1 LANGUAGES=all install # Icon install -D 'data/osx/AppIcon.iconset/icon_128x128.png' "$pkgdir/usr/share/icons/hicolor/128x128/apps/$pkgname.png" diff --git a/custom.patch b/custom.patch index ccac036..7b05905 100644 --- a/custom.patch +++ b/custom.patch @@ -19,3 +19,136 @@ oxygen--; } if( oxygen < 12 && worn_with_flag( "REBREATHER" ) ) { +--- a/src/character.cpp ++++ b/src/character.cpp +@@ -251,6 +251,7 @@ + static const trait_id trait_THRESH_INSECT( "THRESH_INSECT" ); + static const trait_id trait_THRESH_PLANT( "THRESH_PLANT" ); + static const trait_id trait_THRESH_SPIDER( "THRESH_SPIDER" ); ++static const trait_id trait_THRESH_VAMP( "THRESH_VAMP" ); + static const trait_id trait_TRANSPIRATION( "TRANSPIRATION" ); + static const trait_id trait_URSINE_EYE( "URSINE_EYE" ); + static const trait_id trait_VISCOUS( "VISCOUS" ); +@@ -4775,7 +4775,7 @@ + + void Character::update_bodytemp() + { +- if( has_trait( trait_DEBUG_NOTEMP ) ) { ++ if( has_trait( trait_DEBUG_NOTEMP ) || has_trait( trait_THRESH_VAMP ) ) { + temp_cur.fill( BODYTEMP_NORM ); + temp_conv.fill( BODYTEMP_NORM ); + return; +--- a/src/map_field.cpp ++++ b/src/map_field.cpp +@@ -87,6 +87,7 @@ + static const trait_id trait_M_SKIN3( "M_SKIN3" ); + static const trait_id trait_THRESH_MARLOSS( "THRESH_MARLOSS" ); + static const trait_id trait_THRESH_MYCUS( "THRESH_MYCUS" ); ++static const trait_id trait_THRESH_VAMP( "THRESH_VAMP" ); + static const trait_id trait_WEB_WALKER( "WEB_WALKER" ); + + void map::create_burnproducts( const tripoint &p, const item &fuel, const units::mass &burned_mass ) +@@ -1524,7 +1525,8 @@ + if( ( cur.get_field_intensity() > 1 || !one_in( 3 ) ) && ( !inside || one_in( 3 ) ) ) { + u.add_env_effect( effect_teargas, bp_mouth, 5, 20_seconds ); + } +- if( cur.get_field_intensity() > 1 && ( !inside || one_in( 3 ) ) ) { ++ if( !( u.has_trait( trait_THRESH_VAMP ) ) && cur.get_field_intensity() > 1 && ( !inside || ++ one_in( 3 ) ) ) { + u.add_env_effect( effect_blind, bp_eyes, cur.get_field_intensity() * 2, 10_seconds ); + } + } +@@ -1651,8 +1653,8 @@ + // The gas won't harm you inside a vehicle. + if( !inside ) { + // Full body suits protect you from the effects of the gas. +- if( !( u.worn_with_flag( flag_GAS_PROOF ) && u.get_env_resist( bp_mouth ) >= 15 && +- u.get_env_resist( bp_eyes ) >= 15 ) ) { ++ if( !( u.has_trait( trait_THRESH_VAMP ) ) && !( u.worn_with_flag( flag_GAS_PROOF ) && ++ u.get_env_resist( bp_mouth ) >= 15 && u.get_env_resist( bp_eyes ) >= 15 ) ) { + const int intensity = cur.get_field_intensity(); + bool inhaled = u.add_env_effect( effect_poison, bp_mouth, 5, intensity * 1_minutes ); + if( u.has_trait( trait_THRESH_MYCUS ) || u.has_trait( trait_THRESH_MARLOSS ) || +--- a/data/json/field_type.json ++++ b/data/json/field_type.json +@@ -303,7 +303,7 @@ + "dirty_transparency_cache": true, + "percent_spread": 10, + "outdoor_age_speedup": "0 turns", +- "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 7 ] ] }, ++ "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 7 ] ], "traits": [ "THRESH_VAMP" ] }, + "priority": 8, + "half_life": "2 minutes", + "phase": "gas", +@@ -389,7 +389,7 @@ + "outdoor_age_speedup": "3 minutes", + "dirty_transparency_cache": true, + "has_fume": true, +- "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ] }, ++ "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ], "traits": [ "THRESH_VAMP" ] }, + "priority": 8, + "half_life": "10 minutes", + "phase": "gas", +@@ -418,7 +418,7 @@ + "outdoor_age_speedup": "0 turns", + "dirty_transparency_cache": true, + "has_fume": true, +- "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ] }, ++ "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ], [ "EYES", 15 ] ], "traits": [ "THRESH_VAMP" ] }, + "priority": 8, + "half_life": "5 minutes", + "phase": "gas", +@@ -464,7 +464,7 @@ + "wandering_field": "fd_toxic_gas", + "gas_absorption_factor": 15, + "dirty_transparency_cache": true, +- "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ] }, ++ "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ], "traits": [ "THRESH_VAMP" ] }, + "phase": "gas", + "display_items": false, + "display_field": true, +@@ -956,7 +956,7 @@ + "outdoor_age_speedup": "5 minutes", + "dirty_transparency_cache": true, + "has_fume": true, +- "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ] }, ++ "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ], "traits": [ "THRESH_VAMP" ] }, + "priority": 8, + "half_life": "50 minutes", + "phase": "gas", +@@ -978,7 +978,7 @@ + "outdoor_age_speedup": "1 minutes", + "dirty_transparency_cache": true, + "has_fume": true, +- "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ] }, ++ "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ], "traits": [ "THRESH_VAMP" ] }, + "priority": 8, + "half_life": "15 minutes", + "phase": "gas", +@@ -1233,7 +1233,7 @@ + "outdoor_age_speedup": "3 minutes", + "dirty_transparency_cache": true, + "has_fume": true, +- "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ] }, ++ "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ], "traits": [ "THRESH_VAMP" ] }, + "priority": 8, + "half_life": "10 minutes", + "phase": "gas" +@@ -1253,7 +1253,7 @@ + "outdoor_age_speedup": "1 minutes", + "dirty_transparency_cache": true, + "has_fume": true, +- "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ] }, ++ "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ], "traits": [ "THRESH_VAMP" ] }, + "priority": 8, + "half_life": "30 minutes", + "phase": "gas", +@@ -1275,7 +1275,7 @@ + "outdoor_age_speedup": "1 minutes", + "dirty_transparency_cache": true, + "has_fume": true, +- "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ] }, ++ "immunity_data": { "body_part_env_resistance": [ [ "MOUTH", 15 ] ], "traits": [ "THRESH_VAMP" ] }, + "priority": 8, + "half_life": "30 minutes", + "phase": "gas", -- cgit v1.2.1