From f9171bc2ff0a25e9837ada694530b3e818bdd2f4 Mon Sep 17 00:00:00 2001
From: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Date: Fri, 20 May 2022 15:45:47 +0200
Subject: [PATCH] [MIRROR] Fixes Cook CQC + job change config fixes [MDB
IGNORE] (#13592)
* Fixes Cook CQC + job change config fixes
* Update _job.dm
* Update jobs.dm
* Update department_guards.dm
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
---
_maps/deltastation.json | 4 +-
_maps/icebox.json | 6 +-
_maps/kilostation.json | 6 +-
_maps/metastation.json | 4 +-
_maps/tramstation.json | 6 +-
code/controllers/subsystem/job.dm | 2 +-
code/datums/id_trim/jobs.dm | 43 ++-------------
code/datums/martial/cqc.dm | 33 +++++++++--
code/modules/jobs/job_types/_job.dm | 55 ++++++++++++-------
code/modules/jobs/job_types/captain.dm | 2 +-
code/modules/jobs/job_types/cook.dm | 50 ++++-------------
.../skill_learning/job_skillchips/chef.dm | 3 +-
.../master_files/code/datums/id_trim/jobs.dm | 6 --
.../modules/goofsec/code/department_guards.dm | 5 --
14 files changed, 95 insertions(+), 130 deletions(-)
diff --git a/_maps/deltastation.json b/_maps/deltastation.json
index 8aca5246f11..eb46e97d060 100644
--- a/_maps/deltastation.json
+++ b/_maps/deltastation.json
@@ -10,8 +10,8 @@
"whiteship": "whiteship_delta"
},
"job_changes": {
- "cook": {
- "additional_cqc_areas": ["/area/service/cafeteria"]
+ "Cook": {
+ "additional_cqc_areas": ["/area/station/service/cafeteria"]
}
}
}
diff --git a/_maps/icebox.json b/_maps/icebox.json
index 5bdcafa31f6..b4269518e8b 100644
--- a/_maps/icebox.json
+++ b/_maps/icebox.json
@@ -44,10 +44,10 @@
],
"minetype": "none",
"job_changes": {
- "cook": {
- "additional_cqc_areas": ["/area/service/kitchen/diner"]
+ "Cook": {
+ "additional_cqc_areas": ["/area/station/service/kitchen/diner"]
},
- "captain": {
+ "Captain": {
"special_charter": "moon"
}
}
diff --git a/_maps/kilostation.json b/_maps/kilostation.json
index 00c4b5548f9..c89acffafcc 100644
--- a/_maps/kilostation.json
+++ b/_maps/kilostation.json
@@ -16,10 +16,10 @@
}
],
"job_changes": {
- "cook": {
- "additional_cqc_areas": ["/area/service/bar/atrium"]
+ "Cook": {
+ "additional_cqc_areas": ["/area/station/service/bar/atrium"]
},
- "captain": {
+ "Captain": {
"special_charter": "asteroid"
}
}
diff --git a/_maps/metastation.json b/_maps/metastation.json
index 96bccb1859e..3feecaa6215 100644
--- a/_maps/metastation.json
+++ b/_maps/metastation.json
@@ -10,8 +10,8 @@
"emergency": "emergency_meta"
},
"job_changes": {
- "cook": {
- "additional_cqc_areas": ["/area/service/bar", "/area/service/kitchen/coldroom", "/area/commons/lounge"]
+ "Cook": {
+ "additional_cqc_areas": ["/area/station/service/bar", "/area/station/commons/lounge"]
}
}
}
diff --git a/_maps/tramstation.json b/_maps/tramstation.json
index 477749466b6..d63f3d42497 100644
--- a/_maps/tramstation.json
+++ b/_maps/tramstation.json
@@ -22,10 +22,10 @@
}
],
"job_changes": {
- "cook": {
- "additional_cqc_areas": ["/area/service/kitchen/diner"]
+ "Cook": {
+ "additional_cqc_areas": ["/area/station/service/kitchen/diner"]
},
- "captain": {
+ "Captain": {
"special_charter": "asteroid"
}
}
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index 5935b1f1fd5..4dab9f0eebf 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -118,7 +118,7 @@ SUBSYSTEM_DEF(job)
if(!job.config_check())
continue
if(!job.map_check()) //Even though we initialize before mapping, this is fine because the config is loaded at new
- testing("Removed [job.type] due to map config")
+ log_job_debug("Removed [job.title] due to map config")
continue
new_all_occupations += job
name_occupations[job.title] = job
diff --git a/code/datums/id_trim/jobs.dm b/code/datums/id_trim/jobs.dm
index d95bf67c546..98586e548dd 100644
--- a/code/datums/id_trim/jobs.dm
+++ b/code/datums/id_trim/jobs.dm
@@ -17,8 +17,6 @@
var/list/minimal_wildcard_access = list()
/// Static list. Cache of any mapping config job changes.
var/static/list/job_changes
- /// What config entry relates to this job. Should be a lowercase job name with underscores for spaces, eg "prisoner" "research_director" "head_of_security"
- var/config_job
/// An ID card with an access in this list can apply this trim to IDs or use it as a job template when adding access to a card. If the list is null, cannot be used as a template. Should be Head of Staff or ID Console accesses or it may do nothing.
var/list/template_access
/// The typepath to the job datum from the id_trim. This is converted to one of the job singletons in New().
@@ -31,11 +29,11 @@
if(isnull(job_changes))
job_changes = SSmapping.config.job_changes
- if(!length(job_changes) || !config_job)
+ if(!length(job_changes))
refresh_trim_access()
return
- var/list/access_changes = job_changes[config_job]
+ var/list/access_changes = job_changes[job.title]
if(!length(access_changes))
refresh_trim_access()
@@ -84,7 +82,6 @@
sechud_icon_state = SECHUD_ASSISTANT
extra_access = list(ACCESS_MAINT_TUNNELS)
minimal_access = list()
- config_job = "assistant"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/assistant
@@ -105,7 +102,6 @@
extra_access = list(ACCESS_ENGINE_EQUIP, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE)
minimal_access = list(ACCESS_ENGINE, ACCESS_ATMOSPHERICS, ACCESS_AUX_BASE, ACCESS_CONSTRUCTION, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE,
ACCESS_MINERAL_STOREROOM)
- config_job = "atmospheric_technician"
template_access = list(ACCESS_CAPTAIN, ACCESS_CE, ACCESS_CHANGE_IDS)
job = /datum/job/atmospheric_technician
@@ -115,7 +111,6 @@
sechud_icon_state = SECHUD_BARTENDER
extra_access = list(ACCESS_HYDROPONICS, ACCESS_KITCHEN, ACCESS_MORGUE)
minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE, ACCESS_WEAPONS, ACCESS_SERVICE)
- config_job = "bartender"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/bartender
@@ -125,7 +120,6 @@
sechud_icon_state = SECHUD_BOTANIST
extra_access = list(ACCESS_BAR, ACCESS_KITCHEN)
minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_SERVICE)
- config_job = "botanist"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/botanist
@@ -134,7 +128,6 @@
intern_alt_name = "Captain-in-Training"
trim_state = "trim_captain"
sechud_icon_state = SECHUD_CAPTAIN
- config_job = "captain"
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
job = /datum/job/captain
@@ -153,7 +146,6 @@
sechud_icon_state = SECHUD_CARGO_TECHNICIAN
extra_access = list(ACCESS_QM, ACCESS_MINING, ACCESS_MINING_STATION)
minimal_access = list(ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MAINT_TUNNELS, ACCESS_MECH_MINING, ACCESS_MINERAL_STOREROOM)
- config_job = "cargo_technician"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/cargo_technician
@@ -163,7 +155,6 @@
sechud_icon_state = SECHUD_CHAPLAIN
extra_access = list()
minimal_access = list(ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_MORGUE, ACCESS_THEATRE, ACCESS_SERVICE)
- config_job = "chaplain"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/chaplain
@@ -173,7 +164,6 @@
sechud_icon_state = SECHUD_CHEMIST
extra_access = list(ACCESS_SURGERY, ACCESS_VIROLOGY)
minimal_access = list(ACCESS_CHEMISTRY, ACCESS_MECH_MEDICAL, ACCESS_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_PHARMACY)
- config_job = "chemist"
template_access = list(ACCESS_CAPTAIN, ACCESS_CMO, ACCESS_CHANGE_IDS)
job = /datum/job/chemist
@@ -188,7 +178,6 @@
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_HEADS, ACCESS_KEYCARD_AUTH, ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE,
ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_RC_ANNOUNCE, ACCESS_BRIG_ENTRANCE, ACCESS_TCOMSAT, ACCESS_TECH_STORAGE)
minimal_wildcard_access = list(ACCESS_CE)
- config_job = "chief_engineer"
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
job = /datum/job/chief_engineer
@@ -203,7 +192,6 @@
ACCESS_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_PHARMACY, ACCESS_PSYCHOLOGY, ACCESS_RC_ANNOUNCE,
ACCESS_BRIG_ENTRANCE, ACCESS_SURGERY, ACCESS_VIROLOGY)
minimal_wildcard_access = list(ACCESS_CMO)
- config_job = "chief_medical_officer"
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
job = /datum/job/chief_medical_officer
@@ -213,7 +201,6 @@
sechud_icon_state = SECHUD_CLOWN
extra_access = list()
minimal_access = list(ACCESS_THEATRE, ACCESS_SERVICE)
- config_job = "clown"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/clown
@@ -223,7 +210,6 @@
sechud_icon_state = SECHUD_COOK
extra_access = list(ACCESS_BAR, ACCESS_HYDROPONICS)
minimal_access = list(ACCESS_KITCHEN, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_SERVICE)
- config_job = "cook"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/cook
@@ -237,7 +223,6 @@
sechud_icon_state = SECHUD_CURATOR
extra_access = list()
minimal_access = list(ACCESS_AUX_BASE, ACCESS_LIBRARY, ACCESS_MINING_STATION, ACCESS_SERVICE)
- config_job = "curator"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/curator
@@ -248,7 +233,6 @@
extra_access = list(ACCESS_BRIG)
minimal_access = list(ACCESS_SECURITY, ACCESS_COURT, ACCESS_FORENSICS, ACCESS_BRIG_ENTRANCE,ACCESS_MAINT_TUNNELS, ACCESS_MORGUE,
ACCESS_MECH_SECURITY, ACCESS_MINERAL_STOREROOM, ACCESS_WEAPONS)
- config_job = "detective"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOS, ACCESS_CHANGE_IDS)
job = /datum/job/detective
@@ -268,7 +252,6 @@
sechud_icon_state = SECHUD_GENETICIST
extra_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_XENOBIOLOGY)
minimal_access = list(ACCESS_GENETICS, ACCESS_MECH_SCIENCE, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_RND)
- config_job = "geneticist"
template_access = list(ACCESS_CAPTAIN, ACCESS_RD, ACCESS_CHANGE_IDS)
job = /datum/job/geneticist
@@ -286,7 +269,6 @@
ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MORGUE, ACCESS_PSYCHOLOGY, ACCESS_QM, ACCESS_RC_ANNOUNCE,
ACCESS_RESEARCH, ACCESS_BRIG_ENTRANCE, ACCESS_TELEPORTER, ACCESS_THEATRE, ACCESS_VAULT, ACCESS_WEAPONS, ACCESS_SERVICE)
minimal_wildcard_access = list(ACCESS_HOP)
- config_job = "head_of_personnel"
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
job = /datum/job/head_of_personnel
@@ -302,7 +284,6 @@
ACCESS_MAILSORTING, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_MEDICAL, ACCESS_MINERAL_STOREROOM,
ACCESS_MINING, ACCESS_MORGUE, ACCESS_RC_ANNOUNCE, ACCESS_RESEARCH, ACCESS_SECURITY, ACCESS_BRIG_ENTRANCE, ACCESS_WEAPONS)
minimal_wildcard_access = list(ACCESS_HOS)
- config_job = "head_of_security"
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
job = /datum/job/head_of_security
@@ -322,7 +303,6 @@
sechud_icon_state = SECHUD_JANITOR
extra_access = list()
minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM, ACCESS_SERVICE)
- config_job = "janitor"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/janitor
@@ -332,7 +312,6 @@
sechud_icon_state = SECHUD_LAWYER
extra_access = list()
minimal_access = list(ACCESS_COURT, ACCESS_LAWYER, ACCESS_BRIG_ENTRANCE, ACCESS_SERVICE)
- config_job = "lawyer"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_HOS, ACCESS_CHANGE_IDS)
job = /datum/job/lawyer
@@ -342,7 +321,6 @@
sechud_icon_state = SECHUD_MEDICAL_DOCTOR
extra_access = list(ACCESS_CHEMISTRY, ACCESS_VIROLOGY)
minimal_access = list(ACCESS_MECH_MEDICAL, ACCESS_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_PHARMACY, ACCESS_SURGERY)
- config_job = "medical_doctor"
template_access = list(ACCESS_CAPTAIN, ACCESS_CMO, ACCESS_CHANGE_IDS)
job = /datum/job/doctor
@@ -352,7 +330,6 @@
sechud_icon_state = SECHUD_MIME
extra_access = list()
minimal_access = list(ACCESS_THEATRE, ACCESS_SERVICE)
- config_job = "mime"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/mime
@@ -363,7 +340,6 @@
extra_access = list(ACCESS_SURGERY)
minimal_access = list(ACCESS_CONSTRUCTION, ACCESS_HYDROPONICS, ACCESS_MAINT_TUNNELS, ACCESS_MECH_MEDICAL,
ACCESS_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MINING, ACCESS_MORGUE, ACCESS_RESEARCH)
- config_job = "paramedic"
template_access = list(ACCESS_CAPTAIN, ACCESS_CMO, ACCESS_CHANGE_IDS)
job = /datum/job/paramedic
@@ -371,7 +347,6 @@
assignment = "Prisoner"
trim_state = "trim_prisoner"
sechud_icon_state = SECHUD_PRISONER
- config_job = "prisoner"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_HOS, ACCESS_CHANGE_IDS)
job = /datum/job/prisoner
@@ -409,7 +384,6 @@
sechud_icon_state = SECHUD_PSYCHOLOGIST
extra_access = list()
minimal_access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_SERVICE)
- config_job = "psychologist"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CMO, ACCESS_CHANGE_IDS)
job = /datum/job/psychologist
@@ -420,7 +394,6 @@
extra_access = list()
minimal_access = list(ACCESS_AUX_BASE, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MAINT_TUNNELS, ACCESS_MECH_MINING, ACCESS_MINING_STATION,
ACCESS_MINERAL_STOREROOM, ACCESS_MINING, ACCESS_QM, ACCESS_RC_ANNOUNCE, ACCESS_VAULT)
- config_job = "quartermaster"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/quartermaster
@@ -437,7 +410,6 @@
ACCESS_ORDNANCE, ACCESS_ORDNANCE_STORAGE, ACCESS_RC_ANNOUNCE, ACCESS_RESEARCH, ACCESS_RND, ACCESS_ROBOTICS,
ACCESS_BRIG_ENTRANCE, ACCESS_TECH_STORAGE, ACCESS_TELEPORTER, ACCESS_XENOBIOLOGY)
minimal_wildcard_access = list(ACCESS_RD)
- config_job = "research_director"
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
job = /datum/job/research_director
@@ -448,7 +420,6 @@
extra_access = list(ACCESS_GENETICS, ACCESS_ORDNANCE, ACCESS_ORDNANCE_STORAGE, ACCESS_XENOBIOLOGY)
minimal_access = list(ACCESS_AUX_BASE, ACCESS_MECH_SCIENCE, ACCESS_MINERAL_STOREROOM, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_RND,
ACCESS_ROBOTICS, ACCESS_TECH_STORAGE)
- config_job = "roboticist"
template_access = list(ACCESS_CAPTAIN, ACCESS_RD, ACCESS_CHANGE_IDS)
job = /datum/job/roboticist
@@ -459,7 +430,6 @@
extra_access = list(ACCESS_GENETICS, ACCESS_ROBOTICS)
minimal_access = list(ACCESS_AUX_BASE, ACCESS_MECH_SCIENCE, ACCESS_MINERAL_STOREROOM, ACCESS_ORDNANCE, ACCESS_ORDNANCE_STORAGE,
ACCESS_RESEARCH, ACCESS_RND, ACCESS_XENOBIOLOGY)
- config_job = "scientist"
template_access = list(ACCESS_CAPTAIN, ACCESS_RD, ACCESS_CHANGE_IDS)
job = /datum/job/scientist
@@ -471,11 +441,10 @@
extra_access = list(ACCESS_FORENSICS, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE)
minimal_access = list(ACCESS_BRIG, ACCESS_COURT, ACCESS_SECURITY, ACCESS_BRIG_ENTRANCE, ACCESS_MECH_SECURITY,
ACCESS_MINERAL_STOREROOM, ACCESS_WEAPONS)
- /// List of bonus departmental accesses that departmental sec officers get.
- var/department_access = list()
- config_job = "security_officer"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOS, ACCESS_CHANGE_IDS)
job = /datum/job/security_officer
+ /// List of bonus departmental accesses that departmental sec officers get.
+ var/department_access = list()
/datum/id_trim/job/security_officer/refresh_trim_access()
. = ..()
@@ -516,7 +485,6 @@
extra_access = list(ACCESS_MAINT_TUNNELS, ACCESS_QM)
minimal_access = list(ACCESS_CARGO, ACCESS_AUX_BASE, ACCESS_MAILSORTING, ACCESS_MECH_MINING, ACCESS_MINERAL_STOREROOM, ACCESS_MINING,
ACCESS_MINING_STATION)
- config_job = "shaft_miner"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/shaft_miner
@@ -533,7 +501,6 @@
extra_access = list(ACCESS_ATMOSPHERICS)
minimal_access = list(ACCESS_AUX_BASE, ACCESS_CONSTRUCTION, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_EXTERNAL_AIRLOCKS,
ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE, ACCESS_MINERAL_STOREROOM, ACCESS_TCOMSAT, ACCESS_TECH_STORAGE)
- config_job = "station_engineer"
template_access = list(ACCESS_CAPTAIN, ACCESS_CE, ACCESS_CHANGE_IDS)
job = /datum/job/station_engineer
@@ -543,7 +510,6 @@
sechud_icon_state = SECHUD_VIROLOGIST
extra_access = list(ACCESS_CHEMISTRY, ACCESS_MORGUE, ACCESS_SURGERY)
minimal_access = list(ACCESS_MEDICAL, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_VIROLOGY)
- config_job = "virologist"
template_access = list(ACCESS_CAPTAIN, ACCESS_CMO, ACCESS_CHANGE_IDS)
job = /datum/job/virologist
@@ -554,7 +520,6 @@
extra_access = list(ACCESS_FORENSICS, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE)
minimal_access = list(ACCESS_ARMORY, ACCESS_BRIG, ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_MINERAL_STOREROOM,
ACCESS_SECURITY, ACCESS_BRIG_ENTRANCE, ACCESS_WEAPONS) // See /datum/job/warden/get_access()
- config_job = "warden"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOS, ACCESS_CHANGE_IDS)
job = /datum/job/warden
diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm
index 8441405d9cb..273b0b0dc90 100644
--- a/code/datums/martial/cqc.dm
+++ b/code/datums/martial/cqc.dm
@@ -222,12 +222,37 @@
///Subtype of CQC. Only used for the chef.
/datum/martial_art/cqc/under_siege
name = "Close Quarters Cooking"
- var/list/kitchen_areas
+ ///List of all areas that CQC will work in, defaults to Kitchen.
+ var/list/kitchen_areas = list(/area/station/service/kitchen)
-/// Refreshes the valid areas from the cook job singleton, otherwise uses the default kitchen area as a fallback option. See also [/datum/job/cook/New].
+/// Refreshes the valid areas from the cook's mapping config, adding areas in config to the list of possible areas.
/datum/martial_art/cqc/under_siege/proc/refresh_valid_areas()
- var/datum/job/cook/cook_job = SSjob.GetJobType(/datum/job/cook)
- kitchen_areas = cook_job.kitchen_areas.Copy()
+ var/list/job_changes = SSmapping.config.job_changes
+
+ if(!length(job_changes))
+ return
+
+ var/list/cook_changes = job_changes[JOB_COOK]
+
+ if(!length(cook_changes))
+ return
+
+ var/list/additional_cqc_areas = cook_changes["additional_cqc_areas"]
+
+ if(!additional_cqc_areas)
+ return
+
+ if(!islist(additional_cqc_areas))
+ stack_trace("Incorrect CQC area format from mapping configs. Expected /list, got: \[[additional_cqc_areas.type]\]")
+ return
+
+ for(var/path_as_text in additional_cqc_areas)
+ var/path = text2path(path_as_text)
+ if(!ispath(path, /area))
+ stack_trace("Invalid path in mapping config for chef CQC: \[[path_as_text]\]")
+ continue
+
+ kitchen_areas |= path
/// Limits where the chef's CQC can be used to only whitelisted areas.
/datum/martial_art/cqc/under_siege/can_use(mob/living/owner)
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index d5259636bcd..77090a7f107 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -128,30 +128,22 @@
/datum/job/New()
. = ..()
- //SKYRAT ADDITION START
+ // SKYRAT EDIT START
if(!job_spawn_title)
job_spawn_title = title
- //SKYRAT ADDITION END
- var/list/jobs_changes = get_map_changes()
- if(!jobs_changes)
- return
- if(isnum(jobs_changes["spawn_positions"]))
- spawn_positions = jobs_changes["spawn_positions"]
- if(isnum(jobs_changes["total_positions"]))
- total_positions = jobs_changes["total_positions"]
-
-/// Loads up map configs if necessary and returns job changes for this job.
-/datum/job/proc/get_map_changes()
- var/string_type = "[type]"
- var/list/splits = splittext(string_type, "/")
- var/endpart = splits[splits.len]
-
+ // SKYRAT EDIT END
var/list/job_changes = SSmapping.config.job_changes
- if(!(endpart in job_changes))
- return list()
+ if(!job_changes[title])
+ return TRUE
- return job_changes[endpart]
+ var/list/job_positions_edits = job_changes[title]
+ if(!job_positions_edits)
+ return TRUE
+ if(isnum(job_positions_edits["spawn_positions"]))
+ spawn_positions = job_positions_edits["spawn_positions"]
+ if(isnum(job_positions_edits["total_positions"]))
+ total_positions = job_positions_edits["total_positions"]
/// Executes after the mob has been spawned in the map. Client might not be yet in the mob, and is thus a separate variable.
/datum/job/proc/after_spawn(mob/living/spawned, client/player_client)
@@ -239,10 +231,31 @@
/datum/job/proc/config_check()
return TRUE
+/**
+ * # map_check
+ *
+ * Checks the map config for job changes
+ * If they have 0 spawn and total positions in the config, the job is entirely removed from occupations prefs for the round.
+ */
/datum/job/proc/map_check()
- var/list/job_changes = get_map_changes()
- if(!job_changes)
+ var/list/job_changes = SSmapping.config.job_changes
+ if(!job_changes[title]) //no edits made
+ return TRUE
+
+ var/list/job_positions_edits = job_changes[title]
+ if(!job_positions_edits)
+ return TRUE
+
+ var/available_roundstart = TRUE
+ var/available_latejoin = TRUE
+ if(!isnull(job_positions_edits["spawn_positions"]) && (job_positions_edits["spawn_positions"] == 0))
+ available_roundstart = FALSE
+ if(!isnull(job_positions_edits["total_positions"]) && (job_positions_edits["total_positions"] == 0))
+ available_latejoin = FALSE
+
+ if(!available_roundstart && !available_latejoin) //map config disabled the job
return FALSE
+
return TRUE
/datum/job/proc/radio_help_message(mob/M)
diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm
index 223ab8eb6f8..7f66ed7b762 100755
--- a/code/modules/jobs/job_types/captain.dm
+++ b/code/modules/jobs/job_types/captain.dm
@@ -89,7 +89,7 @@
var/list/job_changes = SSmapping.config.job_changes
if(!length(job_changes))
return
- var/list/captain_changes = job_changes["captain"]
+ var/list/captain_changes = job_changes[JOB_CAPTAIN]
if(!length(captain_changes))
return
special_charter = captain_changes["special_charter"]
diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm
index 2f8af996bdc..1621b95378a 100644
--- a/code/modules/jobs/job_types/cook.dm
+++ b/code/modules/jobs/job_types/cook.dm
@@ -9,8 +9,6 @@
selection_color = "#bbe291"
exp_granted_type = EXP_TYPE_CREW
var/cooks = 0 //Counts cooks amount
- /// List of areas that are counted as the kitchen for the purposes of CQC. Defaults to just the kitchen. Mapping configs can and should override this.
- var/list/kitchen_areas = list(/area/station/service/kitchen)
outfit = /datum/outfit/job/cook
plasmaman_outfit = /datum/outfit/plasmaman/chef
@@ -26,39 +24,11 @@
/datum/job_department/service,
)
- family_heirlooms = list(/obj/item/reagent_containers/food/condiment/saltshaker, /obj/item/kitchen/rollingpin, /obj/item/clothing/head/chefhat)
- rpg_title = "Tavern Chef"
- job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN
-
-
-/datum/job/cook/New()
- . = ..()
- var/list/job_changes = SSmapping.config.job_changes
-
- if(!length(job_changes))
- return
-
- var/list/cook_changes = job_changes[JOB_COOK]
-
- if(!length(cook_changes))
- return
-
- var/list/additional_cqc_areas = cook_changes["additional_cqc_areas"]
-
- if(!additional_cqc_areas)
- return
-
- if(!islist(additional_cqc_areas))
- stack_trace("Incorrect CQC area format from mapping configs. Expected /list, got: \[[additional_cqc_areas.type]\]")
- return
-
- for(var/path_as_text in additional_cqc_areas)
- var/path = text2path(path_as_text)
- if(!ispath(path, /area))
- stack_trace("Invalid path in mapping config for chef CQC: \[[path_as_text]\]")
- continue
-
- kitchen_areas |= path
+ family_heirlooms = list(
+ /obj/item/reagent_containers/food/condiment/saltshaker,
+ /obj/item/kitchen/rollingpin,
+ /obj/item/clothing/head/chefhat,
+ )
mail_goodies = list(
/obj/item/storage/box/ingredients/random = 80,
@@ -71,6 +41,8 @@
/obj/item/knife/butcher = 2
)
+ rpg_title = "Tavern Chef"
+ job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN
/datum/job/cook/award_service(client/winner, award)
winner.give_award(award, winner.mob)
@@ -103,14 +75,14 @@
/datum/outfit/job/cook/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
- var/datum/job/cook/J = SSjob.GetJobType(jobtype)
- if(J) // Fix for runtime caused by invalid job being passed
- if(J.cooks>0)//Cooks
+ var/datum/job/cook/other_chefs = SSjob.GetJobType(jobtype)
+ if(other_chefs) // If there's other Chefs, you're a Cook
+ if(other_chefs.cooks > 0)//Cooks
id_trim = /datum/id_trim/job/cook
suit = /obj/item/clothing/suit/apron/chef
head = /obj/item/clothing/head/soft/mime
if(!visualsOnly)
- J.cooks++
+ other_chefs.cooks++
/datum/outfit/job/cook/get_types_to_preload()
. = ..()
diff --git a/code/modules/library/skill_learning/job_skillchips/chef.dm b/code/modules/library/skill_learning/job_skillchips/chef.dm
index cf3199db921..589978452e1 100644
--- a/code/modules/library/skill_learning/job_skillchips/chef.dm
+++ b/code/modules/library/skill_learning/job_skillchips/chef.dm
@@ -1,11 +1,12 @@
/obj/item/skillchip/job/chef
- name = "B0RK-X3 skillchip" // bork bork bork
+ name = "B0RK-X3 skillchip" // bork bork bork
desc = "This biochip faintly smells of garlic, which is odd for something that is normally wedged inside a user's brain. Consult a dietician before use."
skill_name = "Close Quarters Cooking"
skill_description = "A specialised form of self defence, developed by skilled sous-chef de cuisines. No man fights harder than a chef to defend his kitchen."
skill_icon = "utensils"
activate_message = "You can visualize how to defend your kitchen with martial arts."
deactivate_message = "You forget how to control your muscles to execute kicks, slams and restraints while in a kitchen environment."
+ /// The Chef CQC given by the skillchip.
var/datum/martial_art/cqc/under_siege/style
/obj/item/skillchip/job/chef/Initialize(mapload)
diff --git a/modular_skyrat/master_files/code/datums/id_trim/jobs.dm b/modular_skyrat/master_files/code/datums/id_trim/jobs.dm
index eb143edb4e1..9437072b8f4 100644
--- a/modular_skyrat/master_files/code/datums/id_trim/jobs.dm
+++ b/modular_skyrat/master_files/code/datums/id_trim/jobs.dm
@@ -70,7 +70,6 @@
ACCESS_RC_ANNOUNCE, ACCESS_HEADS, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP
)
minimal_wildcard_access = list(ACCESS_CAPTAIN)
- config_job = "blueshield"
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
/datum/id_trim/job/nanotrasen_consultant
@@ -87,7 +86,6 @@
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_VAULT, ACCESS_MINING_STATION,
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE, ACCESS_TELEPORTER, ACCESS_CENT_GENERAL)
minimal_wildcard_access = list(ACCESS_CAPTAIN, ACCESS_CENT_GENERAL)
- config_job = "nanotrasen_consultant"
template_access = list(ACCESS_CAPTAIN, ACCESS_CHANGE_IDS)
/datum/id_trim/job/security_medic
@@ -98,7 +96,6 @@
extra_access = list(ACCESS_FORENSICS)
minimal_access = list(ACCESS_SECURITY, ACCESS_BRIG_ENTRANCE, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, ACCESS_MINERAL_STOREROOM,
ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MAINT_TUNNELS)
- config_job = "security_medic"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOS, ACCESS_CHANGE_IDS)
/datum/id_trim/job/security_medic/New()
@@ -116,7 +113,6 @@
extra_access = list()
minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_EVA, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_TELEPORTER, ACCESS_GATEWAY, ACCESS_TECH_STORAGE,
ACCESS_CENT_GENERAL, ACCESS_RESEARCH, ACCESS_RND)
- config_job = "expeditionary_trooper"
/datum/id_trim/job/brigoff
assignment = "Corrections Officer"
@@ -126,7 +122,6 @@
extra_access = list()
minimal_access = list(ACCESS_SECURITY, ACCESS_BRIG_ENTRANCE, ACCESS_BRIG, ACCESS_COURT,
ACCESS_MAINT_TUNNELS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP)
- config_job = "brigoff"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOS, ACCESS_CHANGE_IDS)
job = /datum/job/brigoff
@@ -137,6 +132,5 @@
sechud_icon_state = SECHUD_BARBER
extra_access = list()
minimal_access = list(ACCESS_THEATRE, ACCESS_MAINT_TUNNELS, ACCESS_BARBER, ACCESS_SERVICE)
- config_job = "barber"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/barber
diff --git a/modular_skyrat/modules/goofsec/code/department_guards.dm b/modular_skyrat/modules/goofsec/code/department_guards.dm
index 29c70126d3d..50a78f6ed71 100644
--- a/modular_skyrat/modules/goofsec/code/department_guards.dm
+++ b/modular_skyrat/modules/goofsec/code/department_guards.dm
@@ -167,7 +167,6 @@
sechud_icon_state = SECHUD_ORDERLY
extra_access = list(ACCESS_BRIG_ENTRANCE, ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_PHARMACY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_WEAPONS)
minimal_access = list(ACCESS_BRIG_ENTRANCE, ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_PHARMACY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_WEAPONS)
- config_job = "orderly"
template_access = list(ACCESS_CAPTAIN, ACCESS_CMO, ACCESS_CHANGE_IDS)
job = /datum/job/orderly
@@ -238,7 +237,6 @@
ACCESS_MECH_SCIENCE, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS, ACCESS_AUX_BASE, ACCESS_WEAPONS)
minimal_access = list(ACCESS_BRIG_ENTRANCE, ACCESS_ROBOTICS, ACCESS_RND, ACCESS_ORDNANCE, ACCESS_ORDNANCE_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY,
ACCESS_MECH_SCIENCE, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS, ACCESS_AUX_BASE, ACCESS_WEAPONS)
- config_job = "science_guard"
template_access = list(ACCESS_CAPTAIN, ACCESS_RD, ACCESS_CHANGE_IDS)
job = /datum/job/science_guard
@@ -312,7 +310,6 @@
sechud_icon_state = SECHUD_BOUNCER
extra_access = list(ACCESS_BRIG_ENTRANCE, ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE, ACCESS_WEAPONS)
minimal_access = list(ACCESS_BRIG_ENTRANCE, ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE, ACCESS_SERVICE, ACCESS_WEAPONS)
- config_job = "bouncer"
template_access = list(ACCESS_CAPTAIN, ACCESS_HOP, ACCESS_CHANGE_IDS)
job = /datum/job/bouncer
@@ -380,7 +377,6 @@
sechud_icon_state = SECHUD_CUSTOMS_AGENT
extra_access = list(ACCESS_BRIG_ENTRANCE, ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_WEAPONS)
minimal_access = list(ACCESS_BRIG_ENTRANCE, ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_WEAPONS)
- config_job = "customs_agent"
template_access = list(ACCESS_CAPTAIN, ACCESS_QM, ACCESS_CHANGE_IDS)
job = /datum/job/customs_agent
@@ -450,7 +446,6 @@
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM, ACCESS_WEAPONS)
minimal_access = list(ACCESS_BRIG_ENTRANCE, ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE, ACCESS_AUX_BASE,
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM, ACCESS_WEAPONS)
- config_job = "engineering_guard"
template_access = list(ACCESS_CAPTAIN, ACCESS_CE, ACCESS_CHANGE_IDS)
job = /datum/job/engineering_guard