diff --git a/code/__DEFINES/conflict.dm b/code/__DEFINES/conflict.dm index 30b2627bb1b0..ed261184d9d3 100644 --- a/code/__DEFINES/conflict.dm +++ b/code/__DEFINES/conflict.dm @@ -90,6 +90,8 @@ #define ATTACH_IGNORE_EMPTY (1<<5) /// This attachment should activate if you attack() with it attached. #define ATTACH_MELEE (1<<6) +/// Override for attachies so you can fire them with a single hand . ONLY FOR PROJECTILES!! +#define ATTACH_WIELD_OVERRIDE (1<<7) //Ammo magazine defines, for flags_magazine diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 257edd9a7720..8cbcc99838cd 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -1343,11 +1343,10 @@ and you're good to go. //The following relating to bursts was borrowed from Fire code. var/check_for_attachment_fire = FALSE - if(active_attachable) - if(active_attachable.flags_attach_features & ATTACH_PROJECTILE) - check_for_attachment_fire = TRUE - else - active_attachable.activate_attachment(src, null, TRUE)//No way. + if(active_attachable?.flags_attach_features & ATTACH_PROJECTILE) + check_for_attachment_fire = TRUE + else + active_attachable.activate_attachment(src, null, TRUE)//No way. var/bullets_to_fire = 1 @@ -1512,8 +1511,12 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed if(flags_gun_features & GUN_TRIGGER_SAFETY) to_chat(user, SPAN_WARNING("The safety is on!")) return - - if((flags_gun_features & GUN_WIELDED_FIRING_ONLY) && !(flags_item & WIELDED)) //If we're not holding the weapon with both hands when we should. + if(active_attachable) + if(active_attachable.flags_attach_features & ATTACH_PROJECTILE) + if(!(active_attachable.flags_attach_features & ATTACH_WIELD_OVERRIDE) && !(flags_item & WIELDED)) + to_chat(user, SPAN_WARNING("You must wield [src] to fire [active_attachable]!")) + return + if((flags_gun_features & GUN_WIELDED_FIRING_ONLY) && !(flags_item & WIELDED) && !active_attachable) //If we're not holding the weapon with both hands when we should. to_chat(user, SPAN_WARNING("You need a more secure grip to fire this weapon!")) return diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index adaa5ba1dee3..88defe14c5ef 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -2363,7 +2363,7 @@ Defined in conflicts.dm of the #defines folder. var/obj/item/weapon/gun/attached_gun = loc if(!(attached_gun.flags_item & WIELDED)) - to_chat(user, SPAN_WARNING("You must wield \the [attached_gun] to fire \the [src]!")) + to_chat(user, SPAN_WARNING("You must wield [attached_gun] to fire [src]!")) return if(current_rounds > round_usage_per_tile && ..()) @@ -2509,6 +2509,9 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/attached_gun/extinguisher/fire_attachment(atom/target, obj/item/weapon/gun/gun, mob/living/user) if(!internal_extinguisher) return + if(!(gun.flags_item & WIELDED)) + to_chat(user, SPAN_WARNING("You must wield [gun] to fire [src]!")) + return if(..()) return internal_extinguisher.afterattack(target, user) @@ -2569,7 +2572,7 @@ Defined in conflicts.dm of the #defines folder. return if((gun.flags_gun_features & GUN_WIELDED_FIRING_ONLY) && !(gun.flags_item & WIELDED)) - to_chat(user, SPAN_WARNING("You need a more secure grip to fire this weapon!")) + to_chat(user, SPAN_WARNING("You must wield [gun] to fire [src]!")) return if(gun.flags_gun_features & GUN_TRIGGER_SAFETY)