From 289628be571f27a5ff72452afbeb0bb999816d01 Mon Sep 17 00:00:00 2001 From: Cameron Lennox Date: Tue, 14 Oct 2025 10:15:13 -0400 Subject: [PATCH] Spont vore & unlucky fix (#18626) * Some fixes * terminate early --- code/datums/components/traits/unlucky.dm | 12 +++++++----- code/datums/elements/vore/spontaneous_vore.dm | 17 ++++++----------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/code/datums/components/traits/unlucky.dm b/code/datums/components/traits/unlucky.dm index 10316314da7..81f7abf0de5 100644 --- a/code/datums/components/traits/unlucky.dm +++ b/code/datums/components/traits/unlucky.dm @@ -152,7 +152,9 @@ return for(var/turf/the_turf as anything in our_guy_pos.AdjacentTurfs(check_blockage = FALSE)) //need false so we can check disposal units - if(the_turf.CanZPass(our_guy, DOWN)) + if(iswall(the_turf)) + continue + if(the_turf.CanZPass(our_guy, DOWN) && !isspace(the_turf)) to_chat(living_guy, span_warning("You lose your balance and slip towards the edge!")) living_guy.Weaken(5) living_guy.throw_at(the_turf, 1, 20) @@ -161,7 +163,7 @@ if(vorish) for(var/mob/living/living_mob in the_turf) - if(living_mob == our_guy) + if(living_mob == our_guy || (living_mob.vore_selected == living_guy.vore_selected)) continue //Don't do anything to ourselves. if(living_mob.stat) continue @@ -183,7 +185,7 @@ consume_omen() return - if(evil || safe_disposals) //On servers without safe disposals, this is a death sentence. With servers with safe disposals, it's just funny. + if((evil || safe_disposals) && living_guy.m_intent == I_RUN) //On servers without safe disposals, this is a death sentence. With servers with safe disposals, it's just funny. Either way, walk near disposals. for(var/obj/machinery/disposal/evil_disposal in the_turf) if(evil_disposal.stat & (BROKEN|NOPOWER)) continue @@ -193,7 +195,7 @@ living_guy.forceMove(evil_disposal) evil_disposal.flush = TRUE evil_disposal.update() - living_guy.Weaken(5) + living_guy.Stun(5) consume_omen() return @@ -289,7 +291,7 @@ // In complete darkness if(our_guy_pos.get_lumcount() <= LIGHTING_SOFT_THRESHOLD) living_guy.Blind(5) //10 seconds of 'OH GOD WHAT'S HAPPENING' - living_guy.silent = 5 + living_guy.silent = max(living_guy.silent, 5) living_guy.Paralyse(5) to_chat(living_guy, span_bolddanger("You feel the ground buckle underneath you, falling down, your vision going dark as you feel paralyzed in place!")) consume_omen() diff --git a/code/datums/elements/vore/spontaneous_vore.dm b/code/datums/elements/vore/spontaneous_vore.dm index 629ccb59627..e967f6ea6a9 100644 --- a/code/datums/elements/vore/spontaneous_vore.dm +++ b/code/datums/elements/vore/spontaneous_vore.dm @@ -18,17 +18,12 @@ /datum/element/spontaneous_vore/proc/handle_stumble(mob/living/source, mob/living/target) SIGNAL_HANDLER - //snowflake protean code to prevent protean blobform from eating their human form and humanform from eating their protean blob...gross. - //We are trying to eat our blobform - if(istype(target, /mob/living/simple_mob/protean_blob)) - var/mob/living/simple_mob/protean_blob/PB = target - if(PB.humanform == source) - return - //Our blobform is trying to eat us - if(istype(source, /mob/living/simple_mob/protean_blob)) - var/mob/living/simple_mob/protean_blob/PB = source - if(PB.humanform == target) - return + //Prevents slipping into ourselves if we have a blobform. + if(!isturf(target.loc) || !isturf(source.loc)) //No slipping into things that aren't even on a valid turf. + return + //Prevents eating ourselves with our own stomach. + if(source.vore_selected == target.vore_selected) + return //We are able to eat the person stumbling into us. if(CanStumbleVore(prey = target, pred = source)) //This is if the person stumbling into us is able to eat us!