mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-09 00:42:34 +00:00
Cultist Memory (#10622)
This commit is contained in:
@@ -7,11 +7,12 @@
|
||||
flags = RESTRICTED | HIVEMIND
|
||||
|
||||
/datum/language/ling/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
|
||||
|
||||
if(speaker.mind && speaker.mind.changeling)
|
||||
..(speaker,message,speaker.mind.changeling.changelingID)
|
||||
else
|
||||
..(speaker,message)
|
||||
if(speaker.mind)
|
||||
var/datum/changeling/changeling = speaker.mind.antag_datums[MODE_CHANGELING]
|
||||
if(changeling)
|
||||
..(speaker,message, changeling.changelingID)
|
||||
return
|
||||
..(speaker,message)
|
||||
|
||||
/datum/language/corticalborer
|
||||
name = LANGUAGE_BORER
|
||||
|
||||
@@ -210,12 +210,14 @@
|
||||
stat(null, "Suit charge: [cell_status]")
|
||||
|
||||
if(mind)
|
||||
if(mind.vampire)
|
||||
stat("Usable Blood", mind.vampire.blood_usable)
|
||||
stat("Total Blood", mind.vampire.blood_total)
|
||||
if(mind.changeling)
|
||||
stat("Chemical Storage", mind.changeling.chem_charges)
|
||||
stat("Genetic Damage Time", mind.changeling.geneticdamage)
|
||||
var/datum/vampire/vampire = mind.antag_datums[MODE_VAMPIRE]
|
||||
if(vampire)
|
||||
stat("Usable Blood", vampire.blood_usable)
|
||||
stat("Total Blood", vampire.blood_total)
|
||||
var/datum/changeling/changeling = mind.antag_datums[MODE_CHANGELING]
|
||||
if(changeling)
|
||||
stat("Chemical Storage", changeling.chem_charges)
|
||||
stat("Genetic Damage Time", changeling.geneticdamage)
|
||||
|
||||
/mob/living/carbon/human/ex_act(severity)
|
||||
if(!blinded)
|
||||
@@ -2016,8 +2018,10 @@
|
||||
/mob/living/carbon/human/get_accent_icon(var/datum/language/speaking, var/mob/hearer, var/force_accent)
|
||||
var/used_accent = accent //starts with the mob's default accent
|
||||
|
||||
if(mind?.changeling)
|
||||
used_accent = mind.changeling.mimiced_accent
|
||||
if(mind)
|
||||
var/datum/changeling/changeling = mind.antag_datums[MODE_CHANGELING]
|
||||
if(changeling?.mimiced_accent)
|
||||
used_accent = changeling.mimiced_accent
|
||||
|
||||
if(istype(back,/obj/item/rig)) //checks for the rig voice changer module
|
||||
var/obj/item/rig/rig = back
|
||||
|
||||
@@ -87,8 +87,12 @@
|
||||
tally = max(0, tally-3)
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
if(T && !mind.changeling) // changelings don't get movement costs
|
||||
tally += T.movement_cost
|
||||
if(T) // changelings don't get movement costs
|
||||
var/datum/changeling/changeling
|
||||
if(mind)
|
||||
changeling = mind.antag_datums[MODE_CHANGELING]
|
||||
if(!changeling)
|
||||
tally += T.movement_cost
|
||||
|
||||
tally += config.human_delay
|
||||
|
||||
|
||||
@@ -84,8 +84,10 @@
|
||||
//Update our name based on whether our face is obscured/disfigured
|
||||
name = get_visible_name()
|
||||
|
||||
if(mind?.vampire)
|
||||
handle_vampire()
|
||||
if(mind)
|
||||
var/datum/vampire/vampire = mind.antag_datums[MODE_VAMPIRE]
|
||||
if(vampire)
|
||||
handle_vampire()
|
||||
|
||||
/mob/living/carbon/human/think()
|
||||
..()
|
||||
@@ -1041,8 +1043,10 @@
|
||||
playsound_simple(null, pick(scarySounds), 50, TRUE)
|
||||
|
||||
/mob/living/carbon/human/proc/handle_changeling()
|
||||
if(mind && mind.changeling)
|
||||
mind.changeling.regenerate()
|
||||
if(mind)
|
||||
var/datum/changeling/changeling = mind.antag_datums[MODE_CHANGELING]
|
||||
if(changeling)
|
||||
changeling.regenerate()
|
||||
|
||||
/mob/living/carbon/human/proc/handle_shock()
|
||||
if(status_flags & GODMODE)
|
||||
|
||||
@@ -79,8 +79,10 @@
|
||||
var/obj/item/organ/external/head/face = organs_by_name[BP_HEAD]
|
||||
if(face?.disfigured) // if your face is ruined, your ability to vocalize is also ruined
|
||||
return "Unknown" // above ling voice mimicing so they don't get caught out immediately
|
||||
if(mind?.changeling?.mimicing)
|
||||
return mind.changeling.mimicing
|
||||
if(mind)
|
||||
var/datum/changeling/changeling = mind.antag_datums[MODE_CHANGELING]
|
||||
if(changeling?.mimicing)
|
||||
return changeling.mimicing
|
||||
if(GetSpecialVoice())
|
||||
return GetSpecialVoice()
|
||||
return real_name
|
||||
|
||||
@@ -213,7 +213,10 @@
|
||||
|
||||
if (!injected || !our)
|
||||
return
|
||||
if(blood_incompatible(injected.data["blood_type"],our.data["blood_type"],injected.data["species"],our.data["species"]) && !(mind && mind.vampire))
|
||||
var/datum/vampire/vampire
|
||||
if(mind)
|
||||
vampire = mind.antag_datums[MODE_VAMPIRE]
|
||||
if(!vampire && blood_incompatible(injected.data["blood_type"],our.data["blood_type"],injected.data["species"],our.data["species"]))
|
||||
reagents.add_reagent(/datum/reagent/toxin,amount * 0.5)
|
||||
reagents.update_total()
|
||||
else
|
||||
|
||||
@@ -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
|
||||
..()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user