mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-02-07 23:09:28 +00:00
* Heretic DLC: Path of Moon (#79536) ## About The Pull Request This pull request adds a new path. The cross path is between ash and lock. Credit to Fury McFlurry for the following sprites: ring_leader_effect The path goes as follows: Moonlight Troupe Grasp of Lunacy Smile of the moon > Sidepaths: Mind Gate Ashen Eyes Mark of Moon Ritual of Knowledge Lunar Parade Moonlight Amulette > Sidepaths: Curse of Paralasys Unfathomable Curio Unsealed Arts Moonlight blade Ringleaders Rise > Sidepaths: Ashen Ritual Last Act Moonlight Troupe: The first knowledge of path of moon, lets you make Lunar Blades with 2 iron and a knife Grasp of Lunacy: The grasp of this path hides your name for 15 seconds after use, but more importantly it causes the person hit with the grasp to hallucinate everyone as indistinct human like figures. Smile of the Moon: A pointed spell that causes temporary blinding, muting, deafening and confusing on the person its targeted at, these effects last longer the less sanity your victim has. https://github.com/tgstation/tgstation/assets/120136161/db7cfaaa-8fe2-4f20-aa78-c17c17be4d63 Mindgate: Lock-Moon. This spell causes you and your victim brain damage, the victim also suffers a short amount of hallucinations and also 20 oxyloss. https://github.com/tgstation/tgstation/assets/120136161/11d15acd-11d0-4e7d-a180-6481b18e9fd9 Mark of Moon: When applied this paths mark pacifies the victim and they remain pacifist until attacked or until the mark is detonated, when detonated the victim is left confused. https://github.com/tgstation/tgstation/assets/120136161/41e601b5-76d4-4765-8b49-ada7de09feb7 Lunar Parade: A spell that sends out a projectile that causes people hit by it to follow the projectile whilst being unable to move. The projectile also bounces around and is really useful to get people off your back during chases. https://github.com/tgstation/tgstation/assets/120136161/cddc8390-e8aa-4d68-b1a5-ab181e941a9b Unfathomable Curio: Transmute 3 rods, a brain and a belt into an Unfathomable Curio a belt that can hold blades and items for rituals. Whilst worn will also veil the heretic, allowing them to take 1 hit without suffering damage, this veil will recharge quickly outside of combat. If examined the examiner suffers brain damage and temporary brain damage, and if a non-heretic uses it once the shield is damaged the non-heretic user suffers massive brain damage and a permanent uncurbable brain trauma. Lock-moon Unsealed Arts: Allows you to transmute a canvas and an additional item to create a piece of art, these paintings have different effects depending on the additional item added. Lock-moon Possible paintings: The sister and He Who Wept: Additional atoms: Eyes. When a non-heretic looks at the painting they will begin to hallucinate everyone as heretics. The First Desire: Additional atoms: Any bodypart. Increases the hunger of non-heretics, when examined drops an organ or body part at the painting. Great chaparral over rolling hills: Additional atoms: Any grown food. Spreads kudzu when placed, when examined grants a flower to the heretic. Lady out of gates: Additional atoms: Gloves. Causes non-heretics to scratch themselves until they remove their jumpsuit, when examined removes all your mutations. Climb over the rusted mountain: Additional atoms: Trash. Causes non-heretics to rust the floor they walk on and when examined gives you a cool moodlet These effects are mitigated for a few minutes when a non-heretic suffering an effect examines the painting that caused the effect. Except for great chapparal which spawns kudzu at their feet, and Lady out of gates which gives them a random negative mutation. https://github.com/tgstation/tgstation/assets/120136161/1d1bdd2f-cda5-4430-b3af-4742f98a59a8 https://github.com/tgstation/tgstation/assets/120136161/4e843ae4-9786-4e9b-8681-582713f4c789 Moonlight Amulette: Allows the heretic to transmute 2 sheets of glass, a pair of eyes, a brain and a tie. If the amulette is used on someone with low sanity they go berserk attacking everyone if their sanity isnt low enough it decreases their mood. Optionally you can add a poppy in the ritual to further decrease their mood on hit. https://github.com/tgstation/tgstation/assets/120136161/ab820b3f-e7e6-407a-9a1a-93d49c0d7387 Moonlight Blade: Causes the heretics blades to do brain and sanity damage whilst causing hallucinations. The blades also cause giggling and laughter on hit. Ringleaders Rise: An AoE spell that deals more brain damage the lower the sanity of the victim, also causes hallucinations that last longer the lower the sanity of the victim. If the victims sanity is low enoughit causes them to go insane, the spell then halves their sanity. This spell is on a longer cooldown and is more meant to be used as a payoff or an instigator for a fight. The AoE area is 7 tiles https://github.com/tgstation/tgstation/assets/120136161/4de85ba2-448a-485c-b739-77fcce86c0cb Last Act: The ascension lowers the cooldown of all the heretics spells by 33% and increases the AoE range of Ringleaders Rise. The main effect of this ascension is a passive sanity drain and hallucination aura, if you have low sanity in the aura you will start to suffer brain damage and if you reach the bottom you gain an aura of hallucinations thus spreading the moon heretics influence further. Not only that but roughly 1/5th of the crew will rise in support of you becoming mini-heretics called acolytes that will attempt to obey your commands! I had videos showing off everything but they were too big for github sadly so I will have to think of some other way to showcase all this stuff. This pr also adds a new optional atoms system which means that you can have rituals that can be improved by adding additional atoms, like for example moonlight amulette. Feel free to give some suggestions for further ascension effects. ## Why It's Good For The Game I feel like heretic is really missing a playstyle around insanity and this slots neatly in to feel that gap. For being an eldritch antag of horrors there is surprisingly little interaction with the sanity system and I feel like this makes up for it, heretic is also missing some distractions which is where the paintings can really shine and the hallucinations which breed paranoia. ## Changelog 🆑 add: A new heretic path opens up! Gaze up at the great sky for the path of the moon opens and the lie shall be slain in pursuit of ultimate truth! fix: Fixes the syndicate delusion not working /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com> * Heretic DLC: Path of Moon --------- Co-authored-by: Rex9001 <120136161+Rex9001@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@ users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
434 lines
16 KiB
Plaintext
434 lines
16 KiB
Plaintext
//Severe traumas, when your brain gets abused way too much.
|
|
//These range from very annoying to completely debilitating.
|
|
//They cannot be cured with chemicals, and require brain surgery to solve.
|
|
|
|
/datum/brain_trauma/severe
|
|
abstract_type = /datum/brain_trauma/severe
|
|
resilience = TRAUMA_RESILIENCE_SURGERY
|
|
|
|
/datum/brain_trauma/severe/mute
|
|
name = "Mutism"
|
|
desc = "Patient is completely unable to speak."
|
|
scan_desc = "extensive damage to the brain's speech center"
|
|
gain_text = span_warning("You forget how to speak!")
|
|
lose_text = span_notice("You suddenly remember how to speak.")
|
|
|
|
/datum/brain_trauma/severe/mute/on_gain()
|
|
ADD_TRAIT(owner, TRAIT_MUTE, TRAUMA_TRAIT)
|
|
..()
|
|
|
|
/datum/brain_trauma/severe/mute/on_lose()
|
|
REMOVE_TRAIT(owner, TRAIT_MUTE, TRAUMA_TRAIT)
|
|
..()
|
|
|
|
/datum/brain_trauma/severe/aphasia
|
|
name = "Aphasia"
|
|
desc = "Patient is unable to speak or understand any language."
|
|
scan_desc = "extensive damage to the brain's language center"
|
|
gain_text = span_warning("You have trouble forming words in your head...")
|
|
lose_text = span_notice("You suddenly remember how languages work.")
|
|
|
|
/datum/brain_trauma/severe/aphasia/on_gain()
|
|
owner.add_blocked_language(subtypesof(/datum/language) - /datum/language/aphasia, LANGUAGE_APHASIA)
|
|
owner.grant_language(/datum/language/aphasia, source = LANGUAGE_APHASIA)
|
|
..()
|
|
|
|
/datum/brain_trauma/severe/aphasia/on_lose()
|
|
if(!QDELING(owner))
|
|
owner.remove_blocked_language(subtypesof(/datum/language), LANGUAGE_APHASIA)
|
|
owner.remove_language(/datum/language/aphasia, source = LANGUAGE_APHASIA)
|
|
|
|
..()
|
|
|
|
/datum/brain_trauma/severe/blindness
|
|
name = "Cerebral Blindness"
|
|
desc = "Patient's brain is no longer connected to its eyes."
|
|
scan_desc = "extensive damage to the brain's occipital lobe"
|
|
gain_text = span_warning("You can't see!")
|
|
lose_text = span_notice("Your vision returns.")
|
|
|
|
/datum/brain_trauma/severe/blindness/on_gain()
|
|
owner.become_blind(TRAUMA_TRAIT)
|
|
..()
|
|
|
|
/datum/brain_trauma/severe/blindness/on_lose()
|
|
owner.cure_blind(TRAUMA_TRAIT)
|
|
..()
|
|
|
|
/datum/brain_trauma/severe/paralysis
|
|
name = "Paralysis"
|
|
desc = "Patient's brain can no longer control part of its motor functions."
|
|
scan_desc = "cerebral paralysis"
|
|
gain_text = ""
|
|
lose_text = ""
|
|
var/paralysis_type
|
|
var/list/paralysis_traits = list()
|
|
//for descriptions
|
|
|
|
/datum/brain_trauma/severe/paralysis/New(specific_type)
|
|
if(specific_type)
|
|
paralysis_type = specific_type
|
|
if(!paralysis_type)
|
|
paralysis_type = pick("full","left","right","arms","legs","r_arm","l_arm","r_leg","l_leg")
|
|
var/subject
|
|
switch(paralysis_type)
|
|
if("full")
|
|
subject = "your body"
|
|
paralysis_traits = list(TRAIT_PARALYSIS_L_ARM, TRAIT_PARALYSIS_R_ARM, TRAIT_PARALYSIS_L_LEG, TRAIT_PARALYSIS_R_LEG)
|
|
if("left")
|
|
subject = "the left side of your body"
|
|
paralysis_traits = list(TRAIT_PARALYSIS_L_ARM, TRAIT_PARALYSIS_L_LEG)
|
|
if("right")
|
|
subject = "the right side of your body"
|
|
paralysis_traits = list(TRAIT_PARALYSIS_R_ARM, TRAIT_PARALYSIS_R_LEG)
|
|
if("arms")
|
|
subject = "your arms"
|
|
paralysis_traits = list(TRAIT_PARALYSIS_L_ARM, TRAIT_PARALYSIS_R_ARM)
|
|
if("legs")
|
|
subject = "your legs"
|
|
paralysis_traits = list(TRAIT_PARALYSIS_L_LEG, TRAIT_PARALYSIS_R_LEG)
|
|
if("r_arm")
|
|
subject = "your right arm"
|
|
paralysis_traits = list(TRAIT_PARALYSIS_R_ARM)
|
|
if("l_arm")
|
|
subject = "your left arm"
|
|
paralysis_traits = list(TRAIT_PARALYSIS_L_ARM)
|
|
if("r_leg")
|
|
subject = "your right leg"
|
|
paralysis_traits = list(TRAIT_PARALYSIS_R_LEG)
|
|
if("l_leg")
|
|
subject = "your left leg"
|
|
paralysis_traits = list(TRAIT_PARALYSIS_L_LEG)
|
|
|
|
gain_text = span_warning("You can't feel [subject] anymore!")
|
|
lose_text = span_notice("You can feel [subject] again!")
|
|
|
|
/datum/brain_trauma/severe/paralysis/on_gain()
|
|
..()
|
|
for(var/X in paralysis_traits)
|
|
ADD_TRAIT(owner, X, TRAUMA_TRAIT)
|
|
|
|
|
|
/datum/brain_trauma/severe/paralysis/on_lose()
|
|
..()
|
|
for(var/X in paralysis_traits)
|
|
REMOVE_TRAIT(owner, X, TRAUMA_TRAIT)
|
|
|
|
|
|
/datum/brain_trauma/severe/paralysis/paraplegic
|
|
random_gain = FALSE
|
|
paralysis_type = "legs"
|
|
resilience = TRAUMA_RESILIENCE_ABSOLUTE
|
|
|
|
/datum/brain_trauma/severe/paralysis/hemiplegic
|
|
random_gain = FALSE
|
|
resilience = TRAUMA_RESILIENCE_ABSOLUTE
|
|
|
|
/datum/brain_trauma/severe/paralysis/hemiplegic/left
|
|
paralysis_type = "left"
|
|
|
|
/datum/brain_trauma/severe/paralysis/hemiplegic/right
|
|
paralysis_type = "right"
|
|
|
|
/datum/brain_trauma/severe/narcolepsy
|
|
name = "Narcolepsy"
|
|
desc = "Patient may involuntarily fall asleep during normal activities."
|
|
scan_desc = "traumatic narcolepsy"
|
|
gain_text = span_warning("You have a constant feeling of drowsiness...")
|
|
lose_text = span_notice("You feel awake and aware again.")
|
|
|
|
/datum/brain_trauma/severe/narcolepsy/on_life(seconds_per_tick, times_fired)
|
|
if(owner.IsSleeping())
|
|
return
|
|
|
|
var/sleep_chance = 1
|
|
var/drowsy = !!owner.has_status_effect(/datum/status_effect/drowsiness)
|
|
if(owner.move_intent == MOVE_INTENT_RUN)
|
|
sleep_chance += 2
|
|
if(drowsy)
|
|
sleep_chance += 3
|
|
|
|
if(SPT_PROB(0.5 * sleep_chance, seconds_per_tick))
|
|
to_chat(owner, span_warning("You fall asleep."))
|
|
owner.Sleeping(6 SECONDS)
|
|
|
|
else if(!drowsy && SPT_PROB(sleep_chance, seconds_per_tick))
|
|
to_chat(owner, span_warning("You feel tired..."))
|
|
owner.adjust_drowsiness(20 SECONDS)
|
|
|
|
/datum/brain_trauma/severe/monophobia
|
|
name = "Monophobia"
|
|
desc = "Patient feels sick and distressed when not around other people, leading to potentially lethal levels of stress."
|
|
scan_desc = "monophobia"
|
|
gain_text = ""
|
|
lose_text = span_notice("You feel like you could be safe on your own.")
|
|
var/stress = 0
|
|
|
|
/datum/brain_trauma/severe/monophobia/on_gain()
|
|
..()
|
|
if(check_alone())
|
|
to_chat(owner, span_warning("You feel really lonely..."))
|
|
else
|
|
to_chat(owner, span_notice("You feel safe, as long as you have people around you."))
|
|
|
|
/datum/brain_trauma/severe/monophobia/on_life(seconds_per_tick, times_fired)
|
|
..()
|
|
if(check_alone())
|
|
stress = min(stress + 0.5, 100)
|
|
if(stress > 10 && SPT_PROB(2.5, seconds_per_tick))
|
|
stress_reaction()
|
|
else
|
|
stress = max(stress - (2 * seconds_per_tick), 0)
|
|
|
|
/datum/brain_trauma/severe/monophobia/proc/check_alone()
|
|
var/check_radius = 7
|
|
if(owner.is_blind())
|
|
check_radius = 1
|
|
for(var/mob/M in oview(owner, check_radius))
|
|
if(!isliving(M)) //ghosts ain't people
|
|
continue
|
|
if(istype(M, /mob/living/simple_animal/pet) || istype(M, /mob/living/basic/pet) || M.ckey)
|
|
return FALSE
|
|
return TRUE
|
|
|
|
/datum/brain_trauma/severe/monophobia/proc/stress_reaction()
|
|
if(owner.stat != CONSCIOUS)
|
|
return
|
|
|
|
var/high_stress = (stress > 60) //things get psychosomatic from here on
|
|
switch(rand(1, 6))
|
|
if(1)
|
|
if(high_stress)
|
|
to_chat(owner, span_warning("You feel really sick at the thought of being alone!"))
|
|
else
|
|
to_chat(owner, span_warning("You feel sick..."))
|
|
addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/living/carbon, vomit), high_stress), 50) //blood vomit if high stress
|
|
if(2)
|
|
if(high_stress)
|
|
to_chat(owner, span_warning("You feel weak and scared! If only you weren't alone..."))
|
|
owner.adjustStaminaLoss(50)
|
|
else
|
|
to_chat(owner, span_warning("You can't stop shaking..."))
|
|
|
|
owner.adjust_dizzy(40 SECONDS)
|
|
owner.adjust_confusion(20 SECONDS)
|
|
owner.set_jitter_if_lower(40 SECONDS)
|
|
|
|
if(3, 4)
|
|
if(high_stress)
|
|
to_chat(owner, span_warning("You're going mad with loneliness!"))
|
|
owner.adjust_hallucinations(60 SECONDS)
|
|
else
|
|
to_chat(owner, span_warning("You feel really lonely..."))
|
|
|
|
if(5)
|
|
if(high_stress)
|
|
if(prob(15) && ishuman(owner))
|
|
var/mob/living/carbon/human/H = owner
|
|
H.set_heartattack(TRUE)
|
|
to_chat(H, span_userdanger("You feel a stabbing pain in your heart!"))
|
|
else
|
|
to_chat(owner, span_userdanger("You feel your heart lurching in your chest..."))
|
|
owner.adjustOxyLoss(8)
|
|
else
|
|
to_chat(owner, span_warning("Your heart skips a beat."))
|
|
owner.adjustOxyLoss(8)
|
|
|
|
else
|
|
//No effect
|
|
return
|
|
|
|
/datum/brain_trauma/severe/discoordination
|
|
name = "Discoordination"
|
|
desc = "Patient is unable to use complex tools or machinery."
|
|
scan_desc = "extreme discoordination"
|
|
gain_text = span_warning("You can barely control your hands!")
|
|
lose_text = span_notice("You feel in control of your hands again.")
|
|
|
|
/datum/brain_trauma/severe/discoordination/on_gain()
|
|
. = ..()
|
|
owner.apply_status_effect(/datum/status_effect/discoordinated)
|
|
|
|
/datum/brain_trauma/severe/discoordination/on_lose()
|
|
owner.remove_status_effect(/datum/status_effect/discoordinated)
|
|
return ..()
|
|
|
|
/datum/brain_trauma/severe/pacifism
|
|
name = "Traumatic Non-Violence"
|
|
desc = "Patient is extremely unwilling to harm others in violent ways."
|
|
scan_desc = "pacific syndrome"
|
|
gain_text = span_notice("You feel oddly peaceful.")
|
|
lose_text = span_notice("You no longer feel compelled to not harm.")
|
|
|
|
/datum/brain_trauma/severe/pacifism/on_gain()
|
|
ADD_TRAIT(owner, TRAIT_PACIFISM, TRAUMA_TRAIT)
|
|
..()
|
|
|
|
/datum/brain_trauma/severe/pacifism/on_lose()
|
|
REMOVE_TRAIT(owner, TRAIT_PACIFISM, TRAUMA_TRAIT)
|
|
..()
|
|
|
|
/datum/brain_trauma/severe/hypnotic_stupor
|
|
name = "Hypnotic Stupor"
|
|
desc = "Patient is prone to episodes of extreme stupor that leaves them extremely suggestible."
|
|
scan_desc = "oneiric feedback loop"
|
|
gain_text = span_warning("You feel somewhat dazed.")
|
|
lose_text = span_notice("You feel like a fog was lifted from your mind.")
|
|
|
|
/datum/brain_trauma/severe/hypnotic_stupor/on_lose() //hypnosis must be cleared separately, but brain surgery should get rid of both anyway
|
|
..()
|
|
owner.remove_status_effect(/datum/status_effect/trance)
|
|
|
|
/datum/brain_trauma/severe/hypnotic_stupor/on_life(seconds_per_tick, times_fired)
|
|
..()
|
|
if(SPT_PROB(0.5, seconds_per_tick) && !owner.has_status_effect(/datum/status_effect/trance))
|
|
owner.apply_status_effect(/datum/status_effect/trance, rand(100,300), FALSE)
|
|
|
|
/datum/brain_trauma/severe/hypnotic_trigger
|
|
name = "Hypnotic Trigger"
|
|
desc = "Patient has a trigger phrase set in their subconscious that will trigger a suggestible trance-like state."
|
|
scan_desc = "oneiric feedback loop"
|
|
gain_text = span_warning("You feel odd, like you just forgot something important.")
|
|
lose_text = span_notice("You feel like a weight was lifted from your mind.")
|
|
random_gain = FALSE
|
|
var/trigger_phrase = "Nanotrasen"
|
|
|
|
/datum/brain_trauma/severe/hypnotic_trigger/New(phrase)
|
|
..()
|
|
if(phrase)
|
|
trigger_phrase = phrase
|
|
|
|
/datum/brain_trauma/severe/hypnotic_trigger/on_lose() //hypnosis must be cleared separately, but brain surgery should get rid of both anyway
|
|
..()
|
|
owner.remove_status_effect(/datum/status_effect/trance)
|
|
|
|
/datum/brain_trauma/severe/hypnotic_trigger/handle_hearing(datum/source, list/hearing_args)
|
|
if(!owner.can_hear() || owner == hearing_args[HEARING_SPEAKER])
|
|
return
|
|
|
|
var/regex/reg = new("(\\b[REGEX_QUOTE(trigger_phrase)]\\b)","ig")
|
|
|
|
if(findtext(hearing_args[HEARING_RAW_MESSAGE], reg))
|
|
addtimer(CALLBACK(src, PROC_REF(hypnotrigger)), 10) //to react AFTER the chat message
|
|
hearing_args[HEARING_RAW_MESSAGE] = reg.Replace(hearing_args[HEARING_RAW_MESSAGE], span_hypnophrase("*********"))
|
|
|
|
/datum/brain_trauma/severe/hypnotic_trigger/proc/hypnotrigger()
|
|
to_chat(owner, span_warning("The words trigger something deep within you, and you feel your consciousness slipping away..."))
|
|
owner.apply_status_effect(/datum/status_effect/trance, rand(100,300), FALSE)
|
|
|
|
/datum/brain_trauma/severe/dyslexia
|
|
name = "Dyslexia"
|
|
desc = "Patient is unable to read or write."
|
|
scan_desc = "dyslexia"
|
|
gain_text = span_warning("You have trouble reading or writing...")
|
|
lose_text = span_notice("You suddenly remember how to read and write.")
|
|
|
|
/datum/brain_trauma/severe/dyslexia/on_gain()
|
|
ADD_TRAIT(owner, TRAIT_ILLITERATE, TRAUMA_TRAIT)
|
|
..()
|
|
|
|
/datum/brain_trauma/severe/dyslexia/on_lose()
|
|
REMOVE_TRAIT(owner, TRAIT_ILLITERATE, TRAUMA_TRAIT)
|
|
..()
|
|
|
|
/*
|
|
* Brain traumas that eldritch paintings apply
|
|
* This one is for "The Sister and He Who Wept" or /obj/structure/sign/painting/eldritch
|
|
*/
|
|
/datum/brain_trauma/severe/weeping
|
|
name = "The Weeping"
|
|
desc = "Patient hallucinates everyone as a figure called He Who Wept"
|
|
scan_desc = "H_E##%%%WEEP6%11S!!,)()"
|
|
gain_text = span_warning("HE WEEPS AND I WILL SEE HIM ONCE MORE")
|
|
lose_text = span_notice("You feel the tendrils of something slip from your mind.")
|
|
random_gain = FALSE
|
|
/// Our cooldown declare for causing hallucinations
|
|
COOLDOWN_DECLARE(weeping_hallucinations)
|
|
|
|
/datum/brain_trauma/severe/weeping/on_life(seconds_per_tick, times_fired)
|
|
if(owner.stat != CONSCIOUS || owner.IsSleeping() || owner.IsUnconscious())
|
|
return
|
|
// If they have examined a painting recently
|
|
if(HAS_TRAIT(owner, TRAIT_ELDRITCH_PAINTING_EXAMINE))
|
|
return
|
|
if(!COOLDOWN_FINISHED(src, weeping_hallucinations))
|
|
return
|
|
owner.cause_hallucination(/datum/hallucination/delusion/preset/heretic, "Caused by The Weeping brain trauma")
|
|
owner.add_mood_event("eldritch_weeping", /datum/mood_event/eldritch_painting/weeping)
|
|
COOLDOWN_START(src, weeping_hallucinations, 10 SECONDS)
|
|
..()
|
|
|
|
//This one is for "The First Desire" or /obj/structure/sign/painting/eldritch/desire
|
|
/datum/brain_trauma/severe/flesh_desire
|
|
name = "The Desire for Flesh"
|
|
desc = "Patient appears hungrier and only wishes to eat meats."
|
|
scan_desc = "H_(82882)G3E:__))9R"
|
|
gain_text = span_warning("I feel a hunger, only organs and flesh will feed it...")
|
|
lose_text = span_notice("You no longer feel the hunger for flesh...")
|
|
random_gain = FALSE
|
|
/// How much faster we loose hunger
|
|
var/hunger_rate = 15
|
|
|
|
/datum/brain_trauma/severe/flesh_desire/on_gain()
|
|
// Allows them to eat faster, mainly for flavor
|
|
ADD_TRAIT(owner, TRAIT_VORACIOUS, REF(src))
|
|
ADD_TRAIT(owner, TRAIT_FLESH_DESIRE, REF(src))
|
|
..()
|
|
|
|
/datum/brain_trauma/severe/flesh_desire/on_life(seconds_per_tick, times_fired)
|
|
// Causes them to need to eat at 10x the normal rate
|
|
owner.adjust_nutrition(-hunger_rate * HUNGER_FACTOR)
|
|
if(SPT_PROB(10, seconds_per_tick))
|
|
to_chat(owner, span_notice("You feel a ravenous hunger for flesh..."))
|
|
owner.overeatduration = max(owner.overeatduration - 200 SECONDS, 0)
|
|
|
|
/datum/brain_trauma/severe/flesh_desire/on_lose()
|
|
REMOVE_TRAIT(owner, TRAIT_VORACIOUS, REF(src))
|
|
REMOVE_TRAIT(owner, TRAIT_FLESH_DESIRE, REF(src))
|
|
return ..()
|
|
|
|
// This one is for "Lady out of gates" or /obj/item/wallframe/painting/eldritch/beauty
|
|
/datum/brain_trauma/severe/eldritch_beauty
|
|
name = "The Pursuit of Perfection"
|
|
desc = "Patient seems to furiously scratch at their body, the only way to make them cease is for them to remove their jumpsuit."
|
|
scan_desc = "I_)8(P_E##R&&F(E)C__T)"
|
|
gain_text = span_warning("I WILL RID MY FLESH FROM IMPERFECTION!! I WILL BE PERFECT WITHOUT MY SUITS!!")
|
|
lose_text = span_notice("You feel the influence of something slip your mind, and you feel content as you are.")
|
|
random_gain = FALSE
|
|
/// How much damage we deal with each scratch
|
|
var/scratch_damage = 0.5
|
|
|
|
/datum/brain_trauma/severe/eldritch_beauty/on_life(seconds_per_tick, times_fired)
|
|
// Jumpsuits ruin the "perfection" of the body
|
|
if(!owner.get_item_by_slot(ITEM_SLOT_ICLOTHING))
|
|
return
|
|
|
|
// Scratching code
|
|
var/obj/item/bodypart/bodypart = owner.get_bodypart(owner.get_random_valid_zone(even_weights = TRUE))
|
|
if(!(bodypart && IS_ORGANIC_LIMB(bodypart)) && bodypart.bodypart_flags & BODYPART_PSEUDOPART)
|
|
return
|
|
if(owner.incapacitated())
|
|
return
|
|
bodypart.receive_damage(scratch_damage)
|
|
if(SPT_PROB(33, seconds_per_tick))
|
|
to_chat(owner, span_notice("You scratch furiously at [bodypart] to ruin the cloth that hides the beauty!"))
|
|
|
|
// This one is for "Climb over the rusted mountain" or /obj/structure/sign/painting/eldritch/rust
|
|
/datum/brain_trauma/severe/rusting
|
|
name = "The Rusted Climb"
|
|
desc = "Patient seems to oxidise things around them at random, and seem to believe they are aiding a creature in climbing a mountin."
|
|
scan_desc = "C_)L(#_I_##M;B"
|
|
gain_text = span_warning("The rusted climb shall finish at the peak")
|
|
lose_text = span_notice("The rusted climb? Whats that? An odd dream to be sure.")
|
|
random_gain = FALSE
|
|
|
|
/datum/brain_trauma/severe/rusting/on_life(seconds_per_tick, times_fired)
|
|
var/atom/tile = get_turf(owner)
|
|
// Examining a painting should stop this effect to give counterplay
|
|
if(HAS_TRAIT(owner, TRAIT_ELDRITCH_PAINTING_EXAMINE))
|
|
return
|
|
|
|
if(SPT_PROB(50, seconds_per_tick))
|
|
to_chat(owner, span_notice("You feel eldritch energies pulse from your body!"))
|
|
tile.rust_heretic_act()
|