From 7051fa8efe07e427f00ee23325ef8e6dd619f2fc Mon Sep 17 00:00:00 2001 From: Diegoflores31 <47069269+Diegoflores31@users.noreply.github.com> Date: Fri, 25 Aug 2023 14:58:21 -0500 Subject: [PATCH] attachment obliteration (#4217) # About the pull request fixes #4194 Fixes weird behaviour with underbarrel fire extinguisher being able to be used one handed on some weapons but not on others All attachable weapons will now require you to hold them with both hands in order to be used. (( added an exception flag for future attachies that may need it)) standarized error message you receive when you are not wielding an attachment. # Explain why it's good for the game realism and standarized behaviour for all attachments # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: balance: Masterkey and underbarrel extinguisher now must be wielded in order to be used. fix: Underbarrel extinguisher no longer bypass wielding restrictions on flamers. /:cl: --- code/__DEFINES/conflict.dm | 2 ++ code/modules/projectiles/gun.dm | 17 ++++++++++------- code/modules/projectiles/gun_attachables.dm | 7 +++++-- 3 files changed, 17 insertions(+), 9 deletions(-) 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)