Cultist Memory (#10622)

This commit is contained in:
Geeves
2020-12-22 15:25:30 +01:00
committed by GitHub
parent 881db313de
commit 6ff5d78786
47 changed files with 484 additions and 293 deletions
@@ -48,11 +48,12 @@
/datum/reagent/blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(ishuman(M))
if (M.mind && M.mind.vampire)
if(M.mind)
var/datum/vampire/vampire = M.mind.antag_datums[MODE_VAMPIRE]
if(M.dna.unique_enzymes == data["blood_DNA"]) //so vampires can't drink their own blood
return
M.mind.vampire.blood_usable += removed
to_chat(M, "<span class='notice'>You have accumulated [M.mind.vampire.blood_usable] [M.mind.vampire.blood_usable > 1 ? "units" : "unit"] of usable blood. It tastes quite stale.</span>")
vampire.blood_usable += removed
to_chat(M, "<span class='notice'>You have accumulated [vampire.blood_usable] [vampire.blood_usable > 1 ? "units" : "unit"] of usable blood. It tastes quite stale.</span>")
return
if(dose > 5)
M.adjustToxLoss(removed)
@@ -218,11 +218,12 @@
/datum/reagent/water/holywater/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(ishuman(M))
if (M.mind && M.mind.vampire)
var/datum/vampire/vampire = M.mind.vampire
vampire.frenzy += removed * 5
else if(M.mind && cult.is_antagonist(M.mind) && prob(10))
cult.remove_antagonist(M.mind)
if(M.mind)
var/datum/vampire/vampire = M.mind.antag_datums[MODE_VAMPIRE]
if(vampire)
vampire.frenzy += removed * 5
if(cult.is_antagonist(M.mind) && prob(10))
cult.remove_antagonist(M.mind)
if(alien && alien == IS_UNDEAD)
M.adjust_fire_stacks(10)
M.IgniteMob()
@@ -44,32 +44,34 @@
if(51 to INFINITY) icon_state = "full"
/obj/item/reagent_containers/blood/attack(mob/living/carbon/human/M as mob, mob/living/carbon/human/user as mob, var/target_zone)
if (user == M && (user.mind.vampire))
if (being_feed)
to_chat(user, "<span class='notice'>You are already feeding on \the [src].</span>")
return
if (reagents.get_reagent_amount(/datum/reagent/blood))
user.visible_message("<span class='warning'>[user] raises \the [src] up to their mouth and bites into it.</span>", "<span class='notice'>You raise \the [src] up to your mouth and bite into it, starting to drain its contents.<br>You need to stand still.</span>")
being_feed = TRUE
vampire_marks = TRUE
if (!LAZYLEN(src.other_DNA))
LAZYADD(src.other_DNA, M.dna.unique_enzymes)
src.other_DNA_type = "saliva"
if(user == M && user.mind)
var/datum/vampire/vampire = user.mind.antag_datums[MODE_VAMPIRE]
if(vampire)
if (being_feed)
to_chat(user, "<span class='notice'>You are already feeding on \the [src].</span>")
return
if (reagents.get_reagent_amount(/datum/reagent/blood))
user.visible_message("<span class='warning'>[user] raises \the [src] up to their mouth and bites into it.</span>", "<span class='notice'>You raise \the [src] up to your mouth and bite into it, starting to drain its contents.<br>You need to stand still.</span>")
being_feed = TRUE
vampire_marks = TRUE
if (!LAZYLEN(src.other_DNA))
LAZYADD(src.other_DNA, M.dna.unique_enzymes)
src.other_DNA_type = "saliva"
while (do_after(user, 25, 5, 1))
var/blood_taken = 0
blood_taken = min(5, reagents.get_reagent_amount(/datum/reagent/blood)/4)
while (do_after(user, 25, 5, 1))
var/blood_taken = 0
blood_taken = min(5, reagents.get_reagent_amount(/datum/reagent/blood)/4)
reagents.remove_reagent(/datum/reagent/blood, blood_taken*4)
user.mind.vampire.blood_usable += blood_taken
reagents.remove_reagent(/datum/reagent/blood, blood_taken*4)
vampire.blood_usable += blood_taken
if (blood_taken)
to_chat(user, "<span class='notice'>You have accumulated [user.mind.vampire.blood_usable] [user.mind.vampire.blood_usable > 1 ? "units" : "unit"] of usable blood. It tastes quite stale.</span>")
if (blood_taken)
to_chat(user, "<span class='notice'>You have accumulated [vampire.blood_usable] [vampire.blood_usable > 1 ? "units" : "unit"] of usable blood. It tastes quite stale.</span>")
if (reagents.get_reagent_amount(/datum/reagent/blood) < 1)
break
user.visible_message("<span class='warning'>[user] licks [user.get_pronoun("his")] fangs dry, lowering \the [src].</span>", "<span class='notice'>You lick your fangs clean of the tasteless blood.</span>")
being_feed = FALSE
if (reagents.get_reagent_amount(/datum/reagent/blood) < 1)
break
user.visible_message("<span class='warning'>[user] licks [user.get_pronoun("his")] fangs dry, lowering \the [src].</span>", "<span class='notice'>You lick your fangs clean of the tasteless blood.</span>")
being_feed = FALSE
else
..()