From 0d06605662da759780fa4b966a606b8dcc0298ee Mon Sep 17 00:00:00 2001 From: BlackMajor Date: Thu, 30 May 2019 16:17:33 +1200 Subject: [PATCH] Supermatter eats the closed turf it's inside. Because /turf/closed doesn't respect atmos and an SM engine in a plasmafire unharmed because it's inside a turf is questionable. --- code/game/objects/items/melee/misc.dm | 15 ++------------- code/modules/power/supermatter/supermatter.dm | 12 ++++++++++++ 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 3a35f4d8ef..8ed0f273e6 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -283,7 +283,7 @@ else var/turf/T = get_turf(src) if(!isspaceturf(T)) - consume_turf(T) + shard.consume_turf(T) /obj/item/melee/supermatter_sword/afterattack(target, mob/user, proximity_flag) . = ..() @@ -330,18 +330,7 @@ else if(!isturf(target)) shard.Bumped(target) else - consume_turf(target) - -/obj/item/melee/supermatter_sword/proc/consume_turf(turf/T) - var/oldtype = T.type - var/turf/newT = T.ScrapeAway() - if(newT.type == oldtype) - return - playsound(T, 'sound/effects/supermatter.ogg', 50, 1) - T.visible_message("[T] smacks into [src] and rapidly flashes to ash.",\ - "You hear a loud crack as you are washed with a wave of heat.") - shard.Consume() - T.CalculateAdjacentTurfs() + shard.consume_turf(target) /obj/item/melee/supermatter_sword/add_blood_DNA(list/blood_dna) return FALSE diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index ad94d577ea..99b4a3f27e 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -295,6 +295,16 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) E.energy = power qdel(src) +/obj/machinery/power/supermatter_crystal/proc/consume_turf(turf/T) + var/oldtype = T.type + var/turf/newT = T.ScrapeAway() + if(newT.type == oldtype) + return + playsound(T, 'sound/effects/supermatter.ogg', 50, 1) + T.visible_message("[T] smacks into [src] and rapidly flashes to ash.",\ + "You hear a loud crack as you are washed with a wave of heat.") + T.CalculateAdjacentTurfs() + /obj/machinery/power/supermatter_crystal/process_atmos() var/turf/T = loc @@ -303,6 +313,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) if(!istype(T)) //We are in a crate or somewhere that isn't turf, if we return to turf resume processing but for now. return //Yeah just stop. + if(istype(T, /turf/closed)) + consume_turf(T) if(power) soundloop.volume = min(40, (round(power/100)/50)+1) // 5 +1 volume per 20 power. 2500 power is max