summaryrefslogtreecommitdiff
path: root/revert-30_feat-content-weapon-mount-obsoletion-part-1-4179.patch
diff options
context:
space:
mode:
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
+