From 990e11c1b6e457ba0d71f7143c7e5897979cae78 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Wed, 3 Oct 2018 22:01:49 +0200 Subject: [PATCH] Fixed it + handled the moving of disposal units --- code/datums/spells/summonitem.dm | 5 ++-- code/modules/recycling/disposal.dm | 38 ++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/code/datums/spells/summonitem.dm b/code/datums/spells/summonitem.dm index e99a9356312..a006790dfe5 100644 --- a/code/datums/spells/summonitem.dm +++ b/code/datums/spells/summonitem.dm @@ -93,9 +93,10 @@ var/obj/machinery/portable_atmospherics/P = item_to_retrive.loc P.disconnect() P.update_icon() - + if(istype(item_to_retrive.loc, /obj/structure/disposalholder) || istype(item_to_retrive.loc, /obj/machinery/disposal))//fixes the breaking of disposals. No more bluespace connected disposal bins! + break item_to_retrive = item_to_retrive.loc - + infinite_recursion += 1 if(!item_to_retrive) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 9de8033a00f..6a1f7883312 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -45,6 +45,26 @@ flush = initial(flush) T.nicely_link_to_other_stuff(src) +//When the disposalsoutlet is forcefully moved. Due to meteorshot (not the recall spell) +/obj/machinery/disposal/Moved(atom/OldLoc, Dir) + . = ..() + eject() + var/ptype = istype(src, /obj/machinery/disposal/deliveryChute) ? PIPE_DISPOSALS_CHUTE : PIPE_DISPOSALS_BIN //Check what disposaltype it is + var/turf/T = OldLoc + if(T.intact) + var/turf/simulated/floor/F = T + F.remove_tile(null,TRUE,TRUE) + T.visible_message("The floortile is ripped from the floor!", "You hear a loud bang!") + if(trunk) + trunk.remove_trunk_links() + var/obj/structure/disposalconstruct/C = new (loc) + transfer_fingerprints_to(C) + C.ptype = ptype + C.update() + C.anchored = 0 + C.density = 1 + qdel(src) + /obj/machinery/disposal/Destroy() eject() if(trunk) @@ -1345,6 +1365,24 @@ to_chat(user, "You need more welding fuel to complete this task.") return +//When the disposalsoutlet is forcefully moved. Due to meteorshot or the recall item spell for instance +/obj/structure/disposaloutlet/Moved(atom/OldLoc, Dir) + . = ..() + var/turf/T = OldLoc + if(T.intact) + var/turf/simulated/floor/F = T + F.remove_tile(null,TRUE,TRUE) + T.visible_message("The floortile is ripped from the floor!", "You hear a loud bang!") + if(linkedtrunk) + linkedtrunk.remove_trunk_links() + var/obj/structure/disposalconstruct/C = new (loc) + transfer_fingerprints_to(C) + C.ptype = PIPE_DISPOSALS_OUTLET + C.update() + C.anchored = 0 + C.density = 1 + qdel(src) + /obj/structure/disposaloutlet/Destroy() if(linkedtrunk) linkedtrunk.remove_trunk_links()