From ce59be9350ef033de43135733610d413cbf2e01d Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sun, 10 Jan 2021 08:17:04 +0100 Subject: [PATCH] [MIRROR] Move psychologist immunity from mind to skillchip (#2605) * Move psychologist immunity from mind to skillchip (#55813) Skillchips are neat, and this is the sort of "job-specific skill" that can remain job specific, but still gainable in the shift through in-universe means. The logic behind the skillchip is that the supermatter is psychically sensitive, hence the hallucinations and headaches from looking at it and projecting the "correct mental aura" will help it calm down. But that is lore following mechanics. Refactors skillchips to be able to automatically apply more than one trait. * Move psychologist immunity from mind to skillchip Co-authored-by: coiax --- code/__DEFINES/traits.dm | 4 ++-- code/modules/jobs/job_types/psychologist.dm | 4 ++-- .../job_skillchips/psychologist.dm | 9 ++++++++ .../job_skillchips/roboticist.dm | 2 +- .../job_skillchips/station_engineer.dm | 2 +- .../library/skill_learning/skillchip.dm | 22 +++++++++---------- code/modules/power/supermatter/supermatter.dm | 6 ++--- tgstation.dme | 1 + 8 files changed, 29 insertions(+), 21 deletions(-) create mode 100644 code/modules/library/skill_learning/job_skillchips/psychologist.dm diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 350e3c053da..a673d2b8d41 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -240,12 +240,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai // You can stare into the abyss, but it does not stare back. // You're immune to the hallucination effect of the supermatter, either -// through force of will, or equipment. +// through force of will, or equipment. Present on /mob or /datum/mind #define TRAIT_SUPERMATTER_MADNESS_IMMUNE "supermatter_madness_immune" // You can stare into the abyss, and it turns pink. // Being close enough to the supermatter makes it heal at higher temperatures -// and emit less heat. A trait applied to a mind. +// and emit less heat. Present on /mob or /datum/mind #define TRAIT_SUPERMATTER_SOOTHER "supermatter_soother" //SKILLS diff --git a/code/modules/jobs/job_types/psychologist.dm b/code/modules/jobs/job_types/psychologist.dm index f211e8778ee..434ce3a2a8d 100644 --- a/code/modules/jobs/job_types/psychologist.dm +++ b/code/modules/jobs/job_types/psychologist.dm @@ -14,8 +14,6 @@ paycheck = PAYCHECK_MEDIUM paycheck_department = ACCOUNT_SRV - mind_traits = list(TRAIT_SUPERMATTER_SOOTHER, TRAIT_SUPERMATTER_MADNESS_IMMUNE) - display_order = JOB_DISPLAY_ORDER_PSYCHOLOGIST /datum/outfit/job/psychologist @@ -32,6 +30,8 @@ backpack_contents = list(/obj/item/storage/pill_bottle/mannitol, /obj/item/storage/pill_bottle/psicodine, /obj/item/storage/pill_bottle/paxpsych, /obj/item/storage/pill_bottle/happinesspsych, /obj/item/storage/pill_bottle/lsdpsych) + skillchips = list(/obj/item/skillchip/job/psychology) + backpack = /obj/item/storage/backpack/medic satchel = /obj/item/storage/backpack/satchel/med duffelbag = /obj/item/storage/backpack/duffelbag/med diff --git a/code/modules/library/skill_learning/job_skillchips/psychologist.dm b/code/modules/library/skill_learning/job_skillchips/psychologist.dm new file mode 100644 index 00000000000..280bc43aa0d --- /dev/null +++ b/code/modules/library/skill_learning/job_skillchips/psychologist.dm @@ -0,0 +1,9 @@ +/obj/item/skillchip/job/psychology + name = "HYPERG1G4 skillchip" + desc = "Learn to bend the abyss to your will." + auto_traits = list(TRAIT_SUPERMATTER_SOOTHER, TRAIT_SUPERMATTER_MADNESS_IMMUNE) + skill_name = "Supermatter Cognition Theory" + skill_description = "Understand the correct mental patterns to keep in mind around matter in a hyperfractal state, causing immunity to visions and making the matter in question \"calmer\"." + skill_icon = "spa" + activate_message = "You start thinking in patterns that will render you immune to visions from, and act as a calming influence for, matter in a hyperfractal state." + deactivate_message = "Your thoughts become more disordered and jumbled. You are no longer immune to the abyss." diff --git a/code/modules/library/skill_learning/job_skillchips/roboticist.dm b/code/modules/library/skill_learning/job_skillchips/roboticist.dm index f0895c7cc78..b6835c9d484 100644 --- a/code/modules/library/skill_learning/job_skillchips/roboticist.dm +++ b/code/modules/library/skill_learning/job_skillchips/roboticist.dm @@ -1,7 +1,7 @@ /obj/item/skillchip/job/roboticist name = "Cyborg C1-RCU-1T skillchip" desc = "A roboticist's second best friend." - auto_trait = TRAIT_KNOW_CYBORG_WIRES + auto_traits = list(TRAIT_KNOW_CYBORG_WIRES) skill_name = "Cyborg Circuitry" skill_description = "Recognise cyborg wire layouts and understand their functionality at a glance." skill_icon = "sitemap" diff --git a/code/modules/library/skill_learning/job_skillchips/station_engineer.dm b/code/modules/library/skill_learning/job_skillchips/station_engineer.dm index 2c8f1eb21fa..0ed2edb5ccd 100644 --- a/code/modules/library/skill_learning/job_skillchips/station_engineer.dm +++ b/code/modules/library/skill_learning/job_skillchips/station_engineer.dm @@ -1,7 +1,7 @@ /obj/item/skillchip/job/engineer name = "Engineering C1-RCU-1T skillchip" desc = "Endorsed by Poly." - auto_trait = TRAIT_KNOW_ENGI_WIRES + auto_traits = list(TRAIT_KNOW_ENGI_WIRES) skill_name = "Engineering Circuitry" skill_description = "Recognise airlock and APC wire layouts and understand their functionality at a glance." skill_icon = "sitemap" diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm index 04fc7b44b68..60de99294b7 100644 --- a/code/modules/library/skill_learning/skillchip.dm +++ b/code/modules/library/skill_learning/skillchip.dm @@ -7,8 +7,8 @@ custom_price = PAYCHECK_MEDIUM * 3 w_class = WEIGHT_CLASS_SMALL - /// Trait automatically granted by this chip, optional - var/auto_trait + /// Traits automatically granted by this chip, optional. Lazylist. + var/list/auto_traits /// Skill name shown on UI var/skill_name /// Skill description shown on UI @@ -142,8 +142,8 @@ if(!silent && activate_message) to_chat(user, activate_message) - if(auto_trait) - ADD_TRAIT(user, auto_trait, SKILLCHIP_TRAIT) + for(var/trait in auto_traits) + ADD_TRAIT(user, trait, SKILLCHIP_TRAIT) active = TRUE @@ -176,8 +176,8 @@ if(!silent && deactivate_message) to_chat(user, deactivate_message) - if(auto_trait) - REMOVE_TRAIT(user, auto_trait, SKILLCHIP_TRAIT) + for(var/trait in auto_traits) + REMOVE_TRAIT(user, trait, SKILLCHIP_TRAIT) active = FALSE @@ -369,7 +369,7 @@ /obj/item/skillchip/basketweaving name = "Basketsoft 3000 skillchip" desc = "Underwater edition." - auto_trait = TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE + auto_traits = list(TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE) skill_name = "Underwater Basketweaving" skill_description = "Master intricate art of using twine to create perfect baskets while submerged." skill_icon = "shopping-basket" @@ -379,7 +379,7 @@ /obj/item/skillchip/wine_taster name = "WINE skillchip" desc = "Wine.Is.Not.Equal version 5." - auto_trait = TRAIT_WINE_TASTER + auto_traits = list(TRAIT_WINE_TASTER) skill_name = "Wine Tasting" skill_description = "Recognize wine vintage from taste alone. Never again lack an opinion when presented with an unknown drink." skill_icon = "wine-bottle" @@ -388,7 +388,7 @@ /obj/item/skillchip/bonsai name = "Hedge 3 skillchip" - auto_trait = TRAIT_BONSAI + auto_traits = list(TRAIT_BONSAI) skill_name = "Hedgetrimming" skill_description = "Trim hedges and potted plants into marvelous new shapes with any old knife. Not applicable to plastic plants." skill_icon = "spa" @@ -409,7 +409,7 @@ /obj/item/skillchip/light_remover name = "N16H7M4R3 skillchip" - auto_trait = TRAIT_LIGHTBULB_REMOVER + auto_traits = list(TRAIT_LIGHTBULB_REMOVER) skill_name = "Lightbulb Removing" skill_description = "Stop failing taking out lightbulbs today, no gloves needed!" skill_icon = "lightbulb" @@ -418,7 +418,7 @@ /obj/item/skillchip/disk_verifier name = "K33P-TH4T-D15K skillchip" - auto_trait = TRAIT_DISK_VERIFIER + auto_traits = list(TRAIT_DISK_VERIFIER) skill_name = "Nuclear Disk Verification" skill_description = "Nuclear authentication disks have an extremely long serial number for verification. This skillchip stores that number, which allows the user to automatically spot forgeries." skill_icon = "save" diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 970afd43f4b..7cfd376874f 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -709,13 +709,11 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) for(var/mob/living/carbon/human/l in view(src, HALLUCINATION_RANGE(power))) // Someone (generally a Psychologist), when looking at the SM // within hallucination range makes it easier to manage. - if (QDELETED(l.mind)) - continue - if(HAS_TRAIT(l.mind, TRAIT_SUPERMATTER_SOOTHER)) + if(HAS_TRAIT(l, TRAIT_SUPERMATTER_SOOTHER) || (l.mind && HAS_TRAIT(l.mind, TRAIT_SUPERMATTER_SOOTHER))) toAdd = 0.05 psy_overlay = TRUE // If they can see it without being immune (mesons, Psychologist) - if (!(HAS_TRAIT(l, TRAIT_SUPERMATTER_MADNESS_IMMUNE) || HAS_TRAIT(l.mind, TRAIT_SUPERMATTER_MADNESS_IMMUNE))) + if (!(HAS_TRAIT(l, TRAIT_SUPERMATTER_MADNESS_IMMUNE) || (l.mind && HAS_TRAIT(l.mind, TRAIT_SUPERMATTER_MADNESS_IMMUNE)))) var/D = sqrt(1 / max(1, get_dist(l, src))) l.hallucination += power * hallucination_power * D l.hallucination = clamp(l.hallucination, 0, 200) diff --git a/tgstation.dme b/tgstation.dme index 32352cdf9e6..8c45869f427 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2215,6 +2215,7 @@ #include "code\modules\library\skill_learning\job_skillchips\_job.dm" #include "code\modules\library\skill_learning\job_skillchips\roboticist.dm" #include "code\modules\library\skill_learning\job_skillchips\station_engineer.dm" +#include "code\modules\library\skill_learning\job_skillchips\psychologist.dm" #include "code\modules\library\skill_learning\job_skillchips\traitor.dm" #include "code\modules\lighting\emissive_blocker.dm" #include "code\modules\lighting\lighting_area.dm"