diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 4d08520246..150d07e745 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -7,6 +7,7 @@ burst_size = 3 fire_delay = 2 fire_select_modes = list(SELECT_SEMI_AUTOMATIC, SELECT_BURST_SHOT, SELECT_FULLY_AUTOMATIC) + has_gun_safety = TRUE /obj/item/gun/ballistic/automatic/proto name = "\improper Nanotrasen Saber SMG" diff --git a/code/modules/projectiles/guns/ballistic/bow.dm b/code/modules/projectiles/guns/ballistic/bow.dm index dbf249b3f8..714a4e10a8 100644 --- a/code/modules/projectiles/guns/ballistic/bow.dm +++ b/code/modules/projectiles/guns/ballistic/bow.dm @@ -15,6 +15,7 @@ pin = null no_pin_required = TRUE trigger_guard = TRIGGER_GUARD_NONE //so ashwalkers can use it + has_gun_safety = FALSE //bows and arrows don't have safeties /obj/item/gun/ballistic/bow/shoot_with_empty_chamber() return diff --git a/code/modules/projectiles/guns/ballistic/derringer.dm b/code/modules/projectiles/guns/ballistic/derringer.dm index 47213f17df..186b2b8edd 100644 --- a/code/modules/projectiles/guns/ballistic/derringer.dm +++ b/code/modules/projectiles/guns/ballistic/derringer.dm @@ -10,6 +10,7 @@ fire_sound = 'sound/weapons/revolvershot.ogg' casing_ejector = FALSE w_class = WEIGHT_CLASS_TINY + has_gun_safety = TRUE /obj/item/gun/ballistic/derringer/get_ammo(countchambered = FALSE, countempties = TRUE) var/boolets = 0 //legacy var name maturity diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm index 10a6eea89d..57f6932bff 100644 --- a/code/modules/projectiles/guns/ballistic/launchers.dm +++ b/code/modules/projectiles/guns/ballistic/launchers.dm @@ -11,6 +11,7 @@ fire_sound = 'sound/weapons/grenadelaunch.ogg' w_class = WEIGHT_CLASS_NORMAL pin = /obj/item/firing_pin/implant/pindicate + has_gun_safety = FALSE /obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted pin = /obj/item/firing_pin @@ -27,6 +28,7 @@ icon_state = "mecha_grenadelnchr" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/grenademulti pin = /obj/item/firing_pin + has_gun_safety = FALSE /obj/item/gun/ballistic/revolver/grenadelauncher/cyborg/attack_self() return @@ -92,6 +94,7 @@ casing_ejector = FALSE weapon_weight = WEAPON_HEAVY magazine_wording = "rocket" + has_gun_safety = TRUE /obj/item/gun/ballistic/rocketlauncher/unrestricted pin = /obj/item/firing_pin diff --git a/code/modules/projectiles/guns/ballistic/magweapon.dm b/code/modules/projectiles/guns/ballistic/magweapon.dm index f3a11eb179..3150c09126 100644 --- a/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -20,6 +20,7 @@ w_class = WEIGHT_CLASS_BULKY var/obj/item/stock_parts/cell/cell var/cell_type = /obj/item/stock_parts/cell/magnetic + has_gun_safety = TRUE /obj/item/gun/ballistic/automatic/magrifle/Initialize(mapload) . = ..() diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index f3b07aa7a4..f5dc57afa7 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -6,6 +6,7 @@ fire_sound = "sound/weapons/revolvershot.ogg" casing_ejector = FALSE recoil = 0.5 + has_gun_safety = TRUE /obj/item/gun/ballistic/revolver/Initialize(mapload) . = ..() diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index b52620e7e0..1d9ceacff5 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -15,6 +15,7 @@ var/clip_delay = CLICK_CD_MELEE weapon_weight = WEAPON_HEAVY sawn_item_state = "sawnshotgun" + has_gun_safety = TRUE /obj/item/gun/ballistic/shotgun/attackby(obj/item/A, mob/user, params) . = ..() diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm index a72a172891..0f8e3e8214 100644 --- a/code/modules/projectiles/guns/ballistic/toy.dm +++ b/code/modules/projectiles/guns/ballistic/toy.dm @@ -13,6 +13,7 @@ clumsy_check = 0 item_flags = NONE casing_ejector = FALSE + has_gun_safety = TRUE /obj/item/gun/ballistic/automatic/toy/unrestricted pin = /obj/item/firing_pin diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm index b11e5533cc..653017e413 100644 --- a/code/modules/projectiles/guns/energy/dueling.dm +++ b/code/modules/projectiles/guns/energy/dueling.dm @@ -161,6 +161,7 @@ var/datum/duel/duel var/mutable_appearance/setting_overlay var/hugbox = DUEL_HUGBOX_NONE + has_gun_safety = TRUE /obj/item/gun/energy/dueling/hugbox hugbox = DUEL_HUGBOX_LETHAL diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index a34e0f6f12..a5b47ff463 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -9,6 +9,7 @@ ammo_x_offset = 3 flight_x_offset = 15 flight_y_offset = 10 + has_gun_safety = TRUE /obj/item/gun/energy/e_gun/mini name = "miniature energy gun" diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 5fd158c028..68e5faa412 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -34,6 +34,7 @@ lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' ammo_type = list(/obj/item/ammo_casing/energy/kinetic/premium) + has_gun_safety = TRUE /obj/item/ammo_casing/energy/kinetic/premium projectile_type = /obj/item/projectile/kinetic/premium diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index f73ac9cfb8..89aeef8c48 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -8,6 +8,7 @@ ammo_type = list(/obj/item/ammo_casing/energy/lasergun) ammo_x_offset = 1 shaded_charge = 1 + has_gun_safety = TRUE /obj/item/gun/energy/laser/practice name = "practice laser gun" @@ -92,6 +93,7 @@ selfcharge = EGUN_SELFCHARGE_BORG cell_type = /obj/item/stock_parts/cell/secborg charge_delay = 3 + has_gun_safety = FALSE /obj/item/gun/energy/laser/cyborg/emp_act() return @@ -129,6 +131,7 @@ ammo_type = list(/obj/item/ammo_casing/energy/laser/accelerator) pin = null ammo_x_offset = 3 + has_gun_safety = TRUE /obj/item/ammo_casing/energy/laser/accelerator projectile_type = /obj/item/projectile/beam/laser/accelerator diff --git a/code/modules/projectiles/guns/energy/megabuster.dm b/code/modules/projectiles/guns/energy/megabuster.dm index dddfd749de..a980cab6fa 100644 --- a/code/modules/projectiles/guns/energy/megabuster.dm +++ b/code/modules/projectiles/guns/energy/megabuster.dm @@ -10,6 +10,7 @@ selfcharge = EGUN_SELFCHARGE cell_type = "/obj/item/stock_parts/cell/pulse" icon = 'modular_citadel/icons/obj/guns/VGguns.dmi' + has_gun_safety = TRUE /obj/item/gun/energy/megabuster/proto name = "Proto-buster" diff --git a/code/modules/projectiles/guns/energy/mounted.dm b/code/modules/projectiles/guns/energy/mounted.dm index 25a94895f8..304b7f4dd9 100644 --- a/code/modules/projectiles/guns/energy/mounted.dm +++ b/code/modules/projectiles/guns/energy/mounted.dm @@ -8,6 +8,7 @@ selfcharge = EGUN_SELFCHARGE can_flashlight = 0 trigger_guard = TRIGGER_GUARD_ALLOW_ALL // Has no trigger at all, uses neural signals instead + has_gun_safety = TRUE /obj/item/gun/energy/laser/mounted name = "mounted laser" @@ -18,3 +19,4 @@ force = 5 selfcharge = EGUN_SELFCHARGE trigger_guard = TRIGGER_GUARD_ALLOW_ALL + has_gun_safety = TRUE diff --git a/code/modules/projectiles/guns/energy/plasma_cit.dm b/code/modules/projectiles/guns/energy/plasma_cit.dm index 9f9340a725..852baabaa0 100644 --- a/code/modules/projectiles/guns/energy/plasma_cit.dm +++ b/code/modules/projectiles/guns/energy/plasma_cit.dm @@ -9,6 +9,7 @@ shaded_charge = 1 lefthand_file = 'modular_citadel/icons/mob/citadel/guns_lefthand.dmi' righthand_file = 'modular_citadel/icons/mob/citadel/guns_righthand.dmi' + has_gun_safety = TRUE /obj/item/gun/energy/plasma/rifle diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index d5dc39695b..08326794a7 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -10,6 +10,7 @@ slot_flags = ITEM_SLOT_BACK ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse, /obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser) cell_type = "/obj/item/stock_parts/cell/pulse" + has_gun_safety = TRUE /obj/item/gun/energy/pulse/emp_act(severity) return diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 67e7b58bd3..b19873236e 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -11,6 +11,7 @@ ammo_x_offset = 3 flight_x_offset = 17 flight_y_offset = 9 + has_gun_safety = TRUE /obj/item/gun/energy/ionrifle/emp_act(severity) return @@ -49,6 +50,7 @@ modifystate = 1 ammo_x_offset = 1 selfcharge = EGUN_SELFCHARGE + has_gun_safety = FALSE /obj/item/gun/energy/meteorgun name = "meteor gun" @@ -60,6 +62,7 @@ cell_type = "/obj/item/stock_parts/cell/potato" clumsy_check = 0 //Admin spawn only, might as well let clowns use it. selfcharge = EGUN_SELFCHARGE + has_gun_safety = TRUE /obj/item/gun/energy/meteorgun/pen name = "meteor pen" @@ -70,6 +73,7 @@ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' w_class = WEIGHT_CLASS_TINY + has_gun_safety = TRUE /obj/item/gun/energy/mindflayer name = "\improper Mind Flayer" @@ -78,6 +82,7 @@ item_state = null ammo_type = list(/obj/item/ammo_casing/energy/mindflayer) ammo_x_offset = 2 + has_gun_safety = FALSE /obj/item/gun/energy/kinetic_accelerator/crossbow name = "mini energy crossbow" @@ -96,6 +101,7 @@ unique_frequency = TRUE can_flashlight = 0 max_mod_capacity = 0 + has_gun_safety = TRUE /obj/item/gun/energy/kinetic_accelerator/crossbow/halloween name = "candy corn crossbow" @@ -103,6 +109,7 @@ icon_state = "crossbow_halloween" item_state = "crossbow" ammo_type = list(/obj/item/ammo_casing/energy/bolt/halloween) + has_gun_safety = FALSE /obj/item/gun/energy/kinetic_accelerator/crossbow/large name = "energy crossbow" @@ -133,6 +140,7 @@ usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg') tool_behaviour = TOOL_WELDER toolspeed = 0.7 //plasmacutters can be used as welders, and are faster than standard welders + has_gun_safety = FALSE /obj/item/gun/energy/plasmacutter/ComponentInitialize() . = ..() @@ -189,6 +197,7 @@ icon_state = "gravity_gun" var/power = 4 var/firing_core = FALSE + has_gun_safety = TRUE /obj/item/gun/energy/gravity_gun/attackby(obj/item/C, mob/user) if(istype(C, /obj/item/assembly/signaler/anomaly)) @@ -216,6 +225,7 @@ var/obj/effect/portal/p_orange var/atmos_link = FALSE var/firing_core = FALSE + has_gun_safety = TRUE /obj/item/gun/energy/wormhole_projector/attackby(obj/item/C, mob/user) if(istype(C, /obj/item/assembly/signaler/anomaly)) @@ -305,6 +315,7 @@ ammo_type = list(/obj/item/ammo_casing/energy/c3dbullet) can_charge = 0 use_cyborg_cell = 1 + has_gun_safety = FALSE /obj/item/gun/energy/printer/ComponentInitialize() . = ..() @@ -334,6 +345,7 @@ desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit." ammo_type = list(/obj/item/ammo_casing/energy/instakill) force = 60 + has_gun_safety = TRUE /obj/item/gun/energy/laser/instakill/red desc = "A specialized ASMD laser-rifle, capable of flat-out disintegrating most targets in a single hit. This one has a red design." @@ -362,6 +374,7 @@ cell_type = /obj/item/stock_parts/cell/super ammo_type = list(/obj/item/ammo_casing/energy/emitter) automatic_charge_overlays = FALSE + has_gun_safety = TRUE /obj/item/gun/energy/emitter/update_icon_state() var/obj/item/ammo_casing/energy/shot = ammo_type[current_firemode_index] @@ -377,3 +390,4 @@ icon_state = "decloner" no_pin_required = TRUE ammo_type = list(/obj/item/ammo_casing/energy/pickle) + has_gun_safety = FALSE diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index 6f70998834..e64a77015d 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -31,6 +31,7 @@ canMouseDown = TRUE can_turret = FALSE can_circuit = FALSE + has_gun_safety = TRUE //Cit changes: beam rifle stats. slowdown = 1 item_flags = NO_MAT_REDEMPTION | SLOWS_WHILE_IN_HAND | NEEDS_PERMIT diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index a88f395561..c9848cfaab 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -10,6 +10,7 @@ item_flags = NONE clumsy_check = FALSE randomspread = FALSE + has_gun_safety = TRUE var/hugbox = TRUE var/max_power = INFINITY diff --git a/code/modules/projectiles/guns/misc/chameleon.dm b/code/modules/projectiles/guns/misc/chameleon.dm index 428de747f7..a097347b09 100644 --- a/code/modules/projectiles/guns/misc/chameleon.dm +++ b/code/modules/projectiles/guns/misc/chameleon.dm @@ -13,6 +13,7 @@ item_flags = NONE pin = /obj/item/firing_pin cell_type = /obj/item/stock_parts/cell/bluespace + var/datum/action/item_action/chameleon/change/gun/chameleon_action var/list/chameleon_projectile_vars diff --git a/code/modules/projectiles/guns/misc/chem_gun.dm b/code/modules/projectiles/guns/misc/chem_gun.dm index 9f0815ebfb..f4604c49e3 100644 --- a/code/modules/projectiles/guns/misc/chem_gun.dm +++ b/code/modules/projectiles/guns/misc/chem_gun.dm @@ -20,6 +20,7 @@ var/obj/item/reagent_containers/glass/bottle/vial/vial var/list/allowed_containers = list(/obj/item/reagent_containers/glass/bottle/vial/small, /obj/item/reagent_containers/glass/bottle/vial/large) var/quickload = TRUE + has_gun_safety = TRUE /obj/item/gun/chem/Initialize(mapload) . = ..() @@ -110,6 +111,7 @@ desc = "An experimental improved version of the smartdart rifle. It synthesizes medicinal smart darts which it fills using an inserted hypovial. It can accommodate both large and small hypovials." icon_state = "chemgunrepeater" item_state = "syringegun" + has_gun_safety = TRUE obj/item/gun/chem/smart/Initialize(mapload) . = ..() diff --git a/code/modules/projectiles/guns/misc/grenade_launcher.dm b/code/modules/projectiles/guns/misc/grenade_launcher.dm index 86dd0c6ce4..20448e26ef 100644 --- a/code/modules/projectiles/guns/misc/grenade_launcher.dm +++ b/code/modules/projectiles/guns/misc/grenade_launcher.dm @@ -11,6 +11,7 @@ var/list/grenades = new/list() var/max_grenades = 3 custom_materials = list(/datum/material/iron=2000) + has_gun_safety = TRUE /obj/item/gun/grenadelauncher/examine(mob/user) . = ..() diff --git a/code/modules/projectiles/guns/misc/medbeam.dm b/code/modules/projectiles/guns/misc/medbeam.dm index 4a64317fd9..1bff8548cc 100644 --- a/code/modules/projectiles/guns/misc/medbeam.dm +++ b/code/modules/projectiles/guns/misc/medbeam.dm @@ -13,6 +13,7 @@ var/active = 0 var/datum/beam/current_beam = null var/mounted = 0 //Denotes if this is a handheld or mounted version + has_gun_safety = FALSE //no safety here. weapon_weight = WEAPON_MEDIUM diff --git a/code/modules/projectiles/guns/misc/syringe_gun.dm b/code/modules/projectiles/guns/misc/syringe_gun.dm index 8de7633a79..581e7cd8d4 100644 --- a/code/modules/projectiles/guns/misc/syringe_gun.dm +++ b/code/modules/projectiles/guns/misc/syringe_gun.dm @@ -14,6 +14,7 @@ fire_sound = 'sound/items/syringeproj.ogg' var/list/syringes = list() var/max_syringes = 1 + has_gun_safety = TRUE /obj/item/gun/syringe/Initialize(mapload) . = ..() @@ -160,6 +161,7 @@ icon_state = "blowgun" item_state = "syringegun" fire_sound = 'sound/items/syringeproj.ogg' + has_gun_safety = FALSE //unga bunga, tube no fit safety /obj/item/gun/syringe/blowgun/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0, stam_cost = 0) visible_message("[user] starts aiming with a blowgun!")