From a9dd5c684c04fa5017ccaa299e350f712b82c1d3 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 24 Aug 2020 23:52:27 +0200 Subject: [PATCH] [MIRROR] Makes bloodcrawl not use a dumb var (#494) * Makes bloodcrawl not use a dumb var (#52714) * Makes bloodcrawl not use a dumb var Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com> --- code/__DEFINES/dcs/signals.dm | 4 ++++ code/modules/antagonists/_common/antag_spawner.dm | 1 - code/modules/antagonists/slaughter/slaughter.dm | 4 +++- code/modules/antagonists/slaughter/slaughterevent.dm | 1 - code/modules/mob/living/bloodcrawl.dm | 8 +++++++- code/modules/mob/living/living_defines.dm | 3 +-- 6 files changed, 15 insertions(+), 6 deletions(-) diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index fcbdbdbcc38..35c9e3be621 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -373,6 +373,9 @@ ///from base of mob/living/set_buckled(): (new_buckled) #define COMSIG_LIVING_SET_BUCKLED "living_set_buckled" +///Sent when bloodcrawl ends in mob/living/phasein(): (phasein_decal) +#define COMSIG_LIVING_AFTERPHASEIN "living_phasein" + ///sent from borg recharge stations: (amount, repairs) #define COMSIG_PROCESS_BORGCHARGER_OCCUPANT "living_charge" ///sent when a mob/login() finishes: (client) @@ -598,6 +601,7 @@ ///sent to targets during the process_hit proc of projectiles #define COMSIG_PELLET_CLOUD_INIT "pellet_cloud_init" + // /obj/mecha signals ///sent from mecha action buttons to the mecha they're linked to diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm index 0c5b97fb28d..1adb5840915 100644 --- a/code/modules/antagonists/_common/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -249,7 +249,6 @@ /obj/item/antag_spawner/slaughter_demon/spawn_antag(client/C, turf/T, kind = "", datum/mind/user) var/obj/effect/dummy/phased_mob/slaughter/holder = new /obj/effect/dummy/phased_mob/slaughter(T) var/mob/living/simple_animal/hostile/imp/slaughter/S = new demon_type(holder) - S.holder = holder S.key = C.key S.mind.assigned_role = S.name S.mind.special_role = S.name diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 4242346abfd..68b992f6e7d 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -39,13 +39,15 @@ /// How much our wound_bonus hitstreak bonus caps at (peak demonry) var/wound_bonus_hitstreak_max = 12 -/mob/living/simple_animal/hostile/imp/slaughter/Initialize() +/mob/living/simple_animal/hostile/imp/slaughter/Initialize(mapload, obj/effect/dummy/phased_mob/slaughter/bloodpool)//Bloodpool is the blood pool we spawn in ..() ADD_TRAIT(src, TRAIT_BLOODCRAWL_EAT, "innate") var/obj/effect/proc_holder/spell/bloodcrawl/bloodspell = new AddSpell(bloodspell) if(istype(loc, /obj/effect/dummy/phased_mob/slaughter)) bloodspell.phased = TRUE + if(bloodpool) + bloodpool.RegisterSignal(src, list(COMSIG_LIVING_AFTERPHASEIN,COMSIG_PARENT_QDELETING), /obj/effect/dummy/phased_mob/slaughter/.proc/deleteself) /mob/living/simple_animal/hostile/imp/slaughter/CtrlShiftClickOn(atom/A) if(!isliving(A)) diff --git a/code/modules/antagonists/slaughter/slaughterevent.dm b/code/modules/antagonists/slaughter/slaughterevent.dm index 6e74cfcd59f..aeda14e67fd 100644 --- a/code/modules/antagonists/slaughter/slaughterevent.dm +++ b/code/modules/antagonists/slaughter/slaughterevent.dm @@ -33,7 +33,6 @@ var/obj/effect/dummy/phased_mob/slaughter/holder = new /obj/effect/dummy/phased_mob/slaughter((pick(spawn_locs))) var/mob/living/simple_animal/hostile/imp/slaughter/S = new (holder) - S.holder = holder player_mind.transfer_to(S) player_mind.assigned_role = "Slaughter Demon" player_mind.special_role = "Slaughter Demon" diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 8232f71e8c2..9d61a9039e0 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -20,6 +20,11 @@ /obj/effect/dummy/phased_mob/slaughter/singularity_act() return +/obj/effect/dummy/phased_mob/slaughter/proc/deleteself(mob/living/source, obj/effect/decal/cleanable/phase_in_decal) + SIGNAL_HANDLER + qdel(src) + + /mob/living/proc/phaseout(obj/effect/decal/cleanable/B) if(iscarbon(src)) var/mob/living/carbon/C = src @@ -117,6 +122,7 @@ victim.visible_message("[target] violently expels [victim]!") victim.exit_blood_effect(target) found_bloodpool = TRUE + break if(!found_bloodpool) // Fuck it, just eject them, thanks to some split second cleaning @@ -168,6 +174,7 @@ return forceMove(B.loc) client.eye = src + SEND_SIGNAL(src, COMSIG_LIVING_AFTERPHASEIN, B) visible_message("[src] rises out of the pool of blood!") exit_blood_effect(B) if(iscarbon(src)) @@ -175,5 +182,4 @@ for(var/obj/item/bloodcrawl/BC in C) BC.flags_1 = null qdel(BC) - QDEL_NULL(holder) return TRUE diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 59966571324..42ddfe20aa2 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -56,10 +56,9 @@ var/tod = null /// Time of death - var/on_fire = 0 ///The "Are we on fire?" var + var/on_fire = FALSE ///The "Are we on fire?" var var/fire_stacks = 0 ///Tracks how many stacks of fire we have on, max is usually 20 - var/holder = null //The holder for blood crawling var/ventcrawler = 0 //0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always var/limb_destroyer = 0 //1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack.