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"