From 2480a3466ee4d8559586e4a182c3d63fda403122 Mon Sep 17 00:00:00 2001 From: Belaya Date: Mon, 7 Apr 2025 16:57:33 -0500 Subject: [PATCH] Return of the Trainee Roles (plus additional alt job titles) --- code/__DEFINES/jobs.dm | 4 + .../game/gamemodes/bloodsucker/bloodsucker.dm | 2 +- code/game/gamemodes/brother/traitor_bro.dm | 2 +- code/game/gamemodes/changeling/changeling.dm | 2 +- code/game/gamemodes/clock_cult/clock_cult.dm | 2 +- code/game/gamemodes/cult/cult.dm | 2 +- .../gamemodes/eldritch_cult/eldritch_cult.dm | 2 +- code/game/gamemodes/overthrow/overthrow.dm | 2 +- code/game/gamemodes/revolution/revolution.dm | 2 +- code/game/gamemodes/traitor/traitor.dm | 2 +- code/modules/client/preferences.dm | 4 +- code/modules/jobs/access.dm | 6 +- code/modules/jobs/job_titles.dm | 60 +++--- .../modules/jobs/job_types/engineer_intern.dm | 79 ++++++++ code/modules/jobs/job_types/medical_intern.dm | 52 +++++ .../jobs/job_types/research_student.dm | 49 +++++ code/modules/jobs/job_types/security_cadet.dm | 178 ++++++++++++++++++ code/modules/jobs/jobs.dm | 16 +- hyperstation/code/gamemode/traitor_thief.dm | 2 +- icons/obj/card.dmi | Bin 16929 -> 17500 bytes tgstation.dme | 4 + 21 files changed, 428 insertions(+), 44 deletions(-) create mode 100644 code/modules/jobs/job_types/engineer_intern.dm create mode 100644 code/modules/jobs/job_types/medical_intern.dm create mode 100644 code/modules/jobs/job_types/research_student.dm create mode 100644 code/modules/jobs/job_types/security_cadet.dm diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 68a9033d7f..86383a50b2 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -12,6 +12,8 @@ #define ROBOTICIST (1<<8) #define AI_JF (1<<9) #define CYBORG (1<<10) +#define JR_OFFICER (1<<11) +#define JR_ENGINEER (1<<12) #define MEDSCI (1<<1) @@ -24,6 +26,8 @@ #define GENETICIST (1<<5) #define VIROLOGIST (1<<6) #define PARAMEDIC (1<<7) +#define JR_DOCTOR (1<<8) +#define JR_SCIENTIST (1<<9) #define CIVILIAN (1<<2) diff --git a/code/game/gamemodes/bloodsucker/bloodsucker.dm b/code/game/gamemodes/bloodsucker/bloodsucker.dm index 73f24948d0..9ab900ef36 100644 --- a/code/game/gamemodes/bloodsucker/bloodsucker.dm +++ b/code/game/gamemodes/bloodsucker/bloodsucker.dm @@ -26,7 +26,7 @@ false_report_weight = 1 chaos = 4 restricted_jobs = list("Prisoner", "AI","Cyborg") - protected_jobs = list("Chaplain", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + protected_jobs = list("Chaplain", "Security Cadet", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //GS13 Edit: Excempting cadets from antagery required_players = 20 required_enemies = 2 recommended_enemies = 4 diff --git a/code/game/gamemodes/brother/traitor_bro.dm b/code/game/gamemodes/brother/traitor_bro.dm index 511f3bb597..f0bec30545 100644 --- a/code/game/gamemodes/brother/traitor_bro.dm +++ b/code/game/gamemodes/brother/traitor_bro.dm @@ -8,7 +8,7 @@ required_players = 25 chaos = 5 restricted_jobs = list("Prisoner", "AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + protected_jobs = list("Security Officer", "Security Cadet", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //GS13 Edit: Excempting cadets from antagery announce_span = "danger" announce_text = "There are Syndicate agents and Blood Brothers on the station!\n\ diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 05979867e2..0d25ea2137 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -12,7 +12,7 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th false_report_weight = 10 chaos = 5 restricted_jobs = list("Prisoner", "AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist + protected_jobs = list("Security Officer", "Security Cadet", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist + GS13 Edit: Excempting cadets from antagery required_players = 15 required_enemies = 1 recommended_enemies = 4 diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 8b7f265b11..186811fefe 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -139,7 +139,7 @@ Credit where due: required_enemies = 3 recommended_enemies = 5 enemy_minimum_age = 7 - protected_jobs = list("Prisoner", "AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //Silicons can eventually be converted + protected_jobs = list("Prisoner", "AI", "Cyborg", "Security Officer", "Security Cadet", "Warden", "Detective", "Head of Security", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //Silicons can eventually be converted + GS13 Edit: Excempting cadets from antagery restricted_jobs = list("Chaplain", "Captain") announce_span = "brass" announce_text = "Servants of Ratvar are trying to summon the Justiciar!\n\ diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 72b3b53989..0168757f2d 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -40,7 +40,7 @@ false_report_weight = 10 chaos = 8 restricted_jobs = list("Prisoner", "AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + protected_jobs = list("Security Officer", "Security Cadet", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //GS13 Edit: Excempting cadets from antagery required_players = 30 required_enemies = 3 recommended_enemies = 5 diff --git a/code/game/gamemodes/eldritch_cult/eldritch_cult.dm b/code/game/gamemodes/eldritch_cult/eldritch_cult.dm index 2086653012..db38ef27ce 100644 --- a/code/game/gamemodes/eldritch_cult/eldritch_cult.dm +++ b/code/game/gamemodes/eldritch_cult/eldritch_cult.dm @@ -5,7 +5,7 @@ false_report_weight = 5 chaos = 5 restricted_jobs = list("Prisoner", "AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to heretic role blacklist + protected_jobs = list("Security Officer","Security Cadet", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to heretic role blacklist + GS13 Edit: Excempting cadets from antagery required_players = 15 required_enemies = 1 recommended_enemies = 4 diff --git a/code/game/gamemodes/overthrow/overthrow.dm b/code/game/gamemodes/overthrow/overthrow.dm index 6a118567df..711673212e 100644 --- a/code/game/gamemodes/overthrow/overthrow.dm +++ b/code/game/gamemodes/overthrow/overthrow.dm @@ -5,7 +5,7 @@ antag_flag = ROLE_OVERTHROW chaos = 5 restricted_jobs = list("AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + protected_jobs = list("Security Officer", "Security Cadet", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //GS13 Edit: Excempting cadets from antagery required_players = 20 // the core idea is of a swift, bloodless coup, so it shouldn't be as chaotic as revs. required_enemies = 2 // minimum two teams, otherwise it's just nerfed revs. recommended_enemies = 4 diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 5b3e742336..961fe0b3d6 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -14,7 +14,7 @@ false_report_weight = 10 chaos = 8 restricted_jobs = list("Prisoner", "AI", "Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + protected_jobs = list("Security Officer", "Security Cadet", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //GS13 Edit: Excempting cadets from antagery required_players = 20 required_enemies = 1 recommended_enemies = 3 diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index d180e43d82..6e1f931a36 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -11,7 +11,7 @@ antag_flag = ROLE_TRAITOR false_report_weight = 20 //Reports of traitors are pretty common. restricted_jobs = list("Prisoner", "Cyborg")//They are part of the AI if he is traitor so are they, they use to get double chances - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist + protected_jobs = list("Security Officer", "Security Cadet", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //citadel change - adds HoP, CE, CMO, and RD to ling role blacklist + GS13 Edit: Excempting cadets from antagery required_players = 0 required_enemies = 1 recommended_enemies = 4 diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 00af91d8b9..3cb2e1c7ce 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1570,7 +1570,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) popup.open(FALSE) onclose(user, "capturekeypress", src) -/datum/preferences/proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Chief Engineer"), widthPerColumn = 295, height = 620) +/datum/preferences/proc/SetChoices(mob/user, limit = 22, list/splitJobs = list("Chief Engineer"), widthPerColumn = 295, height = 620) //GS13 Edit: Expanding out the pref window for new job additions if(!SSjob) return @@ -3025,7 +3025,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/new_wl_rate = input(user, "Choose your weight loss rate from 0.1 (10%) to 2 (200%).\n Decimals such as 0.2 indicate 20% rate.\nDefault recommended rate is 0.5 (50%)", "Character Preference", wl_rate) as num|null if (new_wl_rate) wl_rate = max(min(round(text2num(new_wl_rate),0.01),2),0) - + if("stuckage_chance") var/new_stuckage_chance = input(user, "Choose your chance to get stuck in doors from 0.1 (10%) to 1 (100%).\nDecimals such as 0.2 indicate 20% chance.\nSetting this to 0 restores default values.", "Character Preference", stuckage_chance) as num|null if(new_stuckage_chance) diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index 35a89b46db..233802f3af 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -353,9 +353,9 @@ /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", - "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic", - "Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer", "Prisoner") + "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 /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 8518d4950c..4ff3bdaee2 100644 --- a/code/modules/jobs/job_titles.dm +++ b/code/modules/jobs/job_titles.dm @@ -2,7 +2,7 @@ //Engineering /datum/job/chief_engineer - alt_titles = list("Head Engineer", "Construction Coordinator", "Project Manager", "Power Plant Director") + alt_titles = list("Head Engineer", "Construction Coordinator", "Project Manager", "Power Plant Director", "Engineering Foreman") /datum/job/engineer alt_titles = list("Maintenance Technician", "Engine Technician", "Electrician", "Structural Engineer", "Mechanic", "Station Architect", "Nuclear Plant Operator") @@ -10,27 +10,30 @@ /datum/job/atmos alt_titles = list("Firefighter", "Life Support Specialist", "Disposals Technician") +/datum/job/junior_engineer + alt_titles = list("Atmospheric Intern", "Apprentice Engineer") + //Service /datum/job/assistant - alt_titles = list("Civilian", "Morale Officer", "Off-Duty", "Visitor", "Businessman", "Trader", "Entertainer", "Tourist") + alt_titles = list("Civilian", "Morale Officer", "Off-Duty", "Visitor", "Businessman", "Trader", "Entertainer", "Tourist", "Artist", "Businesswoman", "Butler", "Contractor", "Entertainer", "Freelancer", "Fitness Instructor", "Hobbyist", "Performer") /datum/job/cook alt_titles = list("Cook", "Culinary Artist", "Butcher", "Chef de partie", "Poissonier", "Baker", "Taste Tester") /datum/job/hydro - alt_titles = list("Gardener", "Herbalist", "Botanical Researcher", "Hydroponicist", "Farmer", "Beekeeper", "Vintner") + alt_titles = list("Gardener", "Herbalist", "Botanical Researcher", "Hydroponicist", "Apiarist", "Apiculturist", "Farmer", "Beekeeper", "Vintner", "Junior Botanist") /datum/job/curator - alt_titles = list("Journalist", "Librarian", "Keeper") + alt_titles = list("Journalist", "Librarian", "Keeper", "Historian", "Professor", "Archivist") /datum/job/chaplain - alt_titles = list("Priest", "Priestess", "Prior", "Monk", "Nun", "Counselor") + alt_titles = list("Priest", "Priestess", "Prior", "Monk", "Nun", "Counselor", "Cleric", "High Priest", "High Priestess", "Imam", "Oracle", "Preacher", "Pastor", "Pontifex", "Guru", "Rabbi", "Reverend", "Shrine Maiden", "Shrine Guardian") /datum/job/janitor - alt_titles = list("Custodian", "Sanitation Technician", "Maid", "Trash Can", "Disposal Unit") + alt_titles = list("Custodian", "Custodial Technician", "Sanitation Technician", "Maintenance Technician", "Maid", "Trash Can", "Disposal Unit", "Groundskeeper") /datum/job/lawyer - alt_titles = list("Human Resources Agent", "Internal Affairs Agent", "Attorney") + alt_titles = list("Human Resources Agent", "Internal Affairs Agent", "Attorney", "Defense Attorney", "Legal Clerk", "Public Defender") /datum/job/clown alt_titles = list("Jester", "Comedian") @@ -39,61 +42,72 @@ alt_titles = list("Performer", "Pantomime", "Mimic") /datum/job/bartender - alt_titles = list("Mixologist", "Sommelier", "Bar Owner", "Barmaid", "Expediter") + alt_titles = list("Mixologist", "Sommelier", "Bar Owner", "Barmaid", "Expediter", "Barista", "Tavernkeeper") //Science /datum/job/rd - alt_titles = list("Research Manager", "Science Administrator") + alt_titles = list("Research Manager", "Science Administrator", "Chief Science Officer", "Lead Researcher", "Science Director", "Head of Science") /datum/job/scientist - alt_titles = list("Circuitry Designer", "Xenobiologist", "Xenobotanist", "Xenoarcheologist", "Chemical Researcher", "Researcher", "Pyrotechnician") + alt_titles = list("Circuitry Designer", "Xenobiologist", "Xenobotanist", "Xenoarcheologist", "Chemical Researcher", "Researcher", "Pyrotechnician", "Lab Technician", "Theoretical Physicist") /datum/job/roboticist - alt_titles = list("Biomechanical Engineer", "Mechatronic Engineer", "Mechanic") + alt_titles = list("Biomechanical Engineer", "Mechatronic Engineer", "Mechanic", "Machinist") + +/datum/job/junior_scientist + alt_titles = list("Research Intern", "Apprentice Roboticist", "Research Assistant") //Medical /datum/job/cmo - alt_titles = list("Medical Director", "Medical Administrator") + alt_titles = list("Medical Director", "Medical Administrator", "Chief Physician", "Head of Medical", "Head Physician") /datum/job/doctor - alt_titles = list("Nurse", "Surgeon", "Physician", "Paramedic", "Trophologist", "Nutritionist", "Therapist", "Psychiatrist") + alt_titles = list("Nurse", "Surgeon", "Physician", "Trophologist", "Nutritionist", "Therapist", "Psychiatrist") /datum/job/chemist - alt_titles = list("Pharmacist", "Pharmacologist") + alt_titles = list("Pharmacist", "Pharmacologist", "Pharmacy Technician") /datum/job/virologist - alt_titles = list("Microbiologist", "Biochemist", "Pathologist") + alt_titles = list("Microbiologist", "Biochemist", "Pathologist", "Epidemiologist") /datum/job/geneticist - alt_titles = list("Gene Therapist", "Genetics Researcher") + alt_titles = list("Gene Therapist", "Genetics Researcher", "Mutation Researcher", "Gene Tailor") + +/datum/job/paramedic + alt_titles = list ("Emergency Medical Technician", "Search and Rescue Technician", "Trauma Team Responder") + +/datum/job/junior_doctor + alt_titles = list("Medical Student", "Fellow", "Trainee Pharmacy Technician", "Trainee Pharmacist", "Junior Pathologist") //Security /datum/job/hos alt_titles = list("Chief of Security", "Security Commander", "Sheriff") /datum/job/warden - alt_titles = list("Prison Chief", "Armory Manager", "Prison Administrator", "Brig Superintendent") + alt_titles = list("Prison Chief", "Armory Manager", "Prison Administrator", "Brig Superintendent", "Deputy Commissioner of Security") /datum/job/officer - alt_titles = list("Security Agent", "Probation Officer", "Security Peacekeeper", "Security Guard", "Guardsman", "Security Cadet") + alt_titles = list("Security Agent", "Probation Officer", "Security Peacekeeper", "Security Guard", "Security Constable", "Security Operative", "Guardsman") /datum/job/detective alt_titles = list("Forensics Technician", "Private Investigator", "Gumshoe") +/datum/job/junior_officer + alt_titles = list("Security Assistant","Rookie", "Brig Deputy", "Junior Officer") //Supply /datum/job/qm - alt_titles = list("Supply Chief") + alt_titles = list("Supply Chief", "Head of Supply", "Logistics Coordinator", "Warehouse Supervisor") /datum/job/cargo_tech - alt_titles = list("Mail Man", "Mail Woman", "Mailroom Technician", "Deliveries Officer", "Logistics Technician") + alt_titles = list("Mail Man", "Mail Woman", "Mailroom Technician", "Deliveries Officer", "Logistics Technician", "Warehouse Technician") /datum/job/mining - alt_titles = list("Exotic Ore Miner", "Fauna Hunter", "Explorer", "Digger") //Just because you're a hunter does not excuse you from rock collecting!!!!!!!!!!!! + alt_titles = list("Exotic Ore Miner", "Fauna Hunter", "Explorer", "Digger", "Apprentice Miner") //Just because you're a hunter does not excuse you from rock collecting!!!!!!!!!!!! //Command /datum/job/captain - alt_titles = list("Station Director", "Station Commander", "Station Overseer", "Stationmaster", "Commissar") + alt_titles = list("Station Director", "Station Commander", "Station Overseer", "Stationmaster", "Commissar", "Facility Director", "Commanding Officer") /datum/job/hop - alt_titles = list("Personnel Manager", "Staff Administrator", "Records Administrator") + alt_titles = list("Personnel Manager", "Staff Administrator", "Records Administrator", "Crew Supervisor", "Employment Officer", "Executive Officer") diff --git a/code/modules/jobs/job_types/engineer_intern.dm b/code/modules/jobs/job_types/engineer_intern.dm new file mode 100644 index 0000000000..954dc8befe --- /dev/null +++ b/code/modules/jobs/job_types/engineer_intern.dm @@ -0,0 +1,79 @@ +/datum/job/junior_engineer + title = "Engineering Intern" + flag = JR_ENGINEER + department_head = list("Chief Engineer") + department_flag = ENGSEC + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the chief engineer, and any other more experienced engineers" + selection_color = "#ff9b3d" + exp_requirements = 60 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/engineer/junior + plasma_outfit = /datum/outfit/plasmaman/engineering + + access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, + ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, + ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_ENG + bounty_types = CIV_JOB_ENG + departments = DEPARTMENT_BITFLAG_ENGINEERING + + starting_modifiers = list(/datum/skill_modifier/job/level/wiring, /datum/skill_modifier/job/affinity/wiring) + + display_order = JOB_DISPLAY_ORDER_STATION_ENGINEER + + threat = 1 + + family_heirlooms = list( + /obj/item/clothing/head/hardhat, + /obj/item/screwdriver/brass/family, + /obj/item/wrench/brass/family, + /obj/item/weldingtool/mini, // No brass family variant + /obj/item/crowbar/brass/family, + /obj/item/wirecutters/brass/family + ) + + mail_goodies = list( + /obj/item/storage/box/lights/mixed = 20, + /obj/item/lightreplacer = 10, + /obj/item/holosign_creator/engineering = 8, + /obj/item/clothing/head/hardhat/red/upgraded = 1 + ) + +/datum/outfit/job/engineer/junior + name = "Engineering Intern" + jobtype = /datum/job/junior_engineer + + belt = /obj/item/storage/belt/utility/full/engi + l_pocket = /obj/item/pda/engineering + ears = /obj/item/radio/headset/headset_eng + uniform = /obj/item/clothing/under/rank/engineering/engineer + shoes = /obj/item/clothing/shoes/workboots + head = /obj/item/clothing/head/hardhat + r_pocket = /obj/item/t_scanner + + backpack = /obj/item/storage/backpack/industrial + satchel = /obj/item/storage/backpack/satchel/eng + duffelbag = /obj/item/storage/backpack/duffelbag/engineering + box = /obj/item/storage/box/survival/engineer + pda_slot = ITEM_SLOT_LPOCKET + backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) + +/datum/outfit/job/engineer/gloved + name = "Station Engineer (Gloves)" + gloves = /obj/item/clothing/gloves/color/yellow + +/datum/outfit/job/engineer/gloved/rig + name = "Station Engineer (Hardsuit)" + mask = /obj/item/clothing/mask/breath + suit = /obj/item/clothing/suit/space/hardsuit/engine + suit_store = /obj/item/tank/internals/oxygen + head = null + internals_slot = ITEM_SLOT_SUITSTORE + + diff --git a/code/modules/jobs/job_types/medical_intern.dm b/code/modules/jobs/job_types/medical_intern.dm new file mode 100644 index 0000000000..fcbaf2094a --- /dev/null +++ b/code/modules/jobs/job_types/medical_intern.dm @@ -0,0 +1,52 @@ +/datum/job/junior_doctor + title = "Medical Resident" + flag = JR_DOCTOR + department_head = list("Chief Medical Officer") + department_flag = MEDSCI + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the chief medical officer, and any other senior medical staff" + selection_color = "#74b5e0" + + outfit = /datum/outfit/job/doctor/junior + departments = DEPARTMENT_BITFLAG_MEDICAL + plasma_outfit = /datum/outfit/plasmaman/medical + + access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_MED + bounty_types = CIV_JOB_MED + + display_order = JOB_DISPLAY_ORDER_MEDICAL_DOCTOR + threat = 0.5 + + starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery) + + family_heirlooms = list( + /obj/item/storage/firstaid/ancient/heirloom + ) + + mail_goodies = list( + /obj/effect/spawner/lootdrop/organ_spawner = 5, +// /obj/effect/spawner/lootdrop/memeorgans = 1 + ) + +/datum/outfit/job/doctor/junior + name = "Medical Resident" + jobtype = /datum/job/junior_doctor + + belt = /obj/item/pda/medical + ears = /obj/item/radio/headset/headset_med + uniform = /obj/item/clothing/under/rank/medical/doctor + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat + l_hand = /obj/item/storage/firstaid/regular + suit_store = /obj/item/flashlight/pen + + backpack = /obj/item/storage/backpack/medic + satchel = /obj/item/storage/backpack/satchel/med + duffelbag = /obj/item/storage/backpack/duffelbag/med + + chameleon_extras = /obj/item/gun/syringe diff --git a/code/modules/jobs/job_types/research_student.dm b/code/modules/jobs/job_types/research_student.dm new file mode 100644 index 0000000000..740f2aee75 --- /dev/null +++ b/code/modules/jobs/job_types/research_student.dm @@ -0,0 +1,49 @@ +/datum/job/junior_scientist + title = "Research Student" + flag = SCIENTIST + department_head = list("Research Director") + department_flag = MEDSCI + faction = "Station" + total_positions = 2 + spawn_positions = 1 + supervisors = "the research director, and any other senior science staff" + selection_color = "#9574cd" + exp_requirements = 60 + exp_type = EXP_TYPE_CREW + + outfit = /datum/outfit/job/scientist/junior + plasma_outfit = /datum/outfit/plasmaman/science + + access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS) + minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM) + paycheck = PAYCHECK_EASY + paycheck_department = ACCOUNT_SCI + bounty_types = CIV_JOB_SCI + departments = DEPARTMENT_BITFLAG_SCIENCE + starting_modifiers = list(/datum/skill_modifier/job/level/wiring/basic) + display_order = JOB_DISPLAY_ORDER_SCIENTIST + threat = 1.2 + + family_heirlooms = list( + /obj/item/toy/plush/slimeplushie + ) + + mail_goodies = list( +// /obj/item/raw_anomaly_core/random = 10, no free cores for probies +// /obj/item/disk/tech_disk/spaceloot = 2, + /obj/item/camera_bug = 1 + ) + +/datum/outfit/job/scientist/junior + name = "Research Student" + jobtype = /datum/job/junior_scientist + + belt = /obj/item/pda/toxins + ears = /obj/item/radio/headset/headset_sci + uniform = /obj/item/clothing/under/rank/rnd/scientist + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/science + + backpack = /obj/item/storage/backpack/science + satchel = /obj/item/storage/backpack/satchel/tox + diff --git a/code/modules/jobs/job_types/security_cadet.dm b/code/modules/jobs/job_types/security_cadet.dm new file mode 100644 index 0000000000..2aeae6db5d --- /dev/null +++ b/code/modules/jobs/job_types/security_cadet.dm @@ -0,0 +1,178 @@ +/datum/job/junior_officer + title = "Security Cadet" + flag = JR_OFFICER + auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY + department_head = list("Head of Security") + department_flag = ENGSEC + faction = "Station" + total_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions() + spawn_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions() + supervisors = "the head of security, and the head of your assigned department (if applicable), and any other senior officer" + selection_color = "#c02f2f" + minimal_player_age = 3 + exp_requirements = 300 + exp_type = EXP_TYPE_CREW + considered_combat_role = TRUE + + outfit = /datum/outfit/job/security/junior + plasma_outfit = /datum/outfit/plasmaman/security + + access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) + minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access() + paycheck = PAYCHECK_MEDIUM + paycheck_department = ACCOUNT_SEC + bounty_types = CIV_JOB_SEC + departments = DEPARTMENT_BITFLAG_SECURITY + + mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) + + display_order = JOB_DISPLAY_ORDER_SECURITY_OFFICER + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia) + threat = 2 + + family_heirlooms = list( + /obj/item/book/manual/gato_spacelaw + ) + + mail_goodies = list( + /obj/item/reagent_containers/food/snacks/donut/caramel = 10, + /obj/item/reagent_containers/food/snacks/donut/matcha = 10, + /obj/item/reagent_containers/food/snacks/donut/blumpkin = 5, +// /obj/item/clothing/mask/whistle = 5, +// /obj/item/melee/baton/boomerang/loaded = 1 + ) + +/datum/job/junior_officer/get_access() + var/list/L = list() + L |= ..() | check_config_for_sec_maint() + return L + + +/datum/job/junior_officer/after_spawn(mob/living/spawned, client/player_client, latejoin = FALSE) + . = ..() + if(!ishuman(spawned)) + return + var/mob/living/carbon/human/H = spawned + // Assign department security + var/department + if(player_client?.prefs) + department = player_client.prefs.prefered_security_department + if(!LAZYLEN(GLOB.available_depts) || department == "None") + return + else if(department in GLOB.available_depts) + LAZYREMOVE(GLOB.available_depts, department) + else + department = pick_n_take(GLOB.available_depts) + var/ears = null + var/accessory = null + var/list/dep_access = null + var/destination = null + var/spawn_point = null + switch(department) + if(SEC_DEPT_SUPPLY) + ears = /obj/item/radio/headset/headset_sec/alt/department/supply + dep_access = list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_CARGO) + destination = /area/security/checkpoint/supply + spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in GLOB.department_security_spawns + accessory = /obj/item/clothing/accessory/armband/cargo + if(SEC_DEPT_ENGINEERING) + ears = /obj/item/radio/headset/headset_sec/alt/department/engi + dep_access = list(ACCESS_CONSTRUCTION, ACCESS_ENGINE, ACCESS_ATMOSPHERICS) + destination = /area/security/checkpoint/engineering + spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in GLOB.department_security_spawns + accessory = /obj/item/clothing/accessory/armband/engine + if(SEC_DEPT_MEDICAL) + ears = /obj/item/radio/headset/headset_sec/alt/department/med + dep_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING) + destination = /area/security/checkpoint/medical + spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in GLOB.department_security_spawns + accessory = /obj/item/clothing/accessory/armband/medblue + if(SEC_DEPT_SCIENCE) + ears = /obj/item/radio/headset/headset_sec/alt/department/sci + dep_access = list(ACCESS_RESEARCH, ACCESS_TOX) + destination = /area/security/checkpoint/science + spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns + accessory = /obj/item/clothing/accessory/armband/science + + if(accessory) + var/obj/item/clothing/under/U = H.w_uniform + U.attach_accessory(new accessory) + if(ears) + if(H.ears) + qdel(H.ears) + H.equip_to_slot_or_del(new ears(H),ITEM_SLOT_EARS) + + var/obj/item/card/id/W = H.wear_id + W.access |= dep_access + + var/teleport = 0 + if(!CONFIG_GET(flag/sec_start_brig)) + if(destination || spawn_point) + teleport = 1 + if(teleport) + var/turf/T + if(spawn_point) + T = get_turf(spawn_point) + H.Move(T) + else + var/safety = 0 + while(safety < 25) + T = safepick(get_area_turfs(destination)) + if(T && !H.Move(T)) + safety += 1 + continue + else + break + if(department) + to_chat(H, "You have been assigned to [department]!") + else + to_chat(H, "You have not been assigned to any department. Patrol the halls and help where needed.") + +/datum/outfit/job/security/junior + name = "Security Cadet" + jobtype = /datum/job/junior_officer + + belt = /obj/item/pda/security + ears = /obj/item/radio/headset/headset_sec/alt + uniform = /obj/item/clothing/under/rank/security/officer + gloves = /obj/item/clothing/gloves/color/black + head = /obj/item/clothing/head/helmet/sec + suit = /obj/item/clothing/suit/armor/vest/alt + shoes = /obj/item/clothing/shoes/jackboots/sec + l_pocket = /obj/item/restraints/handcuffs + r_pocket = /obj/item/assembly/flash/handheld + suit_store = /obj/item/gun/energy/e_gun/advtaser + backpack_contents = list(/obj/item/melee/baton/loaded=1) + + backpack = /obj/item/storage/backpack/security + satchel = /obj/item/storage/backpack/satchel/sec + duffelbag = /obj/item/storage/backpack/duffelbag/sec + box = /obj/item/storage/box/survival/security + + implants = list(/obj/item/implant/mindshield) + + chameleon_extras = list(/obj/item/gun/energy/disabler, /obj/item/clothing/glasses/hud/security/sunglasses, /obj/item/clothing/head/helmet) + //The helmet is necessary because /obj/item/clothing/head/helmet/sec is overwritten in the chameleon list by the standard helmet, which has the same name and icon state + + +/obj/item/radio/headset/headset_sec/alt/department/Initialize(mapload) + . = ..() + wires = new/datum/wires/radio(src) + secure_radio_connections = new + recalculateChannels() + +/obj/item/radio/headset/headset_sec/alt/department/engi + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_eng + +/obj/item/radio/headset/headset_sec/alt/department/supply + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_cargo + +/obj/item/radio/headset/headset_sec/alt/department/med + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_med + +/obj/item/radio/headset/headset_sec/alt/department/sci + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_sci diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index d91b102599..9df04794ee 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -6,11 +6,12 @@ GLOBAL_LIST_INIT(command_positions, list( "Research Director", "Chief Medical Officer", "Quartermaster")) - +//GS13 edit: Trainee roles GLOBAL_LIST_INIT(engineering_positions, list( "Chief Engineer", "Station Engineer", - "Atmospheric Technician")) + "Atmospheric Technician", + "Engineering Intern")) GLOBAL_LIST_INIT(medical_positions, list( @@ -19,13 +20,15 @@ GLOBAL_LIST_INIT(medical_positions, list( "Geneticist", "Virologist", "Paramedic", - "Chemist")) + "Chemist", + "Medical Resident")) GLOBAL_LIST_INIT(science_positions, list( "Research Director", "Scientist", - "Roboticist")) + "Roboticist", + "Research Student")) GLOBAL_LIST_INIT(supply_positions, list( "Quartermaster", @@ -50,8 +53,9 @@ GLOBAL_LIST_INIT(security_positions, list( "Head of Security", "Warden", "Detective", - "Security Officer")) - + "Security Officer", + "Security Cadet")) +//End Edits GLOBAL_LIST_INIT(nonhuman_positions, list( "AI", diff --git a/hyperstation/code/gamemode/traitor_thief.dm b/hyperstation/code/gamemode/traitor_thief.dm index 56cdde641a..20e50ddcbc 100644 --- a/hyperstation/code/gamemode/traitor_thief.dm +++ b/hyperstation/code/gamemode/traitor_thief.dm @@ -7,7 +7,7 @@ antag_flag = ROLE_TRAITOR false_report_weight = 20 //Reports of traitors are pretty common. restricted_jobs = list("AI","Cyborg") - protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") + protected_jobs = list("Security Officer", "Security Cadet", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "Quartermaster") //GS13 Edit: Excempting cadets from antagery required_players = 0 required_enemies = 0 diff --git a/icons/obj/card.dmi b/icons/obj/card.dmi index 1bd94f24241a1d07bb6c97c41ba8e12731299549..178971aa6ea9eaea45b4d38934c2ea16369981e6 100644 GIT binary patch literal 17500 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

