From 98c281e688a290eb4e8b73e30237b1147b7bf997 Mon Sep 17 00:00:00 2001 From: IK3I Date: Sun, 22 May 2016 22:31:18 -0500 Subject: [PATCH] Makes sleepers not delete you when destroyed fixes some player deletion scenarios and stops some recursive ex_act() nonsense --- code/game/machinery/Sleeper.dm | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 238e071ebe9..0fa6a04cac3 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -73,6 +73,7 @@ if(M.environment_smash) M.do_attack_animation(src) visible_message("[M.name] smashes [src] apart!") + go_out() qdel(src) return @@ -360,9 +361,9 @@ /obj/machinery/sleeper/blob_act() if(prob(75)) - for(var/atom/movable/A as mob|obj in src) - A.forceMove(src.loc) - A.blob_act() + var/atom/movable/A = src.loc + go_out() + A.blob_act() qdel(src) return @@ -404,11 +405,14 @@ orient = "RIGHT" dir = 4 playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + return if(exchange_parts(user, G)) return - default_deconstruction_crowbar(G) + if(istype(G, /obj/item/weapon/crowbar)) + default_deconstruction_crowbar(G) + return if(istype(G, /obj/item/weapon/grab)) if(panel_open) @@ -449,25 +453,23 @@ /obj/machinery/sleeper/ex_act(severity) if(filtering) toggle_filter() + var/mob/M = src.occupant switch(severity) if(1.0) - for(var/atom/movable/A as mob|obj in src) - A.forceMove(src.loc) - ex_act(severity) + go_out() + M.ex_act(severity) qdel(src) return if(2.0) if(prob(50)) - for(var/atom/movable/A as mob|obj in src) - A.forceMove(src.loc) - ex_act(severity) + go_out() + M.ex_act(severity) qdel(src) return if(3.0) if(prob(25)) - for(var/atom/movable/A as mob|obj in src) - A.forceMove(src.loc) - ex_act(severity) + go_out() + M.ex_act(severity) qdel(src) return return