From 72e9cea3b603f783a5f4d6dafa10be0b772e54fd Mon Sep 17 00:00:00 2001 From: AnturK Date: Sat, 21 Jul 2018 12:28:57 +0200 Subject: [PATCH] Makes objects blocking air restore airflow in /atom/Destroy (#39210) --- code/game/atoms_movable.dm | 5 ++++- code/game/machinery/doors/door.dm | 2 -- code/game/machinery/shieldgen.dm | 5 ----- .../objects/effects/effect_system/effects_foam.dm | 6 ------ code/game/objects/structures/aliens.dm | 6 +++--- code/game/objects/structures/false_walls.dm | 5 ----- code/game/objects/structures/holosign.dm | 5 ----- code/game/objects/structures/mineral_doors.dm | 5 ----- code/game/objects/structures/statues.dm | 11 +++++------ .../clockcult/clock_effects/servant_blocker.dm | 4 +--- code/modules/antagonists/cult/runes.dm | 2 -- code/modules/mining/equipment/survival_pod.dm | 5 ----- 12 files changed, 13 insertions(+), 48 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 02706035380..3064be9119b 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -295,7 +295,6 @@ return 1 /atom/movable/Destroy(force) - QDEL_NULL(proximity_monitor) QDEL_NULL(language_holder) @@ -303,6 +302,10 @@ . = ..() if(loc) + //Restore air flow if we were blocking it (movables with ATMOS_PASS_PROC will need to do this manually if necessary) + if(((CanAtmosPass == ATMOS_PASS_DENSITY && density) || CanAtmosPass == ATMOS_PASS_NO) && isturf(loc)) + CanAtmosPass = ATMOS_PASS_YES + air_update_turf(TRUE) loc.handle_atom_del(src) for(var/atom/movable/AM in contents) qdel(AM) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 1b7c5fb3b16..f59b8d531e6 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -70,8 +70,6 @@ layer = initial(layer) /obj/machinery/door/Destroy() - density = FALSE - air_update_turf(1) update_freelook_sight() GLOB.airlocks -= src if(spark_system) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 798c27214d0..68e74b1ad7d 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -15,11 +15,6 @@ setDir(pick(GLOB.cardinals)) air_update_turf(1) -/obj/structure/emergency_shield/Destroy() - density = FALSE - air_update_turf(1) - return ..() - /obj/structure/emergency_shield/Move() var/turf/T = loc . = ..() diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index e7b7472e86e..264715e2ac3 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -274,12 +274,6 @@ . = ..() air_update_turf(1) - -/obj/structure/foamedmetal/Destroy() - density = FALSE - air_update_turf(1) - return ..() - /obj/structure/foamedmetal/Move() var/turf/T = loc . = ..() diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index c0842822dfe..3cc40c84158 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -64,9 +64,9 @@ CanAtmosPass = ATMOS_PASS_DENSITY -/obj/structure/alien/resin/New(location) - ..() - air_update_turf(1) +/obj/structure/alien/resin/Initialize(mapload) + . = ..() + air_update_turf(TRUE) /obj/structure/alien/resin/Move() var/turf/T = loc diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index c8774886015..5878b569c3f 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -38,11 +38,6 @@ . = ..() AddComponent(/datum/component/rad_insulation, RAD_MEDIUM_INSULATION) -/obj/structure/falsewall/Destroy() - density = FALSE - air_update_turf(1) - return ..() - /obj/structure/falsewall/ratvar_act() new /obj/structure/falsewall/brass(loc) qdel(src) diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm index dff614746c2..5b1151c36f1 100644 --- a/code/game/objects/structures/holosign.dm +++ b/code/game/objects/structures/holosign.dm @@ -83,11 +83,6 @@ . = ..() air_update_turf(TRUE) -/obj/structure/holosign/barrier/atmos/Destroy() - var/turf/T = get_turf(src) - . = ..() - T.air_update_turf(TRUE) - /obj/structure/holosign/barrier/cyborg name = "Energy Field" desc = "A fragile energy field that blocks movement. Excels at blocking lethal projectiles." diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 86566cc6838..c3316f25686 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -30,11 +30,6 @@ /obj/structure/mineral_door/ComponentInitialize() AddComponent(/datum/component/rad_insulation, RAD_MEDIUM_INSULATION) -/obj/structure/mineral_door/Destroy() - density = FALSE - air_update_turf(1) - return ..() - /obj/structure/mineral_door/Move() var/turf/T = loc . = ..() diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 6e30f75b1da..dd28168cccd 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -11,9 +11,6 @@ CanAtmosPass = ATMOS_PASS_DENSITY -/obj/structure/statue/Initialize() - . = ..() - /obj/structure/statue/attackby(obj/item/W, mob/living/user, params) add_fingerprint(user) user.changeNext_move(CLICK_CD_MELEE) @@ -116,8 +113,7 @@ /obj/structure/statue/plasma/bullet_act(obj/item/projectile/Proj) var/burn = FALSE - if(!(Proj.nodamage) && Proj.damage_type == BURN) - PlasmaBurn(2500) + if(!(Proj.nodamage) && Proj.damage_type == BURN && !QDELETED(src)) burn = TRUE if(burn) var/turf/T = get_turf(src) @@ -127,10 +123,11 @@ else message_admins("Plasma statue ignited by [Proj]. No known firer, in [ADMIN_VERBOSEJMP(T)]") log_game("Plasma statue ignited by [Proj] in [AREACOORD(T)]. No known firer.") + PlasmaBurn(2500) ..() /obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params) - if(W.is_hot() > 300)//If the temperature of the object is over 300, then ignite + if(W.is_hot() > 300 && !QDELETED(src))//If the temperature of the object is over 300, then ignite var/turf/T = get_turf(src) message_admins("Plasma statue ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]") log_game("Plasma statue ignited by [key_name(user)] in [AREACOORD(T)]") @@ -139,6 +136,8 @@ return ..() /obj/structure/statue/plasma/proc/PlasmaBurn(exposed_temperature) + if(QDELETED(src)) + return atmos_spawn_air("plasma=[oreAmount*10];TEMP=[exposed_temperature]") deconstruct(FALSE) diff --git a/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm b/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm index 0e6e1c3821c..12b2af3f645 100644 --- a/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm +++ b/code/modules/antagonists/clockcult/clock_effects/servant_blocker.dm @@ -15,9 +15,7 @@ /obj/effect/clockwork/servant_blocker/Destroy(force) if(!force) return QDEL_HINT_LETMELIVE - var/turf/T = get_turf(src) - . = ..() - T.air_update_turf(TRUE) + return ..() /obj/effect/clockwork/servant_blocker/CanPass(atom/movable/M, turf/target) var/list/target_contents = M.GetAllContents() + M diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index df4715bc693..4513195804b 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -618,9 +618,7 @@ structure_check() searches for nearby cultist structures required for the invoca to_chat(user, "The air above this rune has hardened into a barrier that will last [DisplayTimeText(TMR.timeToRun - world.time)].") /obj/effect/rune/wall/Destroy() - density = FALSE GLOB.wall_runes -= src - air_update_turf(1) return ..() /obj/effect/rune/wall/BlockSuperconductivity() diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 3005a29dcd7..d4b552c5783 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -247,11 +247,6 @@ . = ..() air_update_turf(1) -/obj/structure/fans/Destroy() - var/turf/T = loc - . = ..() - T.air_update_turf(1) - //Inivisible, indestructible fans /obj/structure/fans/tiny/invisible name = "air flow blocker"