From 3216ab1c0025bd89dc8407a495dd6e58c1aa893a Mon Sep 17 00:00:00 2001 From: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Date: Mon, 1 Sep 2025 05:27:20 +0100 Subject: [PATCH] Updates Holy Water to be Less Annoying and More Flavourful (#30154) * Update water.dm * Update code/modules/reagents/chemistry/reagents/water.dm Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com> --------- Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com> Co-authored-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> --- .../reagents/chemistry/reagents/water.dm | 102 ++++++++++-------- 1 file changed, 57 insertions(+), 45 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm index 74e1cccf5c7..f9ca4a66e09 100644 --- a/code/modules/reagents/chemistry/reagents/water.dm +++ b/code/modules/reagents/chemistry/reagents/water.dm @@ -283,7 +283,7 @@ /datum/reagent/holywater name = "Water" id = "holywater" - description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen." + description = "A ubiquitous chemical substance that is composed of hydrogen, oxygen, and faith." // Subtle tell if anyone bothers to use a chem master to identify it. How many people know this can be done? reagent_state = LIQUID color = "#0064C8" // rgb: 0, 100, 200 process_flags = ORGANIC | SYNTHETIC @@ -294,17 +294,27 @@ /datum/reagent/holywater/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - M.AdjustJitter(-10 SECONDS) - if(current_cycle >= 30) // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec - M.AdjustStuttering(8 SECONDS, bound_lower = 0, bound_upper = 40 SECONDS) - M.Dizzy(10 SECONDS) + // Feel the blessing within you. Unless you're an unholy being, of course. + if(prob(5) && !IS_CULTIST(M) && !M.mind?.has_antag_datum(/datum/antagonist/vampire) && !isvampirethrall(M)) + M.AdjustJitter(-10 SECONDS) + var/holy_message = pick( + "You feel a little more peaceful inside.", + "You feel a higher power looking down on you.", + "You feel as though your spirit is a little safer", + "You feel as though you are blessed.", + ) + to_chat(M, "[holy_message]") + + // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec + if(current_cycle >= 30) if(IS_CULTIST(M)) for(var/datum/action/innate/cult/blood_magic/BM in M.actions) for(var/datum/action/innate/cult/blood_spell/BS in BM.spells) to_chat(M, "Your blood rites falter as holy water scours your body!") qdel(BS) - if(prob(5)) - M.AdjustCultSlur(10 SECONDS)//5 seems like a good number... + if(prob(5)) // 5 seems like a good number... + M.AdjustCultSlur(10 SECONDS) + M.Jitter(10 SECONDS) M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","Egkau'haom'nai en Chaous","Ho Diak'nos tou Ap'iron","R'ge Na'sie","Diabo us Vo'iscum","Si gn'um Co'nu")) if(isvampirethrall(M)) if(prob(10)) @@ -312,17 +322,14 @@ if(prob(5)) //Same as cult, for the real big tell M.visible_message("A fog lifts from [M]'s eyes for a moment, but soon returns.") - if(current_cycle >= 75 && prob(33)) // 30 units, 150 seconds - M.AdjustConfused(6 SECONDS) + // 30 units, 150 seconds + if(current_cycle >= 75 && prob(33)) if(isvampirethrall(M)) M.mind.remove_antag_datum(/datum/antagonist/mindslave/thrall) - holder.remove_reagent(id, volume) M.visible_message("[M] recoils, their skin flushes with colour, regaining their sense of control!") - M.SetJitter(0) - M.SetStuttering(0) - M.SetConfused(0) return + if(IS_CULTIST(M)) var/datum/antagonist/cultist/cultist = IS_CULTIST(M) cultist.remove_gear_on_removal = TRUE @@ -330,12 +337,15 @@ holder.remove_reagent(id, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better?? M.SetJitter(0) - M.SetStuttering(0) - M.SetConfused(0) return + var/datum/antagonist/vampire/vamp = M.mind?.has_antag_datum(/datum/antagonist/vampire) if(ishuman(M) && vamp && !vamp.get_ability(/datum/vampire_passive/full) && prob(80)) var/mob/living/carbon/V = M + // Has never fed, do not pass GO. + if(!vamp.bloodtotal) + return ..() | update_flags + if(vamp.bloodusable) M.Stuttering(2 SECONDS) M.Jitter(60 SECONDS) @@ -344,39 +354,41 @@ M.emote("scream") vamp.adjust_nullification(20, 4) vamp.bloodusable = max(vamp.bloodusable - 3,0) - if(vamp.bloodusable) - V.vomit(0, TRUE, FALSE) - V.adjustBruteLoss(3) - else + if(!vamp.bloodusable) holder.remove_reagent(id, volume) V.vomit(0, FALSE, FALSE) return - else - if(!vamp.bloodtotal) - return ..() | update_flags - switch(current_cycle) - if(1 to 4) - to_chat(M, "Something sizzles in your veins!") - vamp.adjust_nullification(20, 4) - if(5 to 12) - to_chat(M, "You feel an intense burning inside of you!") - update_flags |= M.adjustFireLoss(1, FALSE) - M.Stuttering(2 SECONDS) - M.Jitter(40 SECONDS) - if(prob(20)) - M.emote("scream") - vamp.adjust_nullification(20, 4) - if(13 to INFINITY) - M.visible_message("[M] suddenly bursts into flames!", - "You suddenly ignite in a holy fire!") - M.fire_stacks = min(5, M.fire_stacks + 3) - M.IgniteMob() - update_flags |= M.adjustFireLoss(3, FALSE) - M.Stuttering(2 SECONDS) - M.Jitter(60 SECONDS) - if(prob(40)) - M.emote("scream") - vamp.adjust_nullification(20, 4) + + V.vomit(0, TRUE, FALSE) + V.adjustBruteLoss(3) + return ..() | update_flags + + switch(current_cycle) + if(1 to 4) + to_chat(M, "Something sizzles in your veins!") + vamp.adjust_nullification(20, 4) + if(5 to 12) + to_chat(M, "You feel an intense burning inside of you!") + update_flags |= M.adjustFireLoss(1, FALSE) + M.Stuttering(2 SECONDS) + M.Jitter(40 SECONDS) + if(prob(20)) + M.emote("scream") + vamp.adjust_nullification(20, 4) + if(13 to INFINITY) + M.visible_message( + "[M] suddenly bursts into flames!", + "You suddenly ignite in a holy fire!", + "You hear something suddenly bursting into flames!" + ) + M.fire_stacks = min(5, M.fire_stacks + 3) + M.IgniteMob() + update_flags |= M.adjustFireLoss(3, FALSE) + M.Stuttering(2 SECONDS) + M.Jitter(60 SECONDS) + if(prob(40)) + M.emote("scream") + vamp.adjust_nullification(20, 4) return ..() | update_flags