diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index b59d73ba7eb..5740aea26aa 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -107,6 +107,7 @@ var/is_wieldable = FALSE var/wield_sound = /decl/sound_category/generic_wield_sound var/unwield_sound = null + var/one_hand_fa_penalty = 0 // Additional accuracy/dispersion penalty for using full auto one-handed //aiming system stuff var/multi_aim = 0 //Used to determine if you can target multiple people. @@ -508,6 +509,11 @@ //As opposed to no-delay pew pew P.accuracy += 2 + var/datum/firemode/F = firemodes[sel_mode] + if(one_hand_fa_penalty > 2 && !wielded && F?.name == "full auto") // todo: make firemode names defines + P.accuracy -= one_hand_fa_penalty/2 + P.dispersion -= one_hand_fa_penalty * 0.5 + //does the actual launching of the projectile /obj/item/gun/proc/process_projectile(obj/projectile, mob/user, atom/target, target_zone, params) var/obj/item/projectile/P = projectile diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 469e81d1122..3c6f8eec6c4 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -20,7 +20,7 @@ list(mode_name="semiauto", can_autofire=0, burst=1), list(mode_name="3-round bursts", can_autofire=0, burst=3, burst_accuracy=list(1,0,0), dispersion=list(0, 10, 15)), list(mode_name="short bursts", can_autofire=0, burst=5, burst_accuracy=list(1,0,,-1,-1), dispersion=list(5, 10, 15, 20)), - list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)) + list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)) ) //Submachine guns and personal defence weapons, go. @@ -121,7 +121,7 @@ list(mode_name="semiauto", burst=1, fire_delay=10), list(mode_name="3-round bursts", burst=3, burst_accuracy=list(1,0,0), dispersion=list(0, 5, 10)), list(mode_name="short bursts", burst=5, burst_accuracy=list(1,0,0,-1,-1), dispersion=list(5, 5, 15)), - list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)), + list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)), ) //slower to regain aim, more inaccurate if not wielding @@ -276,7 +276,7 @@ firemodes = list( list(mode_name="short bursts", burst=5, burst_accuracy = list(1,0,0,-1,-1), dispersion = list(3, 6, 9)), list(mode_name="long bursts", burst=8, burst_accuracy = list(1,0,0,-1,-1,-1,-2,-2), dispersion = list(8)), - list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)) + list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)) ) var/cover_open = 0 diff --git a/code/modules/projectiles/guns/projectile/minigun.dm b/code/modules/projectiles/guns/projectile/minigun.dm index cffc5ac214b..f3c6cda101e 100644 --- a/code/modules/projectiles/guns/projectile/minigun.dm +++ b/code/modules/projectiles/guns/projectile/minigun.dm @@ -129,7 +129,7 @@ firemodes = list( list(mode_name="short bursts", can_autofire=0, burst=6, move_delay=8, burst_accuracy = list(0,-1,-1,-2,-2), dispersion = list(3, 6, 9)), list(mode_name="long bursts", can_autofire=0, burst=12, move_delay=9, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(8)), - list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)) + list(mode_name="full auto", can_autofire=1, burst=1, fire_delay=1, one_hand_fa_penalty=12, burst_accuracy = list(0,-1,-1,-2,-2,-2,-3,-3), dispersion = list(5, 10, 15, 20, 25)) ) diff --git a/html/changelogs/johnwildkins-fullauto.yml b/html/changelogs/johnwildkins-fullauto.yml new file mode 100644 index 00000000000..fbb04795f7a --- /dev/null +++ b/html/changelogs/johnwildkins-fullauto.yml @@ -0,0 +1,6 @@ +author: JohnWildkins + +delete-after: True + +changes: + - bugfix: "Fixed full-auto weapons not suffering the one-hand penalty appropriately."