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