diff --git a/GainStation13/code/game/objects/effects/landmarks.dm b/GainStation13/code/game/objects/effects/landmarks.dm new file mode 100644 index 0000000000..6dce6cde1f --- /dev/null +++ b/GainStation13/code/game/objects/effects/landmarks.dm @@ -0,0 +1,3 @@ +/obj/effect/landmark/start/psychologist //GS13: Psychology job + name = "Psychologist" + icon_state = "Medical Doctor" diff --git a/GainStation13/code/game/objects/items/storage/firstaid.dm b/GainStation13/code/game/objects/items/storage/firstaid.dm new file mode 100644 index 0000000000..20a9145169 --- /dev/null +++ b/GainStation13/code/game/objects/items/storage/firstaid.dm @@ -0,0 +1,24 @@ +//GS13: Psych Pillbottles for Psychologist +/obj/item/storage/pill_bottle/happinesspsych + name = "happiness pill bottle" + desc = "Contains pills used as a last resort means to temporarily stabilize depression and anxiety. WARNING: side effects may include slurred speech, drooling, and severe addiction." + +/obj/item/storage/pill_bottle/happinesspsych/PopulateContents() + for(var/i in 1 to 5) + new /obj/item/reagent_containers/pill/happinesspsych(src) + +/obj/item/storage/pill_bottle/lsdpsych + name = "mindbreaker toxin pill bottle" + desc = "!FOR THERAPEUTIC USE ONLY! Contains pills used to alleviate the symptoms of Reality Dissociation Syndrome." + +/obj/item/storage/pill_bottle/lsdpsych/PopulateContents() + for(var/i in 1 to 5) + new /obj/item/reagent_containers/pill/lsdpsych(src) + +/obj/item/storage/pill_bottle/paxpsych + name = "pacification pill" + desc = "Contains pills used to temporarily pacify patients that are deemed a harm to themselves or others." + +/obj/item/storage/pill_bottle/paxpsych/PopulateContents() + for(var/i in 1 to 5) + new /obj/item/reagent_containers/pill/paxpsych(src) diff --git a/GainStation13/code/game/objects/structures/crates_lockers/closets/secure/psychology.dm b/GainStation13/code/game/objects/structures/crates_lockers/closets/secure/psychology.dm new file mode 100644 index 0000000000..2ec39e1c82 --- /dev/null +++ b/GainStation13/code/game/objects/structures/crates_lockers/closets/secure/psychology.dm @@ -0,0 +1,17 @@ +/obj/structure/closet/secure_closet/psychology //GS13: Psychologist job equip locker + name = "psychology locker" + req_access = list(ACCESS_PSYCH) + icon_state = "cabinet" + +/obj/structure/closet/secure_closet/psychology/PopulateContents() + . = ..() + new /obj/item/clothing/under/suit/black(src) + new /obj/item/clothing/under/suit/black/skirt(src) + new /obj/item/clothing/shoes/laceup/(src) + new /obj/item/storage/backpack/medic(src) + new /obj/item/radio/headset/headset_med(src) + new /obj/item/clipboard(src) + new /obj/item/clothing/suit/straight_jacket(src) + new /obj/item/clothing/ears/earmuffs(src) + new /obj/item/clothing/mask/muzzle(src) + new /obj/item/clothing/glasses/sunglasses/blindfold(src) diff --git a/GainStation13/code/modules/jobs/job_types/psychologist.dm b/GainStation13/code/modules/jobs/job_types/psychologist.dm new file mode 100644 index 0000000000..d083b29f45 --- /dev/null +++ b/GainStation13/code/modules/jobs/job_types/psychologist.dm @@ -0,0 +1,43 @@ +/datum/job/psychologist + title = "Psychologist" + flag = MED_PSYCH + department_head = list("Chief Medical Officer", "Head of Personnel") + department_flag = MEDSCI + faction = "Station" + total_positions = 1 + spawn_positions = 1 + minimal_player_age = 1 + supervisors = "the chief medical officer, and head of personnel" + selection_color = "#74b5e0" + exp_requirements = 240 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/psychologist + departments = DEPARTMENT_BITFLAG_MEDICAL + + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_PSYCH) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_PSYCH) + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_MED + bounty_types = CIV_JOB_MED + + display_order = JOB_DISPLAY_ORDER_PSYCH + threat = 0.5 + +/datum/outfit/job/psychologist + name = "Psychologist" + jobtype = /datum/job/psychologist + + belt = /obj/item/pda/medical + ears = /obj/item/radio/headset/headset_med + uniform = /obj/item/clothing/under/suit/black + shoes = /obj/item/clothing/shoes/laceup + l_hand = /obj/item/clipboard + + backpack = /obj/item/storage/backpack/medic + satchel = /obj/item/storage/backpack/satchel/med + duffelbag = /obj/item/storage/backpack/duffelbag/med + + 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) + + chameleon_extras = /obj/item/gun/syringe diff --git a/GainStation13/code/modules/reagents/reagent_containers/pill.dm b/GainStation13/code/modules/reagents/reagent_containers/pill.dm new file mode 100644 index 0000000000..98c6340149 --- /dev/null +++ b/GainStation13/code/modules/reagents/reagent_containers/pill.dm @@ -0,0 +1,18 @@ +//GS13: Pysch pills +/obj/item/reagent_containers/pill/lsdpsych + name = "antipsychotic pill" + desc = "Talk to your healthcare provider immediately if hallucinations worsen or new hallucinations emerge." + icon_state = "pill14" + list_reagents = list(/datum/reagent/toxin/mindbreaker = 5) + +/obj/item/reagent_containers/pill/happinesspsych + name = "mood stabilizer pill" + desc = "Used to temporarily alleviate anxiety and depression, take only as prescribed." + icon_state = "pill_happy" + list_reagents = list(/datum/reagent/drug/happiness = 5) + +/obj/item/reagent_containers/pill/paxpsych + name = "pacification pill" + desc = "Used to temporarily suppress violent, homicidal, or suicidal behavior in patients." + icon_state = "pill12" + list_reagents = list(/datum/reagent/pax = 5) diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index c2021a86f2..d389d22d8d 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -66,6 +66,7 @@ #define ACCESS_CLONING 68 //Cloning room and clone pod ejection #define ACCESS_ENTER_GENPOP 69 #define ACCESS_LEAVE_GENPOP 70 +#define ACCESS_PSYCH 71 //GS13: Psychology room doors //BEGIN CENTCOM ACCESS /*Should leave plenty of room if we need to add more access levels. diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 86383a50b2..1933fae180 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -28,6 +28,7 @@ #define PARAMEDIC (1<<7) #define JR_DOCTOR (1<<8) #define JR_SCIENTIST (1<<9) +#define MED_PSYCH (1<<10) #define CIVILIAN (1<<2) @@ -87,14 +88,15 @@ #define JOB_DISPLAY_ORDER_CHEMIST 24 #define JOB_DISPLAY_ORDER_VIROLOGIST 25 #define JOB_DISPLAY_ORDER_GENETICIST 26 -#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 27 -#define JOB_DISPLAY_ORDER_SCIENTIST 28 -#define JOB_DISPLAY_ORDER_ROBOTICIST 29 -#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 30 -#define JOB_DISPLAY_ORDER_WARDEN 31 -#define JOB_DISPLAY_ORDER_DETECTIVE 32 -#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 33 -#define JOB_DISPLAY_ORDER_PRISONER 34 +#define JOB_DISPLAY_ORDER_PSYCH 27 //GS13: Psychologist +#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 28 +#define JOB_DISPLAY_ORDER_SCIENTIST 29 +#define JOB_DISPLAY_ORDER_ROBOTICIST 30 +#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 31 +#define JOB_DISPLAY_ORDER_WARDEN 32 +#define JOB_DISPLAY_ORDER_DETECTIVE 33 +#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 34 +#define JOB_DISPLAY_ORDER_PRISONER 35 #define DEPARTMENT_UNASSIGNED "No department assigned" diff --git a/code/modules/events/wizard/departmentrevolt.dm b/code/modules/events/wizard/departmentrevolt.dm index 20f361b775..cf5e1908d4 100644 --- a/code/modules/events/wizard/departmentrevolt.dm +++ b/code/modules/events/wizard/departmentrevolt.dm @@ -20,7 +20,7 @@ jobs_to_revolt = list("Assistant") nation_name = pick("Assa", "Mainte", "Tunnel", "Gris", "Grey", "Liath", "Grigio", "Ass", "Assi") if("white") - jobs_to_revolt = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Paramedic", "Virologist") + jobs_to_revolt = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Paramedic", "Psychologist", "Virologist") //GS13 edit: Psychologist job nation_name = pick("Mede", "Healtha", "Recova", "Chemi", "Geneti", "Viro", "Psych") if("yellow") jobs_to_revolt = list("Chief Engineer", "Station Engineer", "Atmospheric Technician") diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index 233802f3af..89b7c1c70c 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -134,7 +134,7 @@ ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY, ACCESS_THEATRE, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_WEAPONS, ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_RC_ANNOUNCE, - ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING) + ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING, ACCESS_PSYCH) //GS13: Psychologist job /proc/get_all_centcom_access() return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE, ACCESS_CENT_TELEPORTER, ACCESS_CENT_CAPTAIN) @@ -162,7 +162,7 @@ if(2) //security return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP,) if(3) //medbay - return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO) + return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO, ACCESS_PSYCH) //GS13: Psychologist job if(4) //research return list(ACCESS_RESEARCH, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_GENETICS, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_MINISAT, ACCESS_RD, ACCESS_NETWORK) if(5) //engineering and maintenance @@ -329,6 +329,8 @@ return "Network Access" if(ACCESS_CLONING) return "Cloning Room" + if(ACCESS_PSYCH) + return "Psychology Office" //GS13: Psychologist job /proc/get_centcom_access_desc(A) switch(A) @@ -354,8 +356,8 @@ /proc/get_all_jobs() return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician", "Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", "Engineering Intern", - "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic", "Medical Resident", - "Research Director", "Scientist", "Roboticist", "Research Student", "Head of Security", "Warden", "Detective", "Security Officer", "Security Cadet", "Prisoner") //Rookie roles + "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic", "Psychologist", "Medical Resident", + "Research Director", "Scientist", "Roboticist", "Research Student", "Head of Security", "Warden", "Detective", "Security Officer", "Security Cadet", "Prisoner") //Rookie + Psychologist roles /proc/get_all_job_icons() //For all existing HUD icons return get_all_jobs() + list("Prisoner") diff --git a/code/modules/jobs/job_titles.dm b/code/modules/jobs/job_titles.dm index 4ff3bdaee2..3ceb070c44 100644 --- a/code/modules/jobs/job_titles.dm +++ b/code/modules/jobs/job_titles.dm @@ -76,6 +76,9 @@ /datum/job/paramedic alt_titles = list ("Emergency Medical Technician", "Search and Rescue Technician", "Trauma Team Responder") +/datum/job/psychologist + alt_titles = list("Therapist", "Psychiatrist") + /datum/job/junior_doctor alt_titles = list("Medical Student", "Fellow", "Trainee Pharmacy Technician", "Trainee Pharmacist", "Junior Pathologist") diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 3472052b53..f5f70f33b1 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -23,10 +23,10 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, - ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) + ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_PSYCH) //GS13 edit: Psychologist job minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, - ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS) + ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_PSYCH) //GS13 edit: Psychologist job paycheck = PAYCHECK_COMMAND paycheck_department = ACCOUNT_MED bounty_types = CIV_JOB_MED diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index c20e5284d1..d3ca4176fc 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -25,13 +25,13 @@ ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER, ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_VAULT, - ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY) + ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_PSYCH) //GS13 edit: Psychologist job minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE, ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER, ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_VAULT, - ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY) + ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_PSYCH) //GS13 edit: Psychologist job paycheck = PAYCHECK_COMMAND paycheck_department = ACCOUNT_SRV bounty_types = CIV_JOB_RANDOM diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index 9df04794ee..90eede88db 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -6,7 +6,7 @@ GLOBAL_LIST_INIT(command_positions, list( "Research Director", "Chief Medical Officer", "Quartermaster")) -//GS13 edit: Trainee roles +//GS13 edit: Trainee roles + Psychologist GLOBAL_LIST_INIT(engineering_positions, list( "Chief Engineer", "Station Engineer", @@ -21,6 +21,7 @@ GLOBAL_LIST_INIT(medical_positions, list( "Virologist", "Paramedic", "Chemist", + "Psychologist", "Medical Resident")) diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index b3e152e3e1..8d82ffa17c 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/strings/ion_laws.json b/strings/ion_laws.json index 03f01b95b3..cde9b52a5c 100644 --- a/strings/ion_laws.json +++ b/strings/ion_laws.json @@ -333,6 +333,7 @@ "CHIEF MEDICAL OFFICERS", "MEDICAL DOCTORS", "PARAMEDICS", + "PSYCHOLOGISTS", "CHEMISTS", "GENETICISTS", "VIROLOGISTS", diff --git a/tgstation.dme b/tgstation.dme index 80e99c4284..118a575221 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3965,6 +3965,7 @@ #include "GainStation13\code\game\area\ruins.dm" #include "GainStation13\code\game\objects\tiles.dm" #include "GainStation13\code\game\objects\turfs.dm" +#include "GainStation13\code\game\objects\effects\landmarks.dm" #include "GainStation13\code\game\objects\effects\posters.dm" #include "GainStation13\code\game\objects\effects\decals\cleanable\misc.dm" #include "GainStation13\code\game\objects\effects\spawners\choco_slime_delivery.dm" @@ -3973,11 +3974,13 @@ #include "GainStation13\code\game\objects\items\RCD.dm" #include "GainStation13\code\game\objects\items\toys.dm" #include "GainStation13\code\game\objects\items\storage\bags.dm" +#include "GainStation13\code\game\objects\items\storage\firstaid.dm" #include "GainStation13\code\game\objects\structures\barsigns.dm" #include "GainStation13\code\game\objects\structures\crate.dm" #include "GainStation13\code\game\objects\structures\medikit.dm" #include "GainStation13\code\game\objects\structures\sofa.dm" #include "GainStation13\code\game\objects\structures\statues.dm" +#include "GainStation13\code\game\objects\structures\crates_lockers\closets\secure\psychology.dm" #include "GainStation13\code\game\turfs\closed.dm" #include "GainStation13\code\game\turfs\open.dm" #include "GainStation13\code\machinery\adipoelectric_generator.dm" @@ -4041,6 +4044,7 @@ #include "GainStation13\code\modules\hydroponics\lipoplant.dm" #include "GainStation13\code\modules\hydroponics\munchies_weed.dm" #include "GainStation13\code\modules\hydroponics\grown\berries.dm" +#include "GainStation13\code\modules\jobs\job_types\psychologist.dm" #include "GainStation13\code\modules\loadout\backpack.dm" #include "GainStation13\code\modules\loadout\gloves.dm" #include "GainStation13\code\modules\loadout\neck.dm" @@ -4080,6 +4084,7 @@ #include "GainStation13\code\modules\reagents\chemistry\recipes\others.dm" #include "GainStation13\code\modules\reagents\chemistry\recipes\ROCKANDSTONEdrinks.dm" #include "GainStation13\code\modules\reagents\reagent_containers\barrel_tank.dm" +#include "GainStation13\code\modules\reagents\reagent_containers\pill.dm" #include "GainStation13\code\modules\research\designs\autolathe.dm" #include "GainStation13\code\modules\research\designs\biogen.dm" #include "GainStation13\code\modules\research\designs\borg.dm"