diff --git a/code/modules/power/antimatter/shielding.dm b/code/modules/power/antimatter/shielding.dm index e6814c5c0a..39353737bb 100644 --- a/code/modules/power/antimatter/shielding.dm +++ b/code/modules/power/antimatter/shielding.dm @@ -32,16 +32,24 @@ . = ..() addtimer(CALLBACK(src, .proc/controllerscan), 10) +/obj/machinery/am_shielding/proc/overheat() + visible_message("[src] melts!") + new /obj/effect/hotspot(loc) + qdel(src) + +/obj/machinery/am_shielding/proc/collapse() + visible_message("[src] collapses back into a container!") + new /obj/item/device/am_shielding_container(drop_location()) + qdel(src) /obj/machinery/am_shielding/proc/controllerscan(priorscan = 0) //Make sure we are the only one here - if(!istype(src.loc, /turf)) - qdel(src) - return + if(!isturf(loc)) + collapse() for(var/obj/machinery/am_shielding/AMS in loc.contents) if(AMS == src) continue - qdel(src) + collapse() return //Search for shielding first @@ -59,7 +67,7 @@ if(!priorscan) addtimer(CALLBACK(src, .proc/controllerscan, 1), 20) return - qdel(src) + collapse() /obj/machinery/am_shielding/Destroy() @@ -67,7 +75,6 @@ control_unit.remove_shielding(src) if(processing) shutdown_core() - visible_message("The [src.name] melts!") //Might want to have it leave a mess on the floor but no sprites for now return ..() @@ -209,7 +216,7 @@ if(injecting_fuel && control_unit) control_unit.exploding = 1 if(src) - qdel(src) + overheat() return