From e231381688509c3ea041ddca6b80546b9cc82277 Mon Sep 17 00:00:00 2001 From: Doxxmedearly <38594443+Doxxmedearly@users.noreply.github.com> Date: Wed, 31 Mar 2021 10:56:49 -0500 Subject: [PATCH] Removes Brain Traumas (#11558) --- aurorastation.dme | 10 - code/__defines/chemistry.dm | 3 +- code/__defines/mobs.dm | 4 - code/controllers/subsystems/traumas.dm | 125 ------- code/datums/brain_damage/brain_trauma.dm | 59 --- code/datums/brain_damage/imaginary_friend.dm | 122 ------- code/datums/brain_damage/mild.dm | 288 --------------- code/datums/brain_damage/phobia.dm | 125 ------- code/datums/brain_damage/schizo.dm | 205 ----------- code/datums/brain_damage/severe.dm | 233 ------------ code/datums/brain_damage/special_ed.dm | 184 ---------- .../objects/items/weapons/chaplain_items.dm | 6 - code/game/objects/structures/therapy.dm | 13 +- code/modules/admin/admin_verbs.dm | 50 --- .../spawner/atom/imaginary_friend.dm | 10 - .../spawner/atom/split_personality.dm | 10 - .../mob/living/carbon/brain/brain_item.dm | 3 - code/modules/mob/living/carbon/human/human.dm | 33 -- code/modules/mob/living/carbon/human/life.dm | 10 +- code/modules/mob/living/carbon/human/say.dm | 10 - code/modules/organs/internal/brain.dm | 57 --- .../Chemistry-Reagents-Medicine.dm | 338 ++---------------- .../Chemistry-Reagents-Other.dm | 3 - code/modules/supermatter/supermatter.dm | 2 - code/modules/surgery/organs_internal.dm | 6 - .../changelogs/doxxmedearly - gut_traumas.yml | 9 + strings/phobia.json | 192 ---------- 27 files changed, 57 insertions(+), 2053 deletions(-) delete mode 100644 code/controllers/subsystems/traumas.dm delete mode 100644 code/datums/brain_damage/brain_trauma.dm delete mode 100644 code/datums/brain_damage/imaginary_friend.dm delete mode 100644 code/datums/brain_damage/mild.dm delete mode 100644 code/datums/brain_damage/phobia.dm delete mode 100644 code/datums/brain_damage/schizo.dm delete mode 100644 code/datums/brain_damage/severe.dm delete mode 100644 code/datums/brain_damage/special_ed.dm delete mode 100644 code/modules/ghostroles/spawner/atom/imaginary_friend.dm delete mode 100644 code/modules/ghostroles/spawner/atom/split_personality.dm create mode 100644 html/changelogs/doxxmedearly - gut_traumas.yml delete mode 100644 strings/phobia.json diff --git a/aurorastation.dme b/aurorastation.dme index 64d2c74ad0a..2537221b9d4 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -235,7 +235,6 @@ #include "code\controllers\subsystems\ticker.dm" #include "code\controllers\subsystems\timer.dm" #include "code\controllers\subsystems\trade.dm" -#include "code\controllers\subsystems\traumas.dm" #include "code\controllers\subsystems\virtual_reality.dm" #include "code\controllers\subsystems\vote.dm" #include "code\controllers\subsystems\zcopy.dm" @@ -282,13 +281,6 @@ #include "code\datums\records.dm" #include "code\datums\statistic.dm" #include "code\datums\weakref.dm" -#include "code\datums\brain_damage\brain_trauma.dm" -#include "code\datums\brain_damage\imaginary_friend.dm" -#include "code\datums\brain_damage\mild.dm" -#include "code\datums\brain_damage\phobia.dm" -#include "code\datums\brain_damage\schizo.dm" -#include "code\datums\brain_damage\severe.dm" -#include "code\datums\brain_damage\special_ed.dm" #include "code\datums\components\_component.dm" #include "code\datums\components\armor\armor.dm" #include "code\datums\components\multitool\_multitool.dm" @@ -1649,12 +1641,10 @@ #include "code\modules\ghostroles\spawner\atom\borer.dm" #include "code\modules\ghostroles\spawner\atom\diona_nymph.dm" #include "code\modules\ghostroles\spawner\atom\golem.dm" -#include "code\modules\ghostroles\spawner\atom\imaginary_friend.dm" #include "code\modules\ghostroles\spawner\atom\living_plant.dm" #include "code\modules\ghostroles\spawner\atom\mining_drone.dm" #include "code\modules\ghostroles\spawner\atom\posibrain.dm" #include "code\modules\ghostroles\spawner\atom\skeleton.dm" -#include "code\modules\ghostroles\spawner\atom\split_personality.dm" #include "code\modules\ghostroles\spawner\atom\syndicate_cyborg.dm" #include "code\modules\ghostroles\spawner\atom\wizard_familiar.dm" #include "code\modules\ghostroles\spawner\atom\wizardapprentice.dm" diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 63a9d076c3b..17b08aff5e4 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -65,10 +65,11 @@ #define CE_PAINKILLER "painkiller" #define CE_PULSE "xcardic" // increases or decreases heartrate #define CE_UNDEXTROUS "undextrous" // arms no work right -#define CE_HALLUCINATE "hallucinogen" //Makes hallucinations stronger or weaker +#define CE_HALLUCINATE "hallucinogen" // Makes hallucinations stronger or weaker #define CE_CRYO "cryogenic" // Prevents damage from being frozen #define CE_CLEARSIGHT "clearsight" // prevents the blurry eye chem side effect #define CE_STRAIGHTWALK "straightwalk" // prevents the confused walking chem side effect +#define CE_NOSTUTTER "nostutter" // helps alleviate stuttering // Apply healing effects #define CE_ANTIBIOTIC "antibiotic" // Thetamycin diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 1e641e23c26..00440beb1be 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -381,10 +381,6 @@ #define BRAIN_DAMAGE_MILD 10 #define BRAIN_DAMAGE_SEVERE 40 -#define BRAIN_TRAUMA_MILD /datum/brain_trauma/mild -#define BRAIN_TRAUMA_SEVERE /datum/brain_trauma/severe -#define BRAIN_TRAUMA_SPECIAL /datum/brain_trauma/special - #define CURE_CRYSTAL "crystal" #define CURE_SOLITUDE "solitude" #define CURE_HYPNOSIS "hypnosis" diff --git a/code/controllers/subsystems/traumas.dm b/code/controllers/subsystems/traumas.dm deleted file mode 100644 index 4074869a785..00000000000 --- a/code/controllers/subsystems/traumas.dm +++ /dev/null @@ -1,125 +0,0 @@ -var/datum/controller/subsystem/traumas/SStraumas - -/datum/controller/subsystem/traumas - name = "Traumas" - flags = SS_NO_FIRE - init_order = SS_INIT_MISC - var/list/phobia_types - var/list/phobia_words - var/list/phobia_mobs - var/list/phobia_objs - var/list/phobia_turfs - var/list/phobia_species - -#define PHOBIA_FILE "phobia.json" - -/datum/controller/subsystem/traumas/New() - NEW_SS_GLOBAL(SStraumas) - -/datum/controller/subsystem/traumas/Initialize() - phobia_types = list("spiders", "space", "security", "doctors", "clowns", "lizards", "cats", "humans", "skrell", "robots", "pests", "nanotrasen", "filth", "paranormals", "death", "darkness") - - phobia_words = list("spiders" = strings(PHOBIA_FILE, "spiders"), - "space" = strings(PHOBIA_FILE, "space"), - "security" = strings(PHOBIA_FILE, "security"), - "clowns" = strings(PHOBIA_FILE, "clowns"), - "doctors"= strings(PHOBIA_FILE, "doctors"), - "lizards" = strings(PHOBIA_FILE, "unathi"), - "cats" = strings(PHOBIA_FILE, "cats"), - "humans" = strings(PHOBIA_FILE, "humans"), - "skrell" = strings(PHOBIA_FILE, "skrell"), - "robots" = strings(PHOBIA_FILE, "robots"), - "pests" = strings(PHOBIA_FILE, "pests"), - "nanotrasen"= strings(PHOBIA_FILE, "nanotrasen"), - "filth" = strings(PHOBIA_FILE, "filth"), - "paranormals"= strings(PHOBIA_FILE, "paranormals"), - "death" = strings(PHOBIA_FILE, "death"), - "darkness" = strings(PHOBIA_FILE, "darkness") - ) - - phobia_mobs = list("spiders" = typecacheof(list(/mob/living/simple_animal/spiderbot, /mob/living/simple_animal/hostile/giant_spider)), - "security" = typecacheof(list(/mob/living/bot/secbot)), - "lizards" = typecacheof(list(/mob/living/simple_animal/lizard)), - "cats" = typecacheof(list(/mob/living/simple_animal/cat, /mob/living/simple_animal/familiar/pet/cat, /mob/living/simple_animal/cat/kitten)), - "robots" = typecacheof(list(/mob/living/silicon,/mob/living/bot, /mob/living/simple_animal/hostile/icarus_drone)), - "pests" = typecacheof(list(/mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/rat, /mob/living/carbon/alien/diona)), - "paranormals" = typecacheof(list(/mob/living/simple_animal/hostile/scarybat, /mob/living/simple_animal/hostile/true_changeling, - /mob/living/simple_animal/hostile/mimic, /mob/living/simple_animal/hostile/faithless, - /mob/living/simple_animal/construct)), - "death" = typecacheof(list(/mob/abstract/observer)) - ) - - phobia_objs = list("spiders" = typecacheof(list(/obj/effect/spider,/obj/item/toy/plushie/spider, /obj/effect/decal/cleanable/spiderling_remains)), - - "security" = typecacheof(list(/obj/item/clothing/under/rank/security, /obj/item/clothing/under/rank/warden, /obj/item/clothing/head/beret/security, - /obj/item/clothing/under/rank/head_of_security, /obj/item/clothing/under/det, /obj/item/clothing/glasses/hud/security, - /obj/item/melee/baton, /obj/item/gun/energy/taser, /obj/item/handcuffs, /obj/item/clothing/glasses/sunglasses/sechud, - /obj/machinery/door/airlock/security, /obj/item/clothing/under/rank/cadet, /obj/structure/sign/directions/security, - /obj/item/clothing/head/bio_hood/security, /obj/item/clothing/head/bomb_hood/security, /obj/item/clothing/head/helmet/space/void/security, - /obj/item/clothing/head/softcap/security, /obj/item/clothing/suit/storage/security, /obj/item/clothing/suit/bio_suit/security, - /obj/item/clothing/suit/bomb_suit/security, /obj/item/clothing/suit/storage/security/officer, /obj/item/clothing/suit/space/void/security, - /obj/item/clothing/suit/storage/hooded/wintercoat/security, /obj/item/device/magnetic_lock/security,/obj/item/toy/figure/secofficer, - /obj/item/gun/bang/sec, /obj/item/gun/projectile/sec, /obj/item/book/manual/wiki/security_space_law)), - - "clowns" = typecacheof(list(/obj/item/clothing/under/rank/clown, /obj/item/clothing/shoes/clown_shoes, - /obj/item/clothing/mask/gas/clown_hat, /obj/item/bananapeel, - /obj/item/bikehorn, /obj/item/modular_computer/handheld/pda/civilian/clown)), - - "cats" = typecacheof(list(/obj/item/clothing/head/tajaran, /obj/item/clothing/suit/storage/tajaran, - /obj/item/clothing/suit/storage/toggle/labcoat/tajaran, /obj/item/clothing/suit/storage/tajaran, - /obj/item/stack/material/animalhide/cat, /obj/item/holder/cat, /obj/item/toy/plushie/kitten)), - - "lizards" = typecacheof(list(/obj/item/toy/plushie/lizard,/obj/item/material/hatchet/unathiknife,/obj/item/rig/unathi, - /obj/item/clothing/suit/unathi/robe, /obj/structure/sign/flag/hegemony, /obj/item/stack/material/animalhide/lizard, - /obj/item/toy/plushie/lizard)), - - "skrell" = typecacheof(list(/obj/structure/sign/flag/jargon, /obj/item/clothing/ears/skrell, /obj/item/clothing/suit/space/void/skrell, - /obj/item/clothing/head/helmet/space/void/skrell, /obj/item/organ/internal/brain/skrell, /obj/item/organ/internal/eyes/skrell, - /obj/item/organ/internal/heart/skrell, /obj/item/organ/internal/kidneys/skrell, /obj/item/organ/internal/liver/skrell, /obj/item/organ/internal/lungs/skrell, - /obj/item/reagent_containers/food/snacks/skrellsnacks)), - - "robots" = typecacheof(list(/obj/item/device/electronic_assembly/drone, /obj/item/holder/drone, /obj/item/device/mmi/digital, - /obj/item/organ/internal/ipc_tag, /obj/machinery/computer/borgupload, /obj/item/clothing/suit/cyborg_suit, - /obj/machinery/cryopod/robot, /obj/machinery/robotic_fabricator, /obj/effect/decal/cleanable/blood/gibs/robot, /obj/effect/decal/remains/robot, - /obj/item/robot_parts, /obj/item/organ/internal/cell, /obj/item/organ/internal/data, /obj/item/toy/figure/borg)), - - "nanotrasen" = typecacheof(list(/obj/item/toy/balloon/nanotrasen, /obj/item/soap/nanotrasen, /obj/structure/sign/flag/nanotrasen, - /obj/item/clothing/suit/storage/toggle/leather_jacket/nanotrasen, /obj/item/clothing/suit/storage/toggle/brown_jacket/nanotrasen, /obj/item/storage/toolbox/lunchbox/nt, - /obj/structure/banner, /obj/structure/bed/chair/office/bridge, /obj/item/clothing/head/collectable/captain, - /obj/item/clothing/head/helmet/space/void/captain, /obj/item/clothing/suit/space/void/captain, /obj/item/clothing/suit/storage/hooded/wintercoat/captain, - /obj/item/clothing/under/captainformal, /obj/item/clothing/under/rank/captain, /obj/item/toy/figure/captain, /obj/item/card/id/captains_spare, - /obj/item/gun/energy/captain, /obj/item/stamp/captain, /obj/item/storage/backpack/captain, /obj/item/clothing/suit/storage/security)), - - "filth" = typecacheof(list(/obj/effect/decal/cleanable,/obj/effect/decal/remains,/obj/item/trash, /obj/machinery/portable_atmospherics/hydroponics)), - - "paranormals" = typecacheof(list(/obj/item/book/tome,/obj/item/nullrod,/obj/structure/constructshell, - /obj/structure/cult, /obj/structure/girder/cult, /obj/structure/grille/cult, /obj/effect/forcefield/cult, - /obj/effect/gateway, /obj/item/clothing/head/culthood, /obj/item/clothing/head/helmet/space/cult, /obj/item/clothing/shoes/cult, - /obj/item/clothing/suit/cultrobes, /obj/item/clothing/suit/space/cult, /obj/item/toy/cultsword, /obj/item/melee/cultblade, - /obj/item/storage/backpack/cultpack, /obj/item/storage/bible, /obj/effect/rune, /obj/item/spirit_board)), - - "doctors" = typecacheof(list(/obj/item/gun/launcher/syringe, /obj/item/reagent_containers/syringe, /obj/item/clothing/suit/storage/toggle/labcoat, - /obj/item/toy/figure/md, /obj/item/bedsheet/medical, /obj/item/rig/medical, /obj/item/storage/backpack/duffel/med, - /obj/item/storage/backpack/medic, /obj/item/storage/backpack/messenger/med, /obj/item/storage/belt/medical, - /obj/machinery/vending/medical, /obj/structure/closet/crate/medical, /obj/structure/closet/medical_wall, - /obj/structure/sign/greencross, /obj/item/clothing/accessory/armband/med, /obj/item/clothing/head/helmet/space/void/medical, /obj/item/clothing/mask/breath/medical, - /obj/item/clothing/under/rank/medical, /obj/item/surgery/scalpel, /obj/machinery/clonepod, /obj/item/storage/firstaid, /obj/machinery/optable, - /obj/item/clothing/accessory/armband/science, /obj/item/clothing/under/rank/scientist, /obj/machinery/door/airlock/science, /obj/machinery/door/airlock/medical)) - - ) - phobia_turfs = list("space" = typecacheof(list(/turf/space, /turf/simulated/open)), - "paranormals" = typecacheof(list(/turf/simulated/wall/cult, /turf/simulated/floor/cult)), - "filth" = typecacheof(list(/turf/simulated/floor/grass, /turf/simulated/mineral)), - "darkness" = typecacheof(list(/turf/unsimulated/mask)) //fuck this is so dangerously snowflake lohikar is going to eat my ass - ) - - phobia_species = list("lizards" = typecacheof(list(/datum/species/unathi)), - "cats" = typecacheof(list(/datum/species/tajaran)), - "skrell" = typecacheof(list(/datum/species/skrell)), - "robots" = typecacheof(list(/datum/species/machine)), - "pests" = typecacheof(list(/datum/species/diona, /datum/species/bug)), - "paranormals" = typecacheof(list(/datum/species/revenant, /datum/species/skeleton, /datum/species/golem)), - "humans" = typecacheof(list(/datum/species/human)) - ) - -#undef PHOBIA_FILE diff --git a/code/datums/brain_damage/brain_trauma.dm b/code/datums/brain_damage/brain_trauma.dm deleted file mode 100644 index 379d94a38c8..00000000000 --- a/code/datums/brain_damage/brain_trauma.dm +++ /dev/null @@ -1,59 +0,0 @@ -//Brain Traumas are the new actual brain damage. Brain damage itself acts as a way to acquire traumas: every time brain damage is dealt, there's a chance of receiving a trauma. -//This chance gets higher the higher the mob's brainloss is. Removing traumas is a separate thing from removing brain damage: you can get restored to full brain operativity, -//but keep the quirks, until repaired by Cataleptinol (for mild/special ones) or brain surgery (for severe ones). -/datum/brain_trauma - var/name = "Brain Trauma" - var/desc = "A trauma caused by brain damage, which causes issues to the patient." - var/scan_desc = "a generic brain trauma" //description when detected by a health scanner - var/mob/living/carbon/owner //the poor bastard - var/obj/item/organ/internal/brain/brain //the poor bastard's brain - var/gain_text = "You feel traumatized." - var/lose_text = "You no longer feel traumatized." - var/can_gain = TRUE //can this be gained through random traumas? - var/permanent = FALSE //can this be cured? - var/suppressed = 0 //currently being suppressed - var/cure_type //type of therapy that cures the trauma - //current cures: - //CURE_HYPNOSIS - cures traumas that alter behavior - //CURE_SOLITUDE - cures traumas that produce hallucination - //CURE_CRYSTAL - cures traumas that have physical effects - //CURE_SURGERY - cures traumas not covered above - -/datum/brain_trauma/New(obj/item/organ/internal/brain/B, _permanent) - brain = B - owner = B.owner - permanent = _permanent - if(owner) - on_gain() - -/datum/brain_trauma/Destroy() - brain.traumas -= src - if(owner) - on_lose() - brain = null - owner = null - return ..() - -//Called on life ticks -/datum/brain_trauma/proc/on_life() - if(owner.getBrainLoss() < brain.traumas.len) - owner.setBrainLoss(brain.traumas.len) - return - -//Called when given to a mob -/datum/brain_trauma/proc/on_gain() - to_chat(owner, gain_text) - -//Called when removed from a mob -/datum/brain_trauma/proc/on_lose(silent) - if(!silent) - to_chat(owner, lose_text) - owner.adjustBrainLoss(-1) - -//Called when hearing a spoken message -/datum/brain_trauma/proc/on_hear(message, speaker, message_language, raw_message, radio_freq) - return message - -//Called when speaking -/datum/brain_trauma/proc/on_say(message) - return message \ No newline at end of file diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm deleted file mode 100644 index eb87a3eb891..00000000000 --- a/code/datums/brain_damage/imaginary_friend.dm +++ /dev/null @@ -1,122 +0,0 @@ -/datum/brain_trauma/special/imaginary_friend - name = "Imaginary Friend" - desc = "Patient can see and hear an imaginary person." - scan_desc = "partial schizophrenia" - gain_text = "You feel in good company, for some reason." - lose_text = "You feel lonely again." - cure_type = CURE_SOLITUDE - var/mob/abstract/mental/friend/friend - -/datum/brain_trauma/special/imaginary_friend/on_gain() - ..() - make_friend() - -/datum/brain_trauma/special/imaginary_friend/on_life() - if(get_dist(owner, friend) > 9) - friend.yank() - if(!friend) - qdel(src) - -/datum/brain_trauma/special/imaginary_friend/on_lose() - ..() - QDEL_NULL(friend) - -/datum/brain_trauma/special/imaginary_friend/proc/make_friend() - friend = new(get_turf(src), src) - SSghostroles.add_spawn_atom("imaginary_friend", friend) - -/datum/brain_trauma/special/imaginary_friend/proc/reset_search() - if(src.friend && src.friend.key) - return - else - qdel(src) - -/mob/abstract/mental - universal_understand = 1 - incorporeal_move = INCORPOREAL_GHOST - density = 0 - -/mob/abstract/mental/friend - name = "imaginary friend" - real_name = "imaginary friend" - desc = "A wonderful yet fake friend." - see_in_dark = 0 - see_invisible = SEE_INVISIBLE_LIVING - var/icon/human_image - var/image/current_image - var/mob/living/carbon/owner - var/datum/brain_trauma/special/imaginary_friend/trauma - -/mob/abstract/mental/friend/LateLogin() - ..() - to_chat(src, "You are the imaginary friend of [owner]!") - to_chat(src, "You are absolutely loyal to your friend, no matter what.") - to_chat(src, "You cannot directly influence the world around you, but you can see what [owner] cannot.") - -/mob/abstract/mental/friend/Initialize(mapload, _trauma) - . = ..() - trauma = _trauma - owner = trauma.owner - var/gender = pick(MALE, FEMALE) - real_name = owner.species.get_random_name(gender) - name = real_name - var/list/candidates = list() - for(var/mob/living/L in living_mob_list) - candidates += L - var/mob/abstract/buddy = pick(candidates) - human_image = getFlatIcon(buddy) - Show() - -/mob/abstract/mental/friend/proc/Show() - if(owner.client) - owner.client.images.Remove(current_image) - if(client) - client.images.Remove(current_image) - current_image = image(human_image, src, null, MOB_LAYER) - current_image.override = TRUE - current_image.name = name - if(owner.client) - owner.client.images |= current_image - if(client) - client.images |= current_image - -/mob/abstract/mental/friend/Destroy() - if(owner.client) - owner.client.images.Remove(human_image) - if(client) - client.images.Remove(human_image) - SSghostroles.remove_spawn_atom("imaginary_friend", src) - return ..() - -/mob/abstract/mental/friend/proc/yank() - if(!client) //don't bother the user with a braindead ghost every few steps - return - forceMove(get_turf(owner)) - -/mob/abstract/mental/friend/say(message) - if (!message) - return - - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - - if(!message) - return - - var/rendered = "[name] says, \"[message]\"" - - to_chat(owner, "[rendered]") - to_chat(src, "[rendered]") - -/mob/abstract/mental/friend/emote(act,m_type=1,message = null) - return - -/mob/abstract/mental/friend/Move(NewLoc, Dir = 0) - loc = NewLoc - dir = Dir - if(get_dist(src, owner) > 9) - yank() - return TRUE - return TRUE - -/mob/abstract/mental/friend/movement_delay() - return 2 diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm deleted file mode 100644 index 4a0c1bc15ea..00000000000 --- a/code/datums/brain_damage/mild.dm +++ /dev/null @@ -1,288 +0,0 @@ -//Mild traumas are the most common; they are generally minor annoyances. -//They can be suppressed with minaphobin, but not chemically cured, 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." - cure_type = CURE_SOLITUDE - -/datum/brain_trauma/mild/hallucinations/on_life() - 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." - cure_type = CURE_CRYSTAL - -/datum/brain_trauma/mild/stuttering/on_life() - 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." - cure_type = CURE_CRYSTAL - -/datum/brain_trauma/mild/dumbness/on_gain() - owner.disabilities |= DUMB - ..() - -/datum/brain_trauma/mild/dumbness/on_life() - owner.tarded = min(owner.slurring + 5, 25) - if(prob(3)) - owner.emote("drool") - ..() - -/datum/brain_trauma/mild/dumbness/on_lose() - owner.disabilities &= ~DUMB - owner.tarded = 0 - ..() - -/datum/brain_trauma/mild/speech_impediment - name = "Speech Impediment" - desc = "Patient is unable to form coherent sentences." - scan_desc = "communication disorder" - gain_text = "You feel lost for words!" - lose_text = "You regain your bearing!" - cure_type = CURE_CRYSTAL - -/datum/brain_trauma/mild/speech_impediment/on_gain() - owner.disabilities |= UNINTELLIGIBLE - ..() - -/datum/brain_trauma/mild/speech_impediment/on_lose() - owner.disabilities &= ~UNINTELLIGIBLE - ..() - -/datum/brain_trauma/mild/tourettes - name = "Tourettes Syndrome" - desc = "Patient is compelled to vulgarity." - scan_desc = "vulgarity problem" - gain_text = "Your mind fills with foul language!" - lose_text = "Your mind returns to decency." - cure_type = CURE_CRYSTAL - can_gain = FALSE - -/datum/brain_trauma/mild/tourettes/on_gain() - owner.disabilities |= TOURETTES - ..() - -/datum/brain_trauma/mild/tourettes/on_lose() - owner.disabilities &= ~TOURETTES - ..() - -/datum/brain_trauma/mild/gertie - name = "Gerstmann Syndrome" - desc = "Patient displays severe left right disorientation." - scan_desc = "left-right disorientation" - gain_text = "You wonder to yourself, does three rights really make a left?!" - lose_text = "You remember that you can just turn left directly!" - cure_type = CURE_HYPNOSIS - -/datum/brain_trauma/mild/gertie/on_gain() - owner.disabilities |= GERTIE - ..() - -/datum/brain_trauma/mild/gertie/on_lose() - owner.disabilities &= ~GERTIE - ..() - -/datum/brain_trauma/mild/concussion - name = "Concussion" - desc = "Patient's brain is concussed." - scan_desc = "a concussion" - gain_text = "Your head hurts!" - lose_text = "The pressure inside your head starts fading." - cure_type = CURE_SURGERY - -/datum/brain_trauma/mild/concussion/on_life() - if(prob(25)) - switch(rand(1,9)) - if(1) - if(ishuman(owner)) - var/mob/living/carbon/human/H = owner - to_chat(owner, "Your stomach writhes with pain.") - H.vomit() - if(2,3) - to_chat(owner, "You feel light-headed.") - owner.dizziness = max(owner.slurring, 10) - if(4,5) - to_chat(owner, "it becomes hard to see for some reason.") - owner.confused = max(owner.slurring, 10) - owner.apply_effect(10,EYE_BLUR) - if(6 to 9) - to_chat(owner, "Your tongue feels thick in your mouth.") - owner.slurring = max(owner.slurring, 30) - - ..() - -/datum/brain_trauma/mild/concussion/on_lose() - owner.dizziness = 0 - owner.slurring = 0 - owner.confused = 0 - ..() - -/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." - cure_type = CURE_CRYSTAL - -/datum/brain_trauma/mild/muscle_weakness/on_life() - var/fall_chance = 5 - if(owner.m_intent == M_RUN) - fall_chance += 15 - if(prob(fall_chance) && !owner.lying && !owner.buckled_to) - to_chat(owner, "Your leg gives out!") - owner.Weaken(5) - - else if(owner.get_active_hand()) - var/drop_chance = 15 - var/obj/item/I = owner.get_active_hand() - drop_chance += I.w_class - if(prob(drop_chance) && owner.drop_from_inventory(I)) - to_chat(owner, "You drop [I]!") - - else if(prob(3)) - to_chat(owner, "You feel a sudden weakness in your muscles!") - owner.adjustHalLoss(25) - ..() - -/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." - cure_type = CURE_CRYSTAL - -/datum/brain_trauma/mild/muscle_spasms/on_life() - if(prob(25)) - switch(rand(1,5)) - if(1) - if(owner.canmove) - to_chat(owner, "Your leg spasms!") - step(owner, pick(cardinal)) - if(2) - if(owner.incapacitated()) - return - var/obj/item/I = owner.get_active_hand() - if(I) - to_chat(owner, "Your fingers spasm!") - I.attack_self(owner) - if(3) - var/prev_intent = owner.a_intent - owner.set_intent(I_HURT) - - var/list/mob/living/targets = list() - var/range = 1 - if(istype(owner.get_active_hand(), /obj/item/gun)) //get targets to shoot at - range = 7 - for(var/turf/T in oview(owner, range)) - targets += T - - else - for(var/mob/M in oview(owner, range)) - if(isliving(M)) - targets += M - if(LAZYLEN(targets)) - to_chat(owner, "Your arm spasms!") - owner.ClickOn(pick(targets)) - owner.set_intent(prev_intent) - if(4) - var/prev_intent = owner.a_intent - owner.set_intent(I_HURT) - to_chat(owner, "Your arm spasms!") - owner.ClickOn(owner) - owner.set_intent(prev_intent) - if(5) - if(owner.incapacitated()) - return - var/obj/item/I =owner.get_active_hand() - var/list/turf/targets = list() - for(var/turf/T in oview(owner, 3)) - targets += T - if(LAZYLEN(targets) && I) - to_chat(owner, "Your arm spasms!") - owner.throw_item(pick(targets)) - ..() - -/datum/brain_trauma/mild/nearsightedness - name = "Cerebral Near-Blindness" - desc = "Patient's brain is loosely connected to its eyes." - scan_desc = "minor damage to the brain's occipital lobe" - gain_text = "You can barely see!" - lose_text = "Your vision returns." - cure_type = CURE_SURGERY - -/datum/brain_trauma/mild/nearsightedness/on_gain() - owner.disabilities |= NEARSIGHTED - ..() - -//no fiddling with genetics to get out of this one -/datum/brain_trauma/mild/nearsightedness/on_life() - if(!(owner.disabilities & NEARSIGHTED)) - on_gain() - ..() - -/datum/brain_trauma/mild/nearsightedness/on_lose() - if(owner.disabilities & NEARSIGHTED) - owner.disabilities &= ~NEARSIGHTED - ..() - -/datum/brain_trauma/mild/colorblind - name = "Partial Colorblindedness" - desc = "Patient's brain is loosely connected to ocular cones." - scan_desc = "minor damage to the brain's occipital lobe" - gain_text = "Your perception of color distorts!" - lose_text = "Your vision returns." - cure_type = CURE_SURGERY - var/colorblindedness - -/datum/brain_trauma/mild/colorblind/on_gain() - colorblindedness = pick("deuteranopia", "protanopia", "tritanopia") - switch(colorblindedness) - if("deuteranopia") - owner.add_client_color(/datum/client_color/deuteranopia) - if("protanopia") - owner.add_client_color(/datum/client_color/protanopia) - if("tritanopia") - owner.add_client_color(/datum/client_color/tritanopia) - ..() - -/datum/brain_trauma/mild/colorblind/on_life() - if(owner.client && !owner.client.color) - on_gain() - -/datum/brain_trauma/mild/colorblind/on_lose() - switch(colorblindedness) - if("deuteranopia") - owner.remove_client_color(/datum/client_color/deuteranopia) - if("protanopia") - owner.remove_client_color(/datum/client_color/protanopia) - if("tritanopia") - owner.remove_client_color(/datum/client_color/tritanopia) - ..() \ No newline at end of file diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm deleted file mode 100644 index 962cf3277ff..00000000000 --- a/code/datums/brain_damage/phobia.dm +++ /dev/null @@ -1,125 +0,0 @@ -/datum/brain_trauma/mild/phobia - name = "Phobia" - desc = "Patient is unreasonably afraid of something." - scan_desc = "phobia" - gain_text = "" - lose_text = "" - var/phobia_type - var/next_check = 0 - var/next_scare = 0 - var/list/trigger_words - //instead of cycling every atom, only cycle the relevant types - var/list/trigger_mobs - var/list/trigger_objs //also checked in mob equipment - var/list/trigger_turfs - var/list/trigger_species - cure_type = CURE_HYPNOSIS - -/datum/brain_trauma/mild/phobia/New(mob/living/carbon/C, _permanent, specific_type) - phobia_type = specific_type - if(!phobia_type) - phobia_type = pick(SStraumas.phobia_types) - - gain_text = "You start finding [phobia_type] very unnerving..." - lose_text = "You no longer feel afraid of [phobia_type]." - scan_desc += " of [phobia_type]" - trigger_words = SStraumas.phobia_words[phobia_type] - trigger_mobs = SStraumas.phobia_mobs[phobia_type] - trigger_objs = SStraumas.phobia_objs[phobia_type] - trigger_turfs = SStraumas.phobia_turfs[phobia_type] - trigger_species = SStraumas.phobia_species[phobia_type] - ..() - -/datum/brain_trauma/mild/phobia/on_life() - ..() - if(owner.eye_blind) - if(phobia_type == "darkness" && prob(25)) - freak_out() //rip - return - if(world.time > next_check && world.time > next_scare) - next_check = world.time + 50 - var/list/seen_atoms = view(7, owner) - - if(LAZYLEN(trigger_objs)) - for(var/obj/O in seen_atoms) - if(is_type_in_typecache(O, trigger_objs)) - freak_out(O) - return - - if(LAZYLEN(trigger_turfs)) - for(var/turf/T in seen_atoms) - if(is_type_in_typecache(T, trigger_turfs)) - freak_out(T) - return - if((T.get_lumcount(0,1) <= 0.25) && phobia_type == "darkness") //probably snowflake but can't think of a better way without creating a new trauma type entirely - freak_out(T) - return - - if(LAZYLEN(trigger_mobs) || LAZYLEN(trigger_objs)) - for(var/mob/M in seen_atoms) - if(is_type_in_typecache(M, trigger_mobs)) - freak_out(M) - return - - if((M.stat == DEAD) && phobia_type == "death") //probably snowflake but can't think of a better way without creating a new trauma type entirely - freak_out(M) - return - - else if(ishuman(M)) //check their equipment for trigger items - var/mob/living/carbon/human/H = M - - if(LAZYLEN(trigger_species) && H.species && is_type_in_typecache(H.species, trigger_species) && H != owner) - freak_out(H) - - for(var/X in H.contents) - var/obj/I = X - if(!QDELETED(I) && is_type_in_typecache(I, trigger_objs)) - freak_out(I) - return - -/datum/brain_trauma/mild/phobia/on_hear(message, speaker, message_language, raw_message, radio_freq) - if(owner.disabilities & DEAF || world.time < next_scare) //words can't trigger you if you can't hear them *taps head* - return message - for(var/word in trigger_words) - if(findtext(message, word)) - addtimer(CALLBACK(src, .proc/freak_out, null, word), 10) //to react AFTER the chat message - break - return message - -/datum/brain_trauma/mild/phobia/on_say(message) - for(var/word in trigger_words) - if(findtext(message, word)) - to_chat(owner, "You can't bring yourself to say the word \"[word]\"!") - return "" - return message - -/datum/brain_trauma/mild/phobia/proc/freak_out(atom/reason, trigger_word) - next_scare = world.time + 120 - var/message = pick("spooks you to the bone", "shakes you up", "terrifies you", "sends you into a panic", "sends chills down your spine") - if(reason) - to_chat(owner, "Seeing [reason] [message]!") - else if(trigger_word) - to_chat(owner, "Hearing \"[trigger_word]\" [message]!") - else - to_chat(owner, "Something [message]!") - var/reaction = rand(1,4) - owner.emote("scream") - switch(reaction) - if(1) - to_chat(owner, "You are paralyzed with fear!") - owner.Stun(3) - owner.Jitter(15) - if(2) - owner.Jitter(5) - owner.say("AAARRRGGGH!!") - if(reason) - owner.pointed(reason) - if(3) - to_chat(owner, "You shut your eyes in terror!") - owner.Jitter(5) - owner.eye_blind += 10 - if(4) - owner.dizziness += 10 - owner.confused += 10 - owner.Jitter(10) - owner.stuttering += 10 \ No newline at end of file diff --git a/code/datums/brain_damage/schizo.dm b/code/datums/brain_damage/schizo.dm deleted file mode 100644 index 47af1953176..00000000000 --- a/code/datums/brain_damage/schizo.dm +++ /dev/null @@ -1,205 +0,0 @@ -#define OWNER 0 -#define STRANGER 1 - -/datum/brain_trauma/severe/split_personality - name = "Split Personality" - desc = "Patient's brain is split into two personalities, which randomly switch control of the body." - scan_desc = "conflicting neuroimaging reports" - gain_text = "You feel like your mind was split in two." - lose_text = "You feel alone again." - cure_type = CURE_SOLITUDE - var/current_controller = OWNER - var/initialized = FALSE //to prevent personalities deleting themselves while we wait for ghosts - var/mob/living/mental/split_personality/stranger_backseat //there's two so they can swap without overwriting - var/mob/living/mental/split_personality/owner_backseat - -/datum/brain_trauma/severe/split_personality/on_gain() - ..() - make_backseats() - -/datum/brain_trauma/severe/split_personality/proc/make_backseats() - stranger_backseat = new(owner, src) - SSghostroles.add_spawn_atom("split_personality", stranger_backseat) - owner_backseat = new(owner, src) - -/datum/brain_trauma/severe/split_personality/on_life() - if(owner.stat == DEAD) - if(current_controller != OWNER) - switch_personalities() - qdel(src) - else if(prob(3)) - switch_personalities() - ..() - -/datum/brain_trauma/severe/split_personality/on_lose() - if(current_controller != OWNER) //it would be funny to cure a guy only to be left with the other personality, but it seems too cruel - switch_personalities() - QDEL_NULL(stranger_backseat) - QDEL_NULL(owner_backseat) - ..() - -/datum/brain_trauma/severe/split_personality/proc/switch_personalities() - if(QDELETED(owner) || owner.stat == DEAD || QDELETED(stranger_backseat) || QDELETED(owner_backseat)) - return - - var/mob/living/mental/split_personality/current_backseat - var/mob/living/mental/split_personality/free_backseat - if(current_controller == OWNER) - current_backseat = stranger_backseat - free_backseat = owner_backseat - else - current_backseat = owner_backseat - free_backseat = stranger_backseat - - log_game("[current_backseat]/([current_backseat.ckey]) assumed control of [owner]/([owner.ckey]) due to [src]. (Original owner: [current_controller == OWNER ? owner.ckey : current_backseat.ckey])") - to_chat(owner, "You feel your control being taken away... your other personality is in charge now!") - to_chat(current_backseat, "You manage to take control of your body!") - - //Body to backseat - - var/h2b_id = owner.computer_id - var/h2b_ip= owner.lastKnownIP - owner.computer_id = null - owner.lastKnownIP = null - - free_backseat.ckey = owner.ckey - - free_backseat.name = owner.name - - if(owner.mind) - free_backseat.mind = owner.mind - - if(!free_backseat.computer_id) - free_backseat.computer_id = h2b_id - - if(!free_backseat.lastKnownIP) - free_backseat.lastKnownIP = h2b_ip - - //Backseat to body - - var/s2h_id = current_backseat.computer_id - var/s2h_ip= current_backseat.lastKnownIP - current_backseat.computer_id = null - current_backseat.lastKnownIP = null - - owner.ckey = current_backseat.ckey - owner.mind = current_backseat.mind - - if(!owner.computer_id) - owner.computer_id = s2h_id - - if(!owner.lastKnownIP) - owner.lastKnownIP = s2h_ip - - current_controller = !current_controller - - -/mob/living/mental/split_personality - name = "split personality" - real_name = "unknown conscience" - var/mob/living/carbon/body - var/datum/brain_trauma/severe/split_personality/trauma - -/mob/living/mental/split_personality/Initialize(mapload, _trauma) - if(iscarbon(loc)) - body = loc - name = body.real_name - real_name = body.real_name - trauma = _trauma - return ..() - -/mob/living/mental/split_personality/Life() - if(QDELETED(body)) - qdel(src) //in case trauma deletion doesn't already do it - - if((body.stat == DEAD && trauma.owner_backseat == src)) - trauma.switch_personalities() - qdel(trauma) - - //if one of the two ghosts, the other one stays permanently - if(!body.client && trauma.initialized) - trauma.switch_personalities() - qdel(trauma) - - ..() - -/mob/living/mental/split_personality/LateLogin() - ..() - to_chat(src, "As a split personality, you cannot do anything but observe. However, you will eventually gain control of your body, switching places with the current personality.") - -/mob/living/mental/split_personality/say(message) - to_chat(src, "You cannot speak, your other self is controlling your body!") - return FALSE - -/mob/living/mental/split_personality/emote(message) - return - -/mob/living/mental/split_personality/Destroy() - SSghostroles.remove_spawn_atom("split_personality", src) - return ..() - -///////////////BRAINWASHING//////////////////// - -/datum/brain_trauma/severe/split_personality/brainwashing - name = "Split Personality" - desc = "Patient's brain is split into two personalities, which randomly switch control of the body." - scan_desc = "complete lobe separation" - gain_text = "" - lose_text = "You are free of your brainwashing." - can_gain = FALSE - var/codeword - var/objective - -/datum/brain_trauma/severe/split_personality/brainwashing/New(obj/item/organ/internal/brain/B, _permanent, _codeword, _objective) - ..() - if(_codeword) - codeword = _codeword - else - codeword = pick(strings("ion_laws.json", "ionabstract")\ - | strings("ion_laws.json", "ionobjects")\ - | strings("ion_laws.json", "ionadjectives")\ - | strings("ion_laws.json", "ionthreats")\ - | strings("ion_laws.json", "ionfood")\ - | strings("ion_laws.json", "iondrinks")) - -/datum/brain_trauma/severe/split_personality/brainwashing/on_gain() - ..() - var/mob/living/mental/split_personality/traitor/traitor_backseat = stranger_backseat - traitor_backseat.codeword = codeword - traitor_backseat.objective = objective - -/datum/brain_trauma/severe/split_personality/brainwashing/make_backseats() - stranger_backseat = new /mob/living/mental/split_personality/traitor(owner, src, codeword, objective) - owner_backseat = new(owner, src) - -/datum/brain_trauma/severe/split_personality/brainwashing/on_life() - return //no random switching - -/datum/brain_trauma/severe/split_personality/brainwashing/on_hear(message, speaker, message_language, raw_message, radio_freq) - if(owner.disabilities & DEAF || owner == speaker) - return message - if(findtext(message, codeword)) - message = replacetext(message, codeword, "[codeword]") - addtimer(CALLBACK(src, /datum/brain_trauma/severe/split_personality.proc/switch_personalities), 10) - return message - -/datum/brain_trauma/severe/split_personality/brainwashing/on_say(message) - if(findtext(message, codeword)) - return "" //oh hey did you want to tell people about the secret word to bring you back? - return message - -/mob/living/mental/split_personality/traitor - name = "split personality" - real_name = "unknown conscience" - var/objective - var/codeword - -/mob/living/mental/split_personality/traitor/LateLogin() - ..() - to_chat(src, "As a brainwashed personality, you cannot do anything yet but observe. However, you may gain control of your body if you hear the special codeword, switching places with the current personality.") - to_chat(src, "Your activation codeword is: [codeword]") - if(objective) - to_chat(src, "Your master left you an objective: [objective]. Follow it at all costs when in control.") - -#undef OWNER -#undef STRANGER diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm deleted file mode 100644 index 84ac83c670c..00000000000 --- a/code/datums/brain_damage/severe.dm +++ /dev/null @@ -1,233 +0,0 @@ -//Severe traumas, when your brain gets abused way too much. -//These range from very annoying to completely debilitating. - -/datum/brain_trauma/severe - -/datum/brain_trauma/severe/mute - name = "Mutism" - desc = "Patient is completely unable to speak." - scan_desc = "extensive damage to the brain's language center" - gain_text = "You forget how to speak!" - lose_text = "You suddenly remember how to speak." - cure_type = CURE_CRYSTAL - -/datum/brain_trauma/severe/mute/on_gain() - owner.sdisabilities |= MUTE - ..() - -//no fiddling with genetics to get out of this one -/datum/brain_trauma/severe/mute/on_life() - if(!(owner.sdisabilities & MUTE)) - on_gain() - ..() - -/datum/brain_trauma/severe/mute/on_lose() - owner.sdisabilities &= ~MUTE - ..() - -/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 = "You can't see!" - lose_text = "Your vision returns." - cure_type = CURE_SURGERY - -/datum/brain_trauma/severe/blindness/on_gain() - owner.sdisabilities |= BLIND - ..() - -//no fiddling with genetics to get out of this one -/datum/brain_trauma/severe/blindness/on_life() - if(!(owner.sdisabilities & BLIND)) - on_gain() - ..() - -/datum/brain_trauma/severe/blindness/on_lose() - if(owner.sdisabilities & BLIND) - owner.sdisabilities &= ~BLIND - ..() - -/datum/brain_trauma/severe/paralysis - name = "Paralysis" - desc = "Patient's brain can no longer control its motor functions." - scan_desc = "cerebral paralysis" - gain_text = "You can't feel your body anymore!" - lose_text = "You can feel your limbs again!" - cure_type = CURE_SURGERY - can_gain = FALSE - -/datum/brain_trauma/severe/paralysis/on_life() - owner.Weaken(200) - ..() - -/datum/brain_trauma/severe/paralysis/on_lose() - owner.SetWeakened(0) - ..() - -/datum/brain_trauma/severe/narcolepsy - name = "Narcolepsy" - desc = "Patient may involuntarily fall asleep during normal activities." - scan_desc = "traumatic narcolepsy" - gain_text = "You have a constant feeling of drowsiness..." - lose_text = "You feel awake and aware again." - cure_type = CURE_HYPNOSIS - can_gain = FALSE - -/datum/brain_trauma/severe/narcolepsy/on_life() - ..() - if(owner.stat == UNCONSCIOUS || owner.sleeping > 0) - return - var/sleep_chance = 5 - if(owner.m_intent == M_RUN) - sleep_chance += 15 - if(owner.drowsyness) - sleep_chance += owner.drowsyness + 5 - if(owner.drowsyness >= 66) - owner.drowsyness = 0 - if(prob(sleep_chance)) - to_chat(owner, "You fall asleep.") - owner.Sleeping(60) - else if(prob(sleep_chance * 2)) - to_chat(owner, "You feel tired...") - owner.drowsyness += 10 - -/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 = "severe monophobia" - gain_text = "" - lose_text = "You feel like you could be safe on your own." - var/stress = 0 - cure_type = CURE_HYPNOSIS - -/datum/brain_trauma/severe/monophobia/on_gain() - ..() - if(check_alone()) - to_chat(owner, "You feel really lonely...") - else - to_chat(owner, "You feel safe, as long as you have people around you.") - -/datum/brain_trauma/severe/monophobia/on_life() - ..() - if(check_alone()) - stress = min(stress + 0.5, 100) - if(stress > 10 && (prob(5))) - stress_reaction() - else - stress -= 4 - -/datum/brain_trauma/severe/monophobia/proc/check_alone() - if(owner.disabilities & BLIND) - return TRUE - for(var/mob/M in oview(owner, 7)) - if(!isliving(M)) //ghosts ain't people - continue - if((istype(M, /mob/living/simple_animal)) || 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, "You feel sick...") - else - to_chat(owner, "You feel really sick at the thought of being alone!") - addtimer(CALLBACK(owner, /mob/living/carbon/human.proc/vomit, high_stress), 50) //blood vomit if high stress - if(2) - if(!high_stress) - to_chat(owner, "You can't stop shaking...") - owner.dizziness += 20 - owner.confused += 20 - owner.Jitter(20) - else - to_chat(owner, "You feel weak and scared! If only you weren't alone...") - owner.dizziness += 20 - owner.confused += 20 - owner.Jitter(20) - owner.adjustHalLoss(50) - - if(3, 4) - if(!high_stress) - to_chat(owner, "You feel really lonely...") - else - to_chat(owner, "You're going mad with loneliness!") - owner.hallucination += 20 - - if(5) - if(!high_stress) - to_chat(owner, "Your heart skips a beat.") - owner.adjustOxyLoss(8) - else - if(prob(15) && ishuman(owner)) - var/mob/living/carbon/human/H = owner - var/obj/item/organ/internal/heart/heart = H.internal_organs_by_name[BP_HEART] - heart.take_damage(heart.min_bruised_damage) - to_chat(H, "You feel a stabbing pain in your heart!") - else - to_chat(owner, "You feel your heart lurching in your chest...") - owner.adjustOxyLoss(8) - -/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 = "You have trouble forming words in your head..." - lose_text = "You suddenly remember how languages work." - var/list/prev_languages = list() - var/datum/language_holder/mob_language - cure_type = CURE_SURGERY - -/datum/brain_trauma/severe/aphasia/on_gain() - for(var/datum/language/L in owner.languages) - prev_languages.Add(L) - owner.remove_language(L.name) - owner.add_language(LANGUAGE_GIBBERING) - ..() - -/datum/brain_trauma/severe/aphasia/on_lose() - for(var/datum/language/L in prev_languages) - owner.add_language(L.name) - prev_languages.Remove(L) - owner.remove_language(LANGUAGE_GIBBERING) - ..() - -/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 = "You feel oddly peaceful." - lose_text = "You no longer feel compelled to not harm." - cure_type = CURE_HYPNOSIS - -/datum/brain_trauma/severe/pacifism/on_gain() - owner.disabilities |= PACIFIST - ..() - -/datum/brain_trauma/severe/pacifism/on_lose() - owner.disabilities &= ~PACIFIST - ..() - -/datum/brain_trauma/severe/total_colorblind - name = "Total Colorblindedness" - desc = "Patient's brain is loosely connected to ocular cones." - scan_desc = "minor damage to the brain's occipital lobe" - gain_text = "Your perception of color vanishes!" - lose_text = "Your vision returns." - -/datum/brain_trauma/severe/total_colorblind/on_gain() - owner.add_client_color(/datum/client_color/monochrome) - ..() - -/datum/brain_trauma/severe/total_colorblind/on_life() - if(owner.client && !owner.client.color) - on_gain() - -/datum/brain_trauma/severe/total_colorblind/on_lose() - owner.remove_client_color(/datum/client_color/monochrome) - ..() \ No newline at end of file diff --git a/code/datums/brain_damage/special_ed.dm b/code/datums/brain_damage/special_ed.dm deleted file mode 100644 index d19033e8c12..00000000000 --- a/code/datums/brain_damage/special_ed.dm +++ /dev/null @@ -1,184 +0,0 @@ -//Brain traumas that are rare and/or somewhat beneficial; -//they are the easiest to cure, which means that if you want -//to keep them, you can't cure your other traumas -/datum/brain_trauma/special - -/datum/brain_trauma/special/bluespace_prophet - name = "Bluespace Prophecy" - desc = "Patient can sense the bob and weave of bluespace around them, showing them passageways no one else can see." - scan_desc = "bluespace attunement" - gain_text = "You feel the bluespace pulsing around you..." - lose_text = "The faint pulsing of bluespace fades into silence." - var/next_portal = 0 - cure_type = CURE_SURGERY - -/datum/brain_trauma/special/bluespace_prophet/on_life() - if(world.time > next_portal) - next_portal = world.time + 100 - var/list/turf/possible_turfs = list() - for(var/turf/T in range(owner, 8)) - if(!T.density) - var/clear = TRUE - for(var/obj/O in T) - if(O.density) - clear = FALSE - break - if(clear) - possible_turfs += T - - if(!LAZYLEN(possible_turfs)) - return - - var/turf/first_turf = pick(possible_turfs) - if(!first_turf) - return - - possible_turfs -= (possible_turfs & range(first_turf, 3)) - - var/turf/second_turf = pick(possible_turfs) - if(!second_turf) - return - - var/obj/effect/bluespace_stream/first = new(first_turf, owner) - var/obj/effect/bluespace_stream/second = new(second_turf, owner) - - first.linked_to = second - second.linked_to = first - first.seer = owner - second.seer = owner - -/obj/effect/bluespace_stream - name = "bluespace stream" - desc = "You see a hidden pathway through bluespace..." - var/image_icon = 'icons/effects/effects.dmi' - var/image_state = "bluestream" - var/image_layer = 4.1 - invisibility = INVISIBILITY_OBSERVER - var/obj/effect/bluespace_stream/linked_to - var/mob/living/carbon/seer - var/mob/living/carbon/target = null - var/image/current_image = null - -/obj/effect/bluespace_stream/Initialize(mapload, var/mob/living/carbon/T) - . = ..() - target = T - current_image = GetImage() - if(target.client) - target.client.images |= current_image - QDEL_IN(src, 300) - -/obj/effect/bluespace_stream/proc/GetImage() - var/image/I = image(image_icon,src,image_state,image_layer,dir=src.dir) - return I - -/obj/effect/overlay/temp/bluespace_fissure - name = "bluespace fissure" - icon_state = "bluestream_fade" - duration = 9 - -/obj/effect/bluespace_stream/attack_hand(mob/user) - if(user != seer || !linked_to) - return - var/slip_in_message = pick("slides sideways in an odd way, and disappears", "jumps into an unseen dimension",\ - "sticks one leg straight out, wiggles their foot, and is suddenly gone", "stops, then blinks out of reality", \ - "is pulled into an invisible vortex, vanishing from sight") - var/slip_out_message = pick("silently fades in", "leaps out of thin air","appears", "walks out of an invisible doorway",\ - "slides out of a fold in spacetime") - to_chat(user, "You try to align with the bluespace stream...") - if(do_after(user, 20)) - new /obj/effect/overlay/temp/bluespace_fissure(get_turf(src)) - new /obj/effect/overlay/temp/bluespace_fissure(get_turf(linked_to)) - user.forceMove(get_turf(linked_to)) - user.visible_message(SPAN_WARNING("[user] [slip_in_message]."), SPAN_NOTICE("You enter \the [src]...")) - user.visible_message(SPAN_WARNING("[user] [slip_out_message]."), SPAN_NOTICE("...and find your way to the other side.")) - -/datum/brain_trauma/special/love - name = "Hyper-dependency" - desc = "Patient feels lovesick and is emotionally dependent to a specific person." - scan_desc = "severe dependency" - gain_text = "" - lose_text = "You feel love leave your heart." - var/stress = 0 - var/datum/weakref/beloved = null - cure_type = CURE_HYPNOSIS - -/datum/brain_trauma/special/love/on_gain() - ..() - for(var/mob/living/L in view(7,owner)) - if(L != owner) - beloved = L - break - if(beloved) - to_chat(owner, "You can't help but love [beloved]. You can't bear to be apart from them, and would do anything they say.") - - else - to_chat(owner, "You feel a brief burst of passion, but it quickly fades.") - qdel() - -/datum/brain_trauma/special/love/on_life() - ..() - if(check_alone()) - stress = min(stress + 0.5, 100) - if(stress > 10 && (prob(10))) - stress_reaction() - else - stress = max(0, stress - 4) - if(prob(5) && stress > 0) - var/mushy = pick("You feel so good when [beloved] is with you.","You can't believe you ever lived without [beloved].","You'd do anything for [beloved].","[beloved] makes everything better.","You can never let [beloved] leave again.") - to_chat(owner, "[mushy]") - -/datum/brain_trauma/special/love/proc/check_alone() - if(owner.disabilities & BLIND) - return TRUE - - for(var/mob/living/L in view(owner, 7)) - if(L == beloved) - return FALSE - - return TRUE - -/datum/brain_trauma/special/love/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, "You feel sick...") - else - to_chat(owner, "You feel really sick at the thought of being seperated from [beloved]!") - addtimer(CALLBACK(owner, /mob/living/carbon/human.proc/vomit, high_stress), 50) //blood vomit if high stress - if(2) - if(!high_stress) - to_chat(owner, "You can't stop shaking...") - owner.dizziness += 20 - owner.confused += 20 - owner.Jitter(20) - else - to_chat(owner, "You feel weak and scared! If only [beloved] was here!") - owner.dizziness += 20 - owner.confused += 20 - owner.Jitter(20) - owner.adjustHalLoss(50) - - if(3, 4) - if(!high_stress) - to_chat(owner, "You feel really lonely without [beloved]...") - else - to_chat(owner, "You're going mad with loneliness! You need [beloved]!") - owner.hallucination += 20 - - if(5) - if(!high_stress) - to_chat(owner, "Your heart skips a beat. Oh, [beloved]!") - owner.adjustOxyLoss(8) - else - if(prob(15) && ishuman(owner)) - var/mob/living/carbon/human/H = owner - var/obj/item/organ/internal/heart/heart = H.internal_organs_by_name[BP_HEART] - heart.take_damage(heart.min_bruised_damage) - to_chat(H, "You feel a stabbing pain in your heart!") - else - to_chat(owner, "You feel your heart lurching in your chest... Oh, [beloved]!") - owner.adjustOxyLoss(8) diff --git a/code/game/objects/items/weapons/chaplain_items.dm b/code/game/objects/items/weapons/chaplain_items.dm index bd6b87b7bdc..6813b0862a2 100644 --- a/code/game/objects/items/weapons/chaplain_items.dm +++ b/code/game/objects/items/weapons/chaplain_items.dm @@ -123,12 +123,6 @@ else to_chat(user, SPAN_DANGER("The [src] appears to do nothing.")) M.visible_message(SPAN_DANGER("\The [user] waves \the [src] over \the [M]'s head.")) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(prob(25)) - H.cure_all_traumas(cure_type = CURE_SOLITUDE) - else if(prob(20)) - H.cure_all_traumas(cure_type = CURE_CRYSTAL) return else if(user.a_intent != I_HURT) // to prevent the chaplain from hurting peoples accidentally to_chat(user, SPAN_NOTICE("The [src] appears to do nothing.")) diff --git a/code/game/objects/structures/therapy.dm b/code/game/objects/structures/therapy.dm index a59d60a4e5a..bb620e4c5d0 100644 --- a/code/game/objects/structures/therapy.dm +++ b/code/game/objects/structures/therapy.dm @@ -205,7 +205,6 @@ var/thrall_response = alert(H, "Do you believe in hypnosis?", "Willpower", "Yes", "No") if(thrall_response == "Yes") to_chat(H, "... [text] ...") - H.cure_all_traumas(cure_type = CURE_HYPNOSIS) else thrall = null @@ -290,8 +289,7 @@ ticktock = "Tick" to_chat(H, "[ticktock]. . .") sound_to(H, 'sound/effects/singlebeat.ogg') - if(prob(1)) - H.cure_all_traumas(cure_type = CURE_SOLITUDE) + /obj/machinery/chakrapod name = "Crystal Therapy Pod" @@ -635,20 +633,13 @@ break var/obj/item/organ/internal/brain/sponge = H.internal_organs_by_name[BP_BRAIN] - if (!istype(sponge) || !sponge.traumas.len) + if (!istype(sponge)) if(get_dist(user,src) <= 1) to_chat(user, "Error: Subject not recognized. Terminating operation.") playsound(src, 'sound/machines/buzz-two.ogg', 50, 1) visible_message("[connected] buzzes harshly.", "You hear a sharp buzz.") break - for(var/X in sponge.traumas) - var/datum/brain_trauma/trauma = X - if(trauma.cure_type == CURE_CRYSTAL) - if(!trauma.permanent) - qdel(trauma) - electroshock_trauma = 1 - break if(electroshock_trauma) visible_message("[connected] pings cheerfully.", "You hear a ping.") diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 64d02d11ed2..df29f4c6b52 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -135,8 +135,6 @@ var/list/admin_verbs_fun = list( /client/proc/show_tip, /client/proc/fab_tip, /client/proc/apply_sunstate, - /client/proc/cure_traumas, - /client/proc/add_traumas, /datum/admins/proc/ccannoucment ) @@ -350,8 +348,6 @@ var/list/admin_verbs_hideable = list( /datum/admins/proc/spawn_plant, /client/proc/show_plant_genes, /datum/admins/proc/spawn_atom, - /client/proc/cure_traumas, - /client/proc/add_traumas, /client/proc/respawn_character, /client/proc/spawn_chemdisp_cartridge, /client/proc/jobbans, @@ -710,52 +706,6 @@ var/list/admin_verbs_cciaa = list( message_admins("[ckey] creating an admin explosion at [epicenter.loc].") feedback_add_details("admin_verb","DB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cure_traumas(mob/T as mob in mob_list) - set category = "Fun" - set name = "Cure Traumas" - set desc = "Cure the traumas of a given mob." - - if(!istype(T,/mob/living/carbon/human)) - to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human") - return - - var/mob/living/carbon/human/C = T - - C.cure_all_traumas(TRUE, CURE_ADMIN) - log_and_message_admins("cured [key_name(C)]'s traumas.") - feedback_add_details("admin_verb","TB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - -/client/proc/add_traumas(mob/T as mob in mob_list) - set category = "Fun" - set name = "Add Traumas" - set desc = "Induces traumas on a given mob." - - if(!istype(T,/mob/living/carbon/human)) - to_chat(usr, "This can only be done to instances of type /mob/living/carbon/human") - return - - var/mob/living/carbon/human/C = T - - var/list/traumas = subtypesof(/datum/brain_trauma) - var/result = input(usr, "Choose the brain trauma to apply","Traumatize") as null|anything in traumas - if(!result) return - var/permanent = alert("Do you want to make the trauma unhealable?", "Permanently Traumatize", "Yes", "No") - if(permanent == "Yes") - permanent = TRUE - else - permanent = FALSE - if(!usr) - return - if(!C) - to_chat(usr, "Mob doesn't exist anymore") - return - - if(result) - C.gain_trauma(result, permanent) - - log_and_message_admins("gave [key_name(C)] [result].") - feedback_add_details("admin_verb","BT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - /client/proc/make_sound(var/obj/O in range(world.view)) // -- TLE set category = "Special Verbs" set name = "Make Sound" diff --git a/code/modules/ghostroles/spawner/atom/imaginary_friend.dm b/code/modules/ghostroles/spawner/atom/imaginary_friend.dm deleted file mode 100644 index d3e36bf2f4f..00000000000 --- a/code/modules/ghostroles/spawner/atom/imaginary_friend.dm +++ /dev/null @@ -1,10 +0,0 @@ -/datum/ghostspawner/imaginary_friend - short_name = "imaginary_friend" - name = "Imaginary Friend" - desc = "Join in as a Imaginary Friend, help them find their way throughout the round." - tags = list("Mental Trauma") - - loc_type = GS_LOC_ATOM - atom_add_message = "Someone has conjured up an imaginary friend!" - - spawn_mob = /mob/abstract/mental/friend \ No newline at end of file diff --git a/code/modules/ghostroles/spawner/atom/split_personality.dm b/code/modules/ghostroles/spawner/atom/split_personality.dm deleted file mode 100644 index 849e9c43885..00000000000 --- a/code/modules/ghostroles/spawner/atom/split_personality.dm +++ /dev/null @@ -1,10 +0,0 @@ -/datum/ghostspawner/split_personality - short_name = "split_personality" - name = "Split Personality" - desc = "Join in as a Split Personality, play the alter ego of one poor crewmember." - tags = list("Mental Trauma") - - loc_type = GS_LOC_ATOM - atom_add_message = "Someone has developed a split personality!" - - spawn_mob = /mob/living/mental/split_personality \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index ee668ccc729..efed214805b 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -13,9 +13,6 @@ icon = 'icons/mob/npc/alien.dmi' icon_state = "chitin" -/obj/item/organ/internal/brain/xeno/gain_trauma() - return - /obj/item/organ/internal/brain/slime name = "slime core" desc = "A complex, organic knot of jelly and crystalline particles." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e310a9c1dda..d534453eb9c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1751,39 +1751,6 @@ to_chat(src, SPAN_NOTICE("You are now [pulling_punches ? "pulling your punches" : "not pulling your punches"].")) return -/mob/living/carbon/human/proc/get_traumas() - . = list() - var/obj/item/organ/internal/brain/B = internal_organs_by_name[BP_BRAIN] - if(istype(B, /obj/item/organ/internal/borer)) - return - if(B && should_have_organ(BP_BRAIN) && !isipc(src)) - . = B.traumas - -/mob/living/carbon/human/proc/has_trauma_type(brain_trauma_type, consider_permanent = FALSE) - var/obj/item/organ/internal/brain/B = internal_organs_by_name[BP_BRAIN] - if(B && should_have_organ(BP_BRAIN) && !isipc(src)) - . = B.has_trauma_type(brain_trauma_type, consider_permanent) - -/mob/living/carbon/human/proc/gain_trauma(datum/brain_trauma/trauma, permanent = FALSE, list/arguments) - var/obj/item/organ/internal/brain/B = internal_organs_by_name[BP_BRAIN] - if(B && should_have_organ(BP_BRAIN) && !isipc(src)) - . = B.gain_trauma(trauma, permanent, arguments) - -/mob/living/carbon/human/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, permanent = FALSE) - var/obj/item/organ/internal/brain/B = internal_organs_by_name[BP_BRAIN] - if(B && should_have_organ(BP_BRAIN) && !isipc(src)) - . = B.gain_trauma_type(brain_trauma_type, permanent) - -/mob/living/carbon/human/proc/cure_trauma_type(brain_trauma_type, cure_permanent = FALSE) - var/obj/item/organ/internal/brain/B = internal_organs_by_name[BP_BRAIN] - if(B && should_have_organ(BP_BRAIN) && !isipc(src)) - . = B.cure_trauma_type(brain_trauma_type, cure_permanent) - -/mob/living/carbon/human/proc/cure_all_traumas(cure_permanent = FALSE, cure_type = "") - var/obj/item/organ/internal/brain/B = internal_organs_by_name[BP_BRAIN] - if(B && should_have_organ(BP_BRAIN) && !isipc(src)) - . = B.cure_all_traumas(cure_permanent, cure_type) - /mob/living/carbon/human/get_metabolism(metabolism) return ..() * (species ? species.metabolism_mod : 1) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 94bb1ac81c8..0856ba1f678 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -216,10 +216,12 @@ pixel_x = old_x pixel_y = old_y return - if (disabilities & STUTTERING) - speech_problem_flag = 1 - if (prob(10)) - stuttering = max(10, stuttering) + if(disabilities & STUTTERING) + var/aid = 1 + chem_effects[CE_NOSTUTTER] + if(aid < 3) //NOSTUTTER at 2 or above prevents it completely. + speech_problem_flag = 1 + if(prob(10/aid)) + stuttering = max(10/aid, stuttering) /mob/living/carbon/human/handle_mutations_and_radiation() if(InStasis()) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 704c2386959..2277725c1a2 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -120,9 +120,6 @@ /mob/living/carbon/human/handle_speech_problems(var/message, var/verb, var/message_mode) message = handle_speech_muts(message,verb) - for(var/datum/brain_trauma/trauma in get_traumas()) - if(!trauma.suppressed) - message = trauma.on_say(message) if(silent || (sdisabilities & MUTE)) message = "" speech_problem_flag = 1 @@ -216,13 +213,6 @@ returns = species.handle_speech_sound(src, returns) return returns -/mob/living/carbon/human/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) - for(var/T in get_traumas()) - var/datum/brain_trauma/trauma = T - if(!trauma.suppressed) - message = trauma.on_hear(message, verb, language, alt_name, italics, speaker) - return ..() - /mob/living/carbon/human/proc/handle_speech_muts(var/message, var/verb) if(message) if(disabilities & TOURETTES) diff --git a/code/modules/organs/internal/brain.dm b/code/modules/organs/internal/brain.dm index ae576998854..bf9dcef8b7c 100644 --- a/code/modules/organs/internal/brain.dm +++ b/code/modules/organs/internal/brain.dm @@ -19,7 +19,6 @@ relative_size = 85 var/mob/living/carbon/brain/brainmob = null - var/list/datum/brain_trauma/traumas = list() var/lobotomized = 0 var/can_lobotomize = 1 @@ -44,11 +43,6 @@ /obj/item/organ/internal/brain/removed(var/mob/living/user) - for(var/X in traumas) - var/datum/brain_trauma/BT = X - BT.on_lose(TRUE) - BT.owner = null - var/mob/living/simple_animal/borer/borer = owner.has_brain_worms() if(borer) @@ -70,12 +64,6 @@ brainmob.mind.transfer_to(target) else target.key = brainmob.key - - for(var/X in traumas) - var/datum/brain_trauma/BT = X - BT.owner = owner - BT.on_gain() - ..() /obj/item/organ/internal/brain/getToxLoss() @@ -217,51 +205,6 @@ /obj/item/organ/internal/brain/get_scarring_level() . = (species.total_health - max_damage)/species.total_health -////////////////////////////////////TRAUMAS//////////////////////////////////////// - -/obj/item/organ/internal/brain/proc/has_trauma_type(brain_trauma_type, consider_permanent = FALSE) - for(var/X in traumas) - var/datum/brain_trauma/BT = X - if(istype(BT, brain_trauma_type) && (consider_permanent || !BT.permanent)) - return BT - - -//Add a specific trauma -/obj/item/organ/internal/brain/proc/gain_trauma(datum/brain_trauma/trauma, permanent = FALSE, list/arguments) - var/trauma_type - if(ispath(trauma)) - trauma_type = trauma - traumas += new trauma_type(arglist(list(src, permanent) + arguments)) - else - traumas += trauma - trauma.permanent = permanent - -//Add a random trauma of a certain subtype -/obj/item/organ/internal/brain/proc/gain_trauma_type(brain_trauma_type = /datum/brain_trauma, permanent = FALSE) - var/list/datum/brain_trauma/possible_traumas = list() - for(var/T in subtypesof(brain_trauma_type)) - var/datum/brain_trauma/BT = T - if(initial(BT.can_gain)) - possible_traumas += BT - - var/trauma_type = pick(possible_traumas) - traumas += new trauma_type(src, permanent) - -//Cure a random trauma of a certain subtype -/obj/item/organ/internal/brain/proc/cure_trauma_type(brain_trauma_type, cure_permanent = FALSE) - var/datum/brain_trauma/trauma = has_trauma_type(brain_trauma_type) - if(trauma && (cure_permanent || !trauma.permanent)) - qdel(trauma) - -/obj/item/organ/internal/brain/proc/cure_all_traumas(cure_permanent = FALSE, cure_type = "") - for(var/X in traumas) - var/datum/brain_trauma/trauma = X - if(trauma.cure_type == cure_type || cure_type == CURE_ADMIN) - if(cure_permanent || !trauma.permanent) - qdel(trauma) - if(cure_type != CURE_ADMIN) - break - //Miscellaneous /obj/item/organ/internal/brain/proc/clear_screen() diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 36b3f52d0f3..1f8b1acff62 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -433,13 +433,13 @@ /decl/reagent/alkysine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(check_min_dose(M, 2)) //Increased effectiveness & no side-effects if given via IV drip with low transfer rate. + if(prob(M.chem_doses[type])) + to_chat(M, SPAN_WARNING(pick("Everything is spinning!", "The room won't stop moving...", "You lose track of your thoughts."))) M.dizziness = max(125, M.dizziness) M.make_dizzy(5) - if(!(REAGENT_VOLUME(holder, type) > 10)) - var/obj/item/organ/internal/brain/B = M.internal_organs_by_name[BP_BRAIN] - if(B && M.species && M.species.has_organ[BP_BRAIN] && !isipc(M)) - if(prob(M.chem_doses[type]/5) && !B.has_trauma_type(BRAIN_TRAUMA_MILD)) - B.gain_trauma_type(pick(/datum/brain_trauma/mild/dumbness, /datum/brain_trauma/mild/muscle_weakness, /datum/brain_trauma/mild/colorblind)) //Handpicked suggested traumas considered less disruptive and conducive to roleplay. + if(!(REAGENT_VOLUME(holder, type) > 10)) //Prevents doubling up with overdose + M.confused = max(M.confused, 10) + M.slurring = max(M.slurring, 50) /decl/reagent/alkysine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() @@ -452,13 +452,11 @@ M.add_chemical_effect(CE_PAINKILLER, 10) /decl/reagent/alkysine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) - M.hallucination = max(M.hallucination, 15) - var/obj/item/organ/internal/brain/B = M.internal_organs_by_name[BP_BRAIN] - if(B && M.species && M.species.has_organ[BP_BRAIN] && !isipc(M)) - if(prob(M.chem_doses[type] / 2) && !B.has_trauma_type(BRAIN_TRAUMA_SEVERE) && !B.has_trauma_type(BRAIN_TRAUMA_MILD) && !B.has_trauma_type(BRAIN_TRAUMA_SPECIAL)) - B.gain_trauma_type(/datum/brain_trauma/severe/paralysis, /datum/brain_trauma/severe/aphasia, /datum/brain_trauma/special/imaginary_friend) + M.hallucination = max(M.hallucination, 50) + M.add_chemical_effect(CE_UNDEXTROUS) if(prob(M.chem_doses[type])) - to_chat(M, SPAN_WARNING(pick("You have a painful headache!", "You feel a throbbing pain behind your eyes!"))) + to_chat(M, SPAN_WARNING(pick("You lose motor control for a moment!", "Your body seizes up!"))) + M.paralysis = max(M.paralysis, 3 SECONDS) ..() /decl/reagent/oculine @@ -848,7 +846,7 @@ /* mental */ -#define ANTIDEPRESSANT_MESSAGE_DELAY 1800 //3 minutes +#define MEDICATION_MESSAGE_DELAY 10 MINUTES /decl/reagent/mental name = null //Just like alcohol @@ -863,77 +861,32 @@ taste_description = "bugs" ingest_mul = 1 var/alchohol_affected = 1 - var/min_dose = 1 - var/messagedelay = ANTIDEPRESSANT_MESSAGE_DELAY - var/list/goodmessage = list() //Messages when all your brain traumas are cured. - var/list/badmessage = list() //Messages when you still have at least one brain trauma it's suppose to cure. - var/list/worstmessage = list() //Messages when the user is at possible risk for more trauma - var/list/suppress_traumas //List of brain traumas that the medication temporarily suppresses, with the key being the brain trauma and the value being the minimum dosage required to cure. Negative values means that the trauma is temporarily gained on the value instead. - var/list/dosage_traumas //List of brain traumas that the medication permanently adds at these dosages, with the key being the brain trauma and the value being base percent chance to add. - var/list/withdrawal_traumas //List of withdrawl effects that the medication permanently adds during withdrawl, with the key being the brain trauma, and the value being the base percent chance to add. - var/list/suppressing_reagents = list() // List of reagents that suppress the withdrawal effects, with the key being the reagent and the vlue being the minimum dosage required to suppress. + var/messagedelay = MEDICATION_MESSAGE_DELAY + var/list/goodmessage = list() //Fluff messages fallback_specific_heat = 1.5 /decl/reagent/mental/initialize_data(newdata, datum/reagents/holder) var/data = newdata - LAZYSET(data, "last_tick_time", 0) + LAZYSET(data, "last_tick_time", world.time + (messagedelay / 2)) //Small startup delay return data /decl/reagent/mental/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) - if(!istype(H) || LAZYACCESS(H.chem_doses, type) < min_dose || (world.time < holder.reagent_data[type]["last_tick_time"] && holder.reagent_volumes[type] > removed) || messagedelay == -1) + if(!istype(H) || world.time < holder.reagent_data[type]["last_tick_time"] || messagedelay == -1) return - var/hastrauma = 0 //whether or not the brain has trauma - var/obj/item/organ/internal/brain/B = H.internal_organs_by_name[BP_BRAIN] var/bac = H.get_blood_alcohol() - var/mdelay = messagedelay - if(alchohol_affected && bac > 0.03) H.hallucination = max(H.hallucination, bac * 400) - if(B) //You won't feel anything if you don't have a brain. - for(var/datum/brain_trauma/BT in B.traumas) - var/goal_volume = suppress_traumas[BT] - if (REAGENT_VOLUME(holder, type) >= goal_volume) // If the dosage is greater than the goal, then suppress the trauma. - if(!BT.suppressed && !BT.permanent) - BT.suppressed = 1 - BT.on_lose() - else if(REAGENT_VOLUME(holder, type) < goal_volume-1 && goal_volume > 0) // -1 So it doesn't spam back and forth constantly if reagents are being metabolized - if(BT.suppressed) - BT.suppressed = 0 - BT.on_gain() - hastrauma = 1 - for(var/datum/brain_trauma/BT in dosage_traumas) - var/percentchance = max(0,dosage_traumas[BT] - LAZYACCESS(H.chem_doses, type)*10) // If you've been taking this medication for a while then side effects are rarer. - if(!H.has_trauma_type(BT) && prob(percentchance)) - B.gain_trauma(BT,FALSE) - if(REAGENT_VOLUME(holder, type) < LAZYACCESS(H.chem_doses, type)/4) //If you haven't been taking your regular dose, then cause issues. - var/suppress_withdrawl = FALSE - for(var/k in suppressing_reagents) - var/decl/reagent/v = suppressing_reagents[k] - if(H.reagents.has_reagent(v,k)) - suppress_withdrawl = TRUE - break - if(!suppress_withdrawl) - if (H.shock_stage < 20 && worstmessage.len) - to_chat(H, SPAN_DANGER("[pick(worstmessage)]")) - mdelay /= 4 - for(var/k in withdrawal_traumas) - var/datum/brain_trauma/BT = k - var/percentchance = max(withdrawal_traumas[k] * (LAZYACCESS(H.chem_doses, type)/20)) //The higher the dosage, the more likely it is do get withdrawal traumas. - if(!H.has_trauma_type(BT) && prob(percentchance)) - B.gain_trauma(BT,FALSE) - else if(hastrauma || REAGENT_VOLUME(holder, type) < LAZYACCESS(H.chem_doses, type)/2) //If your current dose is not high enough, then alert the player. - if (H.shock_stage < 10 && badmessage.len) - to_chat(H, SPAN_WARNING("[pick(badmessage)]")) - mdelay /= 2 - else - if (H.shock_stage < 5 && goodmessage.len) - to_chat(H, SPAN_GOOD("[pick(goodmessage)]")) + if(H.chem_doses[type] < overdose && H.shock_stage < 5) //Don't want feel-good messages when we're suffering an OD or particularly hurt/injured + to_chat(H, SPAN_GOOD("[pick(goodmessage)]")) LAZYINITLIST(holder.reagent_data) - LAZYSET(holder.reagent_data[type], "last_tick_time", world.time + (mdelay SECONDS)) + LAZYSET(holder.reagent_data[type], "last_tick_time", world.time + (messagedelay)) + +/decl/reagent/mental/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) /decl/reagent/mental/nicotine name = "Nicotine" @@ -944,16 +897,8 @@ overdose = 15 od_minimum_dose = 3 taste_description = "bitterness" + messagedelay = MEDICATION_MESSAGE_DELAY * 0.75 goodmessage = list("You feel good.","You feel relaxed.","You feel alert and focused.") - badmessage = list("You start to crave nicotine...") - worstmessage = list("You need your nicotine fix!") - suppress_traumas = list( - /datum/brain_trauma/mild/phobia = 0.1, - /datum/brain_trauma/mild/muscle_weakness/ = 0.05 - ) - suppressing_reagents = list(/decl/reagent/mental/nicotine) //The way to suppress nicotine withdrawal... is nicotine. - conflicting_reagent = null - min_dose = 0.0064 * REM /decl/reagent/mental/nicotine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() @@ -974,28 +919,11 @@ od_minimum_dose = 0.2 taste_description = "paper" goodmessage = list("You feel focused.","You feel like you have no distractions.","You feel willing to work.") - badmessage = list("You feel a little distracted...","You feel slight agitation...","You feel a dislike towards work...") - worstmessage = list("You feel completely distracted...","You feel like you don't want to work...","You think you see things...") - suppress_traumas = list( - /datum/brain_trauma/special/imaginary_friend = 20, - /datum/brain_trauma/mild/hallucinations = 10, - /datum/brain_trauma/mild/phobia/ = 10 - ) - dosage_traumas = list( - /datum/brain_trauma/mild/hallucinations = 5 - ) - withdrawal_traumas = list( - /datum/brain_trauma/mild/phobia/ = 5, - /datum/brain_trauma/mild/hallucinations = 2 - ) /decl/reagent/mental/corophenidate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_HALLUCINATE, -1) ..() -/decl/reagent/mental/corophendiate/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) - M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) - /decl/reagent/mental/neurostabin name = "Neurostabin" description = "Neurostabin is a new generation, psychoactive drug used in the treatment of psychoses, and also has clinical significance in treating muscle weakness. It has far fewer side effects than previous generations of psychoactive drugs. Withdrawal symptoms include hallucinations and the development of phobias." @@ -1005,24 +933,6 @@ od_minimum_dose = 0.2 taste_description = "bitterness" goodmessage = list("You do not feel the need to worry about simple things.","You feel calm and level-headed.","You feel fine.") - badmessage = list("You feel a little blue.","You feel slight agitation...","You feel a little nervous...") - worstmessage = list("You worry about the littlest thing...","You feel like you are at risk...","You think you see things...") - suppress_traumas = list( - /datum/brain_trauma/mild/phobia/ = 2, - /datum/brain_trauma/severe/split_personality = 10, - /datum/brain_trauma/special/imaginary_friend = 20, - /datum/brain_trauma/mild/muscle_weakness = 10 - ) - dosage_traumas = list( - /datum/brain_trauma/mild/hallucinations = 5 - ) - withdrawal_traumas = list( - /datum/brain_trauma/mild/phobia/ = 5, - /datum/brain_trauma/mild/hallucinations = 2 - ) - -/decl/reagent/mental/neurostabin/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) - M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) /decl/reagent/mental/parvosil name = "Parvosil" @@ -1032,23 +942,7 @@ metabolism = 0.02 * REM od_minimum_dose = 0.4 taste_description = "paper" - goodmessage = list("You feel fine.","You feel rational.","You feel decent.") - badmessage = list("You feel a little blue.","You feel slight agitation...","You feel a little nervous...") - worstmessage = list("You worry about the littlest thing...","You feel like you are at risk...","You think you see things...") - suppress_traumas = list( - /datum/brain_trauma/mild/phobia/ = 2 - ) - dosage_traumas = list( - /datum/brain_trauma/mild/hallucinations = 5 - ) - withdrawal_traumas = list( - /datum/brain_trauma/mild/phobia/ = 10, - /datum/brain_trauma/mild/hallucinations = 5 - ) - suppressing_reagents = list(/decl/reagent/mental/neurostabin = 5) - -/decl/reagent/mental/parvosil/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) - M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) + goodmessage = list("You feel fine.","You feel rational.","You feel secure.") /decl/reagent/mental/minaphobin name = "Minaphobin" @@ -1058,27 +952,7 @@ metabolism = 0.01 * REM od_minimum_dose = 0.2 taste_description = "duct tape" - goodmessage = list("You feel relaxed.","You feel at ease.","You feel care free.") - badmessage = list("You feel worried.","You feel slight agitation.","You feel nervous.") - worstmessage = list("You worry about the littlest thing...","You feel like you are at risk...","You think you see things...") - suppress_traumas = list( - /datum/brain_trauma/mild/phobia/ = 1, - /datum/brain_trauma/severe/monophobia = 5 - ) - dosage_traumas = list( - /datum/brain_trauma/mild/hallucinations = 5 - ) - withdrawal_traumas = list( - /datum/brain_trauma/mild/phobia/ = 10, - /datum/brain_trauma/mild/hallucinations = 10 - ) - suppressing_reagents = list( - /decl/reagent/mental/neurostabin = 5, - /decl/reagent/mental/parvosil = 5 - ) - -/decl/reagent/mental/minaphobin/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) - M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) + goodmessage = list("You feel relaxed.","You feel at ease.","You feel carefree.") /decl/reagent/mental/emoxanyl name = "Emoxanyl" @@ -1088,66 +962,23 @@ metabolism = 0.01 * REM od_minimum_dose = 0.2 taste_description = "scotch tape" - goodmessage = list("You feel at ease.","Your mind feels healthy..") - badmessage = list("You worry about the littlest thing.","Your head starts to feel weird...","You think you see things.") - worstmessage = list("You start to overreact to sounds and movement...","Your head feels really weird.","You are really starting to see things...") - messagedelay = ANTIDEPRESSANT_MESSAGE_DELAY * 0.75 - suppress_traumas = list( - /datum/brain_trauma/mild/concussion = 5, - /datum/brain_trauma/mild/phobia/ = 5 - ) - dosage_traumas = list( - /datum/brain_trauma/mild/hallucinations = 5 - ) - withdrawal_traumas = list( - /datum/brain_trauma/mild/phobia/ = 25, - /datum/brain_trauma/mild/hallucinations = 25, - /datum/brain_trauma/mild/concussion = 10 - ) - suppressing_reagents = list( - /decl/reagent/mental/neurapan = 5, - /decl/reagent/mental/minaphobin = 5, - /decl/reagent/mental/neurostabin = 10, - /decl/reagent/mental/parvosil = 10 - ) - -/decl/reagent/mental/emoxanyl/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) - M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) + goodmessage = list("You feel at ease.","Your mind feels great.", "You feel centered.") + messagedelay = MEDICATION_MESSAGE_DELAY * 0.75 /decl/reagent/mental/orastabin name = "Orastabin" description = "Orastabin is a new generation, complex psychoactive medication used in the treatment of anxiety disorders and speech impediments. It has fewer side effects than many other forms of psychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." reagent_state = LIQUID color = "#FF88FF" - metabolism = 0.01 * REM + metabolism = 0.005 * REM od_minimum_dose = 0.2 taste_description = "glue" - goodmessage = list("You feel at ease.","Your mind feels healthy..","You feel unafraid to speak...") - badmessage = list("You worry about the littlest thing.","You think you see things.") - worstmessage = list("You start to overreact to sounds and movement...","You are really starting to see things...") - messagedelay = ANTIDEPRESSANT_MESSAGE_DELAY * 0.75 - suppress_traumas = list( - /datum/brain_trauma/mild/phobia = 5, - /datum/brain_trauma/mild/stuttering = 2, - /datum/brain_trauma/severe/monophobia = 5 - ) - dosage_traumas = list( - /datum/brain_trauma/mild/hallucinations = 10 - ) - withdrawal_traumas = list( - /datum/brain_trauma/mild/phobia/ = 25, - /datum/brain_trauma/mild/hallucinations = 25 - ) - suppressing_reagents = list( - /decl/reagent/mental/emoxanyl = 5, - /decl/reagent/mental/neurapan = 5, - /decl/reagent/mental/minaphobin = 5, - /decl/reagent/mental/neurostabin = 10, - /decl/reagent/mental/parvosil = 10 - ) + goodmessage = list("You feel at ease.","You feel like you can speak with confidence.","You feel unafraid to speak.") + messagedelay = MEDICATION_MESSAGE_DELAY * 0.75 -/decl/reagent/mental/orastabin/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) - M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) +/decl/reagent/mental/orastabin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + M.add_chemical_effect(CE_NOSTUTTER, 2) + ..() /decl/reagent/mental/neurapan name = "Neurapan" @@ -1159,38 +990,11 @@ od_minimum_dose = 0.4 taste_description = "tranquility" goodmessage = list("Your mind feels as one.","You feel incredibly comfortable.","Your body feels good.","Your thoughts are clear.", "You feel stress free.", "Nothing is bothering you anymore.") - badmessage = list("The tranquility fades and you start hearing voices...","You think you see things...","You remember the stress you left behind...","You want attention...") - worstmessage = list("You think you start seeing things...","You swear someone inside you spoke to you...","You hate feeling alone...","You feel really upset...") - messagedelay = ANTIDEPRESSANT_MESSAGE_DELAY * 0.5 - suppress_traumas = list( - /datum/brain_trauma/severe/split_personality = 5, - /datum/brain_trauma/special/imaginary_friend = 10, - /datum/brain_trauma/mild/stuttering = 2, - /datum/brain_trauma/mild/speech_impediment = 5, - /datum/brain_trauma/severe/monophobia = 5, - /datum/brain_trauma/mild/hallucinations = 5, - /datum/brain_trauma/mild/muscle_spasms = 10, - /datum/brain_trauma/mild/tourettes = 10 - ) - dosage_traumas = list( - /datum/brain_trauma/severe/pacifism = 25 - ) - withdrawal_traumas = list( - /datum/brain_trauma/mild/hallucinations = 100, - /datum/brain_trauma/severe/split_personality = 10, - /datum/brain_trauma/special/imaginary_friend = 20, - /datum/brain_trauma/mild/tourettes = 50, - /datum/brain_trauma/severe/monophobia = 50 - ) - suppressing_reagents = list( - /decl/reagent/mental/orastabin = 20, - /decl/reagent/mental/emoxanyl = 20, - /decl/reagent/mental/neurapan = 20, - /decl/reagent/mental/minaphobin = 20 - ) + messagedelay = MEDICATION_MESSAGE_DELAY * 0.5 /decl/reagent/mental/neurapan/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_HALLUCINATE, -2) + M.add_chemical_effect(CE_NOSTUTTER, 1) ..() /decl/reagent/mental/neurapan/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) @@ -1215,35 +1019,11 @@ od_minimum_dose = 0.4 taste_description = "paint" goodmessage = list("Your mind feels as one.","You feel comfortable speaking.","Your body feels good.","Your thoughts are pure.","Your body feels responsive.","You can handle being alone.") - badmessage = list("You start hearing voices...","You think you see things...","You want a friend...") - worstmessage = list("You think you start seeing things...","You swear someone inside you spoke to you...") - messagedelay = ANTIDEPRESSANT_MESSAGE_DELAY * 0.5 - suppress_traumas = list( - /datum/brain_trauma/severe/split_personality = 5, - /datum/brain_trauma/special/imaginary_friend = 10, - /datum/brain_trauma/mild/stuttering = 1, - /datum/brain_trauma/mild/speech_impediment = 2, - /datum/brain_trauma/severe/monophobia = 2, - /datum/brain_trauma/mild/muscle_spasms = 5, - /datum/brain_trauma/mild/tourettes = 10 - ) - dosage_traumas = list( - /datum/brain_trauma/severe/pacifism = 25 - ) - withdrawal_traumas = list( - /datum/brain_trauma/mild/hallucinations = 200, - /datum/brain_trauma/severe/split_personality = 50, - /datum/brain_trauma/special/imaginary_friend = 50 - ) - suppressing_reagents = list( - /decl/reagent/mental/orastabin = 20, - /decl/reagent/mental/emoxanyl = 20, - /decl/reagent/mental/neurapan = 20, - /decl/reagent/mental/minaphobin = 20 - ) + messagedelay = MEDICATION_MESSAGE_DELAY * 0.5 /decl/reagent/mental/nerospectan/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_HALLUCINATE, -2) + M.add_chemical_effect(CE_NOSTUTTER, 1) ..() /decl/reagent/mental/nerospectan/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) @@ -1258,19 +1038,11 @@ od_minimum_dose = 1 taste_description = "something" goodmessage = list("You feel like you have nothing to hide.","You feel compelled to spill your secrets.","You feel like you can trust those around you.") - badmessage = list() - worstmessage = list() - suppress_traumas = list( - /datum/brain_trauma/mild/tourettes = 1 - ) - dosage_traumas = list( - /datum/brain_trauma/severe/pacifism = 25 - ) messagedelay = 30 ingest_mul = 1 /decl/reagent/mental/truthserum/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) - M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) + M.add_chemical_effect(CE_PACIFIED, 1) /decl/reagent/mental/vaam name = "V'krexi Amino Acid Mixture" @@ -1278,16 +1050,10 @@ reagent_state = LIQUID color = "#bcd827" metabolism = 0.4 * REM - overdose = 20 taste_description = "bitterness" metabolism_min = 0.5 breathe_mul = 0 - goodmessage = list("You feel great.","You feel full of energy.","You feel alert and focused.") - badmessage = list("You can't think straight...","You're sweating heavily...","Your heart is racing...") - worstmessage = list("You feel incredibly lightheaded!","You feel incredibly dizzy!") - suppress_traumas = list( - /datum/brain_trauma/mild/muscle_weakness/ = 0.01 - ) + goodmessage = list("You feel great!","You feel full of energy!","You feel alert and focused.") /decl/reagent/mental/vaam/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() @@ -1304,9 +1070,6 @@ if (prob(10)) to_chat(M, pick("You feel nauseous", "Ugghh....", "Your stomach churns uncomfortably", "You feel like you're about to throw up", "You feel queasy","You feel pressure in your abdomen")) - if (prob(M.chem_doses[type])) - M.vomit() - /decl/reagent/mental/kokoreed name = "Koko Reed Juice" @@ -1318,11 +1081,6 @@ od_minimum_dose = 3 taste_description = "sugar" goodmessage = list("You feel pleasantly warm.","You feel like you've been basking in the sun.","You feel focused and warm...") - badmessage = list() - worstmessage = list() - suppress_traumas = list() - conflicting_reagent = null - min_dose = 0.0064 * REM /decl/reagent/mental/kokoreed/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() @@ -1344,13 +1102,7 @@ scannable = TRUE taste_description = "bitterness" metabolism_min = REM * 0.25 - var/list/curable_traumas = list( - /datum/brain_trauma/mild/dumbness/, - /datum/brain_trauma/severe/blindness/, - /datum/brain_trauma/severe/paralysis/, - /datum/brain_trauma/severe/total_colorblind/, - /datum/brain_trauma/severe/aphasia/ - ) + /decl/reagent/cataleptinol/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 10) @@ -1363,28 +1115,14 @@ else M.add_chemical_effect(CE_BRAIN_REGEN, 20) //1 unit of Cataleptinol will raise brain activity by 5%. - if(prob(chance)) - M.cure_trauma_type(pick(curable_traumas)) /decl/reagent/cataleptinol/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.hallucination = max(M.hallucination, 15) - var/obj/item/organ/internal/brain/B = M.internal_organs_by_name[BP_BRAIN] - if(B && M.species && M.species.has_organ[BP_BRAIN] && !isipc(M)) - if(prob(M.chem_doses[type] / 2) && !B.has_trauma_type(BRAIN_TRAUMA_SEVERE) && !B.has_trauma_type(BRAIN_TRAUMA_MILD) && !B.has_trauma_type(BRAIN_TRAUMA_SPECIAL)) - B.gain_trauma_type(pick(/datum/brain_trauma/severe/paralysis, /datum/brain_trauma/severe/aphasia, /datum/brain_trauma/mild/dumbness, /datum/brain_trauma/mild/muscle_weakness, /datum/brain_trauma/mild/colorblind, /datum/brain_trauma/special/imaginary_friend)) if(prob(5)) to_chat(M, SPAN_WARNING(pick("You have a painful headache!", "You feel a throbbing pain behind your eyes!"))) ..() -//Things that are not cured/treated by medication: -//Gerstmann Syndrome -//Cerebral Near-Blindness -//Mutism -//Cerebral Blindness -//Narcolepsy -//Discoordination - /decl/reagent/fluvectionem name = "Fluvectionem" description = "Fluvectionem is a complex anti-toxin medication that is capable of purging the bloodstream of toxic reagents. The drug is capable of neutralising the most difficult of compounds and acts very fast, however it is inefficient and results in benign waste products that can be damaging to the liver." diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index 8c12ead05f0..30e5b866e76 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -699,9 +699,6 @@ if(!istype(H)) return - var/obj/item/organ/internal/brain/B = H.internal_organs_by_name[BP_BRAIN] - if(!H.has_trauma_type(/datum/brain_trauma/special/love)) - B.gain_trauma(/datum/brain_trauma/special/love,FALSE) /decl/reagent/bottle_lightning name = "Bottled Lightning" diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 0bf9945b87b..0cbc2258b00 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -293,8 +293,6 @@ for(var/mob/living/carbon/human/l in view(src, min(7, round(sqrt(power/6))))) // If they can see it without mesons on. Bad on them. if(!istype(l.glasses, /obj/item/clothing/glasses/safety) && !l.is_diona() && !l.isSynthetic()) l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) ) - if(prob(15)) - l.cure_all_traumas(cure_type = CURE_HYPNOSIS) //adjusted range so that a power of 170 (pretty high) results in 9 tiles, roughly the distance from the core to the engine monitoring room. //note that the rads given at the maximum range is a constant 0.2 - as power increases the maximum range merely increases. diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 149db63495f..3f38afe6fe3 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -81,9 +81,6 @@ I.surgical_fix(user) user.visible_message("\The [user] finishes treating damage within \the [target]'s [affected.name] with [tool_name].", \ "You finish treating damage within \the [target]'s [affected.name] with [tool_name].") - var/obj/item/organ/internal/brain/sponge = target.internal_organs_by_name[BP_BRAIN] - if(sponge && istype(I, sponge)) - target.cure_all_traumas(cure_type = CURE_SURGERY) if(I.status & ORGAN_DEAD) to_chat(user, SPAN_DANGER("This organ is still dead! You must remove the dead tissue with a scalpel!")) @@ -156,9 +153,6 @@ user.visible_message("[user] repairs [target]'s [I.name] with [tool].", \ SPAN_NOTICE("You repair [target]'s [I.name] with [tool].") ) I.damage = 0 - var/obj/item/organ/internal/brain/sponge = target.internal_organs_by_name[BP_BRAIN] - if(sponge && istype(I, sponge)) - target.cure_all_traumas() if(istype(tool, /obj/item/stack/nanopaste)) var/obj/item/stack/nanopaste/nanopaste = tool nanopaste.use(1) diff --git a/html/changelogs/doxxmedearly - gut_traumas.yml b/html/changelogs/doxxmedearly - gut_traumas.yml new file mode 100644 index 00000000000..69d0ac1bdb6 --- /dev/null +++ b/html/changelogs/doxxmedearly - gut_traumas.yml @@ -0,0 +1,9 @@ +author: Doxxmedearly + +delete-after: True + +changes: + - rscdel: "Removed brain traumas. Medication side or overdose effects that granted traumas instead cause similar effects." + - tweak: "Mental medications are mostly there for fluff messages (for now). Some retain their mechanical benefits such as helping with hallucinations." + - rscadd: "Orastabin, Neurapan, and Nerospectan now help ease the effects of the stuttering disability (Though not stuttering due to pain and shock). Orastabin is the most effective." + - rscdel: "Removed mental medication's withdrawal mechanics. You don't need to pop multiple pills in a shift anymore. This should also fix the nicotine messages." diff --git a/strings/phobia.json b/strings/phobia.json deleted file mode 100644 index 100253cfd2e..00000000000 --- a/strings/phobia.json +++ /dev/null @@ -1,192 +0,0 @@ -{ - "spiders": [ - "spider", - "web", - "arachnid", - "spiderling" - ], - - "space": [ - "space", - "star", - "universe", - "void", - "galaxy", - "spess", - "hole", - "deep", - "high" - ], - - "security": [ - " sec ", - "security", - "shitcurity", - "baton", - "taser", - "beepsky", - "hos", - "brig", - "gulag", - "communal", - "officer", - "regulation" - ], - - "doctors": [ - " med ", - " sci ", - "medbay", - "medical", - "science", - "rnd", - "r&d", - "cmo", - "doctor", - "scientist", - "dr", - "doc", - "surgery", - "clone", - "cloning", - "chemistry", - "lesbay" - ], - - "clowns": [ - "clown", - "honk", - "banana", - "slip" - ], - - "unathi": [ - "hiss", - "unathi", - "lizard", - "hegemony", - "honor", - "spear", - "izweski", - "sinta", - "sss" - ], - - "cats": [ - "tajara", - "adhomai", - "meow", - "runtime", - "bones", - "communism", - "rrr" - ], - - "humans": [ - "man", - "sol", - "opposable thumbs", - "ape", - "monkey", - "earth" - ], - - "skrell": [ - "frog", - "warble", - "tentacle", - "headtail", - "jargon", - "glorsh", - "tup" - ], - - "robots": [ - "AI", - "borg", - "IPC", - "posi", - "bot", - "glorsh", - "mech", - "synth", - "drone" - ], - - "pests": [ - "vaurca", - "bug", - "diona", - "nymph", - "roach", - "mouse", - "mice", - "rats", - "rat", - "blob", - "carp", - "vines" - ], - - "nanotrasen": [ - "NT", - "trasen", - "phoron", - "CCIA", - "IAA", - "internal affairs", - "duty officer", - "odin", - "aurora", - "NSS", - "CC", - "central command", - "centcom", - "loyalty implant", - "LI", - "captain" - ], - - "filth": [ - "blood", - "dirty", - "vomit", - "filth", - "disgusting", - "unclean", - "unsanitary" - ], - - "paranormals": [ - "wizard", - "cult", - "nar'sie", - "magic", - "skeleton", - "undead", - "paranormal", - "ghost" - ], - - "death": [ - "death", - "dying", - "dead", - " die", - "heaven", - "hell", - "afterlife", - "ghost", - "spirit" - ], - - "darkness": [ - "dark", - "black", - "night", - "void", - "sightless", - "blind", - "can't see" - ] -} \ No newline at end of file