From 8f361d931ddb52a1396dee0a90e9c81008aebdb2 Mon Sep 17 00:00:00 2001
From: forest2001 <41653574+realforest2001@users.noreply.github.com>
Date: Tue, 4 Jun 2024 13:49:18 +0100
Subject: [PATCH] Weyland-Yutani ID Console (#6372)
# About the pull request
Repairs the ID mod console "centcom" variable (renames it to weyland).
Allows this new WY version of the console to correctly assign Corporate
ID Accesses and job presets.
Renames a couple PMC jobs (no impact due to no playtime tracking)
Adds a whole bunch of WY jobs, including the PMCs, so they'll now track
playtime.
# Explain why it's good for the game
Makes it a bit easier to dynamically update IDs in WY related events. I
know I've encountered plenty of times where I've wanted to add corporate
accesses to certain people but had to resort to variable editing.
# Testing Photographs and Procedure
![image](https://github.com/cmss13-devs/cmss13/assets/41653574/49dab43e-0418-4520-81c9-6d0fce1b32bb)
![image](https://github.com/cmss13-devs/cmss13/assets/41653574/ce6681f2-5c57-40db-8a1a-b872345f108b)
# Changelog
:cl:
fix: Changing an Identification Computer to is_weyland (formerly
is_centcom) now works correctly and allows assignment of corporate
accesses or presets.
code: Added two procs for interpreting WY access information in the UI.
code: Added separate role groups for PMC and Corporate job defines.
add: Added ACCESS_WY_DATABASE as a requirement to use the WY subtype
console.
add: Added a WY subtype for crew monitor.
code: Renamed the faction defines explicitly relating to static defences
due to confusion over FACTION_WY and FACTION_WEYLAND.
/:cl:
---
code/__DEFINES/access.dm | 2 +-
code/__DEFINES/job.dm | 21 ++--
.../__DEFINES/sentry_laptop_configurations.dm | 6 +-
code/datums/paygrades/factions/wy/wy.dm | 2 +-
code/datums/paygrades/paygrade.dm | 2 +-
code/game/jobs/access.dm | 54 ++++++++-
code/game/jobs/job/special/weyland_yutani.dm | 110 ++++++++++++++++++
code/modules/cm_marines/marines_consoles.dm | 73 +++++++++---
code/modules/defenses/bell_tower.dm | 2 +-
code/modules/defenses/defenses.dm | 6 +-
code/modules/defenses/planted_flag.dm | 2 +-
code/modules/defenses/sentry.dm | 8 +-
code/modules/defenses/sentry_flamer.dm | 2 +-
code/modules/defenses/tesla_coil.dm | 2 +-
colonialmarines.dme | 1 +
15 files changed, 249 insertions(+), 44 deletions(-)
create mode 100644 code/game/jobs/job/special/weyland_yutani.dm
diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm
index be96a2e32b85..71b2b6f4b6ac 100644
--- a/code/__DEFINES/access.dm
+++ b/code/__DEFINES/access.dm
@@ -88,7 +88,7 @@ most of them are tied into map-placed objects. This should be reworked in the fu
#define ACCESS_WY_ARMORY 212
///Secret research or other projects with highly restricted access
#define ACCESS_WY_SECRETS 213
-
+#define ACCESS_WY_DATABASE 214
#define ACCESS_WY_LEADERSHIP 215
///Senior leadership, the highest ranks
#define ACCESS_WY_SENIOR_LEAD 216
diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm
index f524ea7ccbed..5b295e68069f 100644
--- a/code/__DEFINES/job.dm
+++ b/code/__DEFINES/job.dm
@@ -172,25 +172,25 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST)
//------------------------------------
//-------- PMC --------//
-#define JOB_PMC_STANDARD "Weyland-Yutani PMC (Standard)"
+#define JOB_PMC_STANDARD "PMC Operator"
#define JOB_PMC_ENGINEER "PMC Corporate Technician"
#define JOB_PMC_MEDIC "PMC Corporate Medic"
#define JOB_PMC_DOCTOR "PMC Trauma Surgeon"
#define JOB_PMC_INVESTIGATOR "PMC Medical Investigator"
-#define JOB_PMC_DETAINER "Weyland-Yutani PMC (Detainer)"
-#define JOB_PMC_ELITE "PMC Elite"
+#define JOB_PMC_DETAINER "PMC Security Enforcer"
#define JOB_PMC_GUNNER "PMC Support Weapons Specialist" //Renamed from Specialist to Support Specialist as it only has SG skills.
#define JOB_PMC_SNIPER "PMC Weapons Specialist" //Renamed from Sharpshooter to specialist as it uses specialist skills.
-#define JOB_PMC_CREWMAN "Weyland-Yutani PMC (Crewman)"
-#define JOB_PMC_NINJA "PMC Ninja"
+#define JOB_PMC_CREWMAN "PMC Vehicle Crewman"
#define JOB_PMC_XENO_HANDLER "PMC Xeno Handler"
-#define JOB_PMC_COMMANDO "PMC Commando"
#define JOB_PMC_LEADER "PMC Leader"
#define JOB_PMC_LEAD_INVEST "PMC Lead Investigator"
#define JOB_PMC_DIRECTOR "PMC Site Director"
#define JOB_PMC_SYNTH "PMC Support Synthetic"
-#define JOB_PMC_GRUNT_LIST list(JOB_PMC_STANDARD, JOB_PMC_ENGINEER, JOB_PMC_MEDIC, JOB_PMC_INVESTIGATOR, JOB_PMC_DETAINER, JOB_PMC_ELITE, JOB_PMC_GUNNER, JOB_PMC_SNIPER, JOB_PMC_CREWMAN, JOB_PMC_NINJA, JOB_PMC_XENO_HANDLER, JOB_PMC_COMMANDO, JOB_PMC_LEADER, JOB_PMC_LEAD_INVEST)
+#define ROLES_WY_PMC list(JOB_PMC_LEADER, JOB_PMC_SNIPER, JOB_PMC_GUNNER, JOB_PMC_ENGINEER, JOB_PMC_MEDIC, JOB_PMC_STANDARD)
+#define ROLES_WY_PMC_AUX list(JOB_PMC_SYNTH, JOB_PMC_CREWMAN, JOB_PMC_XENO_HANDLER, JOB_PMC_DOCTOR)
+#define ROLES_WY_PMC_INSPEC list(JOB_PMC_LEAD_INVEST, JOB_PMC_INVESTIGATOR, JOB_PMC_DETAINER)
+#define ROLES_WY_PMC_ALL ROLES_WY_PMC + ROLES_WY_PMC_AUX + ROLES_WY_PMC_INSPEC
//-------- WY --------//
@@ -205,13 +205,16 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST)
#define JOB_CHIEF_EXECUTIVE "Corporate Chief Executive"
#define JOB_DIRECTOR "W-Y Director"
+#define ROLES_WY_CORPORATE list(JOB_EXECUTIVE_SUPERVISOR, JOB_EXECUTIVE_SPECIALIST, JOB_SENIOR_EXECUTIVE, JOB_EXECUTIVE, JOB_JUNIOR_EXECUTIVE, JOB_TRAINEE)
+#define ROLES_WY_LEADERSHIP list(JOB_DIRECTOR, JOB_PMC_DIRECTOR, JOB_CHIEF_EXECUTIVE, JOB_DIVISION_MANAGER, JOB_ASSISTANT_MANAGER)
+
//-------- WY Goons --------//
#define JOB_WY_GOON "WY Corporate Security"
#define JOB_WY_GOON_TECH "WY Corporate Security Technician"
#define JOB_WY_GOON_LEAD "WY Corporate Security Lead"
#define JOB_WY_GOON_RESEARCHER "WY Research Consultant"
-#define JOB_WY_GOON_LIST list(JOB_WY_GOON, JOB_WY_GOON_LEAD)
+#define ROLES_WY_GOONS list(JOB_WY_GOON_LEAD, JOB_WY_GOON_TECH, JOB_WY_GOON)
//---- Contractors ----//
#define JOB_CONTRACTOR "VAIPO Mercenary"
@@ -386,4 +389,4 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST)
///For denying certain traits being applied to people. ie. bad leg
///'Grunt' lists are for people who wouldn't logically get the bad leg trait, ie. UPP marine counterparts.
-#define JOB_ERT_GRUNT_LIST list(DUTCH_JOB_LIST, RIOT_JOB_LIST, PROVOST_JOB_LIST, CMB_GRUNT_LIST, CLF_JOB_LIST, UPP_JOB_GRUNT_LIST, UPP_COMMANDO_JOB_LIST, CONTRACTOR_JOB_LIST, JOB_WY_GOON_LIST, JOB_PMC_GRUNT_LIST)
+#define JOB_ERT_GRUNT_LIST list(DUTCH_JOB_LIST, RIOT_JOB_LIST, PROVOST_JOB_LIST, CMB_GRUNT_LIST, CLF_JOB_LIST, UPP_JOB_GRUNT_LIST, UPP_COMMANDO_JOB_LIST, CONTRACTOR_JOB_LIST, ROLES_WY_GOONS, ROLES_WY_PMC_ALL)
diff --git a/code/__DEFINES/sentry_laptop_configurations.dm b/code/__DEFINES/sentry_laptop_configurations.dm
index 6f4e2bec14ca..86c7e646c38a 100644
--- a/code/__DEFINES/sentry_laptop_configurations.dm
+++ b/code/__DEFINES/sentry_laptop_configurations.dm
@@ -1,6 +1,6 @@
-#define FACTION_WEYLAND "WY"
-#define FACTION_HUMAN "HUMAN"
-#define FACTION_COLONY "COLONY"
+#define SENTRY_FACTION_WEYLAND "WY"
+#define SENTRY_FACTION_HUMAN "HUMAN"
+#define SENTRY_FACTION_COLONY "COLONY"
#define ROF_SINGLE "SINGLE"
#define ROF_BURST "BURST"
diff --git a/code/datums/paygrades/factions/wy/wy.dm b/code/datums/paygrades/factions/wy/wy.dm
index b3ff70830603..17b46ff5790e 100644
--- a/code/datums/paygrades/factions/wy/wy.dm
+++ b/code/datums/paygrades/factions/wy/wy.dm
@@ -1,7 +1,7 @@
/datum/paygrade/wy_ranks
name = "WYC Paygrade"
pay_multiplier = 1
- default_faction = FACTION_WEYLAND
+ default_faction = FACTION_WY
/datum/paygrade/wy_ranks/wyc1
paygrade = PAY_SHORT_WYC1
diff --git a/code/datums/paygrades/paygrade.dm b/code/datums/paygrades/paygrade.dm
index 862dce0dfb0c..3befc979f2d2 100644
--- a/code/datums/paygrades/paygrade.dm
+++ b/code/datums/paygrades/paygrade.dm
@@ -42,7 +42,7 @@ GLOBAL_LIST_INIT(co_paygrades, list(
GLOB.uscm_officer_paygrades += paygrade
if(officer_grade >= GRADE_FLAG)
GLOB.uscm_highcom_paygrades += paygrade
- if(FACTION_WEYLAND,FACTION_PMC)
+ if(FACTION_WY,FACTION_PMC)
if(officer_grade >= GRADE_FLAG)
GLOB.wy_highcom_paygrades += paygrade
diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm
index 0d10b06d5fef..94e59cbd93ef 100644
--- a/code/game/jobs/access.dm
+++ b/code/game/jobs/access.dm
@@ -212,6 +212,7 @@
ACCESS_WY_PMC_TL,
ACCESS_WY_ARMORY,
ACCESS_WY_SECRETS,
+ ACCESS_WY_DATABASE,
ACCESS_WY_LEADERSHIP,
ACCESS_WY_SENIOR_LEAD,
) + get_access(ACCESS_LIST_COLONIAL_ALL)
@@ -236,6 +237,7 @@
ACCESS_WY_PMC,
ACCESS_WY_PMC_TL,
ACCESS_WY_ARMORY,
+ ACCESS_WY_DATABASE,
ACCESS_WY_LEADERSHIP,
ACCESS_WY_SENIOR_LEAD,
) + get_access(ACCESS_LIST_COLONIAL_ALL)
@@ -446,6 +448,40 @@
if(ACCESS_ARES_DEBUG)
return "AI Debug"
+/proc/get_region_accesses_wy(code)
+ switch(code)
+ if(0)//Everything
+ return get_access(ACCESS_LIST_WY_ALL)
+ if(1)//Corporate General
+ return list(ACCESS_WY_GENERAL, ACCESS_WY_COLONIAL, ACCESS_WY_EXEC)
+ if(2)//Corporate Security
+ return list(ACCESS_WY_SECURITY, ACCESS_WY_ARMORY)
+ if(3)//Corporate Departments
+ return list(ACCESS_WY_MEDICAL, ACCESS_WY_ENGINEERING, ACCESS_WY_FLIGHT, ACCESS_WY_RESEARCH)
+ if(4)//Corporate Leadership
+ return list(ACCESS_WY_LEADERSHIP, ACCESS_WY_SENIOR_LEAD, ACCESS_WY_SECRETS, ACCESS_WY_DATABASE)
+ if(5)//PMCs
+ return list(ACCESS_WY_PMC, ACCESS_WY_PMC_TL, ACCESS_WY_ARMORY)
+ if(6)//Civilian
+ return get_access(ACCESS_LIST_COLONIAL_ALL)
+
+/proc/get_region_accesses_name_wy(code)
+ switch(code)
+ if(0)
+ return "All"
+ if(1)
+ return "Corporate" // Security
+ if(2)
+ return "Corporate Security" // Medbay
+ if(3)
+ return "Corporate Departments" // Research
+ if(4)
+ return "Corporate Leadership" // Engineering
+ if(5)
+ return "Corporate PMCs" // Command
+ if(6)
+ return "Civilian" // Civilian
+
/proc/get_weyland_access_desc(A)
switch(A)
if(ACCESS_WY_GENERAL)
@@ -463,7 +499,7 @@
if(ACCESS_WY_RESEARCH)
return "Wey-Yu Research"
if(ACCESS_WY_EXEC)
- return "Wey-Yu Corporate"
+ return "Wey-Yu Executive"
if(ACCESS_WY_PMC)
return "Wey-Yu PMC"
if(ACCESS_WY_PMC_TL)
@@ -472,7 +508,23 @@
return "Wey-Yu Armory"
if(ACCESS_WY_SECRETS)
return "Wey-Yu HighSec"
+ if(ACCESS_WY_DATABASE)
+ return "Wey-Yu Database"
if(ACCESS_WY_LEADERSHIP)
return "Wey-Yu Leadership"
if(ACCESS_WY_SENIOR_LEAD)
return "Wey-Yu Senior Leadership"
+ if(ACCESS_CIVILIAN_RESEARCH)
+ return "Civilian Research"
+ if(ACCESS_CIVILIAN_COMMAND)
+ return "Civilian Command"
+ if(ACCESS_CIVILIAN_MEDBAY)
+ return "Civilian Medbay"
+ if(ACCESS_CIVILIAN_LOGISTICS)
+ return "Civilian Logistics"
+ if(ACCESS_CIVILIAN_ENGINEERING)
+ return "Civilian Engineering"
+ if(ACCESS_CIVILIAN_BRIG)
+ return "Civilian Brig"
+ if(ACCESS_CIVILIAN_PUBLIC)
+ return "Civilian"
diff --git a/code/game/jobs/job/special/weyland_yutani.dm b/code/game/jobs/job/special/weyland_yutani.dm
new file mode 100644
index 000000000000..d5f47331ca29
--- /dev/null
+++ b/code/game/jobs/job/special/weyland_yutani.dm
@@ -0,0 +1,110 @@
+/datum/job/special/wey_yu
+ supervisors = "Weyland-Yutani Corporate Office"
+ title = "Weyland-Yutani Representative"
+ selection_class = "job_cl"
+ flags_startup_parameters = ROLE_CUSTOM_SPAWN
+ gear_preset = /datum/equipment_preset/wy/trainee
+
+/datum/job/special/wey_yu/corporate/trainee
+ title = JOB_TRAINEE
+ gear_preset = /datum/equipment_preset/wy/trainee
+
+/datum/job/special/wey_yu/corporate/junior_exec
+ title = JOB_JUNIOR_EXECUTIVE
+ gear_preset = /datum/equipment_preset/wy/junior_exec
+
+/datum/job/special/wey_yu/corporate/exec
+ title = JOB_EXECUTIVE
+ gear_preset = /datum/equipment_preset/wy/exec
+
+/datum/job/special/wey_yu/corporate/senior_exec
+ title = JOB_SENIOR_EXECUTIVE
+ gear_preset = /datum/equipment_preset/wy/senior_exec
+
+/datum/job/special/wey_yu/corporate/exec_spec
+ title = JOB_EXECUTIVE_SPECIALIST
+ gear_preset = /datum/equipment_preset/wy/exec_spec
+
+/datum/job/special/wey_yu/corporate/exec_supr
+ title = JOB_EXECUTIVE_SUPERVISOR
+ gear_preset = /datum/equipment_preset/wy/exec_supervisor
+
+/datum/job/special/wey_yu/corporate/assist_man
+ title = JOB_ASSISTANT_MANAGER
+ gear_preset = /datum/equipment_preset/wy/manager/assistant_manager
+
+/datum/job/special/wey_yu/corporate/div_man
+ title = JOB_DIVISION_MANAGER
+ gear_preset = /datum/equipment_preset/wy/manager/division_manager
+ supervisors = "Weyland-Yutani Directorate"
+
+/datum/job/special/wey_yu/corporate/chief_exec
+ title = JOB_CHIEF_EXECUTIVE
+ gear_preset = /datum/equipment_preset/wy/manager/chief_executive
+ supervisors = "Weyland-Yutani Directorate"
+
+/datum/job/special/wey_yu/corporate/director
+ title = JOB_DIRECTOR
+ gear_preset = /datum/equipment_preset/wy/manager/director
+ supervisors = "Weyland-Yutani Directorate"
+
+
+// PMCS //
+/datum/job/special/wey_yu/pmc
+ supervisors = "Weyland-Yutani PMC Dispatch"
+
+/datum/job/special/wey_yu/pmc/standard
+ title = JOB_PMC_STANDARD
+ gear_preset = /datum/equipment_preset/pmc/pmc_standard
+
+/datum/job/special/wey_yu/pmc/medic
+ title = JOB_PMC_MEDIC
+ gear_preset = /datum/equipment_preset/pmc/pmc_medic
+
+/datum/job/special/wey_yu/pmc/engineer
+ title = JOB_PMC_ENGINEER
+ gear_preset = /datum/equipment_preset/pmc/technician
+
+/datum/job/special/wey_yu/pmc/gunner
+ title = JOB_PMC_GUNNER
+ gear_preset = /datum/equipment_preset/pmc/pmc_gunner
+
+/datum/job/special/wey_yu/pmc/sniper
+ title = JOB_PMC_SNIPER
+ gear_preset = /datum/equipment_preset/pmc/pmc_sniper
+
+/datum/job/special/wey_yu/pmc/leader
+ title = JOB_PMC_LEADER
+ gear_preset = /datum/equipment_preset/pmc/pmc_leader
+
+/datum/job/special/wey_yu/pmc/investigator
+ title = JOB_PMC_INVESTIGATOR
+ gear_preset = /datum/equipment_preset/pmc/pmc_med_investigator
+
+/datum/job/special/wey_yu/pmc/lead_invest
+ title = JOB_PMC_LEAD_INVEST
+ gear_preset = /datum/equipment_preset/pmc/pmc_lead_investigator
+
+/datum/job/special/wey_yu/pmc/detainer
+ title = JOB_PMC_DETAINER
+ gear_preset = /datum/equipment_preset/pmc/pmc_detainer
+
+/datum/job/special/wey_yu/pmc/crewman
+ title = JOB_PMC_CREWMAN
+ gear_preset = /datum/equipment_preset/pmc/pmc_crewman
+
+/datum/job/special/wey_yu/pmc/doctor
+ title = JOB_PMC_DOCTOR
+ gear_preset = /datum/equipment_preset/pmc/doctor
+
+/datum/job/special/wey_yu/pmc/handler
+ title = JOB_PMC_XENO_HANDLER
+ gear_preset = /datum/equipment_preset/pmc/xeno_handler
+
+/datum/job/special/wey_yu/pmc/synth
+ title = JOB_PMC_SYNTH
+ gear_preset = /datum/equipment_preset/pmc/synth
+
+/datum/job/special/wey_yu/pmc/director
+ title = JOB_PMC_DIRECTOR
+ gear_preset = /datum/equipment_preset/pmc/director
diff --git a/code/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm
index e02bb930d416..6d1aba4aca70 100644
--- a/code/modules/cm_marines/marines_consoles.dm
+++ b/code/modules/cm_marines/marines_consoles.dm
@@ -8,6 +8,14 @@
#define CARDCON_DEPARTMENT_ENGINEERING "Engineering"
#define CARDCON_DEPARTMENT_COMMAND "Command"
+// Weyland Yutani Categories
+#define CARDCON_DEPARTMENT_CORP_LEAD "Corporate Leadership"
+#define CARDCON_DEPARTMENT_CORP_SECURITY "Corporate Security"
+#define CARDCON_DEPARTMENT_CORPORATE "Corporate Employees"
+#define CARDCON_DEPARTMENT_PMC "PMC Combat Ops"
+#define CARDCON_DEPARTMENT_INSPECTION "PMC Investigations"
+#define CARDCON_DEPARTMENT_SPECIALTY "PMC Specialists"
+
/obj/structure/machinery/computer/card
name = "Identification Computer"
desc = "Terminal for programming USCM employee ID card access."
@@ -20,9 +28,14 @@
var/list/factions = list(FACTION_MARINE)
var/printing
- var/is_centcom = FALSE
+ var/is_weyland = FALSE
var/authenticated = FALSE
+/obj/structure/machinery/computer/card/wey_yu
+ is_weyland = TRUE
+ req_access = list(ACCESS_WY_DATABASE)
+ factions = list(FACTION_WY, FACTION_PMC)
+
/obj/structure/machinery/computer/card/proc/authenticate(mob/user, obj/item/card/id/id_card)
if(!id_card)
visible_message("[SPAN_BOLD("[src]")] states, \"AUTH ERROR: Authority confirmation card is missing!\"")
@@ -192,7 +205,7 @@
target_id_card.assignment = custom_name
else
var/list/new_access = list()
- if(is_centcom)
+ if(is_weyland)
new_access = get_access(ACCESS_LIST_WY_ALL)
else
var/datum/job/job = GLOB.RoleAuthority.roles_for_mode[target]
@@ -223,7 +236,7 @@
log_idmod(target_id_card, " [user.real_name] granted [access_type] IFF. ", key_name_admin(user))
return TRUE
access_type = text2num(params["access_target"])
- if(access_type in (is_centcom ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN)))
+ if(access_type in (is_weyland ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN)))
if(access_type in target_id_card.access)
target_id_card.access -= access_type
log_idmod(target_id_card, " [user.real_name] revoked access '[get_access_desc(access_type)]'. ", key_name_admin(user))
@@ -235,7 +248,7 @@
if(!authenticated || !target_id_card)
return
- target_id_card.access |= (is_centcom ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN))
+ target_id_card.access |= (is_weyland ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN))
target_id_card.faction_group |= factions
log_idmod(target_id_card, " [user.real_name] granted the ID all access and USCM IFF. ", key_name_admin(user))
return TRUE
@@ -290,12 +303,19 @@
/obj/structure/machinery/computer/card/ui_static_data(mob/user)
var/list/data = list()
data["station_name"] = MAIN_SHIP_NAME
- data["centcom_access"] = is_centcom
+ data["weyland_access"] = is_weyland
data["manifest"] = GLOB.data_core.get_manifest(FALSE, FALSE, TRUE)
var/list/departments
- if(is_centcom)
- departments = list("CentCom" = get_all_centcom_jobs())
+ if(is_weyland)
+ departments = list(
+ CARDCON_DEPARTMENT_CORP_LEAD = ROLES_WY_LEADERSHIP,
+ CARDCON_DEPARTMENT_CORP_SECURITY = ROLES_WY_GOONS,
+ CARDCON_DEPARTMENT_CORPORATE = ROLES_WY_CORPORATE,
+ CARDCON_DEPARTMENT_PMC = ROLES_WY_PMC,
+ CARDCON_DEPARTMENT_SPECIALTY = ROLES_WY_PMC_AUX,
+ CARDCON_DEPARTMENT_INSPECTION = ROLES_WY_PMC_INSPEC,
+ )
else if(Check_WO())
// I am not sure about WOs departments so it may need adjustment
departments = list(
@@ -332,18 +352,26 @@
data["jobs"][department] = department_jobs
var/list/regions = list()
- for(var/i in 1 to 7)
+ for(var/i in 1 to is_weyland ? 6 : 7)
var/list/accesses = list()
- for(var/access in get_region_accesses(i))
- if (get_access_desc(access))
- accesses += list(list(
- "desc" = replacetext(get_access_desc(access), " ", " "),
- "ref" = access,
- ))
+ if(!is_weyland)
+ for(var/access in get_region_accesses(i))
+ if(get_access_desc(access))
+ accesses += list(list(
+ "desc" = replacetext(get_access_desc(access), " ", " "),
+ "ref" = access,
+ ))
+ else
+ for(var/access in get_region_accesses_wy(i))
+ if(get_weyland_access_desc(access))
+ accesses += list(list(
+ "desc" = replacetext(get_weyland_access_desc(access), " ", " "),
+ "ref" = access,
+ ))
regions += list(list(
- "name" = get_region_accesses_name(i),
+ "name" = is_weyland ? get_region_accesses_name_wy(i) : get_region_accesses_name(i),
"regid" = i,
"accesses" = accesses
))
@@ -475,6 +503,13 @@
#undef CARDCON_DEPARTMENT_ENGINEERING
#undef CARDCON_DEPARTMENT_COMMAND
+#undef CARDCON_DEPARTMENT_CORP_LEAD
+#undef CARDCON_DEPARTMENT_CORP_SECURITY
+#undef CARDCON_DEPARTMENT_CORPORATE
+#undef CARDCON_DEPARTMENT_PMC
+#undef CARDCON_DEPARTMENT_INSPECTION
+#undef CARDCON_DEPARTMENT_SPECIALTY
+
//This console changes a marine's squad. It's very simple.
//It also does not: change or increment the squad count (used in the login randomizer), nor does it check for jobs.
//Which means you could get sillyiness like "Alpha Sulaco Chief Medical Officer" or "Delta Logistics Officer".
@@ -724,7 +759,10 @@
/obj/structure/machinery/computer/crew/clf
faction = FACTION_CLF
-/obj/structure/machinery/computer/crew/pmc
+/obj/structure/machinery/computer/crew/wey_yu
+ faction = FACTION_WY
+
+/obj/structure/machinery/computer/crew/wey_yu/pmc
faction = FACTION_PMC
/obj/structure/machinery/computer/crew/colony
@@ -1029,7 +1067,8 @@ GLOBAL_LIST_EMPTY_TYPED(crewmonitor, /datum/crewmonitor)
JOB_JUNIOR_EXECUTIVE = 24,
// 30-39: Security
JOB_WY_GOON_LEAD = 30,
- JOB_WY_GOON = 31,
+ JOB_WY_GOON_TECH = 32,
+ JOB_WY_GOON = 32,
// 40-49: MedSci
JOB_PMC_SYNTH = 40,
JOB_PMC_XENO_HANDLER = 41,
diff --git a/code/modules/defenses/bell_tower.dm b/code/modules/defenses/bell_tower.dm
index b4741734e0f4..68d58f02b481 100644
--- a/code/modules/defenses/bell_tower.dm
+++ b/code/modules/defenses/bell_tower.dm
@@ -18,7 +18,7 @@
can_be_near_defense = TRUE
choice_categories = list(
- SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN),
+ SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN),
)
selected_categories = list(
diff --git a/code/modules/defenses/defenses.dm b/code/modules/defenses/defenses.dm
index b5e5cdf55766..a29941fd0c6c 100644
--- a/code/modules/defenses/defenses.dm
+++ b/code/modules/defenses/defenses.dm
@@ -138,11 +138,11 @@
switch(selection)
if(FACTION_MARINE)
faction_group = FACTION_LIST_MARINE
- if(FACTION_WEYLAND)
+ if(SENTRY_FACTION_WEYLAND)
faction_group = FACTION_LIST_MARINE_WY
- if(FACTION_HUMAN)
+ if(SENTRY_FACTION_HUMAN)
faction_group = FACTION_LIST_HUMANOID
- if(FACTION_COLONY)
+ if(SENTRY_FACTION_COLONY)
faction_group = list(FACTION_MARINE, FACTION_COLONIST)
diff --git a/code/modules/defenses/planted_flag.dm b/code/modules/defenses/planted_flag.dm
index 12bcab9b0475..fc50b6ba53f0 100644
--- a/code/modules/defenses/planted_flag.dm
+++ b/code/modules/defenses/planted_flag.dm
@@ -16,7 +16,7 @@
can_be_near_defense = TRUE
choice_categories = list(
- SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN),
+ SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN),
)
selected_categories = list(
diff --git a/code/modules/defenses/sentry.dm b/code/modules/defenses/sentry.dm
index 543dfcefe5bc..3a8a50b5eed7 100644
--- a/code/modules/defenses/sentry.dm
+++ b/code/modules/defenses/sentry.dm
@@ -45,7 +45,7 @@
/// action list is configurable for all subtypes, this is just an example
choice_categories = list(
// SENTRY_CATEGORY_ROF = list(ROF_SINGLE, ROF_BURST, ROF_FULL_AUTO),
- SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN),
+ SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN),
)
selected_categories = list(
@@ -523,8 +523,8 @@
/obj/structure/machinery/defenses/sentry/premade/deployable/colony/Initialize()
. = ..()
- choice_categories[SENTRY_CATEGORY_IFF] = list(FACTION_COLONY, FACTION_WEYLAND)
- selected_categories[SENTRY_CATEGORY_IFF] = FACTION_COLONY
+ choice_categories[SENTRY_CATEGORY_IFF] = list(SENTRY_FACTION_COLONY, SENTRY_FACTION_WEYLAND)
+ selected_categories[SENTRY_CATEGORY_IFF] = SENTRY_FACTION_COLONY
/obj/structure/machinery/defenses/sentry/premade/deployable/almayer
name = "UA-635C Static Gauss Turret"
@@ -579,7 +579,7 @@
handheld_type = /obj/item/defenses/handheld/sentry/dmr
choice_categories = list(
- SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN),
+ SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN),
)
selected_categories = list(
diff --git a/code/modules/defenses/sentry_flamer.dm b/code/modules/defenses/sentry_flamer.dm
index f884b4ec5d14..711bdaa54857 100644
--- a/code/modules/defenses/sentry_flamer.dm
+++ b/code/modules/defenses/sentry_flamer.dm
@@ -11,7 +11,7 @@
choice_categories = list(
// SENTRY_CATEGORY_ROF = list(ROF_SINGLE, ROF_FULL_AUTO),
- SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN),
+ SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN),
)
selected_categories = list(
diff --git a/code/modules/defenses/tesla_coil.dm b/code/modules/defenses/tesla_coil.dm
index cb0646b29775..0eab59e7d7c4 100644
--- a/code/modules/defenses/tesla_coil.dm
+++ b/code/modules/defenses/tesla_coil.dm
@@ -20,7 +20,7 @@
has_camera = FALSE
choice_categories = list(
- SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN),
+ SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN),
)
selected_categories = list(
diff --git a/colonialmarines.dme b/colonialmarines.dme
index e7f280cd99df..e97ca229b9d8 100644
--- a/colonialmarines.dme
+++ b/colonialmarines.dme
@@ -829,6 +829,7 @@
#include "code\game\jobs\job\special\provost.dm"
#include "code\game\jobs\job\special\uaac.dm"
#include "code\game\jobs\job\special\uscm.dm"
+#include "code\game\jobs\job\special\weyland_yutani.dm"
#include "code\game\machinery\aicore_lockdown.dm"
#include "code\game\machinery\air_alarm.dm"
#include "code\game\machinery\air_sensor.dm"