Q?3 z7L#LqFQvbfM*s}T;Hru>hYiBe*n4l>JJqP49NQUU0vdG#9)-KelGSt34?*3i+YWG; zg|#)Vwl$Xg+en56Gx3Mwp0}@VtOS35{5K@GP9D)m*-Onu&06$cc5wf

Ln1a90SFVy;h#T>5H`kA55wjcR1x()g^A+#6`}|%trG7hGca}9#t0v&Rc--YSZQ~6VLM#h z%Y4u5uL?G!1>uwWQoa|a7yRJPU(OG#^KhH*D~p_f7fp$YrF_78h3nH*d}QJ-E{euB z)1AHZqFcg0_KO-D7?94{a^$_G6S!=40U_zm$llDC$f)%6o!V$2hapLDY}GoR2-Xb& z@)dH17Kgm+8nrsdU?mbP7a|8$zfh1fv={GE#6+usHF&x0tRvx((es9hT7 z+?_C_NQ9;E|C=XL{%b%f=Uh1otZOWkh+FBrR#j9Pp+};DYdE$6>vsI4F?RK%-=8<%No}oR3BPfT>Tk>0gWBZ zxYTq@P~WA}Ceuri;N*Ie1}0~$u63Ih$gjzh1md$&F9tFh=6TLvox5tinr?Q;5P>$Q zfeG!jugsEl)32<2?$k|3Uyx#%@usMnT6ra;(g!5d-Hyeab#7$J5{{WCDoq~v*5xW- z_$PqhUUx1|@|*-b{r`?d{&wg8sf8yW6O#EeH10S2M`3!aUzVj$+-+wK@+1()KO~$Z h`uIPO!X4hUPK@}BC$7B*e>DV9lvR6CCT;5fe*lV<(D(oV literal 16929 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�v%yd0JmYvY+K#EChh_vOe6Z+Ihf1_VtnZM}ypJa^7cSb>931AW0=1rexeK@tuI2f?{$_)@5#^VTo~3K(pb#P&

