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