diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index 1dbae4ca98..a352dd3e78 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -4,6 +4,7 @@
desc = "Prepare blood magic by carving runes into your flesh. This rite is most effective with an empowering rune"
var/list/spells = list()
var/channeling = FALSE
+ var/holy_dispel = FALSE
/datum/action/innate/cult/blood_magic/Grant()
..()
@@ -33,6 +34,9 @@
B.button.moved = B.button.screen_loc
/datum/action/innate/cult/blood_magic/Activate()
+ if(holy_dispel)
+ to_chat(owner, "Holy water currently scours your body, nullifying the power of the rites!")
+ return
var/rune = FALSE
var/limit = RUNELESS_MAX_BLOODCHARGE
for(var/obj/effect/rune/empower/R in range(1, owner))
@@ -64,7 +68,7 @@
qdel(nullify_spell)
return
BS = possible_spells[entered_spell_name]
- if(QDELETED(src) || owner.incapacitated() || !BS || (rune && !(locate(/obj/effect/rune/empower) in range(1, owner))) || (spells.len >= limit))
+ if(QDELETED(src) || owner.incapacitated() || !BS || holy_dispel || (rune && !(locate(/obj/effect/rune/empower) in range(1, owner))) || (spells.len >= limit))
return
to_chat(owner,"You begin to carve unnatural symbols into your flesh!")
SEND_SOUND(owner, sound('sound/weapons/slice.ogg',0,1,10))
@@ -73,7 +77,7 @@
else
to_chat(owner, "You are already invoking blood magic!")
return
- if(do_after(owner, 100 - rune*60, target = owner))
+ if(do_after(owner, 100 - rune*60, target = owner) && !holy_dispel)
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
H.bleed(40 - rune*32)
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index bc64d6636b..d62ed8679c 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -200,22 +200,20 @@
pH = 7.5 //God is alkaline
/datum/reagent/water/holywater/on_mob_metabolize(mob/living/L)
- ..()
+ . = ..()
ADD_TRAIT(L, TRAIT_HOLY, id)
+ if(is_servant_of_ratvar(L))
+ to_chat(L, "A fog spreads through your mind, purging the Justiciar's influence!")
+ else if(iscultist(L))
+ to_chat(L, "A fog spreads through your mind, weakening your connection to the veil and purging Nar-sie's influence")
+
/datum/reagent/water/holywater/on_mob_end_metabolize(mob/living/L)
REMOVE_TRAIT(L, TRAIT_HOLY, id)
- ..()
-
-/datum/reagent/water/holywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
- if(is_servant_of_ratvar(M))
- to_chat(M, "A fog spreads through your mind, purging the Justiciar's influence!")
- ..()
-
-/datum/reagent/water/holywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
- if(iscultist(M))
- to_chat(M, "A fog spreads through your mind, weakening your connection to the veil and purging Nar-sie's influence")
- ..()
+ if(iscultist(L))
+ for(var/datum/action/innate/cult/blood_magic/BM in L.actions)
+ BM.holy_dispel = FALSE
+ return ..()
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M)
if(!data)
@@ -224,9 +222,11 @@
M.jitteriness = min(M.jitteriness+4,10)
if(iscultist(M))
for(var/datum/action/innate/cult/blood_magic/BM in M.actions)
- to_chat(M, "Your blood rites falter as holy water scours your body!")
- for(var/datum/action/innate/cult/blood_spell/BS in BM.spells)
- qdel(BS)
+ if(!BM.holy_dispel)
+ BM.holy_dispel = TRUE
+ to_chat(M, "Your blood rites falter as holy water scours your body!")
+ for(var/datum/action/innate/cult/blood_spell/BS in BM.spells)
+ qdel(BS)
if(data >= 25) // 10 units, 45 seconds @ metabolism 0.4 units & tick rate 1.8 sec
if(!M.stuttering)
M.stuttering = 1