diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 7ab3e41b2c2..36c844f1dee 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -303,7 +303,7 @@
to_chat(user, "[src] is lethally chambered! You don't want to risk harming anyone...")
return
if(randomspread)
- sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread))
+ sprd = round((rand(0, 1) - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread))
else //Smart spread
sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread))
before_firing(target,user)
@@ -328,8 +328,6 @@
/obj/item/gun/proc/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0)
if(user)
- if(HAS_TRAIT(user, TRAIT_POOR_AIM)) //nice shootin' tex
- target = pick(orange(2, target))
SEND_SIGNAL(user, COMSIG_MOB_FIRED_GUN, src, target, params, zone_override)
SEND_SIGNAL(src, COMSIG_GUN_FIRED, user, target, params, zone_override)
@@ -339,12 +337,18 @@
if(semicd)
return
+ //Vary by at least this much
+ var/base_bonus_spread = 0
var/sprd = 0
var/randomized_gun_spread = 0
var/rand_spr = rand()
+ if(user && HAS_TRAIT(user, TRAIT_POOR_AIM)) //Nice job hotshot
+ bonus_spread += 35
+ base_bonus_spread += 10
+
if(spread)
randomized_gun_spread = rand(0,spread)
- var/randomized_bonus_spread = rand(0, bonus_spread)
+ var/randomized_bonus_spread = rand(base_bonus_spread, bonus_spread)
if(burst_size > 1)
firing_burst = TRUE
@@ -356,7 +360,7 @@
if(chambered.harmful) // Is the bullet chambered harmful?
to_chat(user, "[src] is lethally chambered! You don't want to risk harming anyone...")
return
- sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread))
+ sprd = round((rand(0, 1) - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread))
before_firing(target,user)
if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd, src))
shoot_with_empty_chamber(user)