From 22976bf48ff6ae84c84abb85ddee461e6fa057f6 Mon Sep 17 00:00:00 2001 From: kevinz000 Date: Wed, 15 Feb 2017 02:51:02 -0800 Subject: [PATCH] Fixes server-crashing issue. (#24054) * Update special.dm * Update special.dm * Update special.dm --- code/modules/projectiles/projectile/special.dm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index e21dd3d0d43..4eae5c3144d 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -246,6 +246,7 @@ color = "#33CCFF" var/turf/T var/power = 4 + var/list/thrown_items = list() /obj/item/projectile/gravityrepulse/New(var/obj/item/ammo_casing/energy/gravityrepulse/C) ..() @@ -256,10 +257,11 @@ . = ..() T = get_turf(src) for(var/atom/movable/A in range(T, power)) - if(A == src || (firer && A == src.firer) || A.anchored) + if(A == src || (firer && A == src.firer) || A.anchored || thrown_items[A]) continue var/throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(A, src))) A.throw_at(throwtarget,power+1,1) + thrown_items[A] = A for(var/turf/F in range(T,power)) new /obj/effect/overlay/temp/gravpush(F) @@ -274,6 +276,7 @@ color = "#FF6600" var/turf/T var/power = 4 + var/list/thrown_items = list() /obj/item/projectile/gravityattract/New(var/obj/item/ammo_casing/energy/gravityattract/C) ..() @@ -284,9 +287,10 @@ . = ..() T = get_turf(src) for(var/atom/movable/A in range(T, power)) - if(A == src || (firer && A == src.firer) || A.anchored) + if(A == src || (firer && A == src.firer) || A.anchored || thrown_items[A]) continue A.throw_at(T, power+1, 1) + thrown_items[A] = A for(var/turf/F in range(T,power)) new /obj/effect/overlay/temp/gravpush(F) @@ -301,6 +305,7 @@ color = "#101010" var/turf/T var/power = 4 + var/list/thrown_items = list() /obj/item/projectile/gravitychaos/New(var/obj/item/ammo_casing/energy/gravitychaos/C) ..() @@ -311,9 +316,10 @@ . = ..() T = get_turf(src) for(var/atom/movable/A in range(T, power)) - if(A == src|| (firer && A == src.firer) || A.anchored) + if(A == src|| (firer && A == src.firer) || A.anchored || thrown_items[A]) continue A.throw_at(get_edge_target_turf(A, pick(cardinal)), power+1, 1) + thrown_items[A] = A for(var/turf/Z in range(T,power)) new /obj/effect/overlay/temp/gravpush(Z)