From 218fcdb8d548f7d3db0e99832b0482c2407240a2 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 25 Dec 2023 00:05:59 +0100 Subject: [PATCH] [MIRROR] adds head of staff job flag [MDB IGNORE] (#25705) * adds head of staff job flag * Update jobs.dm --------- Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> --- code/__DEFINES/jobs.dm | 9 ++++++++- code/__DEFINES/traits/declarations.dm | 8 +++++++- code/_globalvars/traits/_traits.dm | 2 ++ .../subsystem/dynamic/dynamic_rulesets_latejoin.dm | 2 +- code/controllers/subsystem/job.dm | 4 ++-- code/game/machinery/porta_turret/portable_turret.dm | 2 +- code/modules/admin/verbs/anonymousnames.dm | 2 +- code/modules/antagonists/heretic/heretic_antag.dm | 2 +- .../knowledge/sacrifice_knowledge/sacrifice_knowledge.dm | 6 +++--- .../antagonists/pirate/pirate_shuttle_equipment.dm | 2 +- code/modules/antagonists/revolution/revolution.dm | 2 +- .../antagonists/traitor/objectives/assassination.dm | 4 ++-- .../antagonists/traitor/objectives/eyesnatching.dm | 4 ++-- code/modules/antagonists/traitor/objectives/infect.dm | 4 ++-- code/modules/client/preferences.dm | 2 +- code/modules/clothing/neck/_neck.dm | 6 +++--- code/modules/jobs/job_types/_job.dm | 4 ++-- code/modules/jobs/job_types/captain.dm | 3 ++- code/modules/jobs/job_types/chief_engineer.dm | 3 ++- code/modules/jobs/job_types/chief_medical_officer.dm | 3 ++- code/modules/jobs/job_types/head_of_personnel.dm | 3 ++- code/modules/jobs/job_types/head_of_security.dm | 3 ++- code/modules/jobs/job_types/quartermaster.dm | 3 ++- code/modules/jobs/job_types/research_director.dm | 3 ++- code/modules/jobs/job_types/{ => spawner}/personal_ai.dm | 0 .../jobs/job_types/{ => spawner}/positronic_brain.dm | 0 .../jobs/job_types/{ => spawner}/servant_golem.dm | 0 .../reagents/reagent_containers/cups/glassbottle.dm | 8 +++++--- tgstation.dme | 6 +++--- 29 files changed, 62 insertions(+), 38 deletions(-) rename code/modules/jobs/job_types/{ => spawner}/personal_ai.dm (100%) rename code/modules/jobs/job_types/{ => spawner}/positronic_brain.dm (100%) rename code/modules/jobs/job_types/{ => spawner}/servant_golem.dm (100%) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 5de94c3fca5..0418102fe41 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -244,10 +244,14 @@ #define JOB_HIDE_WHEN_EMPTY (1<<10) /// This job cannot be signed up for at round start or recorded in your preferences #define JOB_LATEJOIN_ONLY (1<<11) +/// This job is a head of staff. +#define JOB_HEAD_OF_STAFF (1<<12) /// Combination flag for jobs which are considered regular crew members of the station. #define STATION_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) -/// Combination flag for jobs which should be there for every station trait job. +/// Combination flag for jobs which are considered heads of staff. +#define HEAD_OF_STAFF_JOB_FLAGS (JOB_BOLD_SELECT_TEXT|JOB_CANNOT_OPEN_SLOTS|JOB_HEAD_OF_STAFF) +/// Combination flag for jobs which are enabled by station traits. #define STATION_TRAIT_JOB_FLAGS (JOB_CANNOT_OPEN_SLOTS|JOB_HIDE_WHEN_EMPTY|JOB_LATEJOIN_ONLY&~JOB_REOPEN_ON_ROUNDSTART_LOSS) #define FACTION_NONE "None" @@ -261,3 +265,6 @@ #define SUPERVISOR_HOS "the Head of Security" #define SUPERVISOR_QM "the Quartermaster" #define SUPERVISOR_RD "the Research Director" + +/// Mind traits that should be shared by every head of staff. has to be this way cause byond lists lol +#define HEAD_OF_STAFF_MIND_TRAITS TRAIT_FAST_TYING, TRAIT_HIGH_VALUE_RANSOM diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index b0ca10a8d88..a848ea64684 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -489,9 +489,15 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Is the mob standing on an elevated surface? This prevents them from dropping down if not elevated first. #define TRAIT_ON_ELEVATED_SURFACE "on_elevated_surface" -// Prevents you from twohanding weapons. +/// Prevents you from twohanding weapons. #define TRAIT_NO_TWOHANDING "no_twohanding" +/// Halves the time of tying a tie. +#define TRAIT_FAST_TYING "fast_tying" + +/// Sells for more money on the pirate bounty pad. +#define TRAIT_HIGH_VALUE_RANSOM "high_value_ransom" + // METABOLISMS // Various jobs on the station have historically had better reactions // to various drinks and foodstuffs. Security liking donuts is a classic diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 1b543c0352c..5a4a0181e26 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -191,6 +191,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_EXPANDED_FOV" = TRAIT_EXPANDED_FOV, "TRAIT_EXTROVERT" = TRAIT_EXTROVERT, "TRAIT_FAKEDEATH" = TRAIT_FAKEDEATH, + "TRAIT_FAST_TYING" = TRAIT_FAST_TYING, "TRAIT_FASTMED" = TRAIT_FASTMED, "TRAIT_FAT" = TRAIT_FAT, "TRAIT_FEARLESS" = TRAIT_FEARLESS, @@ -233,6 +234,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_HEAVY_DRINKER" = TRAIT_HEAVY_DRINKER, "TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER, "TRAIT_HIDE_EXTERNAL_ORGANS" = TRAIT_HIDE_EXTERNAL_ORGANS, + "TRAIT_HIGH_VALUE_RANSOM" = TRAIT_HIGH_VALUE_RANSOM, "TRAIT_HOLY" = TRAIT_HOLY, "TRAIT_HOPELESSLY_ADDICTED" = TRAIT_HOPELESSLY_ADDICTED, "TRAIT_HOT_SPRING_CURSED" = TRAIT_HOT_SPRING_CURSED, diff --git a/code/controllers/subsystem/dynamic/dynamic_rulesets_latejoin.dm b/code/controllers/subsystem/dynamic/dynamic_rulesets_latejoin.dm index df66db7068f..464306a902d 100644 --- a/code/controllers/subsystem/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/controllers/subsystem/dynamic/dynamic_rulesets_latejoin.dm @@ -136,7 +136,7 @@ return FALSE var/head_check = 0 for(var/mob/player in GLOB.alive_player_list) - if (player.mind.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + if (player.mind.assigned_role.job_flags & JOB_HEAD_OF_STAFF) head_check++ return (head_check >= required_heads_of_staff) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 027c70447b0..72b9eb622ce 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -767,7 +767,7 @@ SUBSYSTEM_DEF(job) /datum/controller/subsystem/job/proc/get_living_heads() . = list() for(var/datum/mind/head as anything in get_crewmember_minds()) - if(!(head.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND)) + if(!(head.assigned_role.job_flags & JOB_HEAD_OF_STAFF)) continue if(isnull(head.current) || head.current.stat == DEAD) continue @@ -777,7 +777,7 @@ SUBSYSTEM_DEF(job) /datum/controller/subsystem/job/proc/get_all_heads() . = list() for(var/datum/mind/head as anything in get_crewmember_minds()) - if(head.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + if(head.assigned_role.job_flags & JOB_HEAD_OF_STAFF) . += head /// Returns a list of minds of all security members who are alive diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 11f4bb1dd55..5a7e1da9984 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -556,7 +556,7 @@ DEFINE_BITFIELD(turret_flags, list( // If we aren't shooting heads then return a threatcount of 0 if (!(turret_flags & TURRET_FLAG_SHOOT_HEADS)) var/datum/job/apparent_job = SSjob.GetJob(perp.get_assignment()) - if(apparent_job?.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + if(apparent_job?.job_flags & JOB_HEAD_OF_STAFF) return 0 if(turret_flags & TURRET_FLAG_AUTH_WEAPONS) //check for weapon authorization diff --git a/code/modules/admin/verbs/anonymousnames.dm b/code/modules/admin/verbs/anonymousnames.dm index 6f01b88f113..9a71d68637a 100644 --- a/code/modules/admin/verbs/anonymousnames.dm +++ b/code/modules/admin/verbs/anonymousnames.dm @@ -155,7 +155,7 @@ GLOBAL_DATUM(current_anonymous_theme, /datum/anonymous_theme) priority_announce("As punishment for this station's poor productivity when compared to neighbor stations, names and identities will be restricted until further notice.", "Finance Report", SSstation.announcer.get_rand_alert_sound()) /datum/anonymous_theme/employees/anonymous_name(mob/target) - var/is_head_of_staff = target.mind.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND + var/is_head_of_staff = target.mind.assigned_role.job_flags & JOB_HEAD_OF_STAFF var/name = "[is_head_of_staff ? "Manager" : "Employee"] " for(var/i in 1 to 6) if(prob(30) || i == 1) diff --git a/code/modules/antagonists/heretic/heretic_antag.dm b/code/modules/antagonists/heretic/heretic_antag.dm index 17cf0ce86d3..d6740521e80 100644 --- a/code/modules/antagonists/heretic/heretic_antag.dm +++ b/code/modules/antagonists/heretic/heretic_antag.dm @@ -411,7 +411,7 @@ var/num_heads = 0 for(var/mob/player in GLOB.alive_player_list) - if(player.mind.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + if(player.mind.assigned_role.job_flags & JOB_HEAD_OF_STAFF) num_heads++ var/datum/objective/minor_sacrifice/sac_objective = new() diff --git a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm index e2887d73757..d9858cc3ac8 100644 --- a/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm +++ b/code/modules/antagonists/heretic/knowledge/sacrifice_knowledge/sacrifice_knowledge.dm @@ -130,7 +130,7 @@ // First target, any command. for(var/datum/mind/head_mind as anything in shuffle(valid_targets)) - if(head_mind.assigned_role?.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + if(head_mind.assigned_role?.job_flags & JOB_HEAD_OF_STAFF) final_targets += head_mind valid_targets -= head_mind break @@ -187,8 +187,8 @@ heretic_datum.remove_sacrifice_target(sacrifice) var/feedback = "Your patrons accept your offer" - var/sac_department_flag = sacrifice.mind?.assigned_role?.departments_bitflags | sacrifice.last_mind?.assigned_role?.departments_bitflags - if(sac_department_flag & DEPARTMENT_BITFLAG_COMMAND) + var/sac_job_flag = sacrifice.mind?.assigned_role?.job_flags | sacrifice.last_mind?.assigned_role?.job_flags + if(sac_job_flag & JOB_HEAD_OF_STAFF) heretic_datum.knowledge_points++ heretic_datum.high_value_sacrifices++ feedback += " graciously" diff --git a/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm b/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm index 7521ff15549..3696b4ba976 100644 --- a/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm +++ b/code/modules/antagonists/pirate/pirate_shuttle_equipment.dm @@ -396,7 +396,7 @@ return 0 else if(FACTION_PIRATE in ransomee.faction) //can't ransom your fellow pirates to CentCom! return 0 - else if(ransomee.mind.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + else if(HAS_TRAIT(ransomee, TRAIT_HIGH_VALUE_RANSOM)) return 3000 else return 1000 diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index 6ee5ba5dcc7..708f94c3fc3 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -12,7 +12,7 @@ var/deconversion_source /datum/antagonist/rev/can_be_owned(datum/mind/new_owner) - if(new_owner.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + if(new_owner.assigned_role.job_flags & JOB_HEAD_OF_STAFF) return FALSE if(new_owner.unconvertable) return FALSE diff --git a/code/modules/antagonists/traitor/objectives/assassination.dm b/code/modules/antagonists/traitor/objectives/assassination.dm index f3b76874213..9fae7ed3352 100644 --- a/code/modules/antagonists/traitor/objectives/assassination.dm +++ b/code/modules/antagonists/traitor/objectives/assassination.dm @@ -201,10 +201,10 @@ continue //removes heads of staff from being targets from non heads of staff assassinations, and vice versa if(heads_of_staff) - if(!(possible_target.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND)) + if(!(possible_target.assigned_role.job_flags & JOB_HEAD_OF_STAFF)) continue else - if((possible_target.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND)) + if((possible_target.assigned_role.job_flags & JOB_HEAD_OF_STAFF)) continue possible_targets += possible_target for(var/datum/traitor_objective/target_player/objective as anything in possible_duplicates) diff --git a/code/modules/antagonists/traitor/objectives/eyesnatching.dm b/code/modules/antagonists/traitor/objectives/eyesnatching.dm index 5cf95e90384..5773c4e90e0 100644 --- a/code/modules/antagonists/traitor/objectives/eyesnatching.dm +++ b/code/modules/antagonists/traitor/objectives/eyesnatching.dm @@ -74,10 +74,10 @@ continue if(heads_of_staff) - if(!(possible_target.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND)) + if(!(possible_target.assigned_role.job_flags & JOB_HEAD_OF_STAFF)) continue else - if(possible_target.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + if(possible_target.assigned_role.job_flags & JOB_HEAD_OF_STAFF) continue var/mob/living/carbon/human/targets_current = possible_target.current diff --git a/code/modules/antagonists/traitor/objectives/infect.dm b/code/modules/antagonists/traitor/objectives/infect.dm index 2671a615fa8..5f761a273fc 100644 --- a/code/modules/antagonists/traitor/objectives/infect.dm +++ b/code/modules/antagonists/traitor/objectives/infect.dm @@ -101,10 +101,10 @@ continue //removes heads of staff from being targets from non heads of staff assassinations, and vice versa if(heads_of_staff) - if(!(possible_target.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND)) + if(!(possible_target.assigned_role.job_flags & JOB_HEAD_OF_STAFF)) continue else - if((possible_target.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND)) + if((possible_target.assigned_role.job_flags & JOB_HEAD_OF_STAFF)) continue possible_targets += possible_target for(var/datum/traitor_objective/target_player/objective as anything in possible_duplicates) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index b22fe274682..1811f3f8715 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -623,7 +623,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) /datum/preferences/proc/should_be_random_hardcore(datum/job/job, datum/mind/mind) if(!read_preference(/datum/preference/toggle/random_hardcore)) return FALSE - if(job.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) //No command staff + if(job.job_flags & JOB_HEAD_OF_STAFF) //No heads of staff return FALSE for(var/datum/antagonist/antag as anything in mind.antag_datums) if(antag.get_team()) //No team antags diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index b87a3f7b221..a4c6393ed6f 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -81,10 +81,10 @@ var/tie_timer_actual = tie_timer // Mirrors give you a boost to your tying speed. I realize this stacks and I think that's hilarious. for(var/obj/structure/mirror/reflection in view(2, user)) - tie_timer_actual /= 1.25 + tie_timer_actual *= 0.8 // Heads of staff are experts at tying their ties. - if(user.mind?.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) - tie_timer_actual /= 2 + if(HAS_TRAIT(user, TRAIT_FAST_TYING)) + tie_timer_actual *= 0.5 // Tie/Untie our tie if(!do_after(user, tie_timer_actual)) to_chat(user, span_notice("Your fingers fumble away from [src] as your concentration breaks.")) diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index b60623526ba..8df78283cf8 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -103,7 +103,7 @@ /// List of family heirlooms this job can get with the family heirloom quirk. List of types. var/list/family_heirlooms - /// All values = (JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN | JOB_CANNOT_OPEN_SLOTS) + /// All values = (JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_BOLD_SELECT_TEXT | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN | JOB_CANNOT_OPEN_SLOTS | JOB_HEAD_OF_STAFF) var/job_flags = NONE /// Multiplier for general usage of the voice of god. @@ -533,7 +533,7 @@ if(!player_client) return // Disconnected while checking for the appearance ban. - var/require_human = CONFIG_GET(flag/enforce_human_authority) && (job.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + var/require_human = CONFIG_GET(flag/enforce_human_authority) && (job.job_flags & JOB_HEAD_OF_STAFF) if(require_human) var/all_authority_require_human = CONFIG_GET(flag/enforce_human_authority_on_everyone) if(!all_authority_require_human && job.ignore_human_authority) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index d8ae6d335b3..34ff6b53bc9 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -23,6 +23,7 @@ paycheck = PAYCHECK_COMMAND paycheck_department = ACCOUNT_CMD // SKYRAT EDIT - Original: paycheck_department = ACCOUNT_SEC + mind_traits = list(HEAD_OF_STAFF_MIND_TRAITS) liver_traits = list(TRAIT_ROYAL_METABOLISM) display_order = JOB_DISPLAY_ORDER_CAPTAIN @@ -42,7 +43,7 @@ /obj/item/skillchip/sabrage = 5, ) - job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS + job_flags = STATION_JOB_FLAGS | HEAD_OF_STAFF_JOB_FLAGS rpg_title = "Star Duke" voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index fcb26731ca1..fd568464bb6 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -27,6 +27,7 @@ paycheck = PAYCHECK_COMMAND paycheck_department = ACCOUNT_ENG + mind_traits = list(HEAD_OF_STAFF_MIND_TRAITS) liver_traits = list(TRAIT_ENGINEER_METABOLISM, TRAIT_ROYAL_METABOLISM) display_order = JOB_DISPLAY_ORDER_CHIEF_ENGINEER @@ -43,7 +44,7 @@ /obj/effect/spawner/random/engineering/tool_advanced = 3 ) rpg_title = "Head Crystallomancer" - job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS + job_flags = STATION_JOB_FLAGS | HEAD_OF_STAFF_JOB_FLAGS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 998c19a215d..e20ef7c19ed 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -27,6 +27,7 @@ paycheck = PAYCHECK_COMMAND paycheck_department = ACCOUNT_MED + mind_traits = list(HEAD_OF_STAFF_MIND_TRAITS) liver_traits = list(TRAIT_MEDICAL_METABOLISM, TRAIT_ROYAL_METABOLISM) display_order = JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER @@ -40,7 +41,7 @@ ) family_heirlooms = list(/obj/item/storage/medkit/ancient/heirloom, /obj/item/scalpel, /obj/item/hemostat, /obj/item/circular_saw, /obj/item/retractor, /obj/item/cautery, /obj/item/statuebust/hippocratic) rpg_title = "High Cleric" - job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS + job_flags = STATION_JOB_FLAGS | HEAD_OF_STAFF_JOB_FLAGS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index 7cab0feab96..1cd3e99bbef 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -28,6 +28,7 @@ paycheck_department = ACCOUNT_SRV bounty_types = CIV_JOB_RANDOM + mind_traits = list(HEAD_OF_STAFF_MIND_TRAITS) liver_traits = list(TRAIT_ROYAL_METABOLISM) display_order = JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL @@ -39,7 +40,7 @@ family_heirlooms = list(/obj/item/reagent_containers/cup/glass/trophy/silver_cup) rpg_title = "Guild Questgiver" - job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS + job_flags = STATION_JOB_FLAGS | HEAD_OF_STAFF_JOB_FLAGS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 5fa3fcaa948..cc41ee7d01f 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -24,6 +24,7 @@ /datum/job_department/command, ) + mind_traits = list(HEAD_OF_STAFF_MIND_TRAITS) liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM, TRAIT_ROYAL_METABOLISM) paycheck = PAYCHECK_COMMAND @@ -34,7 +35,7 @@ family_heirlooms = list(/obj/item/book/manual/wiki/security_space_law) rpg_title = "Guard Leader" - job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS + job_flags = STATION_JOB_FLAGS | HEAD_OF_STAFF_JOB_FLAGS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 0ca4b0a1052..858ce8b6455 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -20,6 +20,7 @@ paycheck = PAYCHECK_COMMAND paycheck_department = ACCOUNT_CAR + mind_traits = list(HEAD_OF_STAFF_MIND_TRAITS) liver_traits = list(TRAIT_ROYAL_METABOLISM) // finally upgraded display_order = JOB_DISPLAY_ORDER_QUARTERMASTER @@ -33,7 +34,7 @@ /obj/item/circuitboard/machine/emitter = 3 ) rpg_title = "Steward" - job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS + job_flags = STATION_JOB_FLAGS | HEAD_OF_STAFF_JOB_FLAGS voice_of_god_power = 1.4 //Command staff has authority ignore_human_authority = TRUE diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index f2994388838..1142ba033ff 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -28,6 +28,7 @@ paycheck = PAYCHECK_COMMAND paycheck_department = ACCOUNT_SCI + mind_traits = list(HEAD_OF_STAFF_MIND_TRAITS) liver_traits = list(TRAIT_ROYAL_METABOLISM, TRAIT_BALLMER_SCIENTIST) display_order = JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR @@ -41,7 +42,7 @@ family_heirlooms = list(/obj/item/toy/plush/slimeplushie) rpg_title = "Archmagister" - job_flags = STATION_JOB_FLAGS | JOB_BOLD_SELECT_TEXT | JOB_CANNOT_OPEN_SLOTS + job_flags = STATION_JOB_FLAGS | HEAD_OF_STAFF_JOB_FLAGS voice_of_god_power = 1.4 //Command staff has authority diff --git a/code/modules/jobs/job_types/personal_ai.dm b/code/modules/jobs/job_types/spawner/personal_ai.dm similarity index 100% rename from code/modules/jobs/job_types/personal_ai.dm rename to code/modules/jobs/job_types/spawner/personal_ai.dm diff --git a/code/modules/jobs/job_types/positronic_brain.dm b/code/modules/jobs/job_types/spawner/positronic_brain.dm similarity index 100% rename from code/modules/jobs/job_types/positronic_brain.dm rename to code/modules/jobs/job_types/spawner/positronic_brain.dm diff --git a/code/modules/jobs/job_types/servant_golem.dm b/code/modules/jobs/job_types/spawner/servant_golem.dm similarity index 100% rename from code/modules/jobs/job_types/servant_golem.dm rename to code/modules/jobs/job_types/spawner/servant_golem.dm diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm index 1eed3c36b76..013d9831ee7 100644 --- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm +++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm @@ -601,9 +601,11 @@ if(!do_after(user, 2 SECONDS, src)) //takes longer because you are supposed to take the foil off the bottle first return - ///The bonus to success chance that the user gets for being a command role - var/command_bonus = user.mind?.assigned_role.departments_bitflags & DEPARTMENT_BITFLAG_COMMAND ? 20 : 0 - ///The bonus to success chance that the user gets for having a sabrage skillchip installed/otherwise having the trait through other means + //The bonus to success chance that the user gets for being a command role + var/obj/item/organ/internal/liver/liver = user.get_organ_slot(ORGAN_SLOT_LIVER) + var/command_bonus = (!isnull(liver) && HAS_TRAIT(liver, TRAIT_ROYAL_METABOLISM)) ? 20 : 0 + + //The bonus to success chance that the user gets for having a sabrage skillchip installed/otherwise having the trait through other means var/skillchip_bonus = HAS_TRAIT(user, TRAIT_SABRAGE_PRO) ? 35 : 0 //calculate success chance. example: captain's sabre - 15 force = 75% chance var/sabrage_chance = (attacking_item.force * sabrage_success_percentile) + command_bonus + skillchip_bonus diff --git a/tgstation.dme b/tgstation.dme index 06a7f1a8018..67848697858 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4230,8 +4230,6 @@ #include "code\modules\jobs\job_types\medical_doctor.dm" #include "code\modules\jobs\job_types\mime.dm" #include "code\modules\jobs\job_types\paramedic.dm" -#include "code\modules\jobs\job_types\personal_ai.dm" -#include "code\modules\jobs\job_types\positronic_brain.dm" #include "code\modules\jobs\job_types\prisoner.dm" #include "code\modules\jobs\job_types\psychologist.dm" #include "code\modules\jobs\job_types\quartermaster.dm" @@ -4239,7 +4237,6 @@ #include "code\modules\jobs\job_types\roboticist.dm" #include "code\modules\jobs\job_types\scientist.dm" #include "code\modules\jobs\job_types\security_officer.dm" -#include "code\modules\jobs\job_types\servant_golem.dm" #include "code\modules\jobs\job_types\shaft_miner.dm" #include "code\modules\jobs\job_types\station_engineer.dm" #include "code\modules\jobs\job_types\unassigned.dm" @@ -4285,6 +4282,9 @@ #include "code\modules\jobs\job_types\spawner\lavaland_syndicate.dm" #include "code\modules\jobs\job_types\spawner\lifebringer.dm" #include "code\modules\jobs\job_types\spawner\maintenance_drone.dm" +#include "code\modules\jobs\job_types\spawner\personal_ai.dm" +#include "code\modules\jobs\job_types\spawner\positronic_brain.dm" +#include "code\modules\jobs\job_types\spawner\servant_golem.dm" #include "code\modules\jobs\job_types\spawner\skeleton.dm" #include "code\modules\jobs\job_types\spawner\space_bar_patron.dm" #include "code\modules\jobs\job_types\spawner\space_bartender.dm"