summaryrefslogtreecommitdiff
path: root/revert-30_feat-content-weapon-mount-obsoletion-part-1-4179.patch
diff options
context:
space:
mode:
authorjc_gargma <jc_gargma@iserlohn-fortress.net>2024-04-09 12:41:03 -0700
committerjc_gargma <jc_gargma@iserlohn-fortress.net>2024-04-09 12:41:03 -0700
commit73129732813573834acbb441513b8d43775584e8 (patch)
treeb21fa0279524f069d9e82b283b047edc2ada4761 /revert-30_feat-content-weapon-mount-obsoletion-part-1-4179.patch
parentUpdated default mods. (diff)
downloadcataclysm-bn-73129732813573834acbb441513b8d43775584e8.tar.xz
Updated to 0.6.0
Revert weapon mount obsoletion Revert nether healing being too obvious Fix meat scrap description Fix missing rebuilt recon laser recipe Add patch to nerf fungal blossom spawn rate
Diffstat (limited to 'revert-30_feat-content-weapon-mount-obsoletion-part-1-4179.patch')
-rw-r--r--revert-30_feat-content-weapon-mount-obsoletion-part-1-4179.patch1957
1 files changed, 1957 insertions, 0 deletions
diff --git a/revert-30_feat-content-weapon-mount-obsoletion-part-1-4179.patch b/revert-30_feat-content-weapon-mount-obsoletion-part-1-4179.patch
new file mode 100644
index 0000000..fdc3225
--- /dev/null
+++ b/revert-30_feat-content-weapon-mount-obsoletion-part-1-4179.patch
@@ -0,0 +1,1957 @@
+From 0aca66e98ed0dc699179a24760160768146e2304 Mon Sep 17 00:00:00 2001
+From: Chorus System <ohinchy@gmail.com>
+Date: Mon, 5 Feb 2024 11:32:43 -0500
+Subject: [PATCH 094/231] feat(content): weapon mount obsoletion, part 1
+ (#4179)
+
+* Mount-ed Combat
+
+Removed all basegame weapon mount mod slots, replacing them with the corresponding mod slots of that type.
+
+* Mod mounts
+
+Removed weapon mount mod locations from modded weapons, replacing them with corresponding weapon mod locations.
+
+* style(autofix.ci): automated formatting
+
+* Obsoleted mount weapon mods
+
+* Changed ranged burst balance test
+
+Modified ranged burst balance test via RoyalFox's recommendation.
+
+---------
+
+Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
+Co-authored-by: Chaosvolt <chaosvolt@users.noreply.github.com>
+---
+ data/json/items/classes/gun.json | 65 +++----
+ data/json/items/classes/range.json | 2 +-
+ data/json/items/gun/20x66mm.json | 2 +-
+ data/json/items/gun/22.json | 6 +-
+ data/json/items/gun/223.json | 18 +-
+ data/json/items/gun/3006.json | 6 +-
+ data/json/items/gun/308.json | 16 +-
+ data/json/items/gun/38.json | 19 +-
+ data/json/items/gun/40.json | 2 +-
+ data/json/items/gun/40x46mm.json | 20 +-
+ data/json/items/gun/40x53mm.json | 4 +-
+ data/json/items/gun/410shot.json | 10 +-
+ data/json/items/gun/44.json | 4 +-
+ data/json/items/gun/44paper.json | 4 +-
+ data/json/items/gun/454.json | 4 +-
+ data/json/items/gun/4570.json | 16 +-
+ data/json/items/gun/45colt.json | 6 +-
+ data/json/items/gun/50.json | 8 +-
+ data/json/items/gun/500.json | 8 +-
+ data/json/items/gun/66mm.json | 9 +-
+ data/json/items/gun/762.json | 20 +-
+ data/json/items/gun/762x25.json | 2 +-
+ data/json/items/gun/84x246mm.json | 4 +-
+ data/json/items/gun/9mm.json | 28 +--
+ data/json/items/gun/atgm.json | 2 +-
+ data/json/items/gun/blunderbuss.json | 9 +-
+ data/json/items/gun/combination.json | 2 +-
+ data/json/items/gun/flammable.json | 8 +-
+ data/json/items/gun/flintlock.json | 23 +--
+ data/json/items/gun/misc.json | 2 +-
+ data/json/items/gun/nail.json | 2 +-
+ data/json/items/gun/paintball.json | 9 +-
+ data/json/items/gun/rpg.json | 4 +-
+ data/json/items/gun/shot.json | 122 ++++++------
+ data/json/items/gun/shotpaper.json | 8 +-
+ data/json/items/gun/signal_flare.json | 9 +-
+ data/json/items/gun/ups.json | 10 +-
+ data/json/items/ranged/crossbows.json | 9 +-
+ data/json/items/ranged/pneumatic.json | 6 +-
+ data/json/items/ranged/spearguns.json | 4 +-
+ data/json/not_really_obsolete.json | 4 +-
+ data/json/obsoletion/items.json | 24 +--
+ .../{items/gunmod => obsoletion}/mount.json | 0
+ data/json/obsoletion/recipes.json | 35 ++++
+ data/json/recipes/weapon/mods.json | 182 ------------------
+ data/mods/Aftershock/items/obsolete.json | 4 +-
+ data/mods/Aftershock/items/weapons.json | 10 +-
+ data/mods/Generic_Guns/firearms/obsolete.json | 8 +-
+ .../Magiclysm/items/enchanted_ranged.json | 6 +-
+ data/mods/No_Hope/Items/guns.json | 43 ++---
+ tests/ranged_burst_balance_test.cpp | 2 +-
+ 51 files changed, 306 insertions(+), 524 deletions(-)
+ rename data/json/{items/gunmod => obsoletion}/mount.json (100%)
+
+diff --git a/data/json/items/classes/gun.json b/data/json/items/classes/gun.json
+index d010aa2dee0..8ec6c586c89 100644
+--- a/data/json/items/classes/gun.json
++++ b/data/json/items/classes/gun.json
+@@ -93,10 +93,10 @@
+ [ "grip", 1 ],
+ [ "mechanism", 2 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -129,9 +129,9 @@
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "sights", 1 ],
+- [ "stock mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "stock", 1 ],
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -145,15 +145,7 @@
+ "delete": { "flags": [ "NEVER_JAMS" ] },
+ "//": "Slower reloads, no unloading. Base, unskilled person should take 1.5 seconds per chamber. No underbarrel mods, that's where the ram goes.",
+ "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ],
+- "valid_mod_locations": [
+- [ "accessories", 2 ],
+- [ "barrel", 1 ],
+- [ "bore", 1 ],
+- [ "grip", 1 ],
+- [ "stock mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ]
+- ]
++ "valid_mod_locations": [ [ "accessories", 2 ], [ "barrel", 1 ], [ "bore", 1 ], [ "grip", 1 ], [ "stock", 1 ], [ "rail", 1 ], [ "sights", 1 ] ]
+ },
+ {
+ "abstract": "pistol_energy",
+@@ -188,14 +180,7 @@
+ "flags": [ "RELOAD_ONE", "STR_RELOAD", "WATERPROOF_GUN", "UNDERWATER_GUN", "NEVER_JAMS", "NON_FOULING", "NEEDS_NO_LUBE" ],
+ "dispersion": 120,
+ "reload": 600,
+- "valid_mod_locations": [
+- [ "accessories", 2 ],
+- [ "grip", 1 ],
+- [ "sights", 1 ],
+- [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
+- ],
++ "valid_mod_locations": [ [ "accessories", 2 ], [ "grip", 1 ], [ "sights", 1 ], [ "stock", 1 ], [ "rail", 1 ], [ "underbarrel", 1 ] ],
+ "faults": [ ]
+ },
+ {
+@@ -271,10 +256,10 @@
+ [ "muzzle", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ],
+ "flags": [ "RELOAD_EJECT" ]
+@@ -340,8 +325,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "faults": [ ]
+ },
+@@ -356,7 +341,7 @@
+ "flags": [ "NEVER_JAMS", "NON_FOULING", "NEEDS_NO_LUBE" ],
+ "dispersion": 350,
+ "reload": 600,
+- "valid_mod_locations": [ [ "accessories", 3 ], [ "sling", 1 ], [ "grip", 1 ], [ "mechanism", 4 ], [ "stock", 1 ], [ "rail mount", 1 ] ],
++ "valid_mod_locations": [ [ "accessories", 3 ], [ "sling", 1 ], [ "grip", 1 ], [ "mechanism", 4 ], [ "stock", 1 ], [ "rail", 1 ] ],
+ "faults": [ ]
+ },
+ {
+@@ -375,14 +360,14 @@
+ [ "barrel", 1 ],
+ [ "bore", 1 ],
+ [ "brass catcher", 1 ],
+- [ "grip mount", 1 ],
++ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -415,15 +400,15 @@
+ [ "barrel", 1 ],
+ [ "bore", 1 ],
+ [ "brass catcher", 1 ],
+- [ "grip mount", 1 ],
++ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+ [ "loading port", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -475,7 +460,7 @@
+ "dispersion": 300,
+ "reload": 400,
+ "handling": 60,
+- "valid_mod_locations": [ [ "brass catcher", 1 ], [ "sling", 1 ], [ "rail mount", 1 ], [ "sights mount", 1 ] ],
++ "valid_mod_locations": [ [ "brass catcher", 1 ], [ "sling", 1 ], [ "rail", 1 ], [ "sights", 1 ] ],
+ "flags": [ "MOUNTED_GUN" ],
+ "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ]
+ },
+diff --git a/data/json/items/classes/range.json b/data/json/items/classes/range.json
+index 0909d41652c..e887e7e5e73 100644
+--- a/data/json/items/classes/range.json
++++ b/data/json/items/classes/range.json
+@@ -77,7 +77,7 @@
+ "name": { "str": "base slingshot" },
+ "skill": "archery",
+ "ammo": "pebble",
+- "valid_mod_locations": [ [ "grip mount", 1 ], [ "underbarrel mount", 1 ] ],
++ "valid_mod_locations": [ [ "grip", 1 ], [ "underbarrel", 1 ] ],
+ "extend": { "flags": [ "BELT_CLIP" ] }
+ },
+ {
+diff --git a/data/json/items/gun/20x66mm.json b/data/json/items/gun/20x66mm.json
+index ef5f400ea73..fcd4ba7d58d 100644
+--- a/data/json/items/gun/20x66mm.json
++++ b/data/json/items/gun/20x66mm.json
+@@ -92,7 +92,7 @@
+ [ "rail", 1 ],
+ [ "sights", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "20x66mm", [ "20x66_10_mag" ] ] ],
+ "flags": [ "WATERPROOF_GUN", "NEVER_JAMS" ]
+diff --git a/data/json/items/gun/22.json b/data/json/items/gun/22.json
+index 501c3df55a5..9a9f792cae7 100644
+--- a/data/json/items/gun/22.json
++++ b/data/json/items/gun/22.json
+@@ -67,9 +67,9 @@
+ [ "bore", 1 ],
+ [ "grip", 1 ],
+ [ "mechanism", 2 ],
+- [ "sights mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "sights", 1 ],
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ],
+ "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT" ]
+diff --git a/data/json/items/gun/223.json b/data/json/items/gun/223.json
+index 848fe53ce0a..1b6d7c727d9 100644
+--- a/data/json/items/gun/223.json
++++ b/data/json/items/gun/223.json
+@@ -123,13 +123,13 @@
+ [ "barrel", 1 ],
+ [ "bore", 1 ],
+ [ "brass catcher", 1 ],
+- [ "grip mount", 1 ],
++ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "magazine", 1 ],
+ [ "muzzle", 1 ],
+- [ "sights mount", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "underbarrel mount", 1 ],
++ [ "underbarrel", 1 ],
+ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "223", [ "famasmag" ] ] ]
+@@ -435,10 +435,10 @@
+ [ "muzzle", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
++ [ "grip", 1 ],
++ [ "rail", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "223", [ "ruger20", "ruger5", "ruger10", "ruger30", "ruger90", "ruger100", "ruger_makeshiftmag" ] ] ]
+ },
+@@ -586,9 +586,9 @@
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+ [ "underbarrel", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ]
+ ],
+ "magazines": [
+ [
+diff --git a/data/json/items/gun/3006.json b/data/json/items/gun/3006.json
+index 96248a6de79..3963fd1197a 100644
+--- a/data/json/items/gun/3006.json
++++ b/data/json/items/gun/3006.json
+@@ -79,10 +79,10 @@
+ [ "muzzle", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
++ [ "grip", 1 ],
++ [ "rail", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "3006", [ "3006_clip" ] ] ],
+ "flags": [ "RELOAD_ONE" ]
+diff --git a/data/json/items/gun/308.json b/data/json/items/gun/308.json
+index e32022184b3..87677a5128a 100644
+--- a/data/json/items/gun/308.json
++++ b/data/json/items/gun/308.json
+@@ -122,10 +122,10 @@
+ [ "muzzle", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
++ [ "grip", 1 ],
++ [ "rail", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "308", [ "m14mag", "m14smallmag", "m14_makeshiftmag" ] ] ]
+ },
+@@ -232,9 +232,9 @@
+ [ "mechanism", 4 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "308", [ "g3_makeshiftmag", "g3mag", "g3bigmag" ] ] ]
+ },
+@@ -302,8 +302,8 @@
+ [ "stock", 1 ],
+ [ "mechanism", 4 ],
+ [ "sights", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
++ [ "grip", 1 ],
++ [ "rail", 1 ],
+ [ "underbarrel", 1 ]
+ ],
+ "flags": [ "RELOAD_ONE", "NEVER_JAMS" ]
+diff --git a/data/json/items/gun/38.json b/data/json/items/gun/38.json
+index e71fa7eaf06..c79c06b26b6 100644
+--- a/data/json/items/gun/38.json
++++ b/data/json/items/gun/38.json
+@@ -21,14 +21,7 @@
+ "blackpowder_tolerance": 60,
+ "clip_size": 2,
+ "reload": 200,
+- "valid_mod_locations": [
+- [ "accessories", 4 ],
+- [ "grip", 1 ],
+- [ "sights", 1 ],
+- [ "underbarrel", 1 ],
+- [ "rail mount", 1 ],
+- [ "stock mount", 1 ]
+- ],
++ "valid_mod_locations": [ [ "accessories", 4 ], [ "grip", 1 ], [ "sights", 1 ], [ "underbarrel", 1 ], [ "rail", 1 ], [ "stock", 1 ] ],
+ "delete": { "flags": "NEVER_JAMS" }
+ },
+ {
+@@ -55,9 +48,9 @@
+ [ "bore", 1 ],
+ [ "grip", 1 ],
+ [ "mechanism", 2 ],
+- [ "sights mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "sights", 1 ],
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -121,7 +114,7 @@
+ [ "mechanism", 4 ],
+ [ "rail", 1 ],
+ [ "sights", 1 ],
+- [ "stock mount", 1 ],
++ [ "stock", 1 ],
+ [ "underbarrel", 1 ]
+ ]
+ },
+@@ -154,7 +147,7 @@
+ [ "mechanism", 4 ],
+ [ "rail", 1 ],
+ [ "sights", 1 ],
+- [ "stock mount", 1 ],
++ [ "stock", 1 ],
+ [ "underbarrel", 1 ]
+ ]
+ }
+diff --git a/data/json/items/gun/40.json b/data/json/items/gun/40.json
+index 498b7189c15..922be16a0ef 100644
+--- a/data/json/items/gun/40.json
++++ b/data/json/items/gun/40.json
+@@ -191,7 +191,7 @@
+ [ "sights", 1 ],
+ [ "stock", 1 ],
+ [ "underbarrel", 1 ],
+- [ "rail mount", 1 ]
++ [ "rail", 1 ]
+ ],
+ "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT" ],
+ "delete": { "faults": "fault_gun_chamber_spent" }
+diff --git a/data/json/items/gun/40x46mm.json b/data/json/items/gun/40x46mm.json
+index 5e5af532fca..a3e217b890b 100644
+--- a/data/json/items/gun/40x46mm.json
++++ b/data/json/items/gun/40x46mm.json
+@@ -21,10 +21,10 @@
+ [ "barrel", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -68,10 +68,10 @@
+ [ "barrel", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
++ [ "grip", 1 ],
++ [ "rail", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -95,10 +95,10 @@
+ [ "barrel", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
++ [ "grip", 1 ],
++ [ "rail", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+diff --git a/data/json/items/gun/40x53mm.json b/data/json/items/gun/40x53mm.json
+index ffe7978e13b..0ed451e6df0 100644
+--- a/data/json/items/gun/40x53mm.json
++++ b/data/json/items/gun/40x53mm.json
+@@ -24,8 +24,8 @@
+ [ "brass catcher", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "modes": [ [ "DEFAULT", "semi", 1, "NPC_AVOID" ], [ "AUTO", "auto", 2, "NPC_AVOID" ] ],
+ "magazines": [ [ "40x53mm", [ "belt40mm" ] ] ],
+diff --git a/data/json/items/gun/410shot.json b/data/json/items/gun/410shot.json
+index f485eb15c46..8e4bdec9554 100644
+--- a/data/json/items/gun/410shot.json
++++ b/data/json/items/gun/410shot.json
+@@ -41,12 +41,12 @@
+ [ "bore", 1 ],
+ [ "muzzle", 1 ],
+ [ "mechanism", 1 ],
+- [ "sights mount", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "stock mount", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "stock", 1 ],
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "extend": { "flags": [ "NEVER_JAMS" ] }
+ }
+diff --git a/data/json/items/gun/44.json b/data/json/items/gun/44.json
+index cc4deed8ff4..d2b4d1c3f21 100644
+--- a/data/json/items/gun/44.json
++++ b/data/json/items/gun/44.json
+@@ -62,8 +62,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+diff --git a/data/json/items/gun/44paper.json b/data/json/items/gun/44paper.json
+index e3fdcabb226..483e2eecb4d 100644
+--- a/data/json/items/gun/44paper.json
++++ b/data/json/items/gun/44paper.json
+@@ -41,8 +41,8 @@
+ [ "grip", 1 ],
+ [ "stock", 1 ],
+ [ "underbarrel", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ]
++ [ "rail", 1 ],
++ [ "sights", 1 ]
+ ],
+ "built_in_mods": [ "lemat_revolver_shotgun" ]
+ }
+diff --git a/data/json/items/gun/454.json b/data/json/items/gun/454.json
+index 9b134a715b8..b35e2aa131e 100644
+--- a/data/json/items/gun/454.json
++++ b/data/json/items/gun/454.json
+@@ -24,8 +24,8 @@
+ [ "mechanism", 4 ],
+ [ "rail", 1 ],
+ [ "sights", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+diff --git a/data/json/items/gun/4570.json b/data/json/items/gun/4570.json
+index 62036e1bc6e..c54a6612423 100644
+--- a/data/json/items/gun/4570.json
++++ b/data/json/items/gun/4570.json
+@@ -23,9 +23,9 @@
+ [ "muzzle", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "flags": [ "RELOAD_ONE" ]
+ },
+@@ -53,9 +53,9 @@
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "sights", 1 ],
+- [ "rail mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -85,9 +85,9 @@
+ [ "muzzle", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -107,7 +107,7 @@
+ "ammo": "4570",
+ "dispersion": 400,
+ "blackpowder_tolerance": 80,
+- "valid_mod_locations": [ [ "brass catcher", 1 ], [ "rail mount", 1 ], [ "sights", 1 ] ],
++ "valid_mod_locations": [ [ "brass catcher", 1 ], [ "rail", 1 ], [ "sights", 1 ] ],
+ "modes": [ [ "DEFAULT", "single", 1 ], [ "AUTO", "burst", 3 ] ],
+ "//": "If speedloaders get fixed to allow topping off a partially-loaded gun, adding the more common Bruce feed (40 round feed tray topped off with 20-round blocks) would be an option.",
+ "magazines": [ [ "4570", [ "gatlingdrum240" ] ] ],
+diff --git a/data/json/items/gun/45colt.json b/data/json/items/gun/45colt.json
+index db54e498372..e6a2b6a6250 100644
+--- a/data/json/items/gun/45colt.json
++++ b/data/json/items/gun/45colt.json
+@@ -23,9 +23,9 @@
+ [ "bore", 1 ],
+ [ "grip", 1 ],
+ [ "mechanism", 2 ],
+- [ "sights mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "sights", 1 ],
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+diff --git a/data/json/items/gun/50.json b/data/json/items/gun/50.json
+index 0920cb6f218..dad0ca0fa82 100644
+--- a/data/json/items/gun/50.json
++++ b/data/json/items/gun/50.json
+@@ -46,8 +46,8 @@
+ [ "sling", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "50", [ "belt50" ] ] ],
+ "flags": [ "MOUNTED_GUN" ]
+@@ -84,8 +84,8 @@
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+ [ "grip", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ ],
+ "clip_size": 1,
+diff --git a/data/json/items/gun/500.json b/data/json/items/gun/500.json
+index 0954d54fb7a..58f0ed4665f 100644
+--- a/data/json/items/gun/500.json
++++ b/data/json/items/gun/500.json
+@@ -27,8 +27,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -56,8 +56,8 @@
+ [ "mechanism", 4 ],
+ [ "rail", 1 ],
+ [ "sights", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ }
+ ]
+diff --git a/data/json/items/gun/66mm.json b/data/json/items/gun/66mm.json
+index dd89b475912..effed9c7242 100644
+--- a/data/json/items/gun/66mm.json
++++ b/data/json/items/gun/66mm.json
+@@ -43,13 +43,6 @@
+ "durability": 9,
+ "clip_size": 1,
+ "reload": 150,
+- "valid_mod_locations": [
+- [ "accessories", 1 ],
+- [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
+- ]
++ "valid_mod_locations": [ [ "accessories", 1 ], [ "sling", 1 ], [ "grip", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "underbarrel", 1 ] ]
+ }
+ ]
+diff --git a/data/json/items/gun/762.json b/data/json/items/gun/762.json
+index a21d1e6d8fa..2b516169168 100644
+--- a/data/json/items/gun/762.json
++++ b/data/json/items/gun/762.json
+@@ -24,11 +24,11 @@
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "762", [ "akmag30", "akmag10", "akmag20", "akmag40", "akdrum75" ] ] ]
+ },
+@@ -100,11 +100,11 @@
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "762", [ "akmag30", "akmag10", "akmag20", "akmag40", "akdrum75" ] ] ]
+ },
+@@ -134,11 +134,11 @@
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "762", [ "akmag30", "akmag10", "akmag20", "akmag40", "akdrum75" ] ] ]
+ }
+diff --git a/data/json/items/gun/762x25.json b/data/json/items/gun/762x25.json
+index 397d57e9a93..2a34af4ea9e 100644
+--- a/data/json/items/gun/762x25.json
++++ b/data/json/items/gun/762x25.json
+@@ -30,7 +30,7 @@
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+ [ "underbarrel", 1 ],
+- [ "rail mount", 1 ]
++ [ "rail", 1 ]
+ ],
+ "magazines": [ [ "762x25", [ "ppshmag", "ppshdrum" ] ] ]
+ },
+diff --git a/data/json/items/gun/84x246mm.json b/data/json/items/gun/84x246mm.json
+index 29c8d5d810f..a3b1bcbbd97 100644
+--- a/data/json/items/gun/84x246mm.json
++++ b/data/json/items/gun/84x246mm.json
+@@ -25,8 +25,8 @@
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "sights", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+diff --git a/data/json/items/gun/9mm.json b/data/json/items/gun/9mm.json
+index a3db7b059ac..dea9a3429f9 100644
+--- a/data/json/items/gun/9mm.json
++++ b/data/json/items/gun/9mm.json
+@@ -117,9 +117,9 @@
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ]
+ ],
+@@ -142,9 +142,9 @@
+ [ "brass catcher", 1 ],
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ]
+ ],
+@@ -173,8 +173,8 @@
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "underbarrel", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ]
+@@ -199,9 +199,9 @@
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "sights", 1 ],
+- [ "underbarrel mount", 1 ],
++ [ "underbarrel", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ]
+ ],
+@@ -385,10 +385,10 @@
+ [ "muzzle", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "9mm", [ "stenmag", "survivor9mm_mag" ] ] ]
+ },
+diff --git a/data/json/items/gun/atgm.json b/data/json/items/gun/atgm.json
+index d08f2aa7a30..706e60049c6 100644
+--- a/data/json/items/gun/atgm.json
++++ b/data/json/items/gun/atgm.json
+@@ -19,7 +19,7 @@
+ "clip_size": 1,
+ "reload": 600,
+ "loudness": 200,
+- "valid_mod_locations": [ [ "sling", 1 ], [ "rail mount", 1 ], [ "sights mount", 1 ], [ "underbarrel mount", 1 ] ],
++ "valid_mod_locations": [ [ "sling", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "underbarrel", 1 ] ],
+ "extend": { "flags": [ "RELOAD_EJECT", "MOUNTED_GUN" ] }
+ }
+ ]
+diff --git a/data/json/items/gun/blunderbuss.json b/data/json/items/gun/blunderbuss.json
+index 9b95f5f0763..f123f83524e 100644
+--- a/data/json/items/gun/blunderbuss.json
++++ b/data/json/items/gun/blunderbuss.json
+@@ -19,14 +19,7 @@
+ "clip_size": 1,
+ "reload": 300,
+ "barrel_length": "500 ml",
+- "valid_mod_locations": [
+- [ "sling", 1 ],
+- [ "stock", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
+- ],
++ "valid_mod_locations": [ [ "sling", 1 ], [ "stock", 1 ], [ "grip", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "underbarrel", 1 ] ],
+ "faults": [ ]
+ }
+ ]
+diff --git a/data/json/items/gun/combination.json b/data/json/items/gun/combination.json
+index 3287be03365..22e6bf7fa5f 100644
+--- a/data/json/items/gun/combination.json
++++ b/data/json/items/gun/combination.json
+@@ -28,7 +28,7 @@
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+ [ "underbarrel", 1 ],
+- [ "rail mount", 1 ]
++ [ "rail", 1 ]
+ ]
+ },
+ {
+diff --git a/data/json/items/gun/flammable.json b/data/json/items/gun/flammable.json
+index 9068ff03e6b..3ba14725f14 100644
+--- a/data/json/items/gun/flammable.json
++++ b/data/json/items/gun/flammable.json
+@@ -17,10 +17,10 @@
+ [ "accessories", 1 ],
+ [ "grip", 1 ],
+ [ "sling", 1 ],
+- [ "rail mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "stock", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "flammable", [ "pressurized_tank" ] ] ]
+ },
+diff --git a/data/json/items/gun/flintlock.json b/data/json/items/gun/flintlock.json
+index de0bc8717f9..90b94fd59ae 100644
+--- a/data/json/items/gun/flintlock.json
++++ b/data/json/items/gun/flintlock.json
+@@ -9,11 +9,11 @@
+ "valid_mod_locations": [
+ [ "accessories", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "volume": "2250 ml",
+ "weight": "3600 g",
+@@ -55,14 +55,7 @@
+ "blackpowder_tolerance": 96,
+ "clip_size": 1,
+ "reload": 600,
+- "valid_mod_locations": [
+- [ "accessories", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
+- ],
++ "valid_mod_locations": [ [ "accessories", 1 ], [ "grip", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "stock", 1 ], [ "underbarrel", 1 ] ],
+ "flags": [ "NEVER_JAMS" ]
+ },
+ {
+@@ -91,9 +84,9 @@
+ [ "accessories", 1 ],
+ [ "sling", 1 ],
+ [ "underbarrel", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "stock", 1 ]
+ ],
+ "extend": { "flags": [ "DURABLE_MELEE" ] }
+diff --git a/data/json/items/gun/misc.json b/data/json/items/gun/misc.json
+index 54884ef07a8..ec4d43f9286 100644
+--- a/data/json/items/gun/misc.json
++++ b/data/json/items/gun/misc.json
+@@ -19,7 +19,7 @@
+ "clip_size": 1,
+ "reload": 800,
+ "loudness": 200,
+- "valid_mod_locations": [ [ "sling", 1 ], [ "grip mount", 1 ], [ "rail mount", 1 ], [ "sights mount", 1 ], [ "underbarrel mount", 1 ] ]
++ "valid_mod_locations": [ [ "sling", 1 ], [ "grip", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "underbarrel", 1 ] ]
+ },
+ {
+ "id": "watercannon",
+diff --git a/data/json/items/gun/nail.json b/data/json/items/gun/nail.json
+index bedf605cf5b..6df29b41a28 100644
+--- a/data/json/items/gun/nail.json
++++ b/data/json/items/gun/nail.json
+@@ -18,6 +18,6 @@
+ "loudness": 5,
+ "clip_size": 20,
+ "reload": 50,
+- "valid_mod_locations": [ [ "grip mount", 1 ], [ "rail mount", 1 ], [ "sights mount", 1 ], [ "stock mount", 1 ], [ "underbarrel mount", 1 ] ]
++ "valid_mod_locations": [ [ "grip", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "stock", 1 ], [ "underbarrel", 1 ] ]
+ }
+ ]
+diff --git a/data/json/items/gun/paintball.json b/data/json/items/gun/paintball.json
+index 6eea43e32fe..f1e584dc959 100644
+--- a/data/json/items/gun/paintball.json
++++ b/data/json/items/gun/paintball.json
+@@ -23,13 +23,6 @@
+ "durability": 7,
+ "clip_size": 50,
+ "reload": 50,
+- "valid_mod_locations": [
+- [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
+- ]
++ "valid_mod_locations": [ [ "sling", 1 ], [ "grip", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "stock", 1 ], [ "underbarrel", 1 ] ]
+ }
+ ]
+diff --git a/data/json/items/gun/rpg.json b/data/json/items/gun/rpg.json
+index 44e881691c8..3ffb55be6e7 100644
+--- a/data/json/items/gun/rpg.json
++++ b/data/json/items/gun/rpg.json
+@@ -24,8 +24,8 @@
+ [ "mechanism", 4 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ }
+ ]
+diff --git a/data/json/items/gun/shot.json b/data/json/items/gun/shot.json
+index d170049a3b3..a599c10aae7 100644
+--- a/data/json/items/gun/shot.json
++++ b/data/json/items/gun/shot.json
+@@ -24,11 +24,11 @@
+ "valid_mod_locations": [
+ [ "accessories", 1 ],
+ [ "grip", 1 ],
+- [ "stock mount", 1 ],
++ [ "stock", 1 ],
+ [ "mechanism", 4 ],
+- [ "sights mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "sights", 1 ],
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -50,7 +50,7 @@
+ "burst": 6,
+ "reload": 200,
+ "handling": 30,
+- "valid_mod_locations": [ [ "accessories", 4 ], [ "sights", 1 ], [ "rail mount", 1 ] ],
++ "valid_mod_locations": [ [ "accessories", 4 ], [ "sights", 1 ], [ "rail", 1 ] ],
+ "magazines": [ [ "shot", [ "shotbelt_20" ] ] ],
+ "flags": [ "MOUNTED_GUN" ]
+ },
+@@ -96,10 +96,10 @@
+ [ "barrel", 1 ],
+ [ "bore", 1 ],
+ [ "brass catcher", 1 ],
+- [ "grip mount", 1 ],
++ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "underbarrel", 2 ]
+@@ -128,10 +128,10 @@
+ [ "barrel", 1 ],
+ [ "bore", 1 ],
+ [ "brass catcher", 1 ],
+- [ "grip mount", 1 ],
++ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "underbarrel", 2 ]
+@@ -157,11 +157,11 @@
+ [ "mechanism", 4 ],
+ [ "sling", 1 ],
+ [ "barrel", 1 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "loading port", 1 ],
+ [ "brass catcher", 1 ],
+ [ "sights", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "flags": [ "RELOAD_ONE", "NEEDS_UNFOLD" ]
+ },
+@@ -236,14 +236,14 @@
+ [ "accessories", 2 ],
+ [ "sling", 1 ],
+ [ "barrel", 1 ],
+- [ "grip mount", 1 ],
++ [ "grip", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "loading port", 1 ],
+ [ "brass catcher", 1 ],
+ [ "mechanism", 4 ],
+ [ "sights", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "extend": { "flags": [ "RELOAD_ONE" ] }
+ },
+@@ -261,12 +261,12 @@
+ "valid_mod_locations": [
+ [ "accessories", 2 ],
+ [ "sling", 1 ],
+- [ "stock mount", 1 ],
++ [ "stock", 1 ],
+ [ "barrel", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "extend": { "flags": [ "RELOAD_ONE" ] }
+ },
+@@ -291,13 +291,13 @@
+ "valid_mod_locations": [
+ [ "accessories", 2 ],
+ [ "sling", 1 ],
+- [ "stock mount", 1 ],
++ [ "stock", 1 ],
+ [ "barrel", 1 ],
+ [ "muzzle", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "flags": [ "NEVER_JAMS", "RELOAD_EJECT" ]
+ },
+@@ -347,11 +347,11 @@
+ [ "grip", 1 ],
+ [ "loading port", 1 ],
+ [ "mechanism", 4 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -394,10 +394,10 @@
+ [ "barrel", 1 ],
+ [ "stock", 1 ],
+ [ "mechanism", 4 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "loading port", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "extend": { "flags": [ "RELOAD_ONE" ] }
+ },
+@@ -423,10 +423,10 @@
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+ [ "barrel", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "flags": [ "RELOAD_ONE", "RELOAD_EJECT", "NEVER_JAMS" ]
+ },
+@@ -452,10 +452,10 @@
+ [ "mechanism", 4 ],
+ [ "barrel", 1 ],
+ [ "brass catcher", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "shot", [ "saiga10mag", "saiga30mag" ] ] ]
+ },
+@@ -496,12 +496,12 @@
+ [ "bore", 1 ],
+ [ "muzzle", 1 ],
+ [ "mechanism", 1 ],
+- [ "sights mount", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "extend": { "flags": [ "NEVER_JAMS" ] }
+ },
+@@ -533,11 +533,11 @@
+ [ "brass catcher", 1 ],
+ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "flags": [ "RELOAD_ONE", "RELOAD_EJECT", "NEVER_JAMS" ]
+ },
+@@ -562,14 +562,14 @@
+ [ "accessories", 4 ],
+ [ "bore", 1 ],
+ [ "brass catcher", 1 ],
+- [ "grip mount", 1 ],
++ [ "grip", 1 ],
+ [ "mechanism", 2 ],
+ [ "muzzle", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "flags": [ "RELOAD_ONE" ]
+ },
+@@ -595,11 +595,11 @@
+ [ "accessories", 2 ],
+ [ "bore", 1 ],
+ [ "brass catcher", 1 ],
+- [ "grip mount", 1 ],
++ [ "grip", 1 ],
+ [ "mechanism", 4 ],
+ [ "muzzle", 1 ],
+ [ "underbarrel", 2 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ]
+ ],
+@@ -628,9 +628,9 @@
+ [ "muzzle", 1 ],
+ [ "grip", 1 ],
+ [ "brass catcher", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "modes": [ [ "DEFAULT", "semi", 1 ], [ "AUTO", "auto", 5 ] ],
+ "magazines": [ [ "shot", [ "USAS10mag", "USAS20mag" ] ] ]
+@@ -657,14 +657,14 @@
+ "modes": [ [ "DEFAULT", "single", 1 ] ],
+ "valid_mod_locations": [
+ [ "accessories", 2 ],
+- [ "stock mount", 1 ],
++ [ "stock", 1 ],
+ [ "mechanism", 2 ],
+ [ "barrel", 1 ],
+- [ "grip mount", 1 ],
++ [ "grip", 1 ],
+ [ "brass catcher", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "flags": [ "RELOAD_ONE" ]
+ },
+@@ -694,9 +694,9 @@
+ [ "muzzle", 1 ],
+ [ "sling", 1 ],
+ [ "brass catcher", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
+ [ "underbarrel", 1 ]
+ ],
+ "default_mods": [ "sword_bayonet" ],
+diff --git a/data/json/items/gun/shotpaper.json b/data/json/items/gun/shotpaper.json
+index f5cf170037f..27105ff1bfa 100644
+--- a/data/json/items/gun/shotpaper.json
++++ b/data/json/items/gun/shotpaper.json
+@@ -22,12 +22,12 @@
+ [ "accessories", 2 ],
+ [ "barrel", 1 ],
+ [ "muzzle", 1 ],
+- [ "sights mount", 1 ],
++ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "flags": [ "NEVER_JAMS" ]
+ }
+diff --git a/data/json/items/gun/signal_flare.json b/data/json/items/gun/signal_flare.json
+index b359f251261..9592711086c 100644
+--- a/data/json/items/gun/signal_flare.json
++++ b/data/json/items/gun/signal_flare.json
+@@ -17,14 +17,7 @@
+ "durability": 7,
+ "loudness": 40,
+ "clip_size": 1,
+- "valid_mod_locations": [
+- [ "accessories", 4 ],
+- [ "grip", 1 ],
+- [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
+- ],
++ "valid_mod_locations": [ [ "accessories", 4 ], [ "grip", 1 ], [ "stock", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "underbarrel", 1 ] ],
+ "extend": { "flags": [ "WATERPROOF_GUN", "PYROMANIAC_WEAPON" ] },
+ "faults": [ ]
+ }
+diff --git a/data/json/items/gun/ups.json b/data/json/items/gun/ups.json
+index c291ad20b75..f0936360820 100644
+--- a/data/json/items/gun/ups.json
++++ b/data/json/items/gun/ups.json
+@@ -122,11 +122,11 @@
+ [ "emitter", 1 ],
+ [ "lens", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "ammo_effects": [ "LASER", "INCENDIARY" ]
+ },
+diff --git a/data/json/items/ranged/crossbows.json b/data/json/items/ranged/crossbows.json
+index 30df24032c4..7626ebfa1f0 100644
+--- a/data/json/items/ranged/crossbows.json
++++ b/data/json/items/ranged/crossbows.json
+@@ -338,14 +338,7 @@
+ "dispersion": 375,
+ "durability": 6,
+ "reload": 800,
+- "valid_mod_locations": [
+- [ "accessories", 4 ],
+- [ "dampening", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ],
+- [ "mechanism", 1 ]
+- ]
++ "valid_mod_locations": [ [ "accessories", 4 ], [ "dampening", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "underbarrel", 1 ], [ "mechanism", 1 ] ]
+ },
+ {
+ "id": "compositecrossbow",
+diff --git a/data/json/items/ranged/pneumatic.json b/data/json/items/ranged/pneumatic.json
+index 3249c93783c..1bbe5f657af 100644
+--- a/data/json/items/ranged/pneumatic.json
++++ b/data/json/items/ranged/pneumatic.json
+@@ -27,9 +27,9 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+diff --git a/data/json/items/ranged/spearguns.json b/data/json/items/ranged/spearguns.json
+index a1d95fbe962..13fe8e90d0c 100644
+--- a/data/json/items/ranged/spearguns.json
++++ b/data/json/items/ranged/spearguns.json
+@@ -94,8 +94,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+diff --git a/data/json/not_really_obsolete.json b/data/json/not_really_obsolete.json
+index b745c6c2840..aa615cfaf2e 100644
+--- a/data/json/not_really_obsolete.json
++++ b/data/json/not_really_obsolete.json
+@@ -148,8 +148,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "ammo_effects": [ "PLASMA", "EXPLOSIVE", "FLAME" ]
+ },
+diff --git a/data/json/obsoletion/items.json b/data/json/obsoletion/items.json
+index 74d09d98e1c..95c7d704106 100644
+--- a/data/json/obsoletion/items.json
++++ b/data/json/obsoletion/items.json
+@@ -386,7 +386,7 @@
+ "range": -2,
+ "dispersion": 300,
+ "clip_size": 100,
+- "valid_mod_locations": [ [ "sling", 1 ], [ "stock", 1 ], [ "rail mount", 1 ] ],
++ "valid_mod_locations": [ [ "sling", 1 ], [ "stock", 1 ], [ "rail", 1 ] ],
+ "relative": { "reload": 4 }
+ },
+ {
+@@ -461,7 +461,7 @@
+ [ "rail", 1 ],
+ [ "sights", 1 ],
+ [ "stock", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "underbarrel", 1 ]
+ ],
+ "ammo_effects": [ "LASER", "INCENDIARY" ],
+ "flags": [ "NO_UNLOAD" ]
+@@ -1246,9 +1246,9 @@
+ [ "muzzle", 1 ],
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+- [ "rail mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "blackpowder_tolerance": 60,
+ "relative": { "durability": -3 },
+@@ -1915,8 +1915,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -1943,7 +1943,7 @@
+ "durability": 7,
+ "clip_size": 1,
+ "reload": 800,
+- "valid_mod_locations": [ [ "sling", 1 ], [ "grip mount", 1 ], [ "rail mount", 1 ], [ "sights mount", 1 ], [ "underbarrel mount", 1 ] ]
++ "valid_mod_locations": [ [ "sling", 1 ], [ "grip", 1 ], [ "rail", 1 ], [ "sights", 1 ], [ "underbarrel", 1 ] ]
+ },
+ {
+ "id": "coilgun",
+@@ -1974,8 +1974,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "nail", [ "nailmag" ] ] ]
+ },
+@@ -1999,8 +1999,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [ [ "nail", [ "nailmag" ] ] ],
+ "relative": { "weight": 1000, "volume": 6, "range": 3, "ranged_damage": { "damage_type": "stab", "amount": 4 } },
+diff --git a/data/json/items/gunmod/mount.json b/data/json/obsoletion/mount.json
+similarity index 100%
+rename from data/json/items/gunmod/mount.json
+rename to data/json/obsoletion/mount.json
+diff --git a/data/json/obsoletion/recipes.json b/data/json/obsoletion/recipes.json
+index 9bd16374c34..ae6d33169e4 100644
+--- a/data/json/obsoletion/recipes.json
++++ b/data/json/obsoletion/recipes.json
+@@ -3239,6 +3239,41 @@
+ "result": "linuxtshirtuncraft",
+ "obsolete": true
+ },
++ {
++ "type": "recipe",
++ "result": "grip_mount",
++ "obsolete": true
++ },
++ {
++ "type": "recipe",
++ "result": "stock_mount",
++ "obsolete": true
++ },
++ {
++ "type": "recipe",
++ "result": "underbarrel_mount",
++ "obsolete": true
++ },
++ {
++ "type": "recipe",
++ "result": "rail_mount",
++ "obsolete": true
++ },
++ {
++ "type": "recipe",
++ "result": "sights_mount_pistol",
++ "obsolete": true
++ },
++ {
++ "type": "recipe",
++ "result": "sights_mount_launcher",
++ "obsolete": true
++ },
++ {
++ "type": "recipe",
++ "result": "sights_mount",
++ "obsolete": true
++ },
+ {
+ "type": "recipe",
+ "result": "welder_crude",
+diff --git a/data/json/recipes/weapon/mods.json b/data/json/recipes/weapon/mods.json
+index 1ac272e0e65..059185de546 100644
+--- a/data/json/recipes/weapon/mods.json
++++ b/data/json/recipes/weapon/mods.json
+@@ -738,188 +738,6 @@
+ "tools": [ [ [ "large_repairkit", 25 ], [ "small_repairkit", 45 ] ] ],
+ "components": [ [ [ "offset_sights", 1 ] ], [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+ },
+- {
+- "result": "sights_mount",
+- "type": "recipe",
+- "category": "CC_WEAPON",
+- "subcategory": "CSC_WEAPON_MODS",
+- "skill_used": "fabrication",
+- "difficulty": 3,
+- "skills_required": [ [ "gun", 4 ] ],
+- "time": "30 m",
+- "book_learn": [
+- [ "mag_guns", 4 ],
+- [ "mag_pistol", 4 ],
+- [ "mag_shotgun", 4 ],
+- [ "mag_smg", 4 ],
+- [ "mag_rifle", 4 ],
+- [ "manual_gun", 4 ],
+- [ "manual_pistol", 4 ],
+- [ "manual_shotgun", 4 ],
+- [ "manual_smg", 4 ],
+- [ "manual_rifle", 4 ]
+- ],
+- "using": [ [ "soldering_standard", 15 ] ],
+- "qualities": [ { "id": "HAMMER_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ],
+- "tools": [ [ [ "large_repairkit", 10 ], [ "small_repairkit", 30 ] ] ],
+- "components": [ [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+- },
+- {
+- "result": "sights_mount_launcher",
+- "type": "recipe",
+- "category": "CC_WEAPON",
+- "subcategory": "CSC_WEAPON_MODS",
+- "skill_used": "fabrication",
+- "difficulty": 3,
+- "skills_required": [ [ "gun", 4 ] ],
+- "time": "30 m",
+- "book_learn": [
+- [ "mag_guns", 4 ],
+- [ "mag_pistol", 4 ],
+- [ "mag_shotgun", 4 ],
+- [ "mag_smg", 4 ],
+- [ "mag_rifle", 4 ],
+- [ "manual_gun", 4 ],
+- [ "manual_pistol", 4 ],
+- [ "manual_shotgun", 4 ],
+- [ "manual_smg", 4 ],
+- [ "manual_rifle", 4 ]
+- ],
+- "using": [ [ "soldering_standard", 15 ] ],
+- "qualities": [ { "id": "HAMMER_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ],
+- "tools": [ [ [ "large_repairkit", 10 ], [ "small_repairkit", 30 ] ] ],
+- "components": [ [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+- },
+- {
+- "result": "sights_mount_pistol",
+- "type": "recipe",
+- "category": "CC_WEAPON",
+- "subcategory": "CSC_WEAPON_MODS",
+- "skill_used": "fabrication",
+- "difficulty": 3,
+- "skills_required": [ [ "gun", 4 ] ],
+- "time": "30 m",
+- "book_learn": [
+- [ "mag_guns", 4 ],
+- [ "mag_pistol", 4 ],
+- [ "mag_shotgun", 4 ],
+- [ "mag_smg", 4 ],
+- [ "mag_rifle", 4 ],
+- [ "manual_gun", 4 ],
+- [ "manual_pistol", 4 ],
+- [ "manual_shotgun", 4 ],
+- [ "manual_smg", 4 ],
+- [ "manual_rifle", 4 ]
+- ],
+- "using": [ [ "soldering_standard", 15 ] ],
+- "qualities": [ { "id": "HAMMER_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ],
+- "tools": [ [ [ "large_repairkit", 10 ], [ "small_repairkit", 30 ] ] ],
+- "components": [ [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+- },
+- {
+- "result": "rail_mount",
+- "type": "recipe",
+- "category": "CC_WEAPON",
+- "subcategory": "CSC_WEAPON_MODS",
+- "skill_used": "fabrication",
+- "difficulty": 3,
+- "skills_required": [ [ "gun", 4 ] ],
+- "time": "30 m",
+- "book_learn": [
+- [ "mag_guns", 4 ],
+- [ "mag_pistol", 4 ],
+- [ "mag_shotgun", 4 ],
+- [ "mag_smg", 4 ],
+- [ "mag_rifle", 4 ],
+- [ "manual_gun", 4 ],
+- [ "manual_pistol", 4 ],
+- [ "manual_shotgun", 4 ],
+- [ "manual_smg", 4 ],
+- [ "manual_rifle", 4 ]
+- ],
+- "using": [ [ "soldering_standard", 15 ] ],
+- "qualities": [ { "id": "HAMMER_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ],
+- "tools": [ [ [ "large_repairkit", 10 ], [ "small_repairkit", 30 ] ] ],
+- "components": [ [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+- },
+- {
+- "result": "underbarrel_mount",
+- "type": "recipe",
+- "category": "CC_WEAPON",
+- "subcategory": "CSC_WEAPON_MODS",
+- "skill_used": "fabrication",
+- "difficulty": 3,
+- "skills_required": [ [ "gun", 4 ] ],
+- "time": "30 m",
+- "book_learn": [
+- [ "mag_guns", 4 ],
+- [ "mag_pistol", 4 ],
+- [ "mag_shotgun", 4 ],
+- [ "mag_smg", 4 ],
+- [ "mag_rifle", 4 ],
+- [ "manual_gun", 4 ],
+- [ "manual_pistol", 4 ],
+- [ "manual_shotgun", 4 ],
+- [ "manual_smg", 4 ],
+- [ "manual_rifle", 4 ]
+- ],
+- "using": [ [ "soldering_standard", 15 ] ],
+- "qualities": [ { "id": "HAMMER_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ],
+- "tools": [ [ [ "large_repairkit", 10 ], [ "small_repairkit", 30 ] ] ],
+- "components": [ [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 1 ] ] ]
+- },
+- {
+- "result": "stock_mount",
+- "type": "recipe",
+- "category": "CC_WEAPON",
+- "subcategory": "CSC_WEAPON_MODS",
+- "skill_used": "fabrication",
+- "difficulty": 3,
+- "skills_required": [ [ "gun", 5 ] ],
+- "time": "30 m",
+- "book_learn": [
+- [ "mag_guns", 4 ],
+- [ "mag_pistol", 4 ],
+- [ "mag_shotgun", 4 ],
+- [ "mag_smg", 4 ],
+- [ "mag_rifle", 4 ],
+- [ "manual_gun", 4 ],
+- [ "manual_pistol", 4 ],
+- [ "manual_shotgun", 4 ],
+- [ "manual_smg", 4 ],
+- [ "manual_rifle", 4 ]
+- ],
+- "using": [ [ "soldering_standard", 15 ] ],
+- "qualities": [ { "id": "HAMMER_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ],
+- "tools": [ [ [ "large_repairkit", 10 ], [ "small_repairkit", 30 ] ] ],
+- "components": [ [ [ "scrap", 3 ] ] ]
+- },
+- {
+- "result": "grip_mount",
+- "type": "recipe",
+- "category": "CC_WEAPON",
+- "subcategory": "CSC_WEAPON_MODS",
+- "skill_used": "fabrication",
+- "difficulty": 3,
+- "skills_required": [ [ "gun", 5 ] ],
+- "time": "30 m",
+- "book_learn": [
+- [ "mag_guns", 4 ],
+- [ "mag_pistol", 4 ],
+- [ "mag_shotgun", 4 ],
+- [ "mag_smg", 4 ],
+- [ "mag_rifle", 4 ],
+- [ "manual_gun", 4 ],
+- [ "manual_pistol", 4 ],
+- [ "manual_shotgun", 4 ],
+- [ "manual_smg", 4 ],
+- [ "manual_rifle", 4 ]
+- ],
+- "using": [ [ "soldering_standard", 15 ] ],
+- "qualities": [ { "id": "HAMMER_FINE", "level": 1 }, { "id": "SAW_M_FINE", "level": 1 } ],
+- "tools": [ [ [ "large_repairkit", 10 ], [ "small_repairkit", 30 ] ] ],
+- "components": [ [ [ "scrap", 1 ] ], [ [ "plastic_chunk", 3 ] ] ]
+- },
+ {
+ "type": "recipe",
+ "result": "tele_sight",
+diff --git a/data/mods/Aftershock/items/obsolete.json b/data/mods/Aftershock/items/obsolete.json
+index 17f2bb22534..f6806ad84f2 100644
+--- a/data/mods/Aftershock/items/obsolete.json
++++ b/data/mods/Aftershock/items/obsolete.json
+@@ -356,8 +356,8 @@
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+ [ "sights", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "ammo_effects": [ "TRAIL" ]
+ }
+diff --git a/data/mods/Aftershock/items/weapons.json b/data/mods/Aftershock/items/weapons.json
+index 77652ecf40d..be8ba0b5b91 100644
+--- a/data/mods/Aftershock/items/weapons.json
++++ b/data/mods/Aftershock/items/weapons.json
+@@ -250,11 +250,11 @@
+ [ "emitter", 1 ],
+ [ "lens", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "ammo_effects": [ "LASER", "INCENDIARY" ],
+ "flags": [ "NO_UNLOAD", "NON_FOULING", "NEEDS_NO_LUBE" ]
+diff --git a/data/mods/Generic_Guns/firearms/obsolete.json b/data/mods/Generic_Guns/firearms/obsolete.json
+index fcf88b10709..5345ecfa464 100644
+--- a/data/mods/Generic_Guns/firearms/obsolete.json
++++ b/data/mods/Generic_Guns/firearms/obsolete.json
+@@ -32,10 +32,10 @@
+ [ "muzzle", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "magazines": [
+ [ "ammo_pistol", [ "pistol_magnum_mag", "pistol_magnum_mag_hc" ] ],
+diff --git a/data/mods/Magiclysm/items/enchanted_ranged.json b/data/mods/Magiclysm/items/enchanted_ranged.json
+index 3701be94ecf..c5f2bcc1bee 100644
+--- a/data/mods/Magiclysm/items/enchanted_ranged.json
++++ b/data/mods/Magiclysm/items/enchanted_ranged.json
+@@ -51,10 +51,10 @@
+ [ "mechanism", 1 ],
+ [ "barrel", 1 ],
+ [ "grip", 1 ],
+- [ "rail mount", 1 ],
++ [ "rail", 1 ],
+ [ "sights", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "flags": [ "RELOAD_ONE", "NEVER_JAMS", "RELOAD_EJECT" ]
+ },
+diff --git a/data/mods/No_Hope/Items/guns.json b/data/mods/No_Hope/Items/guns.json
+index 67194e3f282..fe93f821dec 100644
+--- a/data/mods/No_Hope/Items/guns.json
++++ b/data/mods/No_Hope/Items/guns.json
+@@ -28,11 +28,11 @@
+ [ "emitter", 1 ],
+ [ "lens", 1 ],
+ [ "sling", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "sights mount", 1 ],
+- [ "stock mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "sights", 1 ],
++ [ "stock", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "ammo_effects": [ "LASER", "INCENDIARY" ],
+ "flags": [ "NO_UNLOAD", "NON_FOULING", "NEEDS_NO_LUBE" ]
+@@ -88,8 +88,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ],
+ "ammo_effects": [ "PLASMA", "EXPLOSIVE", "FLAME" ],
+ "flags": [ "USE_UPS", "NO_UNLOAD", "PYROMANIAC_WEAPON", "NEVER_JAMS" ]
+@@ -140,14 +140,7 @@
+ "blackpowder_tolerance": 56,
+ "clip_size": 6,
+ "built_in_mods": [ "lead_holo_sight", "lead_laser_sight" ],
+- "valid_mod_locations": [
+- [ "accessories", 2 ],
+- [ "sights", 1 ],
+- [ "underbarrel", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "stock mount", 1 ]
+- ]
++ "valid_mod_locations": [ [ "accessories", 2 ], [ "sights", 1 ], [ "underbarrel", 1 ], [ "grip", 1 ], [ "rail", 1 ], [ "stock", 1 ] ]
+ },
+ {
+ "id": "l_long_45",
+@@ -182,9 +175,9 @@
+ [ "sling", 1 ],
+ [ "underbarrel", 1 ],
+ [ "muzzle", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "stock mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "stock", 1 ]
+ ],
+ "faults": [ "fault_gun_blackpowder", "fault_gun_dirt" ],
+ "flags": [ "RELOAD_ONE" ]
+@@ -238,9 +231,9 @@
+ [ "sights", 1 ],
+ [ "underbarrel", 1 ],
+ [ "muzzle", 1 ],
+- [ "grip mount", 1 ],
+- [ "rail mount", 1 ],
+- [ "stock mount", 1 ]
++ [ "grip", 1 ],
++ [ "rail", 1 ],
++ [ "stock", 1 ]
+ ],
+ "flags": [ "DURABLE_MELEE" ]
+ },
+@@ -487,8 +480,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+@@ -526,8 +519,8 @@
+ [ "sights", 1 ],
+ [ "sling", 1 ],
+ [ "stock", 1 ],
+- [ "rail mount", 1 ],
+- [ "underbarrel mount", 1 ]
++ [ "rail", 1 ],
++ [ "underbarrel", 1 ]
+ ]
+ },
+ {
+diff --git a/tests/ranged_burst_balance_test.cpp b/tests/ranged_burst_balance_test.cpp
+index d6f787ba11e..44e261799ce 100644
+--- a/tests/ranged_burst_balance_test.cpp
++++ b/tests/ranged_burst_balance_test.cpp
+@@ -102,7 +102,7 @@ TEST_CASE( "average_burst_bipod", "[ranged] [balance]" )
+ standard_npc shooter( "Shooter", shooter_pos, {}, 5, 10, 8, 8, 8 );
+ check_burst_penalty( shooter, "m249", {}, 40, true );
+ check_burst_penalty( shooter, "m240", {}, 90, true );
+- check_burst_penalty( shooter, "m2browning", {"underbarrel_mount", "bipod"}, 160, true );
++ check_burst_penalty( shooter, "m2browning", {"bipod"}, 160, true );
+ check_burst_penalty( shooter, "m1918", {"bipod"}, 160, true );
+ }
+
+--
+2.43.0
+