(J7{OJ9QXj`)Lmcl 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 diff --git a/tgstation.dme b/tgstation.dme index d5e6d706ab..eacade08ce 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2492,19 +2492,23 @@ #include "code\modules\jobs\job_types\curator.dm" #include "code\modules\jobs\job_types\cyborg.dm" #include "code\modules\jobs\job_types\detective.dm" +#include "code\modules\jobs\job_types\engineer_intern.dm" #include "code\modules\jobs\job_types\geneticist.dm" #include "code\modules\jobs\job_types\head_of_personnel.dm" #include "code\modules\jobs\job_types\head_of_security.dm" #include "code\modules\jobs\job_types\janitor.dm" #include "code\modules\jobs\job_types\lawyer.dm" #include "code\modules\jobs\job_types\medical_doctor.dm" +#include "code\modules\jobs\job_types\medical_intern.dm" #include "code\modules\jobs\job_types\mime.dm" #include "code\modules\jobs\job_types\paramedic.dm" #include "code\modules\jobs\job_types\prisoner.dm" #include "code\modules\jobs\job_types\quartermaster.dm" #include "code\modules\jobs\job_types\research_director.dm" +#include "code\modules\jobs\job_types\research_student.dm" #include "code\modules\jobs\job_types\roboticist.dm" #include "code\modules\jobs\job_types\scientist.dm" +#include "code\modules\jobs\job_types\security_cadet.dm" #include "code\modules\jobs\job_types\security_officer.dm" #include "code\modules\jobs\job_types\shaft_miner.dm" #include "code\modules\jobs\job_types\station_engineer.dm"