From ba6c5324f08355e5570aa19f14c60ab0cf4acc8c Mon Sep 17 00:00:00 2001 From: CitrusGender <31262308+CitrusGender@users.noreply.github.com> Date: Sun, 17 Jun 2018 21:06:18 -0400 Subject: [PATCH 1/2] Fixes the Blob being banished to the shadow realm (#38461) * blob now respawns like nuke disk if off z-level * can't do it, sorry nak * space * muh codebaby * Revert "CitrusGender my friend, don't you start away uneasy" --- code/datums/components/stationloving.dm | 7 +++++-- code/modules/antagonists/blob/blob/blobs/core.dm | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm index 136431b5ee..2e1ee72a74 100644 --- a/code/datums/components/stationloving.dm +++ b/code/datums/components/stationloving.dm @@ -2,20 +2,23 @@ dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS var/inform_admins = FALSE var/disallow_soul_imbue = TRUE + var/allow_death = FALSE -/datum/component/stationloving/Initialize(inform_admins = FALSE) +/datum/component/stationloving/Initialize(inform_admins = FALSE, allow_death = FALSE) if(!ismovableatom(parent)) return COMPONENT_INCOMPATIBLE RegisterSignal(list(COMSIG_MOVABLE_Z_CHANGED), .proc/check_in_bounds) RegisterSignal(list(COMSIG_PARENT_PREQDELETED), .proc/check_deletion) RegisterSignal(list(COMSIG_ITEM_IMBUE_SOUL), .proc/check_soul_imbue) src.inform_admins = inform_admins + src.allow_death = allow_death check_in_bounds() // Just in case something is being created outside of station/centcom /datum/component/stationloving/InheritComponent(datum/component/stationloving/newc, original, list/arguments) if (original) if (istype(newc)) inform_admins = newc.inform_admins + allow_death = newc.allow_death else if (LAZYLEN(arguments)) inform_admins = arguments[1] @@ -70,7 +73,7 @@ message_admins("[parent] has been !!force deleted!! in [ADMIN_VERBOSEJMP(T)].") log_game("[parent] has been !!force deleted!! in [AREACOORD(T)].") - if(!force) + if(!force && !allow_death) var/turf/targetturf = relocate() log_game("[parent] has been destroyed in [AREACOORD(T)]. Moving it to [AREACOORD(targetturf)].") if(inform_admins) diff --git a/code/modules/antagonists/blob/blob/blobs/core.dm b/code/modules/antagonists/blob/blob/blobs/core.dm index 1140f540c4..e048aa7665 100644 --- a/code/modules/antagonists/blob/blob/blobs/core.dm +++ b/code/modules/antagonists/blob/blob/blobs/core.dm @@ -78,3 +78,11 @@ B.change_to(/obj/structure/blob/shield/core, overmind) ..() +/obj/structure/blob/core/ComponentInitialize() + . = ..() + AddComponent(/datum/component/stationloving, FALSE, TRUE) + +/obj/structure/blob/core/onTransitZ(old_z, new_z) + if(overmind && is_station_level(new_z)) + overmind.forceMove(get_turf(src)) + return ..()