From 02eeca0d25a610c5a58fa1a0fe1a4de46f141c75 Mon Sep 17 00:00:00 2001 From: DerFlammenwerfer <7h3ph4nt0m@gmail.com> Date: Sat, 15 Jun 2024 21:34:25 -0400 Subject: [PATCH 1/2] Changes how Churn Undead interacts with different kinds of vampire --- .../modules/spells/roguetown/acolyte/necra.dm | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/code/modules/spells/roguetown/acolyte/necra.dm b/code/modules/spells/roguetown/acolyte/necra.dm index db1b85c14b..a879b6f9e8 100644 --- a/code/modules/spells/roguetown/acolyte/necra.dm +++ b/code/modules/spells/roguetown/acolyte/necra.dm @@ -47,37 +47,38 @@ devotion_cost = 60 /obj/effect/proc_holder/spell/targeted/churn/cast(list/targets,mob/living/user = usr) - var/prob2explode = 100 + var/prob2explode = 0 if(user && user.mind) - prob2explode = 0 for(var/i in 1 to user.mind.get_skill_level(/datum/skill/magic/holy)) prob2explode += 30 for(var/mob/living/L in targets) var/isvampire = FALSE var/iszombie = FALSE + var/isvampspawn = FALSE if(L.stat == DEAD) continue if(L.mind) - var/datum/antagonist/vampirelord/lesser/V = L.mind.has_antag_datum(/datum/antagonist/vampirelord/lesser) + var/datum/antagonist/vampire/V = L.mind.has_antag_datum(/datum/antagonist/vampire) + var/datum/antagonist/vampirelord/VL = L.mind.has_antag_datum(/datum/antagonist/vampirelord) + if(VL) + if(!VL.disguised) + isvampspawn = TRUE + if(L.mind.special_role == "Vampire Lord") + if(VL.vamplevel > 2) + user.visible_message(span_warning("[L] cannot be churned!"), span_userdanger("[L] is too strong to be churned!")) if(V) - if(!V.disguised) - isvampire = TRUE + isvampire = TRUE if(L.mind.has_antag_datum(/datum/antagonist/zombie)) iszombie = TRUE - if(L.mind.special_role == "Vampire Lord") - user.visible_message(span_warning("[L] overpowers being churned!"), span_userdanger("[L] is too strong, I am churned!")) - user.Stun(50) - user.throw_at(get_ranged_target_turf(user, get_dir(user,L), 7), 7, 1, L, spin = FALSE) - return - if((L.mob_biotypes & MOB_UNDEAD) || isvampire || iszombie) -// L.visible_message(span_warning("[L] is unmade by PSYDON!"), span_danger("I'm unmade by PSYDON!")) + if((L.mob_biotypes & MOB_UNDEAD) || isvampire || iszombie || isvampspawn) + L.visible_message(span_warning("[L] is rebuked by Necra!")) var/vamp_prob = prob2explode if(isvampire) - vamp_prob -= 59 + vamp_prob -= 25 if(prob(vamp_prob)) explosion(get_turf(L), light_impact_range = 1, flame_range = 1, smoke = FALSE) L.Stun(50) -// L.throw_at(get_ranged_target_turf(L, get_dir(user,L), 7), 7, 1, L, spin = FALSE) + L.throw_at(get_ranged_target_turf(L, get_dir(user,L), 7), 7, 1, L, spin = FALSE) else L.visible_message(span_warning("[L] resists being churned!"), span_userdanger("I resist being churned!")) ..() From 2064b0214c1dc0f2a4445ecae18b2d7a0ca789a0 Mon Sep 17 00:00:00 2001 From: DerFlammenwerfer <7h3ph4nt0m@gmail.com> Date: Wed, 19 Jun 2024 00:10:38 -0400 Subject: [PATCH 2/2] Couple of returns to ensure VLord and disguised spawn are protected from churn. --- code/modules/spells/roguetown/acolyte/necra.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/spells/roguetown/acolyte/necra.dm b/code/modules/spells/roguetown/acolyte/necra.dm index a879b6f9e8..e5594f563e 100644 --- a/code/modules/spells/roguetown/acolyte/necra.dm +++ b/code/modules/spells/roguetown/acolyte/necra.dm @@ -61,11 +61,14 @@ var/datum/antagonist/vampire/V = L.mind.has_antag_datum(/datum/antagonist/vampire) var/datum/antagonist/vampirelord/VL = L.mind.has_antag_datum(/datum/antagonist/vampirelord) if(VL) - if(!VL.disguised) + if(VL.disguised) + return + else isvampspawn = TRUE if(L.mind.special_role == "Vampire Lord") if(VL.vamplevel > 2) user.visible_message(span_warning("[L] cannot be churned!"), span_userdanger("[L] is too strong to be churned!")) + return if(V) isvampire = TRUE if(L.mind.has_antag_datum(/datum/antagonist/zombie))