diff --git a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm
index b67667e26c69..be52f6a67f46 100644
--- a/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm
+++ b/_maps/RandomRuins/BeachRuins/beach_ancient_ruin.dmm
@@ -374,11 +374,8 @@
},
/obj/item/gun/energy/lasercannon{
pixel_y = 5;
- pin = /obj/item/firing_pin
- },
-/obj/item/gun/energy/lasercannon{
- pin = /obj/item/firing_pin
},
+/obj/item/gun/energy/lasercannon,
/obj/effect/turf_decal/industrial/hatch,
/turf/open/floor/plasteel/mono,
/area/ruin/beach/complex)
diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm
index 5a3d8ea3a2c7..28a963ed476a 100644
--- a/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm
+++ b/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm
@@ -1324,7 +1324,6 @@
"En" = (
/obj/item/gun/ballistic/automatic/smg/proto,
/obj/structure/rack,
-/obj/item/firing_pin,
/turf/open/floor/vault,
/area/ruin/unpowered/corprejectvault)
"Er" = (
diff --git a/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm b/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm
index 259991408266..505ae3600d31 100644
--- a/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm
+++ b/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm
@@ -2589,9 +2589,6 @@
/obj/structure/railing{
dir = 4
},
-/obj/item/firing_pin{
- pixel_y = 6
- },
/turf/open/floor/plasteel,
/area/ruin/rockplanet/nanotrasen)
"Tl" = (
diff --git a/_maps/RandomRuins/RockRuins/rockplanet_harmfactory.dmm b/_maps/RandomRuins/RockRuins/rockplanet_harmfactory.dmm
index 702885f9a0a8..8d9d02795d7d 100644
--- a/_maps/RandomRuins/RockRuins/rockplanet_harmfactory.dmm
+++ b/_maps/RandomRuins/RockRuins/rockplanet_harmfactory.dmm
@@ -251,7 +251,7 @@
/area/ruin/powered)
"ga" = (
/obj/structure/table/wood/reinforced,
-/obj/item/gun/ballistic/automatic/smg/c20r/toy/unrestricted/riot{
+/obj/item/gun/ballistic/automatic/smg/c20r/toy/riot{
pixel_x = 5;
pixel_y = 7
},
diff --git a/_maps/RandomRuins/SpaceRuins/provinggrounds.dmm b/_maps/RandomRuins/SpaceRuins/provinggrounds.dmm
index 1b31a059567b..7577cdeb99f5 100644
--- a/_maps/RandomRuins/SpaceRuins/provinggrounds.dmm
+++ b/_maps/RandomRuins/SpaceRuins/provinggrounds.dmm
@@ -1924,7 +1924,7 @@
"XA" = (
/obj/structure/rack,
/obj/item/ammo_box/foambox/riot,
-/obj/item/gun/ballistic/automatic/toy/pistol/riot/unrestricted,
+/obj/item/gun/ballistic/automatic/toy/pistol/riot,
/obj/structure/cable{
icon_state = "1-2"
},
diff --git a/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm b/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm
index ab4d4aeecf39..202a6c0c0b74 100644
--- a/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm
+++ b/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm
@@ -9120,7 +9120,7 @@
/obj/item/clothing/under/rank/rnd/scientist,
/obj/item/clothing/shoes/sneakers/white,
/obj/effect/gibspawner,
-/obj/item/gun/energy/lasercannon/unrestricted{
+/obj/item/gun/energy/lasercannon{
desc = "An advanced laser cannon, a laser etched inscription in the handle states 'NT-LS-1013'. The casing is made of a lightweight alloy.";
icon_state = "pulse";
name = "NT-LS-1013"
@@ -10926,7 +10926,7 @@
"PZ" = (
/obj/effect/turf_decal/box,
/obj/machinery/light/directional/north,
-/obj/item/gun/energy/lasercannon/unrestricted{
+/obj/item/gun/energy/lasercannon{
desc = "An advanced laser cannon, a laser etched inscription in the handle states 'NT-LS-1013'. The casing is made of a lightweight alloy.";
icon_state = "pulse";
name = "NT-LS-1013"
diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm
index 83249514118f..8a63378ced3c 100644
--- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm
+++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm
@@ -798,7 +798,7 @@
/turf/open/floor/wood/waste,
/area/ruin/wasteplanet)
"Fn" = (
-/obj/item/gun/ballistic/automatic/smg/proto/unrestricted{
+/obj/item/gun/ballistic/automatic/smg/proto{
pixel_y = -18
},
/obj/item/ammo_casing/spent{
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index 6c80b8b2096f..19b41ef8018f 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -5319,7 +5319,7 @@
/turf/open/floor/plasteel,
/area/centcom/control)
"aUp" = (
-/obj/item/gun/energy/pulse/carbine/loyalpin,
+/obj/item/gun/energy/pulse/carbine,
/obj/item/flashlight/seclite,
/obj/structure/table/reinforced,
/obj/machinery/airalarm/directional/south,
diff --git a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm
index 28a59c22727b..107044c9e80f 100644
--- a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm
+++ b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm
@@ -3374,13 +3374,13 @@
"mt" = (
/obj/structure/window/reinforced/spawner,
/obj/structure/rack,
-/obj/item/gun/ballistic/automatic/smg/proto/unrestricted{
+/obj/item/gun/ballistic/automatic/smg/proto{
pixel_y = 3
},
-/obj/item/gun/ballistic/automatic/smg/proto/unrestricted{
+/obj/item/gun/ballistic/automatic/smg/proto{
pixel_y = -2
},
-/obj/item/gun/ballistic/automatic/smg/proto/unrestricted{
+/obj/item/gun/ballistic/automatic/smg/proto{
pixel_y = -7
},
/turf/open/floor/plasteel/tech,
diff --git a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm
index ad4889732fad..f5ffea852281 100644
--- a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm
+++ b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm
@@ -3232,7 +3232,6 @@
/obj/item/storage/box/handcuffs,
/obj/item/storage/box/handcuffs,
/obj/item/storage/box/prisoner,
-/obj/item/storage/box/firingpins,
/obj/item/storage/box/seccarts,
/obj/item/storage/box/teargas,
/obj/item/storage/box/zipties,
diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm
index b597d12f69e0..288fd6235cf8 100644
--- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm
+++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm
@@ -3115,7 +3115,7 @@
/area/ship/engineering)
"Ha" = (
/obj/structure/closet/secure_closet/lp/lieutenant,
-/obj/item/gun/energy/e_gun/mindshield{
+/obj/item/gun/energy/e_gun{
pixel_y = 1
},
/obj/item/stock_parts/cell/gun,
diff --git a/_maps/shuttles/pirate/pirate_ember.dmm b/_maps/shuttles/pirate/pirate_ember.dmm
index 93d276197563..6173f14db95b 100644
--- a/_maps/shuttles/pirate/pirate_ember.dmm
+++ b/_maps/shuttles/pirate/pirate_ember.dmm
@@ -4019,10 +4019,6 @@
pixel_y = 7;
pixel_x = 4
},
-/obj/item/storage/box/firingpins{
- pixel_x = -6;
- pixel_y = 4
- },
/obj/item/storage/box/syndie_kit/throwing_weapons,
/obj/machinery/light/directional/south,
/obj/effect/decal/cleanable/dirt,
diff --git a/_maps/shuttles/pirate/pirate_noderider.dmm b/_maps/shuttles/pirate/pirate_noderider.dmm
index df346f703dd3..10c591d8f52f 100644
--- a/_maps/shuttles/pirate/pirate_noderider.dmm
+++ b/_maps/shuttles/pirate/pirate_noderider.dmm
@@ -1039,7 +1039,7 @@
/obj/item/gun/energy/laser/iot,
/obj/item/gun/energy/laser/iot,
/obj/item/gun/energy/e_gun/smg,
-/obj/item/gun/energy/lasercannon/unrestricted,
+/obj/item/gun/energy/lasercannon,
/obj/item/melee/baton/loaded,
/obj/item/melee/baton/loaded,
/turf/open/floor/plasteel/tech,
diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm
index b0a7e7fc2856..fc7e7a029b82 100644
--- a/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm
+++ b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm
@@ -1707,9 +1707,6 @@
},
/obj/machinery/light/directional/north,
/obj/machinery/firealarm/directional/east,
-/obj/item/storage/box/firingpins{
- pixel_x = -12
- },
/turf/open/floor/pod/dark,
/area/ship/security/armory)
"qz" = (
@@ -2735,7 +2732,7 @@
},
/obj/structure/guncase,
/obj/structure/railing,
-/obj/item/gun/ballistic/automatic/smg/c20r/unrestricted,
+/obj/item/gun/ballistic/automatic/smg/c20r,
/obj/machinery/light/directional/east,
/turf/open/floor/pod/dark,
/area/ship/security/armory)
diff --git a/check_regex.yaml b/check_regex.yaml
index dc1d4d05e71a..538d570daea4 100644
--- a/check_regex.yaml
+++ b/check_regex.yaml
@@ -29,7 +29,7 @@ standards:
- exactly: [1, "/area text paths", '"/area']
- exactly: [17, "/datum text paths", '"/datum']
- exactly: [4, "/mob text paths", '"/mob']
- - exactly: [44, "/obj text paths", '"/obj']
+ - exactly: [43, "/obj text paths", '"/obj']
- exactly: [0, "/turf text paths", '"/turf']
- exactly: [117, "text2path uses", "text2path"]
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index 8f0a0d9b3c43..d9edeb83202c 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -459,8 +459,6 @@
///From /datum/component/creamed/Initialize()
#define COMSIG_MOB_CREAMED "mob_creamed"
-///From /obj/item/gun/proc/check_botched()
-#define COMSIG_MOB_CLUMSY_SHOOT_FOOT "mob_clumsy_shoot_foot"
///When a carbon mob hugs someone, this is called on the carbon that is hugging. (mob/living/hugger, mob/living/hugged)
#define COMSIG_CARBON_HUG "carbon_hug"
diff --git a/code/datums/components/gunpoint.dm b/code/datums/components/gunpoint.dm
index 9167bbe224b4..0aa1a5a1e8cc 100644
--- a/code/datums/components/gunpoint.dm
+++ b/code/datums/components/gunpoint.dm
@@ -126,9 +126,6 @@
if(weapon.chambered && weapon.chambered.BB)
weapon.chambered.BB.damage *= damage_mult
- if(weapon.check_botched(shooter))
- return
-
weapon.process_fire(target, shooter)
qdel(src)
diff --git a/code/datums/components/sitcomlaughter.dm b/code/datums/components/sitcomlaughter.dm
index 8dfef21b749d..8a5c32d2e2d1 100644
--- a/code/datums/components/sitcomlaughter.dm
+++ b/code/datums/components/sitcomlaughter.dm
@@ -1,6 +1,6 @@
/datum/component/wearertargeting/sitcomlaughter
valid_slots = list(ITEM_SLOT_HANDS, ITEM_SLOT_BELT, ITEM_SLOT_ID, ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET, ITEM_SLOT_SUITSTORE, ITEM_SLOT_DEX_STORAGE)
- signals = list(COMSIG_MOB_CREAMED, COMSIG_ON_CARBON_SLIP, COMSIG_ON_VENDOR_CRUSH, COMSIG_MOB_CLUMSY_SHOOT_FOOT)
+ signals = list(COMSIG_MOB_CREAMED, COMSIG_ON_CARBON_SLIP, COMSIG_ON_VENDOR_CRUSH)
proctype = PROC_REF(EngageInComedy)
mobtype = /mob/living
///Sounds used for when user has a sitcom action occur
diff --git a/code/game/gamemodes/clown_ops/clown_ops.dm b/code/game/gamemodes/clown_ops/clown_ops.dm
index 9025f6ec2dcb..74e391ef5510 100644
--- a/code/game/gamemodes/clown_ops/clown_ops.dm
+++ b/code/game/gamemodes/clown_ops/clown_ops.dm
@@ -40,7 +40,6 @@
backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\
/obj/item/kitchen/knife/combat/survival,
/obj/item/dnainjector/clumsymut, //in case you want to be clumsy for the memes
- /obj/item/storage/box/syndie_kit/clownpins, //for any guns that you get your grubby little clown op mitts on
/obj/item/reagent_containers/spray/waterflower/lube)
implants = list(/obj/item/implant/sad_trombone)
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 571d5b090da9..b665a36bcf32 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -93,7 +93,6 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list(
visible_message("[src] dispenses.. woah, a gun! Way past cool.", "You hear a chime and a shot.")
user.client.give_award(/datum/award/achievement/misc/pulse, user)
return
-
var/prizeselect
if(prize_override)
prizeselect = pickweight(prize_override)
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index ac5b14568dad..e1d8aa7a1f10 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -634,7 +634,7 @@
/obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle/PopulateContents()
new /obj/item/clothing/shoes/magboots/syndie(src)
new /obj/item/storage/firstaid/tactical(src)
- new /obj/item/gun/ballistic/automatic/hmg/l6_saw/toy(src)
+ new /obj/item/gun/ballistic/automatic/hmg/l6_saw/toy/riot(src)
new /obj/item/ammo_box/foambox/riot(src)
/obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle
@@ -644,7 +644,7 @@
new /obj/item/reagent_containers/spray/chemsprayer/bioterror(src)
new /obj/item/storage/box/syndie_kit/chemical(src)
new /obj/item/gun/syringe/syndicate(src)
- new /obj/item/gun/ballistic/automatic/smg/c20r/toy(src)
+ new /obj/item/gun/ballistic/automatic/smg/c20r/toy/riot(src)
new /obj/item/storage/box/syringes(src)
new /obj/item/ammo_box/foambox/riot(src)
new /obj/item/grenade/chem_grenade/bioterrorfoam(src)
diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm
index d3b5913bbd86..fb001b2eb56b 100644
--- a/code/game/objects/items/storage/boxes.dm
+++ b/code/game/objects/items/storage/boxes.dm
@@ -606,35 +606,6 @@
for(var/i in 1 to 6)
new /obj/item/cartridge/security(src)
-/obj/item/storage/box/firingpins
- name = "box of standard firing pins"
- desc = "A box full of standard firing pins, to allow newly-developed firearms to operate."
- icon_state = "secbox"
- illustration = "firingpin"
-
-/obj/item/storage/box/firingpins/PopulateContents()
- for(var/i in 1 to 5)
- new /obj/item/firing_pin(src)
-
-/obj/item/storage/box/firingpins/paywall
- name = "box of paywall firing pins"
- desc = "A box full of paywall firing pins, to allow newly-developed firearms to operate behind a custom-set paywall."
- illustration = "firingpin"
-
-/obj/item/storage/box/firingpins/paywall/PopulateContents()
- for(var/i in 1 to 5)
- new /obj/item/firing_pin/paywall(src)
-
-/obj/item/storage/box/lasertagpins
- name = "box of laser tag firing pins"
- desc = "A box full of laser tag firing pins, to allow newly-developed firearms to require wearing brightly coloured plastic armor before being able to be used."
- illustration = "firingpin"
-
-/obj/item/storage/box/lasertagpins/PopulateContents()
- for(var/i in 1 to 3)
- new /obj/item/firing_pin/tag/red(src)
- new /obj/item/firing_pin/tag/blue(src)
-
/obj/item/storage/box/handcuffs
name = "box of spare handcuffs"
desc = "A box full of handcuffs."
diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm
index 221cdf42d3f3..d91fc622cd56 100644
--- a/code/game/objects/items/storage/uplink_kits.dm
+++ b/code/game/objects/items/storage/uplink_kits.dm
@@ -108,7 +108,7 @@
if("metaops")
new /obj/item/clothing/suit/space/hardsuit/syndi(src) // 8 tc
- new /obj/item/gun/ballistic/shotgun/bulldog/unrestricted(src) // 8 tc
+ new /obj/item/gun/ballistic/shotgun/bulldog(src) // 8 tc
new /obj/item/implanter/explosive(src) // 2 tc
new /obj/item/ammo_box/magazine/m12g(src) // 2 tc
new /obj/item/ammo_box/magazine/m12g(src) // 2 tc
@@ -165,7 +165,7 @@
new /obj/item/assembly/signaler(src) // 0 tc
new /obj/item/storage/toolbox/syndicate(src) // 1 tc
new /obj/item/pen/edagger(src)
- new /obj/item/gun/energy/decloner/unrestricted(src)
+ new /obj/item/gun/energy/decloner(src)
if("bee")
new /obj/item/paper/fluff/bee_objectives(src) // 0 tc (motivation)
@@ -306,7 +306,7 @@
/obj/item/storage/box/syndie_kit/imp_radio,
/obj/item/storage/box/syndie_kit/imp_uplink,
/obj/item/clothing/gloves/krav_maga/combatglovesplus,
- /obj/item/gun/ballistic/automatic/smg/c20r/toy/unrestricted/riot,
+ /obj/item/gun/ballistic/automatic/smg/c20r/toy/riot,
/obj/item/reagent_containers/hypospray/medipen/stimulants,
/obj/item/storage/box/syndie_kit/imp_freedom,
/obj/item/toy/eightball/haunted
@@ -370,13 +370,6 @@
for(var/i in 1 to 7)
new /obj/item/reagent_containers/syringe/bioterror(src)
-/obj/item/storage/box/syndie_kit/clownpins
- name = "ultra hilarious firing pin box"
-
-/obj/item/storage/box/syndie_kit/clownpins/PopulateContents()
- for(var/i in 1 to 7)
- new /obj/item/firing_pin/clown/ultra(src)
-
/obj/item/storage/box/syndie_kit/imp_adrenal
name = "adrenal implant box"
@@ -526,9 +519,6 @@
for(var/i in 1 to 3)
new/obj/item/grenade/chem_grenade/ez_clean(src)
-/obj/item/storage/box/hug/reverse_revolver/PopulateContents()
- new /obj/item/gun/ballistic/revolver/reverse(src)
-
/obj/item/storage/box/syndie_kit/mimery/PopulateContents()
new /obj/item/book/granter/spell/mimery_blockade(src)
new /obj/item/book/granter/spell/mimery_guns(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index f94a5d5de585..02e75f876d33 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -296,7 +296,6 @@
/obj/structure/closet/secure_closet/armory2/PopulateContents()
..()
- new /obj/item/storage/box/firingpins(src)
for(var/i in 1 to 3)
new /obj/item/storage/box/rubbershot(src)
for(var/i in 1 to 3)
@@ -309,7 +308,6 @@
/obj/structure/closet/secure_closet/armory3/PopulateContents()
..()
- new /obj/item/storage/box/firingpins(src)
new /obj/item/gun/energy/ionrifle(src)
for(var/i in 1 to 3)
new /obj/item/gun/energy/e_gun(src)
diff --git a/code/game/objects/structures/salvaging.dm b/code/game/objects/structures/salvaging.dm
index fa5c49260738..06d59e7390ea 100644
--- a/code/game/objects/structures/salvaging.dm
+++ b/code/game/objects/structures/salvaging.dm
@@ -577,8 +577,8 @@
)
/obj/effect/spawner/lootdrop/random_gun_protolathe_lootdrop
loot = list(
- /obj/item/gun/energy/lasercannon/unrestricted = 1,
- /obj/item/gun/ballistic/automatic/smg/proto/unrestricted = 1,
+ /obj/item/gun/energy/lasercannon = 1,
+ /obj/item/gun/ballistic/automatic/smg/proto = 1,
/obj/item/gun/energy/temperature/security = 1,
)
/obj/effect/spawner/lootdrop/random_ammo_protolathe_lootdrop
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 9a5b95d21184..5efddfb3cf8c 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -369,21 +369,10 @@
to_chat(user, "You send the message to your target.")
log_directed_talk(user, L, message, LOG_SAY, "abductor whisper")
-
-/obj/item/firing_pin/abductor
- name = "alien firing pin"
- icon_state = "firing_pin_ayy"
- desc = "This firing pin is slimy and warm; you can swear you feel it constantly trying to mentally probe you."
- fail_message = "Firing error, please contact Command."
-
-/obj/item/firing_pin/abductor/pin_auth(mob/living/user)
- . = isabductor(user)
-
/obj/item/gun/energy/alien
name = "alien pistol"
desc = "A complicated gun that fires bursts of high-intensity radiation."
ammo_type = list(/obj/item/ammo_casing/energy/declone)
- pin = /obj/item/firing_pin/abductor
icon_state = "alienpistol"
item_state = "alienpistol"
trigger_guard = TRIGGER_GUARD_ALLOW_ALL
diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm
index dec456b8ef2f..c7aa46af728b 100644
--- a/code/modules/awaymissions/mission_code/snowdin.dm
+++ b/code/modules/awaymissions/mission_code/snowdin.dm
@@ -514,7 +514,7 @@
/obj/item/organ/brain/alien = 17,
/obj/item/dualsaber = 15,
/obj/item/organ/heart/demon = 7,
- /obj/item/gun/ballistic/automatic/smg/c20r/unrestricted = 16,
+ /obj/item/gun/ballistic/automatic/smg/c20r = 16,
/obj/item/gun/magic/wand/resurrection/inert = 15,
/obj/item/gun/magic/wand/resurrection = 10,
/obj/item/uplink/old = 2,
diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm
index 4312d2f89f48..063966c86d63 100644
--- a/code/modules/awaymissions/mission_code/stationCollision.dm
+++ b/code/modules/awaymissions/mission_code/stationCollision.dm
@@ -44,7 +44,6 @@
icon_state = "retro"
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces."
// projectile_type = "/obj/projectile/practice"
- clumsy_check = 0 //No sense in having a harmless gun blow up in the clowns face
//Syndicate sub-machine guns.
/obj/item/gun/ballistic/automatic/smg/c20r/sc_c20r
@@ -68,7 +67,6 @@
/obj/item/gun/energy/laser/practice/sc_laser
name = "Old laser"
desc = "A once potent weapon, years of dust have collected in the chamber and lens of this weapon, weakening the beam significantly."
- clumsy_check = 0
/*
* Safe code hints
diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm
index 4fdf8c9a2f5b..845ce242272d 100644
--- a/code/modules/cargo/packs/gun.dm
+++ b/code/modules/cargo/packs/gun.dm
@@ -160,22 +160,3 @@
cost = 5000
contains = list(/obj/item/gun/ballistic/automatic/assault/skm)
crate_name = "auto rifle crate"
-
-/*
- Firing pins
-*/
-
-/datum/supply_pack/gun/firingpins
- name = "Standard Firing Pins Crate"
- desc = "Upgrade your arsenal with 10 standard firing pins."
- cost = 2000
- contains = list(/obj/item/storage/box/firingpins,
- /obj/item/storage/box/firingpins)
- crate_name = "firing pins crate"
-
-/datum/supply_pack/gun/lasertag_pins
- name = "Laser Tag Firing Pins Crate"
- desc = "Three laser tag firing pins used in laser-tag units to ensure users are wearing their vests."
- cost = 1500
- contains = list(/obj/item/storage/box/lasertagpins)
- crate_name = "laser tag pin crate"
diff --git a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm
index 36445abcdb5a..a541941208e2 100644
--- a/code/modules/clothing/outfits/ert/nanotrasen_ert.dm
+++ b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm
@@ -47,7 +47,7 @@
glasses = /obj/item/clothing/glasses/thermal/eyepatch
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
/obj/item/melee/baton/loaded=1,\
- /obj/item/gun/energy/pulse/pistol/loyalpin=1)
+ /obj/item/gun/energy/pulse/pistol=1)
l_pocket = /obj/item/melee/transforming/energy/sword/saber
/datum/outfit/centcom/ert/security
@@ -77,7 +77,7 @@
/datum/outfit/centcom/ert/security/alert
name = "ERT Security - High Alert"
- suit_store = /obj/item/gun/energy/pulse/carbine/loyalpin
+ suit_store = /obj/item/gun/energy/pulse/carbine
mask = /obj/item/clothing/mask/gas/sechailer/swat
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
/obj/item/storage/box/handcuffs=1,\
@@ -114,7 +114,7 @@
mask = /obj/item/clothing/mask/gas/sechailer/swat
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
/obj/item/melee/baton/loaded=1,\
- /obj/item/gun/energy/pulse/pistol/loyalpin=1,\
+ /obj/item/gun/energy/pulse/pistol=1,\
/obj/item/reagent_containers/hypospray/combat/nanites=1,\
/obj/item/gun/medbeam=1)
@@ -150,7 +150,7 @@
mask = /obj/item/clothing/mask/gas/sechailer/swat
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
/obj/item/melee/baton/loaded=1,\
- /obj/item/gun/energy/pulse/pistol/loyalpin=1,\
+ /obj/item/gun/energy/pulse/pistol=1,\
/obj/item/construction/rcd/combat=1)
// official
diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm
index 7a848b9ca330..d039d06dae35 100644
--- a/code/modules/clothing/outfits/standard.dm
+++ b/code/modules/clothing/outfits/standard.dm
@@ -169,7 +169,7 @@
r_pocket = /obj/item/shield/energy
suit_store = /obj/item/tank/internals/emergency_oxygen/double
belt = /obj/item/gun/ballistic/revolver/mateba
- r_hand = /obj/item/gun/energy/pulse/loyalpin
+ r_hand = /obj/item/gun/energy/pulse
id = /obj/item/card/id/ert/deathsquad
ears = /obj/item/radio/headset/headset_cent/alt
diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm
index e274009d07e0..613a68a2de47 100644
--- a/code/modules/mining/abandoned_crates.dm
+++ b/code/modules/mining/abandoned_crates.dm
@@ -227,9 +227,9 @@
for(var/i in 1 to 4)
new /obj/item/clothing/mask/balaclava(src)
new /obj/item/gun/ballistic/shotgun/toy(src)
- new /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted(src)
- new /obj/item/gun/ballistic/automatic/toy/unrestricted(src)
- new /obj/item/gun/ballistic/automatic/hmg/l6_saw/toy/unrestricted(src)
+ new /obj/item/gun/ballistic/automatic/toy/pistol(src)
+ new /obj/item/gun/ballistic/automatic/toy(src)
+ new /obj/item/gun/ballistic/automatic/hmg/l6_saw/toy(src)
new /obj/item/ammo_box/foambox(src)
if(98)
for(var/i in 1 to 3)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
index 02cb46039076..1cbc7ec58d51 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
@@ -747,7 +747,7 @@
else
back = pickweight(list(
/obj/item/energyhalberd = 5,
- /obj/item/gun/ballistic/rocketlauncher/unrestricted = 5
+ /obj/item/gun/ballistic/rocketlauncher = 5
)
)
if(prob(25))
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 8ca8f0bc05c8..5cd55858537a 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -1,6 +1,5 @@
#define DUALWIELD_PENALTY_EXTRA_MULTIPLIER 1.6
-#define FIRING_PIN_REMOVAL_DELAY 50
/obj/item/gun
name = "gun"
@@ -34,7 +33,6 @@
var/suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg'
var/suppressed_volume = 60
var/can_unsuppress = TRUE
- var/clumsy_check = TRUE
var/obj/item/ammo_casing/chambered = null
trigger_guard = TRIGGER_GUARD_NORMAL //trigger guard on the weapon, hulks can't fire them with their big meaty fingers
var/sawn_desc = null //description change if weapon is sawn-off
@@ -53,7 +51,6 @@
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
var/list/attachment_options = list() //This.. works for now.. gun refactor soon
- var/obj/item/firing_pin/pin = /obj/item/firing_pin //standard firing pin for most guns
var/can_flashlight = FALSE //if a flashlight can be added or removed if it already has one.
var/obj/item/flashlight/seclite/gun_light
@@ -126,8 +123,6 @@
. = ..()
RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield))
RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield))
- if(pin)
- pin = new pin(src)
if(gun_light)
alight = new(src)
muzzle_flash = new(src, muzzleflash_iconstate)
@@ -161,8 +156,6 @@
user.remove_movespeed_modifier(/datum/movespeed_modifier/gun)
/obj/item/gun/Destroy()
- if(isobj(pin)) //Can still be the initial path, then we skip
- QDEL_NULL(pin)
if(gun_light)
QDEL_NULL(gun_light)
if(bayonet)
@@ -178,8 +171,6 @@
return ..()
/obj/item/gun/handle_atom_del(atom/A)
- if(A == pin)
- pin = null
if(A == chambered)
chambered = null
update_appearance()
@@ -191,12 +182,6 @@
/obj/item/gun/examine(mob/user)
. = ..()
- if(pin)
- . += "It has \a [pin] installed."
- . += "[pin] looks like it could be removed with some tools."
- else
- . += "It doesn't have a firing pin installed, and won't fire."
-
if(gun_light)
. += "It has \a [gun_light] [can_flashlight ? "" : "permanently "]mounted on it."
if(can_flashlight) //if it has a light and this is false, the light is permanent.
@@ -318,9 +303,6 @@
shoot_with_empty_chamber(user)
return
- if(check_botched(user))
- return
-
if(weapon_weight == WEAPON_HEAVY && (!wielded))
to_chat(user, "You need a more secure grip to fire [src]!")
return
@@ -339,33 +321,6 @@
return process_fire(target, user, TRUE, params, null, bonus_spread)
-/obj/item/gun/proc/check_botched(mob/living/user, params)
- if(clumsy_check)
- if(istype(user))
- if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40))
- to_chat(user, "You shoot yourself in the foot with [src]!")
- var/shot_leg = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
- process_fire(user, user, FALSE, params, shot_leg)
- SEND_SIGNAL(user, COMSIG_MOB_CLUMSY_SHOOT_FOOT)
- user.dropItemToGround(src, TRUE)
- return TRUE
-
-/obj/item/gun/can_trigger_gun(mob/living/user)
- . = ..()
- if(!handle_pins(user))
- return FALSE
-
-/obj/item/gun/proc/handle_pins(mob/living/user)
- if(pin)
- if(pin.pin_auth(user) || (pin.obj_flags & EMAGGED))
- return TRUE
- else
- pin.auth_fail(user)
- return FALSE
- else
- to_chat(user, "[src]'s trigger is locked. This weapon doesn't have a firing pin installed!")
- return FALSE
-
/obj/item/gun/proc/recharge_newshot()
return
@@ -562,40 +517,6 @@
else if(picked_option == "Knife")
return remove_gun_attachment(user, I, bayonet, "unfix")
-/obj/item/gun/welder_act(mob/living/user, obj/item/I)
- . = ..()
- if(.)
- return
- if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
- return
- if(pin && user.is_holding(src))
- user.visible_message("[user] attempts to remove [pin] from [src] with [I].",
- "You attempt to remove [pin] from [src]. (It will take [DisplayTimeText(FIRING_PIN_REMOVAL_DELAY)].)", null, 3)
- if(I.use_tool(src, user, FIRING_PIN_REMOVAL_DELAY, 5, volume = 50))
- if(!pin) //check to see if the pin is still there, or we can spam messages by clicking multiple times during the tool delay
- return
- user.visible_message("[pin] is spliced out of [src] by [user], melting part of the pin in the process.",
- "You splice [pin] out of [src] with [I], melting part of the pin in the process.", null, 3)
- QDEL_NULL(pin)
- return TRUE
-
-/obj/item/gun/wirecutter_act(mob/living/user, obj/item/I)
- . = ..()
- if(.)
- return
- if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
- return
- if(pin && user.is_holding(src))
- user.visible_message("[user] attempts to remove [pin] from [src] with [I].",
- "You attempt to remove [pin] from [src]. (It will take [DisplayTimeText(FIRING_PIN_REMOVAL_DELAY)].)", null, 3)
- if(I.use_tool(src, user, FIRING_PIN_REMOVAL_DELAY, volume = 50))
- if(!pin) //check to see if the pin is still there, or we can spam messages by clicking multiple times during the tool delay
- return
- user.visible_message("[pin] is ripped out of [src] by [user], mangling the pin in the process.",
- "You rip [pin] out of [src] with [I], mangling the pin in the process.", null, 3)
- QDEL_NULL(pin)
- return TRUE
-
/obj/item/gun/proc/remove_gun_attachment(mob/living/user, obj/item/tool_item, obj/item/item_to_remove, removal_verb)
if(tool_item)
tool_item.play_tool_sound(src)
@@ -792,11 +713,6 @@
#undef BRAINS_BLOWN_THROW_RANGE
#undef BRAINS_BLOWN_THROW_SPEED
-/obj/item/gun/proc/unlock() //used in summon guns and as a convience for admins
- if(pin)
- qdel(pin)
- pin = new /obj/item/firing_pin
-
//Happens before the actual projectile creation
/obj/item/gun/proc/before_firing(atom/target,mob/user)
return
@@ -970,5 +886,4 @@
azoom = new()
azoom.gun = src
-#undef FIRING_PIN_REMOVAL_DELAY
#undef DUALWIELD_PENALTY_EXTRA_MULTIPLIER
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index ec57fd588021..094ea753af10 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -91,7 +91,6 @@
desc = "A heavily-modified .50 BMG anti-material rifle utilized by Syndicate agents. Requires both hands to fire."
can_suppress = TRUE
can_unsuppress = TRUE
- pin = /obj/item/firing_pin/implant/pindicate
// Old Semi-Auto Rifle //
diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm
index 614aa7a884c1..01644cd6e9bb 100644
--- a/code/modules/projectiles/guns/ballistic/launchers.dm
+++ b/code/modules/projectiles/guns/ballistic/launchers.dm
@@ -10,13 +10,9 @@
mag_type = /obj/item/ammo_box/magazine/internal/grenadelauncher
fire_sound = 'sound/weapons/gun/general/grenade_launch.ogg'
w_class = WEIGHT_CLASS_NORMAL
- pin = /obj/item/firing_pin/implant/pindicate
bolt_type = BOLT_TYPE_NO_BOLT
fire_delay = 10
-/obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted
- pin = /obj/item/firing_pin
-
/obj/item/gun/ballistic/revolver/grenadelauncher/attackby(obj/item/A, mob/user, params)
..()
if(istype(A, /obj/item/ammo_box) || istype(A, /obj/item/ammo_casing))
@@ -28,7 +24,6 @@
icon = 'icons/mecha/mecha_equipment.dmi'
icon_state = "mecha_grenadelnchr"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/grenademulti
- pin = /obj/item/firing_pin
/obj/item/gun/ballistic/revolver/grenadelauncher/cyborg/attack_self()
return
@@ -54,7 +49,6 @@
load_sound = 'sound/weapons/gun/general/rocket_load.ogg'
w_class = WEIGHT_CLASS_BULKY
can_suppress = FALSE
- pin = /obj/item/firing_pin
burst_size = 1
fire_delay = 0
casing_ejector = FALSE
@@ -66,9 +60,6 @@
tac_reloads = FALSE
manufacturer = MANUFACTURER_SCARBOROUGH
-/obj/item/gun/ballistic/rocketlauncher/unrestricted
- pin = /obj/item/firing_pin
-
/obj/item/gun/ballistic/rocketlauncher/afterattack()
. = ..()
magazine.get_round(FALSE) //Hack to clear the mag after it's fired
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index abbf62543f90..f201dfbca548 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -541,7 +541,6 @@
icon_state = "goldrevolver"
fire_sound = 'sound/weapons/resonator_blast.ogg'
recoil = 8
- pin = /obj/item/firing_pin
manufacturer = MANUFACTURER_NONE
/obj/item/gun/ballistic/revolver/montagne
@@ -670,18 +669,6 @@
return
user.visible_message("[user.name]'s soul is captured by \the [src]!", "You've lost the gamble! Your soul is forfeit!")
-/obj/item/gun/ballistic/revolver/reverse //Fires directly at its user... unless the user is a clown, of course.
- clumsy_check = 0
-
-/obj/item/gun/ballistic/revolver/reverse/can_trigger_gun(mob/living/user)
- if((HAS_TRAIT(user, TRAIT_CLUMSY)) || (user.mind && user.mind.assigned_role == "Clown"))
- return ..()
- if(process_fire(user, user, FALSE, null, BODY_ZONE_HEAD))
- user.visible_message("[user] somehow manages to shoot [user.p_them()]self in the face!", "You somehow shoot yourself in the face! How the hell?!")
- user.emote("scream")
- user.drop_all_held_items()
- user.Paralyze(80)
-
/obj/item/gun/ballistic/revolver/firebrand
name = "\improper HP Firebrand"
desc = "An archaic precursor to revolver-type firearms, this gun was rendered completely obsolete millennia ago. While fast to fire, it is extremely inaccurate. Uses .357 ammo."
diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm
index 60aa20ab3a50..9c45ac569da8 100644
--- a/code/modules/projectiles/guns/ballistic/rifle.dm
+++ b/code/modules/projectiles/guns/ballistic/rifle.dm
@@ -164,7 +164,6 @@
name = "arcane barrage"
desc = "Pew Pew Pew."
fire_sound = 'sound/weapons/emitter.ogg'
- pin = /obj/item/firing_pin/magic
icon = 'icons/obj/guns/projectile.dmi'
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 81344fa5a82a..0b7e526c8a2b 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -163,9 +163,6 @@
var/obj/item/ammo_box/magazine/internal/shot/alternate_magazine
semi_auto = TRUE
-/obj/item/gun/ballistic/shotgun/automatic/dual_tube/mindshield
- pin = /obj/item/firing_pin/implant/mindshield
-
/obj/item/gun/ballistic/shotgun/automatic/dual_tube/examine(mob/user)
. = ..()
. += "Alt-click to pump it."
@@ -234,16 +231,12 @@
wield_slowdown = 0.6
wield_delay = 0.65 SECONDS
-/obj/item/gun/ballistic/shotgun/bulldog/unrestricted
- pin = /obj/item/firing_pin
-
/obj/item/gun/ballistic/shotgun/bulldog/inteq
name = "\improper Mastiff Shotgun"
desc = "A variation of the Bulldog, seized from Syndicate armories by deserting troopers then modified to IRMG's standards."
icon_state = "bulldog-inteq"
item_state = "bulldog-inteq"
mag_type = /obj/item/ammo_box/magazine/m12g
- pin = /obj/item/firing_pin
manufacturer = MANUFACTURER_INTEQ
/obj/item/gun/ballistic/shotgun/bulldog/suns
@@ -259,7 +252,6 @@
mag_type = /obj/item/ammo_box/magazine/cm15_mag
icon_state = "cm15"
item_state = "cm15"
- pin = /obj/item/firing_pin
empty_alarm = FALSE
empty_indicator = FALSE
special_mags = FALSE
diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm
index ce740644d712..23ec4247a5da 100644
--- a/code/modules/projectiles/guns/ballistic/smg.dm
+++ b/code/modules/projectiles/guns/ballistic/smg.dm
@@ -37,7 +37,6 @@
icon_state = "saber"
actions_types = list()
mag_type = /obj/item/ammo_box/magazine/smgm9mm
- pin = null
bolt_type = BOLT_TYPE_LOCKING
mag_display = TRUE
manufacturer = MANUFACTURER_NANOTRASEN_OLD
@@ -46,9 +45,6 @@
. = ..()
AddComponent(/datum/component/automatic_fire, 0.13 SECONDS)
-/obj/item/gun/ballistic/automatic/smg/proto/unrestricted
- pin = /obj/item/firing_pin
-
/obj/item/gun/ballistic/automatic/smg/c20r
name = "\improper C-20r SMG"
desc = "A bullpup .45 SMG designated 'C-20r.' Its buttstamp reads 'Scarborough Arms - Per falcis, per pravitas.'"
@@ -68,9 +64,6 @@
. = ..()
AddComponent(/datum/component/automatic_fire, 0.13 SECONDS)
-/obj/item/gun/ballistic/automatic/smg/c20r/unrestricted
- pin = /obj/item/firing_pin
-
/obj/item/gun/ballistic/automatic/smg/c20r/Initialize()
. = ..()
update_appearance()
@@ -160,7 +153,6 @@
var/obj/item/gun/ballistic/revolver/grenadelauncher/underbarrel
burst_size = 3
fire_delay = 2
- pin = /obj/item/firing_pin/implant/pindicate
mag_display = TRUE
empty_indicator = TRUE
fire_sound = 'sound/weapons/gun/rifle/shot_alt.ogg'
@@ -175,14 +167,6 @@
underbarrel = new /obj/item/gun/ballistic/revolver/grenadelauncher(src)
update_appearance()
-/obj/item/gun/ballistic/automatic/smg/m90/unrestricted
- pin = /obj/item/firing_pin
-
-/obj/item/gun/ballistic/automatic/smg/m90/unrestricted/Initialize()
- . = ..()
- underbarrel = new /obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted(src)
- update_appearance()
-
/obj/item/gun/ballistic/automatic/smg/m90/afterattack(atom/target, mob/living/user, flag, params)
if(select == 2)
underbarrel.afterattack(target, user, flag, params)
diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm
index 4ce2819a902e..95911c9269bc 100644
--- a/code/modules/projectiles/guns/ballistic/toy.dm
+++ b/code/modules/projectiles/guns/ballistic/toy.dm
@@ -9,7 +9,6 @@
throwforce = 0
burst_size = 3
can_suppress = TRUE
- clumsy_check = 0
item_flags = NONE
casing_ejector = FALSE
manufacturer = MANUFACTURER_NANOTRASEN
@@ -20,9 +19,6 @@
. = ..()
. += "[icon_state]_toy"
-/obj/item/gun/ballistic/automatic/toy/unrestricted
- pin = /obj/item/firing_pin
-
/obj/item/gun/ballistic/automatic/toy/pistol
name = "foam force pistol"
desc = "A small, easily concealable toy handgun. Ages 8 and up."
@@ -45,12 +41,6 @@
magazine = new /obj/item/ammo_box/magazine/toy/pistol/riot(src)
return ..()
-/obj/item/gun/ballistic/automatic/toy/pistol/unrestricted
- pin = /obj/item/firing_pin
-
-/obj/item/gun/ballistic/automatic/toy/pistol/riot/unrestricted
- pin = /obj/item/firing_pin
-
/obj/item/gun/ballistic/shotgun/toy
name = "foam force shotgun"
desc = "A toy shotgun with wood furniture and a four-shell capacity underneath. Ages 8 and up."
@@ -58,7 +48,6 @@
throwforce = 0
mag_type = /obj/item/ammo_box/magazine/internal/shot/toy
fire_sound = 'sound/items/syringeproj.ogg'
- clumsy_check = FALSE
item_flags = NONE
casing_ejector = FALSE
can_suppress = FALSE
@@ -75,9 +64,6 @@
if(chambered && !chambered.BB)
qdel(chambered)
-/obj/item/gun/ballistic/shotgun/toy/unrestricted
- pin = /obj/item/firing_pin
-
/obj/item/gun/ballistic/shotgun/toy/crossbow
name = "foam force crossbow"
desc = "A weapon favored by many overactive children. Ages 8 and up."
@@ -92,48 +78,38 @@
recoil = -10 //its a toy...
recoil_unwielded = -10
-/obj/item/gun/ballistic/automatic/smg/c20r/toy //This is the syndicate variant with syndicate firing pin and riot darts.
+/obj/item/gun/ballistic/automatic/smg/c20r/toy
name = "donksoft SMG"
desc = "A bullpup two-round burst toy SMG, designated 'C-20r'. Ages 8 and up."
can_suppress = FALSE
item_flags = NONE
- mag_type = /obj/item/ammo_box/magazine/toy/smgm45/riot
+ mag_type = /obj/item/ammo_box/magazine/toy/smgm45
fire_sound = 'sound/items/syringeproj.ogg'
casing_ejector = FALSE
- clumsy_check = FALSE
manufacturer = MANUFACTURER_DONKCO
recoil = -10 //its a toy...
recoil_unwielded = -10
-/obj/item/gun/ballistic/automatic/smg/c20r/toy/unrestricted //Use this for actual toys
- pin = /obj/item/firing_pin
- mag_type = /obj/item/ammo_box/magazine/toy/smgm45
-
-/obj/item/gun/ballistic/automatic/smg/c20r/toy/unrestricted/riot
+/obj/item/gun/ballistic/automatic/smg/c20r/toy/riot
mag_type = /obj/item/ammo_box/magazine/toy/smgm45/riot
/obj/item/gun/ballistic/automatic/smg/c20r/toy/update_overlays()
. = ..()
. += "[icon_state]_toy"
-/obj/item/gun/ballistic/automatic/hmg/l6_saw/toy //This is the syndicate variant with syndicate firing pin and riot darts.
+/obj/item/gun/ballistic/automatic/hmg/l6_saw/toy
name = "donksoft LMG"
desc = "A heavily modified toy light machine gun, designated 'L6 SAW'. Ages 8 and up."
fire_sound = 'sound/items/syringeproj.ogg'
can_suppress = FALSE
item_flags = NONE
- mag_type = /obj/item/ammo_box/magazine/toy/m762/riot
+ mag_type = /obj/item/ammo_box/magazine/toy/m762
casing_ejector = FALSE
- clumsy_check = FALSE
manufacturer = MANUFACTURER_DONKCO
recoil = -10 //its a toy...
recoil_unwielded = -10
-/obj/item/gun/ballistic/automatic/hmg/l6_saw/toy/unrestricted //Use this for actual toys
- pin = /obj/item/firing_pin
- mag_type = /obj/item/ammo_box/magazine/toy/m762
-
-/obj/item/gun/ballistic/automatic/hmg/l6_saw/toy/unrestricted/riot
+/obj/item/gun/ballistic/automatic/hmg/l6_saw/toy/riot
mag_type = /obj/item/ammo_box/magazine/toy/m762/riot
/obj/item/gun/ballistic/automatic/hmg/l6_saw/toy/update_overlays()
diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm
index 1423eedf81ba..f2c504f07f84 100644
--- a/code/modules/projectiles/guns/energy/energy_gun.dm
+++ b/code/modules/projectiles/guns/energy/energy_gun.dm
@@ -12,9 +12,6 @@
dual_wield_spread = 60
manufacturer = MANUFACTURER_SHARPLITE_NEW
-/obj/item/gun/energy/e_gun/mindshield
- pin = /obj/item/firing_pin/implant/mindshield
-
/obj/item/gun/energy/e_gun/mini
name = "miniature energy gun"
desc = "A small, pistol-sized energy gun with a built-in flashlight. It has two settings: disable and kill."
@@ -137,7 +134,6 @@
icon_state = "nucgun"
item_state = "nucgun"
charge_delay = 5
- pin = null
can_charge = FALSE
internal_cell = TRUE
ammo_x_offset = 2
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 4c924ef49ccf..31261d31e30c 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -18,7 +18,6 @@
name = "practice laser gun"
desc = "A modified version of the L-204 laser gun, this one fires less concentrated energy bolts designed for target practice."
ammo_type = list(/obj/item/ammo_casing/energy/laser/practice)
- clumsy_check = TRUE
item_flags = NONE
/obj/item/gun/energy/laser/retro
@@ -75,7 +74,6 @@
item_state = "shotgun"
desc = "A combat shotgun gutted and refitted with an internal laser system. Can switch between taser and scattered disabler shots."
shaded_charge = 0
- pin = /obj/item/firing_pin/implant/mindshield
ammo_type = list(/obj/item/ammo_casing/energy/disabler/scatter, /obj/item/ammo_casing/energy/electrode)
manufacturer = MANUFACTURER_NONE
@@ -93,13 +91,9 @@
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BACK
ammo_type = list(/obj/item/ammo_casing/energy/laser/accelerator)
- pin = null
ammo_x_offset = 3
manufacturer = MANUFACTURER_SHARPLITE
-/obj/item/gun/energy/lasercannon/unrestricted
- pin = /obj/item/firing_pin
-
/obj/item/ammo_casing/energy/laser/accelerator
projectile_type = /obj/projectile/beam/laser/accelerator
select_name = "accelerator"
@@ -123,7 +117,6 @@
icon_state = "xray"
item_state = null
ammo_type = list(/obj/item/ammo_casing/energy/xray)
- pin = null
ammo_x_offset = 3
////////Laser Tag////////////////////
@@ -134,8 +127,6 @@
desc = "A retro laser gun modified to fire harmless blue beams of light. Sound effects included!"
ammo_type = list(/obj/item/ammo_casing/energy/laser/bluetag)
item_flags = NONE
- clumsy_check = FALSE
- pin = /obj/item/firing_pin/tag/blue
ammo_x_offset = 2
selfcharge = TRUE
manufacturer = MANUFACTURER_NONE
@@ -149,8 +140,6 @@
desc = "A retro laser gun modified to fire harmless beams red of light. Sound effects included!"
ammo_type = list(/obj/item/ammo_casing/energy/laser/redtag)
item_flags = NONE
- clumsy_check = FALSE
- pin = /obj/item/firing_pin/tag/red
ammo_x_offset = 2
selfcharge = TRUE
manufacturer = MANUFACTURER_NONE
diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm
index 9ed110dfa041..f16cbbd98e8c 100644
--- a/code/modules/projectiles/guns/energy/pulse.dm
+++ b/code/modules/projectiles/guns/energy/pulse.dm
@@ -24,26 +24,6 @@
/obj/item/gun/energy/pulse/emp_act(severity)
return
-/obj/item/gun/energy/pulse/prize
- pin = /obj/item/firing_pin
-
-/obj/item/gun/energy/pulse/prize/Initialize()
- . = ..()
- GLOB.poi_list += src
- var/turf/T = get_turf(src)
-
- message_admins("A pulse rifle prize has been created at [ADMIN_VERBOSEJMP(T)]")
- log_game("A pulse rifle prize has been created at [AREACOORD(T)]")
-
- notify_ghosts("Someone won a pulse rifle as a prize!", source = src, action = NOTIFY_ORBIT, header = "Pulse rifle prize")
-
-/obj/item/gun/energy/pulse/prize/Destroy()
- GLOB.poi_list -= src
- . = ..()
-
-/obj/item/gun/energy/pulse/loyalpin
- pin = /obj/item/firing_pin
-
/obj/item/gun/energy/pulse/carbine
name = "pulse carbine"
desc = "A next-generation pulse weapon for Nanotrasen's security forces. High production costs and logistical issues have limited its deployment to specialist Loss Prevention and Emergency Response units."
@@ -61,8 +41,19 @@
ammo_x_offset = 2
charge_sections = 4
-/obj/item/gun/energy/pulse/carbine/loyalpin
- pin = /obj/item/firing_pin/implant/mindshield
+/obj/item/gun/energy/pulse/prize/Initialize()
+ . = ..()
+ GLOB.poi_list += src
+ var/turf/T = get_turf(src)
+
+ message_admins("A pulse rifle prize has been created at [ADMIN_VERBOSEJMP(T)]")
+ log_game("A pulse rifle prize has been created at [AREACOORD(T)]")
+
+ notify_ghosts("Someone won a pulse rifle as a prize!", source = src, action = NOTIFY_ORBIT, header = "Pulse rifle prize")
+
+/obj/item/gun/energy/pulse/prize/Destroy()
+ GLOB.poi_list -= src
+ . = ..()
/obj/item/gun/energy/pulse/pistol
name = "pulse pistol"
@@ -76,9 +67,6 @@
ammo_x_offset = 2
charge_sections = 4
-/obj/item/gun/energy/pulse/pistol/loyalpin
- pin = /obj/item/firing_pin/implant/mindshield
-
/obj/item/gun/energy/pulse/destroyer
name = "pulse destroyer"
desc = "A heavy-duty energy rifle built for pure destruction."
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 5a01abfdc0f1..27b7b65b622d 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -25,7 +25,6 @@
slot_flags = ITEM_SLOT_BELT
ammo_x_offset = 2
ammo_y_offset = 0
- pin = null
can_flashlight = TRUE
flight_x_offset = 18
flight_y_offset = 11
@@ -35,7 +34,6 @@
desc = "A gun that discharges high amounts of controlled radiation to slowly break a target into component elements."
icon_state = "decloner"
ammo_type = list(/obj/item/ammo_casing/energy/declone)
- pin = null
ammo_x_offset = 1
/obj/item/gun/energy/decloner/update_overlays()
@@ -44,10 +42,6 @@
if(!QDELETED(cell) && (cell.charge > shot.e_cost))
. += "decloner_spin"
-/obj/item/gun/energy/decloner/unrestricted
- pin = /obj/item/firing_pin
- ammo_type = list(/obj/item/ammo_casing/energy/declone/weak)
-
/obj/item/gun/energy/floragun
name = "floral somatoray"
desc = "A tool that discharges controlled radiation which induces mutation in plant cells."
@@ -67,7 +61,6 @@
w_class = WEIGHT_CLASS_BULKY
ammo_type = list(/obj/item/ammo_casing/energy/meteor)
cell_type = /obj/item/stock_parts/cell/potato
- clumsy_check = 0 //Admin spawn only, might as well let clowns use it.
selfcharge = 1
/obj/item/gun/energy/meteorgun/pen
@@ -121,7 +114,6 @@
custom_materials = list(/datum/material/iron=4000)
suppressed = null
ammo_type = list(/obj/item/ammo_casing/energy/bolt/large)
- pin = null
manufacturer = MANUFACTURER_NONE
@@ -336,12 +328,10 @@
ammo_type = list(/obj/item/ammo_casing/energy/temp, /obj/item/ammo_casing/energy/temp/hot)
cell_type = /obj/item/stock_parts/cell/gun/upgraded
ammo_x_offset = 2
- pin = null
/obj/item/gun/energy/temperature/security
name = "security temperature gun"
desc = "A weapon that can only be used to its full potential by the truly robust."
- pin = /obj/item/firing_pin
/obj/item/gun/energy/laser/instakill
name = "instakill rifle"
diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm
index 63c4ef8aa2d0..9360c24be499 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -17,9 +17,7 @@
var/can_charge = TRUE
var/ammo_type
var/no_den_usage
- clumsy_check = 0
trigger_guard = TRIGGER_GUARD_ALLOW_ALL // Has no trigger at all, uses magic instead
- pin = /obj/item/firing_pin/magic
/obj/item/gun/magic/process_fire(atom/target, mob/living/user, message, params, zone_override, bonus_spread)
if(no_den_usage)
diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm
index fad4f485aa88..8b6626bc5e97 100644
--- a/code/modules/projectiles/guns/misc/beam_rifle.dm
+++ b/code/modules/projectiles/guns/misc/beam_rifle.dm
@@ -32,7 +32,6 @@
big_gun = TRUE
cell_type = "/obj/item/stock_parts/cell/gun/large"
canMouseDown = TRUE
- pin = null
var/aiming = FALSE
var/aiming_time = 12
var/aiming_time_fire_threshold = 5
@@ -82,7 +81,6 @@
cell_type = /obj/item/stock_parts/cell/infinite
aiming_time = 0
recoil = 0
- pin = /obj/item/firing_pin
/obj/item/gun/energy/beam_rifle/equipped(mob/user)
set_user(user)
diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm
index 888e680479ea..161aa216b866 100644
--- a/code/modules/projectiles/guns/misc/blastcannon.dm
+++ b/code/modules/projectiles/guns/misc/blastcannon.dm
@@ -8,7 +8,6 @@
force = 10
fire_sound = 'sound/weapons/blastcannon.ogg'
item_flags = NONE
- clumsy_check = FALSE
randomspread = FALSE
var/hugbox = TRUE
@@ -26,11 +25,6 @@
debug_power = 80
bombcheck = FALSE
-/obj/item/gun/blastcannon/Initialize()
- . = ..()
- if(!pin)
- pin = new
-
/obj/item/gun/blastcannon/Destroy()
QDEL_NULL(bomb)
return ..()
diff --git a/code/modules/projectiles/guns/misc/chem_gun.dm b/code/modules/projectiles/guns/misc/chem_gun.dm
index 6d9c5eda699d..fef47121af5f 100644
--- a/code/modules/projectiles/guns/misc/chem_gun.dm
+++ b/code/modules/projectiles/guns/misc/chem_gun.dm
@@ -10,7 +10,6 @@
throw_range = 7
force = 4
custom_materials = list(/datum/material/iron=2000)
- clumsy_check = FALSE
fire_sound = 'sound/items/syringeproj.ogg'
var/time_per_syringe = 250
var/syringes_left = 4
diff --git a/code/modules/projectiles/guns/misc/syringe_gun.dm b/code/modules/projectiles/guns/misc/syringe_gun.dm
index 34af73b855c6..96927eb91afc 100644
--- a/code/modules/projectiles/guns/misc/syringe_gun.dm
+++ b/code/modules/projectiles/guns/misc/syringe_gun.dm
@@ -8,7 +8,6 @@
throw_range = 7
force = 4
custom_materials = list(/datum/material/iron=2000)
- clumsy_check = 0
fire_sound = 'sound/items/syringeproj.ogg'
var/list/syringes = list()
var/max_syringes = 1
diff --git a/code/modules/projectiles/guns/powered.dm b/code/modules/projectiles/guns/powered.dm
index 698826436b18..ac7418748d9b 100644
--- a/code/modules/projectiles/guns/powered.dm
+++ b/code/modules/projectiles/guns/powered.dm
@@ -52,10 +52,6 @@
/obj/item/gun/ballistic/automatic/powered/get_cell()
return cell
-/obj/item/gun/ballistic/automatic/powered/nopin
- pin = null
- spawnwithmagazine = FALSE
-
//the things below were taken from energy gun code. blame whoever coded this, not me
/obj/item/gun/ballistic/automatic/powered/attackby(obj/item/A, mob/user, params)
if (!internal_cell && istype(A, /obj/item/stock_parts/cell/gun))
diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm
deleted file mode 100644
index 20bcdc4e63d9..000000000000
--- a/code/modules/projectiles/pins.dm
+++ /dev/null
@@ -1,343 +0,0 @@
-/obj/item/firing_pin
- name = "electronic firing pin"
- desc = "A small authentication device, to be inserted into a firearm receiver to allow operation. NT safety regulations require all new designs to incorporate one."
- icon = 'icons/obj/device.dmi'
- icon_state = "firing_pin"
- item_state = "pen"
- flags_1 = CONDUCT_1
- w_class = WEIGHT_CLASS_TINY
- attack_verb = list("poked")
- var/fail_message = "INVALID USER."
- var/selfdestruct = 0 // Explode when user check is failed.
- var/force_replace = 0 // Can forcefully replace other pins.
- var/pin_removeable = 0 // Can be replaced by any pin.
- var/obj/item/gun/gun
-
-/obj/item/firing_pin/New(newloc)
- ..()
- if(istype(newloc, /obj/item/gun))
- gun = newloc
-
-/obj/item/firing_pin/afterattack(atom/target, mob/user, proximity_flag)
- . = ..()
- if(proximity_flag)
- if(istype(target, /obj/item/gun))
- var/obj/item/gun/G = target
- var/obj/item/firing_pin/old_pin = G.pin
- if(old_pin && (force_replace || old_pin.pin_removeable))
- to_chat(user, "You remove [old_pin] from [G].")
- if(Adjacent(user))
- user.put_in_hands(old_pin)
- else
- old_pin.forceMove(G.drop_location())
- old_pin.gun_remove(user)
-
- if(!G.pin)
- if(!user.temporarilyRemoveItemFromInventory(src))
- return
- gun_insert(user, G)
- to_chat(user, "You insert [src] into [G].")
- else
- to_chat(user, "This firearm already has a firing pin installed.")
-
-/obj/item/firing_pin/emag_act(mob/user)
- if(obj_flags & EMAGGED)
- return
- obj_flags |= EMAGGED
- to_chat(user, "You override the authentication mechanism.")
-
-/obj/item/firing_pin/proc/gun_insert(mob/living/user, obj/item/gun/G)
- gun = G
- forceMove(gun)
- gun.pin = src
- return
-
-/obj/item/firing_pin/proc/gun_remove(mob/living/user)
- gun.pin = null
- gun = null
- return
-
-/obj/item/firing_pin/proc/pin_auth(mob/living/user)
- return TRUE
-
-/obj/item/firing_pin/proc/auth_fail(mob/living/user)
- if(user)
- user.show_message(fail_message, MSG_VISUAL)
- if(selfdestruct)
- if(user)
- user.show_message("SELF-DESTRUCTING...
", MSG_VISUAL)
- to_chat(user, "[gun] explodes!")
- explosion(get_turf(gun), -1, 0, 2, 3)
- if(gun)
- qdel(gun)
-
-
-/obj/item/firing_pin/magic
- name = "magic crystal shard"
- desc = "A small enchanted shard which allows magical weapons to fire."
-
-
-// Test pin, works only near firing range.
-/obj/item/firing_pin/test_range
- name = "test-range firing pin"
- desc = "This safety firing pin allows weapons to be fired within proximity to a firing range."
- fail_message = "TEST RANGE CHECK FAILED."
- pin_removeable = TRUE
-
-/obj/item/firing_pin/test_range/pin_auth(mob/living/user)
- if(!istype(user))
- return FALSE
- if (istype(get_area(user), /area/ship/security/range))
- return TRUE
- return FALSE
-
-
-// Implant pin, checks for implant
-/obj/item/firing_pin/implant
- name = "implant-keyed firing pin"
- desc = "This is a security firing pin which only authorizes users who are implanted with a certain device."
- fail_message = "IMPLANT CHECK FAILED."
- var/obj/item/implant/req_implant = null
-
-/obj/item/firing_pin/implant/pin_auth(mob/living/user)
- if(user)
- for(var/obj/item/implant/I in user.implants)
- if(req_implant && I.type == req_implant)
- return TRUE
- return FALSE
-
-/obj/item/firing_pin/implant/mindshield
- name = "mindshield firing pin"
- desc = "This Security firing pin authorizes the weapon for only mindshield-implanted users."
- icon_state = "firing_pin_loyalty"
- req_implant = /obj/item/implant/mindshield
-
-/obj/item/firing_pin/implant/pindicate
- name = "syndicate firing pin"
- icon_state = "firing_pin_pindi"
- req_implant = /obj/item/implant/weapons_auth
-
-
-
-// Honk pin, clown's joke item.
-// Can replace other pins. Replace a pin in cap's laser for extra fun!
-/obj/item/firing_pin/clown
- name = "hilarious firing pin"
- desc = "Advanced clowntech that can convert any firearm into a far more useful object."
- color = "#FFFF00"
- fail_message = "HONK!"
- force_replace = TRUE
-
-/obj/item/firing_pin/clown/pin_auth(mob/living/user)
- playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE)
- return FALSE
-
-// Ultra-honk pin, clown's deadly joke item.
-// A gun with ultra-honk pin is useful for clown and useless for everyone else.
-/obj/item/firing_pin/clown/ultra
- name = "ultra hilarious firing pin"
-
-/obj/item/firing_pin/clown/ultra/pin_auth(mob/living/user)
- playsound(src.loc, 'sound/items/bikehorn.ogg', 50, TRUE)
- if(QDELETED(user)) //how the hell...?
- stack_trace("/obj/item/firing_pin/clown/ultra/pin_auth called with a [isnull(user) ? "null" : "invalid"] user.")
- return TRUE
- if(HAS_TRAIT(user, TRAIT_CLUMSY)) //clumsy
- return TRUE
- if(user.mind)
- if(user.mind.assigned_role == "Clown") //traitor clowns can use this, even though they're technically not clumsy
- return TRUE
- if(user.mind.has_antag_datum(/datum/antagonist/nukeop/clownop)) //clown ops aren't clumsy by default and technically don't have an assigned role of "Clown", but come on, they're basically clowns
- return TRUE
- if(user.mind.has_antag_datum(/datum/antagonist/nukeop/leader/clownop)) //Wanna hear a funny joke?
- return TRUE //The clown op leader antag datum isn't a subtype of the normal clown op antag datum.
- return FALSE
-
-/obj/item/firing_pin/clown/ultra/gun_insert(mob/living/user, obj/item/gun/G)
- ..()
- G.clumsy_check = FALSE
-
-/obj/item/firing_pin/clown/ultra/gun_remove(mob/living/user)
- gun.clumsy_check = initial(gun.clumsy_check)
- ..()
-
-// Now two times deadlier!
-/obj/item/firing_pin/clown/ultra/selfdestruct
- name = "super ultra hilarious firing pin"
- desc = "Advanced clowntech that can convert any firearm into a far more useful object. It has a small nitrobananium charge on it."
- selfdestruct = TRUE
-
-
-// DNA-keyed pin.
-// When you want to keep your toys for yourself.
-/obj/item/firing_pin/dna
- name = "DNA-keyed firing pin"
- desc = "This is a DNA-locked firing pin which only authorizes one user. Attempt to fire once to DNA-link."
- icon_state = "firing_pin_dna"
- fail_message = "DNA CHECK FAILED."
- var/unique_enzymes = null
-
-/obj/item/firing_pin/dna/afterattack(atom/target, mob/user, proximity_flag)
- . = ..()
- if(proximity_flag && iscarbon(target))
- var/mob/living/carbon/M = target
- if(M.dna && M.dna.unique_enzymes)
- unique_enzymes = M.dna.unique_enzymes
- to_chat(user, "DNA-LOCK SET.")
-
-/obj/item/firing_pin/dna/pin_auth(mob/living/carbon/user)
- if(user && user.dna && user.dna.unique_enzymes)
- if(user.dna.unique_enzymes == unique_enzymes)
- return TRUE
- return FALSE
-
-/obj/item/firing_pin/dna/auth_fail(mob/living/carbon/user)
- if(!unique_enzymes)
- if(user && user.dna && user.dna.unique_enzymes)
- unique_enzymes = user.dna.unique_enzymes
- to_chat(user, "DNA-LOCK SET.")
- else
- ..()
-
-/obj/item/firing_pin/dna/dredd
- desc = "This is a DNA-locked firing pin which only authorizes one user. Attempt to fire once to DNA-link. It has a small explosive charge on it."
- selfdestruct = TRUE
-
-// Paywall pin, brought to you by ARMA 3 DLC.
-// Checks if the user has a valid bank account on an ID and if so attempts to extract a one-time payment to authorize use of the gun. Otherwise fails to shoot.
-/obj/item/firing_pin/paywall
- name = "paywall firing pin"
- desc = "A firing pin with a built-in configurable paywall."
- color = "#FFD700"
- fail_message = ""
- var/list/gun_owners = list() //list of people who've accepted the license prompt. If this is the multi-payment pin, then this means they accepted the waiver that each shot will cost them money
- var/payment_amount //how much gets paid out to license yourself to the gun
- var/obj/item/card/id/pin_owner
- var/multi_payment = FALSE //if true, user has to pay everytime they fire the gun
- var/owned = FALSE
- var/active_prompt = FALSE //purchase prompt to prevent spamming it
-
-/obj/item/firing_pin/paywall/attack_self(mob/user)
- multi_payment = !multi_payment
- to_chat(user, "You set the pin to [(multi_payment) ? "process payment for every shot" : "one-time license payment"].")
-
-/obj/item/firing_pin/paywall/examine(mob/user)
- . = ..()
- if(pin_owner)
- . += "This firing pin is currently authorized to pay into the account of [pin_owner.registered_name]."
-
-/obj/item/firing_pin/paywall/gun_insert(mob/living/user, obj/item/gun/G)
- if(!pin_owner)
- to_chat(user, "ERROR: Please swipe valid identification card before installing firing pin!")
- return
- gun = G
- forceMove(gun)
- gun.pin = src
- if(multi_payment)
- gun.desc += " This [gun.name] has a per-shot cost of [payment_amount] credit[(payment_amount > 1) ? "s" : ""]."
- return
- gun.desc += " This [gun.name] has a license permit cost of [payment_amount] credit[(payment_amount > 1) ? "s" : ""]."
- return
-
-
-/obj/item/firing_pin/paywall/gun_remove(mob/living/user)
- gun.desc = initial(desc)
- ..()
-
-/obj/item/firing_pin/paywall/attackby(obj/item/M, mob/user, params)
- if(istype(M, /obj/item/card/id))
- var/obj/item/card/id/id = M
- if(!id.registered_account)
- to_chat(user, "ERROR: Identification card lacks registered bank account!")
- return
- if(id != pin_owner && owned)
- to_chat(user, "ERROR: This firing pin has already been authorized!")
- return
- if(id == pin_owner)
- to_chat(user, "You unlink the card from the firing pin.")
- gun_owners -= user
- pin_owner = null
- owned = FALSE
- return
- var/transaction_amount = input(user, "Insert valid deposit amount for gun purchase", "Money Deposit") as null|num
- if(transaction_amount < 1)
- to_chat(user, "ERROR: Invalid amount designated.")
- return
- if(!transaction_amount)
- return
- pin_owner = id
- owned = TRUE
- payment_amount = transaction_amount
- gun_owners += user
- to_chat(user, "You link the card to the firing pin.")
-
-/obj/item/firing_pin/paywall/pin_auth(mob/living/user)
- if(!istype(user))//nice try commie
- return FALSE
- if(ishuman(user))
- var/datum/bank_account/credit_card_details
- var/mob/living/carbon/human/H = user
- if(H.get_bank_account())
- credit_card_details = H.get_bank_account()
- if(H in gun_owners)
- if(multi_payment && credit_card_details)
- if(credit_card_details.has_money(payment_amount))
- pin_owner.registered_account.transfer_money(credit_card_details, payment_amount)
- return TRUE
- to_chat(user, "ERROR: User balance insufficent for successful transaction!")
- return FALSE
- return TRUE
- if(credit_card_details && !active_prompt)
- var/license_request = alert(usr, "Do you wish to pay [payment_amount] credit[(payment_amount > 1) ? "s" : ""] for [(multi_payment) ? "each shot of [gun.name]" : "usage license of [gun.name]"]?", "Weapon Purchase", "Yes", "No")
- active_prompt = TRUE
- if(!user.canUseTopic(src, BE_CLOSE))
- active_prompt = FALSE
- return FALSE
- switch(license_request)
- if("Yes")
- if(credit_card_details.has_money(payment_amount))
- pin_owner.registered_account.transfer_money(credit_card_details, payment_amount)
- gun_owners += H
- to_chat(user, "Gun license purchased, have a secure day!")
- active_prompt = FALSE
- return FALSE //we return false here so you don't click initially to fire, get the prompt, accept the prompt, and THEN the gun
- to_chat(user, "ERROR: User balance insufficent for successful transaction!")
- return FALSE
- if("No")
- to_chat(user, "ERROR: User has declined to purchase gun license!")
- return FALSE
- to_chat(user, "ERROR: User has no valid bank account to substract neccesary funds from!")
- return FALSE
-
-// Laser tag pins
-/obj/item/firing_pin/tag
- name = "laser tag firing pin"
- desc = "A recreational firing pin, used in laser tag units to ensure users have their vests on."
- fail_message = "SUIT CHECK FAILED."
- var/obj/item/clothing/suit/suit_requirement = null
- var/tagcolor = ""
-
-/obj/item/firing_pin/tag/pin_auth(mob/living/user)
- if(ishuman(user))
- var/mob/living/carbon/human/M = user
- if(istype(M.wear_suit, suit_requirement))
- return TRUE
- to_chat(user, "You need to be wearing [tagcolor] laser tag armor!")
- return FALSE
-
-/obj/item/firing_pin/tag/red
- name = "red laser tag firing pin"
- icon_state = "firing_pin_red"
- suit_requirement = /obj/item/clothing/suit/redtag
- tagcolor = "red"
-
-/obj/item/firing_pin/tag/blue
- name = "blue laser tag firing pin"
- icon_state = "firing_pin_blue"
- suit_requirement = /obj/item/clothing/suit/bluetag
- tagcolor = "blue"
-
-/obj/item/firing_pin/Destroy()
- if(gun)
- gun.pin = null
- return ..()
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 930cc96be9c8..5edbb4df1158 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -67,36 +67,6 @@
category = list("Ammo")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_BALLISTICS
-/datum/design/pin_testing
- name = "Test-Range Firing Pin"
- desc = "This safety firing pin allows firearms to be operated within proximity to a firing range."
- id = "pin_testing"
- build_type = PROTOLATHE
- materials = list(/datum/material/iron = 500, /datum/material/glass = 300)
- build_path = /obj/item/firing_pin/test_range
- category = list("Firing Pins")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/pin_mindshield
- name = "Mindshield Firing Pin"
- desc = "This is a security firing pin which only authorizes users who are mindshield-implanted."
- id = "pin_loyalty"
- build_type = PROTOLATHE
- materials = list(/datum/material/silver = 600, /datum/material/diamond = 600, /datum/material/uranium = 200)
- build_path = /obj/item/firing_pin/implant/mindshield
- category = list("Firing Pins")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/pin
- name = "Standard Firing Pin"
- desc = "A simple, electronic firing pin which is required in most standardized modern weapons."
- id = "pin_standard"
- build_type = PROTOLATHE
- materials = list(/datum/material/silver = 600, /datum/material/diamond = 600, /datum/material/uranium = 200)
- build_path = /obj/item/firing_pin
- category = list("Firing Pins")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_BALLISTICS
-
/datum/design/stunrevolver
name = "Tesla Canon"
desc = "A high-tech cannon that fires internal, reusable bolt cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers"
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 33c2ac455475..0b976f694d62 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -632,7 +632,7 @@
display_name = "Weapon Development Technology"
description = "Our researchers have found new ways to weaponize just about everything now."
prereq_ids = list("engineering")
- design_ids = list("pin_testing", "tele_shield","gun_cell")
+ design_ids = list("tele_shield","gun_cell")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
export_price = 5000
@@ -641,19 +641,10 @@
display_name = "Advanced Weapon Development Technology"
description = "Our weapons are breaking the rules of reality by now."
prereq_ids = list("adv_engi", "weaponry")
- design_ids = list("pin_loyalty", "gun_cell_upgraded", "gun_cell_large")
+ design_ids = list("gun_cell_upgraded", "gun_cell_large")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
export_price = 5000
-/datum/techweb_node/firingpin
- id = "firingpin"
- display_name = "Pin Security Decompilation"
- description = "A resource-intensive hacking operation, allowing for the creation of pins without a mindshield brake."
- prereq_ids = list("adv_weaponry")
- design_ids = list("pin_standard")
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 15000)
- export_price = 5000
-
/datum/techweb_node/electric_weapons
id = "electronic_weapons"
display_name = "Electric Weapons"
diff --git a/code/modules/ruins/spaceruin_code/forgottenship.dm b/code/modules/ruins/spaceruin_code/forgottenship.dm
index ece6a7293f03..1ef7212dce93 100644
--- a/code/modules/ruins/spaceruin_code/forgottenship.dm
+++ b/code/modules/ruins/spaceruin_code/forgottenship.dm
@@ -47,14 +47,6 @@ GLOBAL_VAR_INIT(fscpassword, generate_password())
. = ..()
AddComponent(/datum/component/gps, "Old Encrypted Signal")
-/obj/item/storage/box/firingpins/syndicate
- name = "box of syndicate firing pins"
- desc = "A box full of special syndicate firing pins which allow only syndicate operatives to use weapons with those firing pins."
-
-/obj/item/storage/box/firingpins/syndicate/PopulateContents()
- for(var/i in 1 to 5)
- new /obj/item/firing_pin/implant/pindicate(src)
-
/////////// AI Laws
/obj/item/aiModule/core/full/cybersun
diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm
index aae206d6fb0a..e79ffb8a491e 100644
--- a/code/modules/spells/spell_types/rightandwrong.dm
+++ b/code/modules/spells/spell_types/rightandwrong.dm
@@ -119,8 +119,6 @@ GLOBAL_VAR_INIT(summon_magic_triggered, FALSE)
var/gun_type = pick(GLOB.summoned_guns)
var/obj/item/gun/G = new gun_type(get_turf(H))
- if (istype(G)) // The list contains some non-gun type guns like the speargun which do not have this proc
- G.unlock()
playsound(get_turf(H),'sound/magic/summon_guns.ogg', 50, TRUE)
var/in_hand = H.put_in_hands(G) // not always successful
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index 48c79382444e..f58f94df84dd 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -365,22 +365,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
surplus = 0
include_modes = list(/datum/game_mode/nuclear/clown_ops)
-/datum/uplink_item/dangerous/clownoppin
- name = "Ultra Hilarious Firing Pin"
- desc = "A firing pin that, when inserted into a gun, makes that gun only useable by clowns and clumsy people and makes that gun honk whenever anyone tries to fire it."
- cost = 1 //much cheaper for clown ops than for clowns
- item = /obj/item/firing_pin/clown/ultra
- include_modes = list(/datum/game_mode/nuclear/clown_ops)
- illegal_tech = FALSE
-
-/datum/uplink_item/dangerous/clownopsuperpin
- name = "Super Ultra Hilarious Firing Pin"
- desc = "Like the ultra hilarious firing pin, except the gun you insert this pin into explodes when someone who isn't clumsy or a clown tries to fire it."
- cost = 4 //much cheaper for clown ops than for clowns
- item = /obj/item/firing_pin/clown/ultra/selfdestruct
- include_modes = list(/datum/game_mode/nuclear/clown_ops)
- illegal_tech = FALSE
-
/datum/uplink_item/dangerous/bioterror
name = "Biohazardous Chemical Sprayer"
desc = "A handheld chemical sprayer that allows a wide dispersal of selected chemicals. Especially tailored by the Tiger \
@@ -532,7 +516,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/dangerous/foamsmg
name = "Toy Submachine Gun"
desc = "A fully-loaded Donksoft bullpup submachine gun that fires riot grade darts with a 20-round magazine."
- item = /obj/item/gun/ballistic/automatic/smg/c20r/toy
+ item = /obj/item/gun/ballistic/automatic/smg/c20r/toy/riot
cost = 5
surplus = 0
include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
@@ -541,7 +525,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
name = "Toy Machine Gun"
desc = "A fully-loaded Donksoft belt-fed machine gun. This weapon has a massive 50-round magazine of devastating \
riot grade darts, that can briefly incapacitate someone in just one volley."
- item = /obj/item/gun/ballistic/automatic/hmg/l6_saw/toy
+ item = /obj/item/gun/ballistic/automatic/hmg/l6_saw/toy/riot
cost = 10
surplus = 0
include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
@@ -1952,30 +1936,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/reverse_bear_trap
restricted_roles = list("Clown")
-/datum/uplink_item/role_restricted/reverse_revolver
- name = "Reverse Revolver"
- desc = "A revolver that always fires at its user. \"Accidentally\" drop your weapon, then watch as the greedy corporate pigs blow their own brains all over the wall. \
- The revolver itself is actually real. Only clumsy people, and clowns, can fire it normally. Comes in a box of hugs. Honk."
- cost = 14
- item = /obj/item/storage/box/hug/reverse_revolver
- restricted_roles = list("Clown")
-
-/datum/uplink_item/role_restricted/clownpin
- name = "Ultra Hilarious Firing Pin"
- desc = "A firing pin that, when inserted into a gun, makes that gun only usable by clowns and clumsy people and makes that gun honk whenever anyone tries to fire it."
- cost = 4
- item = /obj/item/firing_pin/clown/ultra
- restricted_roles = list("Clown")
- illegal_tech = FALSE
-
-/datum/uplink_item/role_restricted/clownsuperpin
- name = "Super Ultra Hilarious Firing Pin"
- desc = "Like the ultra hilarious firing pin, except the gun you insert this pin into explodes when someone who isn't clumsy or a clown tries to fire it."
- cost = 7
- item = /obj/item/firing_pin/clown/ultra/selfdestruct
- restricted_roles = list("Clown")
- illegal_tech = FALSE
-
/datum/uplink_item/role_restricted/laser_arm
name = "Laser Arm Implant"
desc = "An implant that grants you a recharging laser gun inside your arm. Weak to EMPs. Comes with a syndicate autosurgeon for immediate self-application."
diff --git a/code/modules/vending/liberation.dm b/code/modules/vending/liberation.dm
index ffc1214e6bdf..03d532c804e7 100644
--- a/code/modules/vending/liberation.dm
+++ b/code/modules/vending/liberation.dm
@@ -13,7 +13,7 @@
/obj/item/gun/ballistic/automatic/pistol/deagle/gold = 2,
/obj/item/gun/ballistic/automatic/pistol/deagle/camo = 2,
/obj/item/gun/ballistic/automatic/pistol/candor = 2,
- /obj/item/gun/ballistic/automatic/smg/proto/unrestricted = 2,
+ /obj/item/gun/ballistic/automatic/smg/proto = 2,
/obj/item/gun/ballistic/shotgun/automatic/combat = 2,
/obj/item/gun/ballistic/automatic/gyropistol = 1,
/obj/item/gun/ballistic/shotgun = 2)
diff --git a/code/modules/vending/liberation_toy.dm b/code/modules/vending/liberation_toy.dm
index fd899f251d25..989bd721a79c 100644
--- a/code/modules/vending/liberation_toy.dm
+++ b/code/modules/vending/liberation_toy.dm
@@ -6,9 +6,9 @@
product_ads = "Feel robust with your toys!;Express your inner child today!;Toy weapons don't kill people, but valid hunters do!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!"
vend_reply = "Come back for more!"
circuit = /obj/item/circuitboard/machine/vending/syndicatedonksofttoyvendor
- products = list(/obj/item/gun/ballistic/automatic/toy/unrestricted = 10,
- /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted = 10,
- /obj/item/gun/ballistic/shotgun/toy/unrestricted = 10,
+ products = list(/obj/item/gun/ballistic/automatic/toy = 10,
+ /obj/item/gun/ballistic/automatic/toy/pistol = 10,
+ /obj/item/gun/ballistic/shotgun/toy = 10,
/obj/item/toy/sword = 10,
/obj/item/ammo_box/foambox = 20,
/obj/item/toy/foamblade = 10,
@@ -17,8 +17,8 @@
/obj/item/clothing/head/syndicatefake = 5) //OPS IN DORMS oh wait it's just an assistant
contraband = list(
/obj/item/gun/ballistic/shotgun/toy/crossbow = 10, //Congrats, you unlocked the +18 setting!
- /obj/item/gun/ballistic/automatic/smg/c20r/toy/unrestricted/riot = 10,
- /obj/item/gun/ballistic/automatic/hmg/l6_saw/toy/unrestricted/riot = 10,
+ /obj/item/gun/ballistic/automatic/smg/c20r/toy = 10,
+ /obj/item/gun/ballistic/automatic/hmg/l6_saw/toy = 10,
/obj/item/ammo_box/foambox/riot = 20,
/obj/item/toy/katana = 10,
/obj/item/dualsaber/toy = 5,
diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm
index 7af332630105..0141967beff3 100644
--- a/code/modules/vending/security.dm
+++ b/code/modules/vending/security.dm
@@ -131,10 +131,10 @@
/obj/item/grenade/frag = 1,
)
voucher_items = list(
- "M-90gl Carbine" = /obj/item/gun/ballistic/automatic/smg/m90/unrestricted,
+ "M-90gl Carbine" = /obj/item/gun/ballistic/automatic/smg/m90,
"sniper rifle" = /obj/item/gun/ballistic/automatic/sniper_rifle,
- "C-20r SMG" = /obj/item/gun/ballistic/automatic/smg/c20r/unrestricted,
- "Bulldog Shotgun" = /obj/item/gun/ballistic/shotgun/bulldog/unrestricted)
+ "C-20r SMG" = /obj/item/gun/ballistic/automatic/smg/c20r,
+ "Bulldog Shotgun" = /obj/item/gun/ballistic/shotgun/bulldog)
/obj/machinery/vending/security/marine/nanotrasen
icon_state = "nt-marine"
diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm
index 5f284718b6f3..c86049ab75ef 100644
--- a/code/modules/vending/toys.dm
+++ b/code/modules/vending/toys.dm
@@ -8,9 +8,9 @@
light_mask = "donksoft-light-mask"
circuit = /obj/item/circuitboard/machine/vending/donksofttoyvendor
products = list(
- /obj/item/gun/ballistic/automatic/toy/unrestricted = 10,
- /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted = 10,
- /obj/item/gun/ballistic/shotgun/toy/unrestricted = 10,
+ /obj/item/gun/ballistic/automatic/toy = 10,
+ /obj/item/gun/ballistic/automatic/toy/pistol = 10,
+ /obj/item/gun/ballistic/shotgun/toy = 10,
/obj/item/toy/sword = 10,
/obj/item/ammo_box/foambox = 20,
/obj/item/toy/foamblade = 10,
@@ -19,8 +19,8 @@
/obj/item/clothing/head/syndicatefake = 5)
contraband = list(
/obj/item/gun/ballistic/shotgun/toy/crossbow = 10,
- /obj/item/gun/ballistic/automatic/smg/c20r/toy/unrestricted = 10,
- /obj/item/gun/ballistic/automatic/hmg/l6_saw/toy/unrestricted = 10,
+ /obj/item/gun/ballistic/automatic/smg/c20r/toy = 10,
+ /obj/item/gun/ballistic/automatic/hmg/l6_saw/toy = 10,
/obj/item/toy/katana = 10,
/obj/item/dualsaber/toy = 5)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 360e4cd0f3e4..d7a44b667a0c 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi
index 90354fdf41db..03f2163cddce 100644
Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ
diff --git a/shiptest.dme b/shiptest.dme
index f32a5751783e..096edf9342dd 100644
--- a/shiptest.dme
+++ b/shiptest.dme
@@ -2964,7 +2964,6 @@
#include "code\modules\power\tesla\energy_ball.dm"
#include "code\modules\power\tesla\generator.dm"
#include "code\modules\projectiles\gun.dm"
-#include "code\modules\projectiles\pins.dm"
#include "code\modules\projectiles\projectile.dm"
#include "code\modules\projectiles\ammunition\_ammunition.dm"
#include "code\modules\projectiles\ammunition\_firing.dm"