//Mild traumas are the most common; they are generally minor annoyances. //They can be cured with mannitol and patience, although brain surgery still works. //Most of the old brain damage effects have been transferred to the dumbness trauma. /datum/brain_trauma/mild /datum/brain_trauma/mild/hallucinations name = "Hallucinations" desc = "Patient suffers constant hallucinations." scan_desc = "schizophrenia" gain_text = "You feel your grip on reality slipping..." lose_text = "You feel more grounded." /datum/brain_trauma/mild/hallucinations/on_life(delta_time, times_fired) owner.hallucination = min(owner.hallucination + 10, 50) ..() /datum/brain_trauma/mild/hallucinations/on_lose() owner.hallucination = 0 ..() /datum/brain_trauma/mild/stuttering name = "Stuttering" desc = "Patient can't speak properly." scan_desc = "reduced mouth coordination" gain_text = "Speaking clearly is getting harder." lose_text = "You feel in control of your speech." /datum/brain_trauma/mild/stuttering/on_life(delta_time, times_fired) owner.stuttering = min(owner.stuttering + 5, 25) ..() /datum/brain_trauma/mild/stuttering/on_lose() owner.stuttering = 0 ..() /datum/brain_trauma/mild/dumbness name = "Dumbness" desc = "Patient has reduced brain activity, making them less intelligent." scan_desc = "reduced brain activity" gain_text = "You feel dumber." lose_text = "You feel smart again." /datum/brain_trauma/mild/dumbness/on_gain() ADD_TRAIT(owner, TRAIT_DUMB, TRAUMA_TRAIT) SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "dumb", /datum/mood_event/oblivious) ..() /datum/brain_trauma/mild/dumbness/on_life(delta_time, times_fired) owner.derpspeech = min(owner.derpspeech + 5, 25) if(DT_PROB(1.5, delta_time)) owner.emote("drool") //SKYRAT EDIT REMOVAL BEGIN /* else if(owner.stat == CONSCIOUS && DT_PROB(1.5, delta_time)) owner.say(pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage"), forced = "brain damage") */ //SKYRAT EDIT REMOVAL END ..() /datum/brain_trauma/mild/dumbness/on_lose() REMOVE_TRAIT(owner, TRAIT_DUMB, TRAUMA_TRAIT) owner.derpspeech = 0 SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "dumb") ..() /datum/brain_trauma/mild/speech_impediment name = "Speech Impediment" desc = "Patient is unable to form coherent sentences." scan_desc = "communication disorder" gain_text = "You can't seem to form any coherent thoughts!" lose_text = "Your mind feels more clear." /datum/brain_trauma/mild/speech_impediment/on_gain() ADD_TRAIT(owner, TRAIT_UNINTELLIGIBLE_SPEECH, TRAUMA_TRAIT) ..() /datum/brain_trauma/mild/speech_impediment/on_lose() REMOVE_TRAIT(owner, TRAIT_UNINTELLIGIBLE_SPEECH, TRAUMA_TRAIT) ..() /datum/brain_trauma/mild/concussion name = "Concussion" desc = "Patient's brain is concussed." scan_desc = "concussion" gain_text = "Your head hurts!" lose_text = "The pressure inside your head starts fading." /datum/brain_trauma/mild/concussion/on_life(delta_time, times_fired) if(DT_PROB(2.5, delta_time)) switch(rand(1,11)) if(1) owner.vomit() if(2,3) owner.dizziness += 10 if(4,5) owner.add_confusion(10) owner.blur_eyes(10) if(6 to 9) owner.slurring += 30 if(10) to_chat(owner, span_notice("You forget for a moment what you were doing.")) owner.Stun(20) if(11) to_chat(owner, span_warning("You faint.")) owner.Unconscious(80) ..() /datum/brain_trauma/mild/healthy name = "Anosognosia" desc = "Patient always feels healthy, regardless of their condition." scan_desc = "self-awareness deficit" gain_text = "You feel great!" lose_text = "You no longer feel perfectly healthy." /datum/brain_trauma/mild/healthy/on_gain() owner.set_screwyhud(SCREWYHUD_HEALTHY) ..() /datum/brain_trauma/mild/healthy/on_life(delta_time, times_fired) owner.set_screwyhud(SCREWYHUD_HEALTHY) //just in case of hallucinations owner.adjustStaminaLoss(-2.5 * delta_time) //no pain, no fatigue ..() /datum/brain_trauma/mild/healthy/on_lose() owner.set_screwyhud(SCREWYHUD_NONE) ..() /datum/brain_trauma/mild/muscle_weakness name = "Muscle Weakness" desc = "Patient experiences occasional bouts of muscle weakness." scan_desc = "weak motor nerve signal" gain_text = "Your muscles feel oddly faint." lose_text = "You feel in control of your muscles again." /datum/brain_trauma/mild/muscle_weakness/on_life(delta_time, times_fired) var/fall_chance = 1 if(owner.m_intent == MOVE_INTENT_RUN) fall_chance += 2 if(DT_PROB(0.5 * fall_chance, delta_time) && owner.body_position == STANDING_UP) to_chat(owner, span_warning("Your leg gives out!")) owner.Paralyze(35) else if(owner.get_active_held_item()) var/drop_chance = 1 var/obj/item/I = owner.get_active_held_item() drop_chance += I.w_class if(DT_PROB(0.5 * drop_chance, delta_time) && owner.dropItemToGround(I)) to_chat(owner, span_warning("You drop [I]!")) else if(DT_PROB(1.5, delta_time)) to_chat(owner, span_warning("You feel a sudden weakness in your muscles!")) owner.adjustStaminaLoss(50) ..() /datum/brain_trauma/mild/muscle_spasms name = "Muscle Spasms" desc = "Patient has occasional muscle spasms, causing them to move unintentionally." scan_desc = "nervous fits" gain_text = "Your muscles feel oddly faint." lose_text = "You feel in control of your muscles again." /datum/brain_trauma/mild/muscle_spasms/on_gain() owner.apply_status_effect(STATUS_EFFECT_SPASMS) ..() /datum/brain_trauma/mild/muscle_spasms/on_lose() owner.remove_status_effect(STATUS_EFFECT_SPASMS) ..() /datum/brain_trauma/mild/nervous_cough name = "Nervous Cough" desc = "Patient feels a constant need to cough." scan_desc = "nervous cough" gain_text = "Your throat itches incessantly..." lose_text = "Your throat stops itching." /datum/brain_trauma/mild/nervous_cough/on_life(delta_time, times_fired) if(DT_PROB(6, delta_time) && !HAS_TRAIT(owner, TRAIT_SOOTHED_THROAT)) if(prob(5)) to_chat(owner, "[pick("You have a coughing fit!", "You can't stop coughing!")]") owner.Immobilize(20) owner.emote("cough") addtimer(CALLBACK(owner, /mob/.proc/emote, "cough"), 6) addtimer(CALLBACK(owner, /mob/.proc/emote, "cough"), 12) owner.emote("cough") ..() /datum/brain_trauma/mild/expressive_aphasia name = "Expressive Aphasia" desc = "Patient is affected by partial loss of speech leading to a reduced vocabulary." scan_desc = "inability to form complex sentences" gain_text = "You lose your grasp on complex words." lose_text = "You feel your vocabulary returning to normal again." var/static/list/common_words = world.file2list("strings/1000_most_common.txt") /datum/brain_trauma/mild/expressive_aphasia/handle_speech(datum/source, list/speech_args) var/message = speech_args[SPEECH_MESSAGE] if(message) var/list/message_split = splittext(message, " ") var/list/new_message = list() for(var/word in message_split) var/suffix = "" var/suffix_foundon = 0 for(var/potential_suffix in list("." , "," , ";" , "!" , ":" , "?")) suffix_foundon = findtext(word, potential_suffix, -length(potential_suffix)) if(suffix_foundon) suffix = potential_suffix break if(suffix_foundon) word = copytext(word, 1, suffix_foundon) word = html_decode(word) if(lowertext(word) in common_words) new_message += word + suffix else if(prob(30) && message_split.len > 2) new_message += pick("uh","erm") break else var/list/charlist = text2charlist(word) charlist.len = round(charlist.len * 0.5, 1) shuffle_inplace(charlist) new_message += jointext(charlist, "") + suffix message = jointext(new_message, " ") speech_args[SPEECH_MESSAGE] = trim(message) /datum/brain_trauma/mild/mind_echo name = "Mind Echo" desc = "Patient's language neurons do not terminate properly, causing previous speech patterns to occasionally resurface spontaneously." scan_desc = "looping neural pattern" gain_text = "You feel a faint echo of your thoughts..." lose_text = "The faint echo fades away." var/list/hear_dejavu = list() var/list/speak_dejavu = list() /datum/brain_trauma/mild/mind_echo/handle_hearing(datum/source, list/hearing_args) if(owner == hearing_args[HEARING_SPEAKER]) return if(hear_dejavu.len >= 5) if(prob(25)) var/deja_vu = pick_n_take(hear_dejavu) var/static/regex/quoted_spoken_message = regex("\".+\"", "gi") hearing_args[HEARING_RAW_MESSAGE] = quoted_spoken_message.Replace(hearing_args[HEARING_RAW_MESSAGE], "\"[deja_vu]\"") //Quotes included to avoid cases where someone says part of their name return if(hear_dejavu.len >= 15) if(prob(50)) popleft(hear_dejavu) //Remove the oldest hear_dejavu += hearing_args[HEARING_RAW_MESSAGE] else hear_dejavu += hearing_args[HEARING_RAW_MESSAGE] /datum/brain_trauma/mild/mind_echo/handle_speech(datum/source, list/speech_args) if(speak_dejavu.len >= 5) if(prob(25)) var/deja_vu = pick_n_take(speak_dejavu) speech_args[SPEECH_MESSAGE] = deja_vu return if(speak_dejavu.len >= 15) if(prob(50)) popleft(speak_dejavu) //Remove the oldest speak_dejavu += speech_args[SPEECH_MESSAGE] else speak_dejavu += speech_args[SPEECH_MESSAGE]