summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjc_gargma <jc_gargma@iserlohn-fortress.net>2023-03-31 15:24:27 -0700
committerjc_gargma <jc_gargma@iserlohn-fortress.net>2023-03-31 15:24:27 -0700
commitdfba5ebe5b6e93c54964b757419779d8b89e4322 (patch)
tree8f95344c4651b57a11796bf06cef0fb587b81017
parentMore npc dialogue fixes. (diff)
downloadcataclysm-bn-dfba5ebe5b6e93c54964b757419779d8b89e4322.tar.xz
Updated to 2023-03-31-1439
Add v29 copy-from fix. Add more reverts.
-rw-r--r--PKGBUILD37
-rw-r--r--ammo-11_fix-volume-40mm.patch (renamed from ammo-11_fix-volumeless-40mm.patch)12
-rw-r--r--foods-01_fix-food-materials.patch22
-rw-r--r--revert-09_undo-yet-more-ammo-balancing.patch6
-rw-r--r--revert-11_Obsoletion-and-removal-of-useless-bathroom-fluff-247.patch514
-rw-r--r--weapon-01_fix-v29-copy-from.patch11
6 files changed, 560 insertions, 42 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 57467cd..42c69ed 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -15,8 +15,8 @@ pkgbase=cataclysm-bn
pkgname=(cataclysm-bn cataclysm-bn-tiles)
pkgname=cataclysm-bn
_pkgname=Cataclysm-BN-cbn-experimental
-pkgver=202303170510
-_pkgver=2023-03-17-0510
+pkgver=202303311439
+_pkgver=2023-03-31-1439
pkgrel=1
pkgdesc="A post-apocalyptic roguelike."
#url="http://cataclysmrl.blogspot.com/"
@@ -42,6 +42,7 @@ source=("$pkgname-$_pkgver.tar.gz::https://github.com/cataclysmbnteam/Cataclysm-
"revert-08_undo-rifle-balance-pass.patch"
"revert-09_undo-yet-more-ammo-balancing.patch"
"revert-10_still-another-ammo-patch-to-undo.patch"
+ "revert-11_Obsoletion-and-removal-of-useless-bathroom-fluff-247.patch"
"ammo-01_inconsistent-ammo-names.patch"
"ammo-02_fix-20x66mm-loudness.patch"
@@ -49,7 +50,7 @@ source=("$pkgname-$_pkgver.tar.gz::https://github.com/cataclysmbnteam/Cataclysm-
"ammo-05_22-casings-can-stack.patch"
"ammo-06_fix-bp-scrap-not-being-bp.patch"
"ammo-10_ammo-order-fix.patch"
- "ammo-11_fix-volumeless-40mm.patch"
+ "ammo-11_fix-volume-40mm.patch"
"armor-01_ankle-ammo-pouch-is-not-a-backpack.patch"
"armor-02_fix-survivor-fingerless-gloves-warmth.patch"
@@ -118,6 +119,8 @@ source=("$pkgname-$_pkgver.tar.gz::https://github.com/cataclysmbnteam/Cataclysm-
"vehicles-02_fix-fbi-car-name.patch"
"vehicles-03_black-box-can-be-installed.patch"
+ "weapon-01_fix-v29-copy-from.patch"
+
"etc-01_fix-rubbersplosion.patch"
"etc-02_add-missing-price-postapoc.patch"
@@ -139,7 +142,7 @@ source=("$pkgname-$_pkgver.tar.gz::https://github.com/cataclysmbnteam/Cataclysm-
"cataclysm-dda-soundpack_jcsoundpack.tar.xz::https://library.iserlohn-fortress.net/cataclysm-dda-soundpack_jcsoundpack.git/snapshot/cataclysm-dda-soundpack_jcsoundpack-master.tar.xz"
"cataclysm-dda-musicpack_coag-musicpack.tar.xz::https://library.iserlohn-fortress.net/cataclysm-dda-musicpack_coag-musicpack.git/snapshot/cataclysm-dda-musicpack_coag-musicpack-master.tar.xz"
)
-b2sums=('3c03c7e52c9eb10a12644d8e7b57f9513ff22ec556a08617702dbfa54dcca562b994e9df1207856748565e3e300e28cbe4b30f3231815a318831e2f1e01c347a'
+b2sums=('38723251ffd0c94bfd2a7a6abee749d0104c0ac1a0c1ce14a9c41bae647e130836074388552c425ff150dcc9add1f3bb629e4409248e9e14d80b16cfd9890a01'
'069ecde58859b3d44cd687c4b6e718610cefb693ff86e66f199ebfb1b3072023ad2b6f0c28e27ef9c1ce4997f6a5b2ca0d45046996b3ff35a4aeaeb1a7cf9421'
'ad88bc6c1e3c8183a313b5eec42f98d6956afea349feff34a86e4536c9921fa99d2594282caf27de8ebb7ffb56376ed2e76d572227bfd6d8173c7bb1f01e23b8'
'6f70e90359a14e4839d9a2683debb88850e5dd387add911ad68fd87e5512cfcdd435da63e1e370358153673fd5a72a9b1e9c94f1979edb7948b4da8c82407bad'
@@ -150,15 +153,16 @@ b2sums=('3c03c7e52c9eb10a12644d8e7b57f9513ff22ec556a08617702dbfa54dcca562b994e9d
'2d197903715263628e767e867e9b20b9ebd3d85f8983ac8f1e2b534f2b6f8c0470886c79a409f117ad43348aa6aef2a6298925ae27faa32814183ad7677528ac'
'd6ab568373c3bae4d99e7ef1c80e1c8b1c0e4256610919d3d060d71c202dd40597ea1230b4c00c6ef04960a0da2aa436970943b94e6276725be0bb9d865508f7'
'0ac92184f85d8b3dceee4a210b2f7f367aeb14c609d468e87205d0eb630e1b6bad6903b863ea61c3a032b665b2316871b6c70aa8508c604a7237a378fae39d92'
- '419447e88cf9860383d14b7f80c6ef8ca4a8ab0421d84b06794c57711ae919e5e3b82aeb15ad33a5a997f9e06aa6389a1887aacfd74036043f7e4f7526ab3658'
+ 'd62bcb01bcb2934bf405e205a511bd076bc793bb8699dd205a5441afddfe8bbb161f7925de8294c51a528318155af4d2261e2ca2a7a2614d22053d5bbe4359a1'
'1950d2cacc8697b3f0602f3eb232744fd0f7de4489b7747089abfa8784ec9e4433db4dcdf925d0bc37686ee14d607dcd5345e3db5b5b155a6208bde8b1706e23'
+ '80e2ee7966c8e2218f8d2df0a1aa9a3c1512682aa437423892efa7d43a45e51fa71f678e993f6cb9d090470fac73b7e49326df548b638384b20d1224577775a4'
'ea9e227eff0a9470a06effc35d8e991c0e21d5521e0325317ab36760b5bb3256676fee29dd948fcc7f4b09ce9235c2d859cd22d6839ebf14deb369cdf97b20f0'
'6dbcf4833dabb68443e50a644cc26309785593f757f7484771a101873aeb02d2e8f3869c0679132a6883ea86bd5fd47494281d0f70dcae9f4bec9b06a7d69b19'
'124893f23b7d865709fa87a9fade8fb01e596c1f31b0811ab32d5e730e1101c62af672eaf5fe9cdefa338fc25164407023f4c7dcc7cacdb0c86b4713180d345d'
'67cdb7e097bbb46da5cf04708bc2858b080d1a85742afc4c088da3e4e3fdeb6e4c51240fc5a6b9a1c7d927b30b3d251236e025ee4e5496142a7716d4ba51b82c'
'2ebc9d61438ef1439a3dcfae7e56f2f4cb1d4410faadd2e018359b6c4711abdcd474f2eeb2d23e531a523caea19ec40d820b60c0b8cdaf04223ca9eed1119ec7'
'373186c55545b4e747c08db497dae0f1446d2830c862a1b8a0d1bd03d237acc9a4fa8854537c0f485528fc0ef05ec6a2f5e43a42c21689dd85178fb07667b51b'
- 'ba860f72c4ea0bb4365b2e96849c0cd640cc58b6757260045deba75b9077aeb210819cf7286e95dbbc040b838cd56ba15a799e1f34ee5d4d17f4a0fe1c40cda9'
+ '5dd5cb90aab682dfad9c46b1fcbe93294b4d9e40f4c3f30a917b25081f7cfc66baa60adbb81584d622f099761eba0eda8f46d6e49df1f82ec3c50a2da61836b3'
'0884229f513f843099dbd397d96fd8b37aad2d1ae0aee2771f57f54188241d6ed0ede8750780b9564bd9e3dc8d215039d409081a8eb46ce25b90edb196eb6bf4'
'f4ad4c90cfcf11af42c6cfc6d2027b21af3f58ac274b9bd0852a52ef60b606476766f194b281f6baf12f81647b384a98f745519bb48bc2e4f5fe03984c7c0e65'
'172c611008cb8893a8a8cbf83ef929f5727fbf341f3303c6f38749e3742f96ba7352624112ac231a8df7be9031649e41d54cc52152776e52e3a7a620ea8f33e3'
@@ -166,7 +170,7 @@ b2sums=('3c03c7e52c9eb10a12644d8e7b57f9513ff22ec556a08617702dbfa54dcca562b994e9d
'1ce956dbcd0af3e16c336ce15995a7df19b8bed78765890304ff9dcaf6d30c602580bef050d6c659fdff945a31dce880f5f4042dfc295cdef44c34155a3e644c'
'804cea67bb0a2fab62dd9cf633d1959a3fe59b3e24f0c2e01a6db951100fa4426ae946a90a93fa7fd6a7d0ece478633d0091144c2fa776858157edec1310f837'
'a611964c224c7751c3afeaadb159135e5ed5d87d3ed254be63b4b12450f4f63f414c90f8e29f3d14c0b854f4c9938bf5d12db69d2e258f1947e353302ca07da7'
- 'f3c4a1f4f95e04be5574672b10f149b8a7dca3e73b1047b1b5df1408e6ee6c3816bd581b844125ba93b7868bbbc6ec382f5ea832025b628265d4a4e12770e6b4'
+ 'e8caa14c3fdd1c8a6388287811c2df7cb6a0f88c52d6bf21526352decbf1c80a3d143e01ffd04eca9fa31e612d15346157df0ec5242f80b5d601230e4b85d153'
'32975862668e4c28bf345cf9e2e3a2f754f7d7d50208f1d840e3b2ca47da1c19bcff9bdf6dc841ec803c64fd633b479d1d598ee22119589732f7cff1fa6dd6dd'
'7da2d555f4b21da6704675400dc97367ff3e6bb60213d86c972b6740f074bcef98482ad7f759ddbee09f67d0ee8687c26c425d697ab586a784385971aec72bb0'
'b7de805805030014da358902f4d2a387a34aa911a1a581a5d394c79653244e0e4d2a038be486c3eac3fc466fde1df3a519e2c6e4374674c68be9bfee498310a8'
@@ -210,6 +214,7 @@ b2sums=('3c03c7e52c9eb10a12644d8e7b57f9513ff22ec556a08617702dbfa54dcca562b994e9d
'74a51f04237fba3caa25b2e0d49659f2e8330ce82288de866943d06b53690f31d48a77a4dd2e57db1f435b715fbca792268f2e191ffb59e57170d327ed41ac0a'
'4a1724784d6b4f113e8c1954d399d07adc941a2e992e1c95ab38dbc5c31940e90ff4cec51d22da3bf971880817b4356e473747303146c2ab1be55ee4565aca41'
'209387731490549d7b3d546ab149cea22e0ea1291356884f358cd87ca7d5425ca9a72f6f2cb7af46956634ffdb1a61d1ebfbfdbb5a2fc9fdc26d29acdc2ab0c0'
+ '0661d98d1a106c736f5e23da60e81354786569d5e2124d1247297eac8ae95ae7f9971b5c80063ef7569eb7288da1ed012e8f0301e82400dff2c3c93cdbd93999'
'e1d03f68918d03f980f4c2dd966e3788afe63f14e2d18dbd4dab2cdbfa1253e4823c0f5daa3a579e47319a3c2af35bc5af0a390e2ba91fe7621f6db8b1a60994'
'f428818d1d4df4e46ec844458cfd5f9eef5d19a89778837502eb74ed6d421113ae9a9bc2fd4fb2bcf41d433635c34912e90b90a8993e92164e6a1efe0ebae82f'
'06c5652eb2c70b8aba6d788415089b740c3510cd9c570838f656202ba2dc65d4f3289f6695413665de930e84fe287ef035ed8e83a0610a5a316e76a17442683a'
@@ -223,7 +228,7 @@ b2sums=('3c03c7e52c9eb10a12644d8e7b57f9513ff22ec556a08617702dbfa54dcca562b994e9d
'4bd44cbe85c53902b8a360509703e3d38e8a5da75dd2c534a77f03ce6440632f6c83c92939069c60473c88ffb3abab0fbf11e39271f44f813b9f6432ea5f9a6b'
'f115314dd2bb1da07bba7a90fec5c3acb7ccb5145efaea03d6806942e24d402c9a144a2fd07b82e727a0b79dedd4bdd87de0bbaf0944236563164fb6f117965e'
'fbe96133bb6aedadc8e846c2495cda5c06b9cc76663e06b236a7721ede96798207f857ae8e0d4b672166ef7e16f024bba14422fb5481fd132ada7117e52fffb5'
- 'f36757d6803f760eee3e537399e571623d5b65b2d82babf5bd7ab5ce24b05eb7fbdef5bd59330a11bcfe7e589e531822e1be53f48ec3b117c52113f7e2f38ad4'
+ '496a8ba6769b68114a189c317eafb6607e6e11a942231964137b7cd171d6decb5162aee8aa4ba3ccea86cf0e4bc25082a6bbe0858028aed2bd4c8612b4fccab8'
'a56efdaae0344726debf5b74846edce8df7aa2357fbc7a05a3d369d1f457b02934a0d0ce2330072e03f1ac901e06e333c9393f795c761f8440307e7649ed5596'
'14ef4cc6b05f8d9b0d6196c4b6f35cc8083bdf4820c19c320551158b47b570ee6b385f3d6b9888f614fb9d5325265feae810a2c5fff4a0deb42b01612bad6517'
'b9309da09b165fb57e83f84e3584d2479bd3336ed86e181e5df2d27daa92bd55d03d7f3fc226f03696af5f0f32d8e0e7ecd26ae7e50eed0200d0b0feaad07efb')
@@ -259,7 +264,7 @@ prepare() {
sed -i 's|cataclysm-dda|cataclysm-bn|' src/path_info.cpp
# Fix version
- sed -i 's|VERSION = unstable|VERSION = "0.2-experimental 2023-03-17-0510"|' Makefile
+ sed -i 's|VERSION = unstable|VERSION = "0.2-experimental 2023-03-31-1439"|' Makefile
# # # Hotfixes
@@ -268,6 +273,9 @@ prepare() {
# # # Reverts
echo "Applying revert patches"
+ # Needless item removal
+ patch -NREp1 -i "$srcdir"/revert-11_Obsoletion-and-removal-of-useless-bathroom-fluff-247.patch
+
# Still more ammo patches to revert
patch -NREp1 -i "$srcdir"/revert-10_still-another-ammo-patch-to-undo.patch
@@ -320,9 +328,9 @@ prepare() {
# Having copy-from items occuring earlier in a json than the item being copied from prevents items based on it being modified.
patch -Np1 -i "$srcdir"/ammo-10_ammo-order-fix.patch
- # Fix 40mm rounds having no volume.
+ # Fix 40mm rounds volume.
# Changing abstracts with mods does not seem to work, so here this is.
- patch -Np1 -i "$srcdir"/ammo-11_fix-volumeless-40mm.patch
+ patch -Np1 -i "$srcdir"/ammo-11_fix-volume-40mm.patch
# # armor fixes
@@ -568,6 +576,13 @@ prepare() {
patch -Np1 -i "$srcdir"/vehicles-03_black-box-can-be-installed.patch
+ # # weapon fixes
+ echo "Applying weapon fixes"
+ # Fix the V29 pistol to copy-from pistol_energy:
+ # This class seems entirely made for this weapon, but it was not flagged to use it.
+ patch -Np1 -i "$srcdir"/weapon-01_fix-v29-copy-from.patch
+
+
# # Uncategorized for now
echo "Applying uncategorized fixes"
# Fix rubber items dismantling into 10x item volume of rubber.
diff --git a/ammo-11_fix-volumeless-40mm.patch b/ammo-11_fix-volume-40mm.patch
index e05116d..88c8b32 100644
--- a/ammo-11_fix-volumeless-40mm.patch
+++ b/ammo-11_fix-volume-40mm.patch
@@ -1,20 +1,22 @@
--- a/data/json/items/ammo/40x46mm.json
+++ b/data/json/items/ammo/40x46mm.json
-@@ -3,6 +3,7 @@
+@@ -3,7 +3,7 @@
"abstract": "40x46mm_grenade",
"type": "AMMO",
"name": { "str": "40x46mm grenade" },
+- "volume": "250 ml",
+ "volume": "129 ml",
"price": 10000,
"price_postapoc": 6000,
"flags": [ "IRREPLACEABLE_CONSUMABLE" ],
--- a/data/json/items/ammo/40x53mm.json
+++ b/data/json/items/ammo/40x53mm.json
-@@ -3,6 +3,7 @@
- "abstract": "40x53mm_grenade",
- "type": "AMMO",
+@@ -3,7 +3,7 @@
"name": { "str": "40x53mm grenade" },
-+ "volume": "137 ml",
"price": 10000,
"price_postapoc": 6000,
+- "volume": "260 ml",
++ "volume": "137 ml",
"flags": [ "IRREPLACEABLE_CONSUMABLE" ],
+ "material": [ "steel", "powder" ],
+ "symbol": "=",
diff --git a/foods-01_fix-food-materials.patch b/foods-01_fix-food-materials.patch
index eb0aabb..6351fef 100644
--- a/foods-01_fix-food-materials.patch
+++ b/foods-01_fix-food-materials.patch
@@ -9,28 +9,6 @@
"primary_material": "wheat",
"volume": "250 ml",
"charges": 6,
---- a/data/json/items/comestibles/drink.json
-+++ b/data/json/items/comestibles/drink.json
-@@ -39,7 +39,8 @@
- "description": "Milk some almonds? Not quite, but blend them with water, yes! A dairy-free alternative strong in calcium! Rival to soy milk.",
- "price": 40,
- "price_postapoc": 50,
-- "material": "water",
-+ "material": "nut",
-+ "primary_material": "water",
- "volume": "250 ml",
- "phase": "liquid",
- "vitamins": [ [ "vitA", 2 ], [ "calcium", 11 ] ],
-@@ -62,7 +63,8 @@
- "description": "Milk some soybeans? Not quite, but blend them with water, yes! A dairy-free alternative strong in protein! Rival to almond milk.",
- "price": 40,
- "price_postapoc": 50,
-- "material": "water",
-+ "material": "veggy",
-+ "primary_material": "water",
- "volume": "250 ml",
- "phase": "liquid",
- "vitamins": [ [ "vitA", 2 ], [ "iron", 1 ], [ "calcium", 7 ] ],
--- a/data/json/items/comestibles/drink_other.json
+++ a/data/json/items/comestibles/drink_other.json
@@ -146,6 +146,7 @@
diff --git a/revert-09_undo-yet-more-ammo-balancing.patch b/revert-09_undo-yet-more-ammo-balancing.patch
index f071311..4cfd0ce 100644
--- a/revert-09_undo-yet-more-ammo-balancing.patch
+++ b/revert-09_undo-yet-more-ammo-balancing.patch
@@ -243,7 +243,7 @@ diff --git a/data/json/items/ammo/40x53mm.json b/data/json/items/ammo/40x53mm.js
index 4541de0dab2..aeb0d2e732e 100644
--- a/data/json/items/ammo/40x53mm.json
+++ b/data/json/items/ammo/40x53mm.json
-@@ -22,11 +22,12 @@
+@@ -22,10 +22,11 @@
"id": "40x53mm_m1001",
"copy-from": "40x53mm_grenade",
"type": "AMMO",
@@ -251,14 +251,13 @@ index 4541de0dab2..aeb0d2e732e 100644
+ "name": { "str": "40x53mm M1001 flechette" },
"description": "40x53mm canister shot loaded with 17 grain flechettes.",
"weight": "340 g",
- "volume": "137 ml",
- "damage": { "damage_type": "bullet", "amount": 150, "armor_penetration": 10 },
+ "//": "Balanced as AP.",
+ "damage": { "damage_type": "bullet", "amount": 91, "armor_penetration": 78 },
"recoil": 1000,
"casing": "40x53mm_m169_casing",
"extend": { "effects": [ "SHOT" ] }
-@@ -35,7 +36,7 @@
+@@ -35,6 +36,6 @@
"id": "40x53mm_m430a1",
"copy-from": "40x53mm_grenade",
"type": "AMMO",
@@ -266,7 +265,6 @@ index 4541de0dab2..aeb0d2e732e 100644
+ "name": { "str": "40x53mm M430A1 HEDP" },
"description": "A high velocity 40x53mm HEDP grenade. It can penetrate 3 inches of steel armor and fragmentation of the projectile body also makes it suitable for use against infantry.",
"weight": "340 g",
- "volume": "132 ml",
@@ -47,11 +48,11 @@
"id": "40x53mm_buckshot_m169",
"copy-from": "40x53mm_grenade",
diff --git a/revert-11_Obsoletion-and-removal-of-useless-bathroom-fluff-247.patch b/revert-11_Obsoletion-and-removal-of-useless-bathroom-fluff-247.patch
new file mode 100644
index 0000000..a923498
--- /dev/null
+++ b/revert-11_Obsoletion-and-removal-of-useless-bathroom-fluff-247.patch
@@ -0,0 +1,514 @@
+From 8ef2a855d0338e35aa1d9fbbda641315dc53f8db Mon Sep 17 00:00:00 2001
+From: Viss Valdyr <33199510+Lamandus@users.noreply.github.com>
+Date: Sat, 25 Mar 2023 14:24:02 +0100
+Subject: [PATCH] Obsoletion and removal of useless bathroom fluff (#2471)
+
+---
+ .../Clothing_Gear/gear_civilian.json | 1 -
+ .../Locations_MapExtras/locations.json | 4 +-
+ .../locations_commercial.json | 1 -
+ .../Locations_MapExtras/mall_item_groups.json | 1 -
+ .../Locations_MapExtras/mansion.json | 10 +-
+ data/json/itemgroups/SUS/domestic.json | 12 +-
+ .../json/itemgroups/collections_domestic.json | 6 +-
+ data/json/itemgroups/supplies.json | 8 +-
+ data/json/items/generic/bathroom_house.json | 126 ------------------
+ data/json/obsoletion/items.json | 126 ++++++++++++++++++
+ data/json/uncraft/generic.json | 8 --
+ 11 files changed, 133 insertions(+), 170 deletions(-)
+
+diff --git a/data/json/itemgroups/Clothing_Gear/gear_civilian.json b/data/json/itemgroups/Clothing_Gear/gear_civilian.json
+index 6c93a36b829..a7a9744e8e1 100644
+--- a/data/json/itemgroups/Clothing_Gear/gear_civilian.json
++++ b/data/json/itemgroups/Clothing_Gear/gear_civilian.json
+@@ -218,7 +218,6 @@
+ [ "elec_hairtrimmer", 15 ],
+ [ "razor_blade", 5 ],
+ [ "razor_shaving", 5 ],
+- [ "toothbrush_plain", 10 ],
+ [ "string_floss", 10 ],
+ [ "kilt", 5 ],
+ [ "hobo_stove", 1 ],
+diff --git a/data/json/itemgroups/Locations_MapExtras/locations.json b/data/json/itemgroups/Locations_MapExtras/locations.json
+index 2dfb60740ef..b1bfc7941a4 100644
+--- a/data/json/itemgroups/Locations_MapExtras/locations.json
++++ b/data/json/itemgroups/Locations_MapExtras/locations.json
+@@ -1158,9 +1158,7 @@
+ [ "toolbox", 5 ],
+ [ "apron_leather", 10 ],
+ [ "bio_meteorologist", 10 ],
+- [ "chem_aluminium_sulphate", 20 ],
+- [ "plunger_toilet", 10 ],
+- [ "plunger_futuristic", 5 ]
++ [ "chem_aluminium_sulphate", 20 ]
+ ]
+ },
+ {
+diff --git a/data/json/itemgroups/Locations_MapExtras/locations_commercial.json b/data/json/itemgroups/Locations_MapExtras/locations_commercial.json
+index 85fb9960d3c..07550e43c95 100644
+--- a/data/json/itemgroups/Locations_MapExtras/locations_commercial.json
++++ b/data/json/itemgroups/Locations_MapExtras/locations_commercial.json
+@@ -82,7 +82,6 @@
+ "items": [
+ [ "rope_6", 20 ],
+ [ "string_36", 25 ],
+- [ "toilet_paper", 10 ],
+ [ "handflare", 15 ],
+ [ "duct_tape", 25 ],
+ [ "flashlight", 25 ],
+diff --git a/data/json/itemgroups/Locations_MapExtras/mall_item_groups.json b/data/json/itemgroups/Locations_MapExtras/mall_item_groups.json
+index 261ede3a3f8..0841f79f760 100644
+--- a/data/json/itemgroups/Locations_MapExtras/mall_item_groups.json
++++ b/data/json/itemgroups/Locations_MapExtras/mall_item_groups.json
+@@ -281,7 +281,6 @@
+ [ "shavingkit", 20 ],
+ [ "elec_hairtrimmer", 20 ],
+ [ "razor_shaving", 20 ],
+- [ "curler_hair", 30 ],
+ [ "hair_dryer", 40 ],
+ [ "curling_iron", 40 ],
+ [ "comb_pocket", 10 ],
+diff --git a/data/json/itemgroups/Locations_MapExtras/mansion.json b/data/json/itemgroups/Locations_MapExtras/mansion.json
+index 56d45fb47d7..7dcb828df02 100644
+--- a/data/json/itemgroups/Locations_MapExtras/mansion.json
++++ b/data/json/itemgroups/Locations_MapExtras/mansion.json
+@@ -956,7 +956,6 @@
+ [ "38_casing", 20 ],
+ [ "45_casing", 20 ],
+ [ "bone_tainted", 1 ],
+- [ "toothbrush_plain", 10 ],
+ { "group": "corpse_mansion", "prob": 1 }
+ ]
+ },
+@@ -1122,10 +1121,7 @@
+ [ "oxy_powder", 5 ],
+ [ "fungicide", 5 ],
+ [ "insecticide", 5 ],
+- { "item": "charcoal", "prob": 5, "container-item": "bag_canvas" },
+- [ "toilet_paper", 30 ],
+- [ "plunger_toilet", 10 ],
+- [ "plunger_futuristic", 25 ]
++ { "item": "charcoal", "prob": 5, "container-item": "bag_canvas" }
+ ]
+ },
+ {
+@@ -1273,9 +1269,7 @@
+ { "group": "harddrugs", "prob": 5 },
+ [ "hairbrush", 30 ],
+ [ "comb_pocket", 15 ],
+- [ "curler_hair", 10 ],
+- [ "curling_iron", 15 ],
+- [ "brush_toilet", 15 ]
++ [ "curling_iron", 15 ]
+ ]
+ },
+ {
+diff --git a/data/json/itemgroups/SUS/domestic.json b/data/json/itemgroups/SUS/domestic.json
+index c431b052f2b..88574cb4111 100644
+--- a/data/json/itemgroups/SUS/domestic.json
++++ b/data/json/itemgroups/SUS/domestic.json
+@@ -343,7 +343,6 @@
+ { "item": "comb_pocket", "count": [ 1, 2 ], "prob": 75 },
+ { "item": "scissors", "count": [ 1, 2 ], "prob": 60 },
+ { "item": "hair_dryer", "prob": 60 },
+- { "collection": [ { "item": "curling_iron", "count": [ 1, 2 ] }, { "item": "curler_hair" } ], "prob": 25 },
+ { "item": "elec_hairtrimmer", "prob": 30 }
+ ]
+ },
+@@ -353,15 +352,7 @@
+ "//": "SUS item groups are collections that contain a reasonable realistic distribution of items that might spawn in a given storage furniture.",
+ "//2": "This group is for things you often find stored on or next to a toilet.",
+ "subtype": "collection",
+- "entries": [
+- {
+- "distribution": [ { "item": "plunger_toilet", "prob": 90 }, { "item": "plunger_futuristic", "prob": 10 } ],
+- "prob": 90
+- },
+- { "item": "brush_toilet", "prob": 75 },
+- { "item": "toilet_paper", "prob": 95 },
+- { "item": "bathroom_scale", "prob": 50 }
+- ]
++ "entries": [ { "item": "bathroom_scale", "prob": 50 } ]
+ },
+ {
+ "id": "SUS_bathroom_cabinet",
+@@ -384,7 +375,6 @@
+ { "item": "mirror", "prob": 25 },
+ { "item": "sponge", "count": [ 1, 3 ], "prob": 75 },
+ { "collection": [ { "item": "candle", "count": [ 1, 2 ] }, { "item": "matches" } ], "prob": 20 },
+- { "item": "toilet_paper", "prob": 80 },
+ { "item": "towel", "count": [ 1, 2 ], "prob": 75 }
+ ]
+ },
+diff --git a/data/json/itemgroups/collections_domestic.json b/data/json/itemgroups/collections_domestic.json
+index 63285818678..87f0178aafd 100644
+--- a/data/json/itemgroups/collections_domestic.json
++++ b/data/json/itemgroups/collections_domestic.json
+@@ -230,7 +230,6 @@
+ { "group": "mansion_guns", "prob": 3 },
+ { "group": "harddrugs", "prob": 1 },
+ [ "joint", 1 ],
+- [ "curler_hair", 10 ],
+ [ "hairbrush", 5 ]
+ ]
+ },
+@@ -989,10 +988,7 @@
+ { "item": "insecticide", "prob": 2 },
+ { "item": "soap", "prob": 80 },
+ { "item": "detergent", "prob": 80 },
+- { "item": "chem_hydrogen_peroxide", "prob": 20 },
+- { "item": "plunger_toilet", "prob": 30 },
+- { "item": "plunger_futuristic", "prob": 15 },
+- { "item": "toilet_paper", "prob": 10 }
++ { "item": "chem_hydrogen_peroxide", "prob": 20 }
+ ]
+ },
+ {
+diff --git a/data/json/itemgroups/supplies.json b/data/json/itemgroups/supplies.json
+index 0327c507ba9..0748fa9b951 100644
+--- a/data/json/itemgroups/supplies.json
++++ b/data/json/itemgroups/supplies.json
+@@ -122,9 +122,7 @@
+ [ "pump_complex", 5 ],
+ [ "well_pump", 5 ],
+ [ "plastic_sheet", 20 ],
+- [ "recharge_station", 20 ],
+- [ "plunger_toilet", 75 ],
+- [ "plunger_futuristic", 25 ]
++ [ "recharge_station", 20 ]
+ ]
+ },
+ {
+@@ -144,9 +142,7 @@
+ [ "jerrycan", 10 ],
+ [ "pump_complex", 10 ],
+ [ "well_pump", 10 ],
+- { "item": "scrap_copper", "prob": 15, "count": [ 1, 10 ] },
+- { "item": "plunger_toilet", "prob": 90, "count": [ 1, 2 ] },
+- [ "plunger_futuristic", 50 ]
++ { "item": "scrap_copper", "prob": 15, "count": [ 1, 10 ] }
+ ]
+ },
+ {
+diff --git a/data/json/items/generic/bathroom_house.json b/data/json/items/generic/bathroom_house.json
+index dba9eb592f6..2b4b7874c51 100644
+--- a/data/json/items/generic/bathroom_house.json
++++ b/data/json/items/generic/bathroom_house.json
+@@ -14,14 +14,6 @@
+ "bashing": 1,
+ "to_hit": -1
+ },
+- {
+- "id": "soap_holder",
+- "name": { "str": "soap dish", "str_pl": "soap dishes" },
+- "type": "GENERIC",
+- "description": "A shallow dish for holding a bar of soap. It has ridges to help drain water away from the dish. Not the most exciting of items.",
+- "symbol": "-",
+- "copy-from": "base_toiletries"
+- },
+ {
+ "id": "razor_shaving",
+ "name": { "str": "shaving razor" },
+@@ -36,36 +28,6 @@
+ "material": [ "plastic", "steel" ],
+ "cutting": 2
+ },
+- {
+- "id": "toothbrush_plain",
+- "name": { "str": "toothbrush", "str_pl": "toothbrushes" },
+- "type": "GENERIC",
+- "description": "A plastic brush with soft bristles for cleaning your teeth.",
+- "symbol": "/",
+- "copy-from": "base_toiletries",
+- "snippet_category": [
+- {
+- "id": "tbrush1",
+- "text": "A plastic brush with soft bristles for cleaning your teeth. It has a cheap, blocky handle and is likely meant to be disposable."
+- },
+- {
+- "id": "tbrush2",
+- "text": "A combination toothbrush and gum massager. It has an ergonomic silicone grip. Luxurious!"
+- },
+- {
+- "id": "tbrush3",
+- "text": "A plastic brush with soft bristles for cleaning your teeth. The blue and white pattern on the handle implies cleanliness."
+- },
+- {
+- "id": "tbrush4",
+- "text": "A short toothbrush designed for children. It has a wide-eyed cartoon pony on the handle."
+- },
+- {
+- "id": "tbrush5",
+- "text": "A short toothbrush designed for children. It has a grinning red racecar on the handle."
+- }
+- ]
+- },
+ {
+ "id": "hairbrush",
+ "name": { "str": "hairbrush", "str_pl": "hairbrushes" },
+@@ -80,17 +42,6 @@
+ { "id": "hbrush4", "text": "A tacky kid's hairbrush. The cartoon whale on the handle seems friendly enough." }
+ ]
+ },
+- {
+- "id": "curler_hair",
+- "name": { "str": "hair curler" },
+- "type": "GENERIC",
+- "description": "A soft plastic cylinder you can wrap a lock of your hair around to curl it.",
+- "copy-from": "base_toiletries",
+- "symbol": ",",
+- "weight": "20 g",
+- "volume": "25 ml",
+- "container": "box_small"
+- },
+ {
+ "id": "string_floss",
+ "name": { "str": "dental floss", "str_pl": "rolls of dental floss" },
+@@ -117,68 +68,6 @@
+ { "id": "pcomb4", "text": "A comb which folds on a hinge, in case you want to look like a greaser." }
+ ]
+ },
+- {
+- "id": "plunger_toilet",
+- "name": { "str": "toilet plunger" },
+- "type": "GENERIC",
+- "description": "A rubber-tipped tool for unclogging pipes, or a club for an immature survivor.",
+- "symbol": "p",
+- "color": "red",
+- "price": 800,
+- "price_postapoc": 10,
+- "weight": "590 g",
+- "volume": "2100 ml",
+- "//": "the volume is pretty bulky, but this is an old fashioned model.",
+- "material": [ "wood", "rubber" ],
+- "bashing": 5,
+- "to_hit": -1
+- },
+- {
+- "id": "plunger_futuristic",
+- "name": { "str": "professional plunger" },
+- "type": "GENERIC",
+- "description": "This hollow plastic toilet plunger's bell compresses like an accordion. It is efficient at its intended purpose, and complete rubbish as a weapon.",
+- "symbol": "p",
+- "color": "black",
+- "price": 1590,
+- "price_postapoc": 10,
+- "weight": "680 g",
+- "volume": "2400 ml",
+- "material": "plastic",
+- "bashing": 2,
+- "to_hit": -1
+- },
+- {
+- "id": "toilet_paper",
+- "name": { "str": "toilet paper", "str_pl": "rolls of toilet paper" },
+- "type": "GENERIC",
+- "description": "A luxurious remnant of civilization.",
+- "symbol": "~",
+- "color": "white",
+- "container": "box_medium",
+- "price": 89,
+- "price_postapoc": 180,
+- "volume": "250 ml",
+- "weight": "227 g",
+- "material": "paper",
+- "to_hit": -2,
+- "snippet_category": [
+- {
+- "id": "tpaper1",
+- "text": "Imagine the thinnest, most disposable paper you could possibly make. Now imagine something thinner than that."
+- },
+- {
+- "id": "tpaper2",
+- "text": "This roll of toilet paper is two-ply and quilted, for vandalizing houses more comfortably than ever."
+- },
+- { "id": "tpaper3", "text": "This brand of toilet paper is designed to dissolve completely in water!" },
+- { "id": "tpaper4", "text": "Images of your least favorite politician are printed on each individual sheet." },
+- {
+- "id": "tpaper5",
+- "text": "A luxurious remnant of civilization. The splinters of unprocessed wood visible in this one make it seem less luxurious, though."
+- }
+- ]
+- },
+ {
+ "id": "hair_dryer",
+ "name": { "str": "hair dryer" },
+@@ -208,20 +97,5 @@
+ "material": [ "ceramic", "steel" ],
+ "bashing": 3,
+ "to_hit": 1
+- },
+- {
+- "id": "brush_toilet",
+- "name": { "str": "toilet brush", "str_pl": "toilet brushes" },
+- "type": "GENERIC",
+- "description": "Zombies cannot be intimidated or humiliated, so this stiff brush is only useful for scouring toilet bowls.",
+- "symbol": "p",
+- "color": "white",
+- "price": 1700,
+- "price_postapoc": 0,
+- "volume": "500 ml",
+- "weight": "160 g",
+- "material": [ "steel", "plastic" ],
+- "bashing": 3,
+- "to_hit": 1
+ }
+ ]
+diff --git a/data/json/obsoletion/items.json b/data/json/obsoletion/items.json
+index f2a8063e7ef..e0a1a36ce29 100644
+--- a/data/json/obsoletion/items.json
++++ b/data/json/obsoletion/items.json
+@@ -4354,5 +4354,131 @@
+ "cutting": 3,
+ "to_hit": -3,
+ "flags": [ "STAB", "SHEATH_KNIFE", "CONDUCTIVE" ]
++ },
++ {
++ "id": "soap_holder",
++ "name": { "str": "soap dish", "str_pl": "soap dishes" },
++ "type": "GENERIC",
++ "description": "A shallow dish for holding a bar of soap. It has ridges to help drain water away from the dish. Not the most exciting of items.",
++ "symbol": "-",
++ "copy-from": "base_toiletries"
++ },
++ {
++ "id": "toothbrush_plain",
++ "name": { "str": "toothbrush", "str_pl": "toothbrushes" },
++ "type": "GENERIC",
++ "description": "A plastic brush with soft bristles for cleaning your teeth.",
++ "symbol": "/",
++ "copy-from": "base_toiletries",
++ "snippet_category": [
++ {
++ "id": "tbrush1",
++ "text": "A plastic brush with soft bristles for cleaning your teeth. It has a cheap, blocky handle and is likely meant to be disposable."
++ },
++ {
++ "id": "tbrush2",
++ "text": "A combination toothbrush and gum massager. It has an ergonomic silicone grip. Luxurious!"
++ },
++ {
++ "id": "tbrush3",
++ "text": "A plastic brush with soft bristles for cleaning your teeth. The blue and white pattern on the handle implies cleanliness."
++ },
++ {
++ "id": "tbrush4",
++ "text": "A short toothbrush designed for children. It has a wide-eyed cartoon pony on the handle."
++ },
++ {
++ "id": "tbrush5",
++ "text": "A short toothbrush designed for children. It has a grinning red racecar on the handle."
++ }
++ ]
++ },
++ {
++ "id": "curler_hair",
++ "name": { "str": "hair curler" },
++ "type": "GENERIC",
++ "description": "A soft plastic cylinder you can wrap a lock of your hair around to curl it.",
++ "copy-from": "base_toiletries",
++ "symbol": ",",
++ "weight": "20 g",
++ "volume": "25 ml",
++ "container": "box_small"
++ },
++ {
++ "id": "plunger_toilet",
++ "name": { "str": "toilet plunger" },
++ "type": "GENERIC",
++ "description": "A rubber-tipped tool for unclogging pipes, or a club for an immature survivor.",
++ "symbol": "p",
++ "color": "red",
++ "price": 800,
++ "price_postapoc": 10,
++ "weight": "590 g",
++ "volume": "2100 ml",
++ "//": "the volume is pretty bulky, but this is an old fashioned model.",
++ "material": [ "wood", "rubber" ],
++ "bashing": 5,
++ "to_hit": -1
++ },
++ {
++ "id": "plunger_futuristic",
++ "name": { "str": "professional plunger" },
++ "type": "GENERIC",
++ "description": "This hollow plastic toilet plunger's bell compresses like an accordion. It is efficient at its intended purpose, and complete rubbish as a weapon.",
++ "symbol": "p",
++ "color": "black",
++ "price": 1590,
++ "price_postapoc": 10,
++ "weight": "680 g",
++ "volume": "2400 ml",
++ "material": "plastic",
++ "bashing": 2,
++ "to_hit": -1
++ },
++ {
++ "id": "toilet_paper",
++ "name": { "str": "toilet paper", "str_pl": "rolls of toilet paper" },
++ "type": "GENERIC",
++ "description": "A luxurious remnant of civilization.",
++ "symbol": "~",
++ "color": "white",
++ "container": "box_medium",
++ "price": 89,
++ "price_postapoc": 180,
++ "volume": "250 ml",
++ "weight": "227 g",
++ "material": "paper",
++ "to_hit": -2,
++ "snippet_category": [
++ {
++ "id": "tpaper1",
++ "text": "Imagine the thinnest, most disposable paper you could possibly make. Now imagine something thinner than that."
++ },
++ {
++ "id": "tpaper2",
++ "text": "This roll of toilet paper is two-ply and quilted, for vandalizing houses more comfortably than ever."
++ },
++ { "id": "tpaper3", "text": "This brand of toilet paper is designed to dissolve completely in water!" },
++ { "id": "tpaper4", "text": "Images of your least favorite politician are printed on each individual sheet." },
++ {
++ "id": "tpaper5",
++ "text": "A luxurious remnant of civilization. The splinters of unprocessed wood visible in this one make it seem less luxurious, though."
++ }
++ ]
++ },
++ {
++ "id": "brush_toilet",
++ "name": { "str": "toilet brush", "str_pl": "toilet brushes" },
++ "type": "GENERIC",
++ "description": "Zombies cannot be intimidated or humiliated, so this stiff brush is only useful for scouring toilet bowls.",
++ "symbol": "p",
++ "color": "white",
++ "price": 1700,
++ "price_postapoc": 0,
++ "volume": "500 ml",
++ "weight": "160 g",
++ "material": [ "steel", "plastic" ],
++ "bashing": 3,
++ "to_hit": 1
+ }
+ ]
+diff --git a/data/json/uncraft/generic.json b/data/json/uncraft/generic.json
+index 30a4c1b1ace..ceacdc75895 100644
+--- a/data/json/uncraft/generic.json
++++ b/data/json/uncraft/generic.json
+@@ -3961,14 +3961,6 @@
+ "//": "just unspool the floss, no need to make a big production out of it.",
+ "components": [ [ [ "plastic_chunk", 1 ] ], [ [ "thread", 25 ] ] ]
+ },
+- {
+- "result": "plunger_toilet",
+- "type": "uncraft",
+- "skill_used": "fabrication",
+- "time": "6 s",
+- "qualities": [ { "id": "CUT", "level": 1 } ],
+- "components": [ [ [ "plastic_chunk", 2 ] ], [ [ "splinter", 3 ] ] ]
+- },
+ {
+ "result": "stopcock",
+ "type": "uncraft",
+--
+2.39.2
+
diff --git a/weapon-01_fix-v29-copy-from.patch b/weapon-01_fix-v29-copy-from.patch
new file mode 100644
index 0000000..f93211f
--- /dev/null
+++ b/weapon-01_fix-v29-copy-from.patch
@@ -0,0 +1,11 @@
+--- a/data/json/items/gun/ups.json
++++ b/data/json/items/gun/ups.json
+@@ -135,7 +135,7 @@
+ },
+ {
+ "id": "v29",
+- "copy-from": "pistol_base",
++ "copy-from": "pistol_energy",
+ "type": "GUN",
+ "name": { "str": "V29 laser pistol" },
+ "description": "This V29 laser pistol was one of the first handheld laser weapons. It is larger than most traditional handguns, but displays no recoil whatsoever.",