diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 448f43d68a2..305a86d9701 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -17,7 +17,10 @@ var/countdown_colour var/obj/effect/countdown/anomaly/countdown -/obj/effect/anomaly/Initialize(mapload, new_lifespan) + /// Do we drop a core when we're neutralized? + var/drops_core = TRUE + +/obj/effect/anomaly/Initialize(mapload, new_lifespan, drops_core = TRUE) . = ..() GLOB.poi_list |= src START_PROCESSING(SSobj, src) @@ -26,6 +29,8 @@ if (!impact_area) return INITIALIZE_HINT_QDEL + src.drops_core = drops_core + aSignal = new aSignal(src) aSignal.code = rand(1,100) aSignal.anomaly_type = type @@ -54,6 +59,8 @@ GLOB.poi_list.Remove(src) STOP_PROCESSING(SSobj, src) qdel(countdown) + if(aSignal) + QDEL_NULL(aSignal) return ..() /obj/effect/anomaly/proc/anomalyEffect() @@ -70,8 +77,10 @@ /obj/effect/anomaly/proc/anomalyNeutralize() new /obj/effect/particle_effect/smoke/bad(loc) - for(var/atom/movable/O in src) - O.forceMove(drop_location()) + if(drops_core) + aSignal.forceMove(drop_location()) + aSignal = null + // else, anomaly core gets deleted by qdel(src). qdel(src) diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index cc023a7a683..fc30646688a 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -1031,12 +1031,12 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(L) switch(type) if(FLUX_ANOMALY) - var/obj/effect/anomaly/flux/A = new(L, 300) + var/obj/effect/anomaly/flux/A = new(L, 300, FALSE) A.explosive = FALSE if(GRAVITATIONAL_ANOMALY) - new /obj/effect/anomaly/grav(L, 250) + new /obj/effect/anomaly/grav(L, 250, FALSE) if(PYRO_ANOMALY) - new /obj/effect/anomaly/pyro(L, 200) + new /obj/effect/anomaly/pyro(L, 200, FALSE) /obj/machinery/power/supermatter_crystal/proc/supermatter_zap(atom/zapstart = src, range = 5, zap_str = 4000, zap_flags = ZAP_SUPERMATTER_FLAGS, list/targets_hit = list()) if(QDELETED(zapstart))