From f529fc35db56e876a89d8663515d36a8894f189d Mon Sep 17 00:00:00 2001 From: Alan Date: Fri, 17 Jul 2026 02:15:57 -0400 Subject: [PATCH] Add Temperate Partier quirk. (#32186) * Add Temperate Partier quirk. * Apply suggestion from CRUNCH review. --- code/__HELPERS/trait_helpers.dm | 2 +- code/_globalvars/traits.dm | 3 ++- code/controllers/subsystem/SSjobs.dm | 6 +++--- code/modules/client/preference/quirks/positive_quirks.dm | 6 ++++++ 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/code/__HELPERS/trait_helpers.dm b/code/__HELPERS/trait_helpers.dm index 5a3d89a4017..2387fac7281 100644 --- a/code/__HELPERS/trait_helpers.dm +++ b/code/__HELPERS/trait_helpers.dm @@ -294,12 +294,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Used to prevent multiple floating blades from triggering over the same target #define TRAIT_BEING_BLADE_SHIELDED "being_blade_shielded" - /// Trait that prevents AI controllers from planning detached from ai_status to prevent weird state stuff. #define TRAIT_AI_PAUSED "trait_ai_paused" /// trait that prevents AI controllers from making new plans, but not executing plans #define TRAIT_AI_DISABLE_PLANNING "TRAIT_AI_DISABLE_PLANNING" +#define TRAIT_TEMPERATE_PARTIER "temperate_partier" // Mob won't wake up drunk in a random department /// This mob's speech is heard through walls by dead players/observers even if it has no client. Idk a better name #define TRAIT_IMPORTANT_SPEAKER "important_speaker" /// Ignores line of sight for the purposes of send_speech() diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index a4214be4cb0..43540b22e6f 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -128,6 +128,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BATON_RESISTANCE" = TRAIT_BATON_RESISTANCE, "TRAIT_BOMBIMMUNE" = TRAIT_BOMBIMMUNE, "TRAIT_BOOTS_OF_JUMPING" = TRAIT_BOOTS_OF_JUMPING, + "TRAIT_TEMPERATE_PARTIER" = TRAIT_TEMPERATE_PARTIER, ), /datum/mind = list( @@ -135,7 +136,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_SLEIGHT_OF_HAND" = TRAIT_SLEIGHT_OF_HAND, "TRAIT_TABLE_LEAP" = TRAIT_TABLE_LEAP, "TRAIT_NEVER_MISSES_DISPOSALS" = TRAIT_NEVER_MISSES_DISPOSALS, - "TRAIT_KNOWS_COOKING_RECIPES" = TRAIT_KNOWS_COOKING_RECIPES + "TRAIT_KNOWS_COOKING_RECIPES" = TRAIT_KNOWS_COOKING_RECIPES, ), /obj = list( diff --git a/code/controllers/subsystem/SSjobs.dm b/code/controllers/subsystem/SSjobs.dm index 17cc92ee797..e2f45fe8cf0 100644 --- a/code/controllers/subsystem/SSjobs.dm +++ b/code/controllers/subsystem/SSjobs.dm @@ -163,11 +163,11 @@ SUBSYSTEM_DEF(jobs) var/turf/T = null var/obj/S = null var/list/landmarks = GLOB.landmarks_list - if(drunken_spawning) + if(drunken_spawning && !HAS_TRAIT(H, TRAIT_TEMPERATE_PARTIER)) landmarks = shuffle(landmarks) //Shuffle it so it's random for(var/obj/effect/landmark/start/sloc in landmarks) - if(sloc.name != rank && !drunken_spawning) + if(sloc.name != rank && !(drunken_spawning && !HAS_TRAIT(H, TRAIT_TEMPERATE_PARTIER))) continue if(locate(/mob/living) in sloc.loc) continue @@ -224,7 +224,7 @@ SUBSYSTEM_DEF(jobs) return H if(late_arrivals_spawning) H.forceMove(pick(GLOB.latejoin)) - if(drunken_spawning) + if(drunken_spawning && !HAS_TRAIT(H, TRAIT_TEMPERATE_PARTIER)) var/obj/item/organ/internal/liver/L var/liver_multiplier = 1 L = H.get_int_organ(/obj/item/organ/internal/liver) diff --git a/code/modules/client/preference/quirks/positive_quirks.dm b/code/modules/client/preference/quirks/positive_quirks.dm index edcc2f51516..6c29e796518 100644 --- a/code/modules/client/preference/quirks/positive_quirks.dm +++ b/code/modules/client/preference/quirks/positive_quirks.dm @@ -196,3 +196,9 @@ cost = 1 species_flags = QUIRK_MACHINE_INCOMPATIBLE organ_to_give = /obj/item/organ/internal/cyberimp/mouth/breathing_tube + +/datum/quirk/temperate_partier + name = "Temperate Partier" + desc = "You never wake up drunk in an unrelated department. You know better than to drink like that on a work night." + cost = 1 + trait_to_apply = TRAIT_TEMPERATE_PARTIER