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