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)