summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjc_gargma <jc_gargma@iserlohn-fortress.net>2021-04-16 17:39:43 -0700
committerjc_gargma <jc_gargma@iserlohn-fortress.net>2021-04-16 17:39:43 -0700
commit0023b78e624bc9771449ef59a1255c99c0c6ecc6 (patch)
treeb90d8e9bc38f3865776b4cdd3e5892e085e3d8e5
parentAdd patch for gynoid and vampire custom traits (diff)
downloadcataclysm-bn-0023b78e624bc9771449ef59a1255c99c0c6ecc6.tar.xz
Add Map Note colours patch
Upgrade custom patch for vampires Fix 300BLK subsonic ammo name Update PKGBUILD
-rw-r--r--0.F_backport-map-note-colours.patch347
-rw-r--r--0003-inconsistent-ammo-names.patch11
-rw-r--r--PKGBUILD36
-rw-r--r--custom.patch133
4 files changed, 516 insertions, 11 deletions
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",