From 5d4143f9230be8d4056581b9d22f2dbfa5622906 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 27 Jan 2019 23:22:32 -0800 Subject: [PATCH] Emergency projectile fix #42544 Okay, oranges was right and I'm stupid. Stops the server from crashing from a beam rifle, jesus. --- code/modules/mob/living/living_movement.dm | 4 +--- code/modules/projectiles/guns/misc/beam_rifle.dm | 2 +- code/modules/projectiles/projectile.dm | 11 ++++------- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 44cdade59f9..f11e9695e8b 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -7,9 +7,7 @@ return TRUE if(istype(mover, /obj/item/projectile)) var/obj/item/projectile/P = mover - if(P.can_hit_target(src, P.permutated, src == P.original, TRUE)) - P.Bump(src) - return TRUE + return !P.can_hit_target(src, P.permutated, src == P.original, TRUE) if(mover.throwing) return (!density || !(mobility_flags & MOBILITY_STAND)) if(buckled == mover) diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index 53cce271d01..81e1b7ffd2f 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -565,7 +565,7 @@ /obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/prehit(atom/target) qdel(src) - return BULLET_ACT_HIT + return FALSE /obj/item/projectile/beam/beam_rifle/hitscan/aiming_beam/on_hit() qdel(src) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0ba147f687b..962320fa2bd 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -230,13 +230,6 @@ if(hitscan) store_hitscan_collision(pcache) return TRUE - if(firer && !ignore_source_check) - var/mob/checking = firer - if((A == firer) || (((A in firer.buckled_mobs) || (istype(checking) && (A == checking.buckled))) && (A != original)) || (A == firer.loc && ismecha(A))) //cannot shoot yourself or your mech - trajectory_ignore_forcemove = TRUE - forceMove(T) - trajectory_ignore_forcemove = FALSE - return FALSE var/distance = get_dist(T, starting) // Get the distance between the turf shot from and the mob we hit and use that for the calculations. def_zone = ran_zone(def_zone, max(100-(7*distance), 5)) //Lower accurancy/longer range tradeoff. 7 is a balanced number to use. @@ -529,6 +522,10 @@ /obj/item/projectile/proc/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE) if(QDELETED(target)) return FALSE + if(!ignore_source_check && firer) + var/mob/M = firer + if((target == firer) || ((target == firer.loc) && ismecha(firer.loc)) || (target in firer.buckled_mobs) || (istype(M) && (M.buckled == target))) + return FALSE if(!ignore_loc && (loc != target.loc)) return FALSE if(target in passthrough)