From 47e038f75435c42ee4348ede35fc9857be633a5e Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Fri, 8 May 2026 18:03:12 -0500 Subject: [PATCH 1/3] diffrent flavor text for forms --- code/__DEFINES/~darkpack/flavor_text.dm | 2 ++ .../~darkpack/traits/declarations.dm | 2 ++ .../modules/flavor_text/code/examine.dm | 9 +++++- .../modules/flavor_text/code/preferences.dm | 30 +++++++++++++++++++ .../code/splats/fera_splat.dm | 1 + .../darkpack_flavor_text.tsx | 12 ++++++++ 6 files changed, 55 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/~darkpack/flavor_text.dm b/code/__DEFINES/~darkpack/flavor_text.dm index 6ea5c18d398a..92b8f975df57 100644 --- a/code/__DEFINES/~darkpack/flavor_text.dm +++ b/code/__DEFINES/~darkpack/flavor_text.dm @@ -4,6 +4,8 @@ #define EXAMINE_DNA_HEADSHOT "headshot" /// Examine Panel flavor text #define EXAMINE_DNA_FLAVOR_TEXT "flavor_text" +#define EXAMINE_DNA_WAR_FORM_FLAVOR_TEXT "war_form_flavor_text" +#define EXAMINE_DNA_FERAL_FORM_FLAVOR_TEXT "feral_form_flavor_text" /// Examine Panel flavor text #define EXAMINE_DNA_NSFW_FLAVOR_TEXT "nsfw_flavor_text" /// Examine Panel OOC notes diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 5fc637e1b77b..960646a77345 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -124,6 +124,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai // If the vampire can't perform mental abilities that require eye contact, as an example: dominate. #define TRAIT_NO_EYE_CONTACT "no_eye_contact" +// If the splat has and allows transformation between forms +#define TRAIT_FERA_FORMS "fera_forms" // If the splat uses the WTA renown system described in W20 p. 245 #define TRAIT_FERA_RENOWN "wta_fera_renown" /// If the species has garou breeds to select. diff --git a/modular_darkpack/modules/flavor_text/code/examine.dm b/modular_darkpack/modules/flavor_text/code/examine.dm index 8cbcbb9ee47d..5c920e983e45 100644 --- a/modular_darkpack/modules/flavor_text/code/examine.dm +++ b/modular_darkpack/modules/flavor_text/code/examine.dm @@ -36,10 +36,17 @@ var/mob/living/carbon/human/holder_human = holder obscured = holder_human.obscured_slots & HIDEFACE + var/main_flavor_text_key = EXAMINE_DNA_FLAVOR_TEXT + + if(iscrinos(holder)) + main_flavor_text_key = EXAMINE_DNA_WAR_FORM_FLAVOR_TEXT + else if(ishispo(holder) || islupus(holder)) + main_flavor_text_key = EXAMINE_DNA_FERAL_FORM_FLAVOR_TEXT + //Check if the mob is obscured, then continue to headshot if(isobserver(user) || show_flavor_text_when_masked || !obscured) headshot = holder_human.dna.features[EXAMINE_DNA_HEADSHOT] - flavor_text = holder_human.dna.features[EXAMINE_DNA_FLAVOR_TEXT] + flavor_text = holder_human.dna.features[main_flavor_text_key] flavor_text_nsfw = holder.dna.features[EXAMINE_DNA_NSFW_FLAVOR_TEXT] ooc_notes = holder.dna.features[EXAMINE_DNA_OOC_NOTES] character_notes = holder.dna.features[EXAMINE_DNA_CHARACTER_NOTES] diff --git a/modular_darkpack/modules/flavor_text/code/preferences.dm b/modular_darkpack/modules/flavor_text/code/preferences.dm index e3e5773da942..d6a2b6d88f75 100644 --- a/modular_darkpack/modules/flavor_text/code/preferences.dm +++ b/modular_darkpack/modules/flavor_text/code/preferences.dm @@ -69,6 +69,36 @@ /datum/preference/text/flavor_text/apply_to_human(mob/living/carbon/human/target, value) target.dna.features[EXAMINE_DNA_FLAVOR_TEXT] = value + +/datum/preference/text/war_form_flavor_text + category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "war_form_flavor_text" + maximum_value_length = MAX_FLAVOR_LEN + relevant_inherent_trait = TRAIT_FERA_FORMS + must_have_relevant_trait = TRUE + +/datum/preference/text/war_form_flavor_text/apply_to_human(mob/living/carbon/human/target, value) + target.dna.features[EXAMINE_DNA_WAR_FORM_FLAVOR_TEXT] = value + +/datum/preference/text/feral_form_flavor_text/is_accessible(datum/preferences/preferences) + . = ..() + +/datum/preference/text/feral_form_flavor_text + category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "feral_form_flavor_text" + maximum_value_length = MAX_FLAVOR_LEN + relevant_inherent_trait = TRAIT_FERA_FORMS + must_have_relevant_trait = TRUE + + +/datum/preference/text/feral_form_flavor_text/apply_to_human(mob/living/carbon/human/target, value) + target.dna.features[EXAMINE_DNA_FERAL_FORM_FLAVOR_TEXT] = value + +/datum/preference/text/feral_form_flavor_text/is_accessible(datum/preferences/preferences) + . = ..() + /////////////////////////////////////////////////////////////////////////// /datum/preference/text/nsfw_flavor_text diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm index 1327bf4e11d3..b6d6eab37e21 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm @@ -86,6 +86,7 @@ /datum/splat/werewolf/shifter abstract_type = /datum/splat/werewolf/shifter splat_traits = list( + TRAIT_FERA_FORMS, TRAIT_WTA_GAROU_BREED, TRAIT_WTA_GAROU_AUSPICE, TRAIT_WTA_GAROU_TRIBE, diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_flavor_text.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_flavor_text.tsx index 4c8cd21e5fb3..f357814d79f3 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_flavor_text.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/darkpack_flavor_text.tsx @@ -10,6 +10,18 @@ export const flavor_text: Feature = { component: FeatureTextInput, }; +export const war_form_flavor_text: Feature = { + name: 'Flavor Text (War form)', + description: "Appears when your character is examined as a war form fera (Crinos). This replaces the main flavor text section.", + component: FeatureTextInput, +}; + +export const feral_form_flavor_text: Feature = { + name: 'Flavor Text (Feral form)', + description: "Appears when your character is examined as a feral and dire form fera (Hispo/Lupus). This replaces the main flavor text section.", + component: FeatureTextInput, +}; + export const nsfw_flavor_text: Feature = { name: 'Flavor Text (NSFW)', description: "Appears when your character is examined (but only if they're identifiable - try a gas mask).", From 6c22a3c10a9814a438e230a76b4eacf3b27d8ec6 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Fri, 8 May 2026 18:16:29 -0500 Subject: [PATCH 2/3] oh it was cause of pref prio --- code/__DEFINES/~darkpack/traits/declarations.dm | 2 +- modular_darkpack/modules/flavor_text/code/examine.dm | 9 ++++++++- modular_darkpack/modules/flavor_text/code/preferences.dm | 8 ++------ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/code/__DEFINES/~darkpack/traits/declarations.dm b/code/__DEFINES/~darkpack/traits/declarations.dm index 960646a77345..15d361e121fa 100644 --- a/code/__DEFINES/~darkpack/traits/declarations.dm +++ b/code/__DEFINES/~darkpack/traits/declarations.dm @@ -124,7 +124,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai // If the vampire can't perform mental abilities that require eye contact, as an example: dominate. #define TRAIT_NO_EYE_CONTACT "no_eye_contact" -// If the splat has and allows transformation between forms +// If the splat shifts between diffrent forms as a fera #define TRAIT_FERA_FORMS "fera_forms" // If the splat uses the WTA renown system described in W20 p. 245 #define TRAIT_FERA_RENOWN "wta_fera_renown" diff --git a/modular_darkpack/modules/flavor_text/code/examine.dm b/modular_darkpack/modules/flavor_text/code/examine.dm index 5c920e983e45..b4177352fb43 100644 --- a/modular_darkpack/modules/flavor_text/code/examine.dm +++ b/modular_darkpack/modules/flavor_text/code/examine.dm @@ -70,7 +70,14 @@ /mob/living/carbon/proc/flavor_text_creation() var/flavor_text_to_show - var/preview_text = copytext_char(dna.features[EXAMINE_DNA_FLAVOR_TEXT], 1, FLAVOR_PREVIEW_LIMIT) + + var/main_flavor_text_key = EXAMINE_DNA_FLAVOR_TEXT + if(iscrinos(src)) + main_flavor_text_key = EXAMINE_DNA_WAR_FORM_FLAVOR_TEXT + else if(ishispo(src) || islupus(src)) + main_flavor_text_key = EXAMINE_DNA_FERAL_FORM_FLAVOR_TEXT + + var/preview_text = copytext_char(dna.features[main_flavor_text_key], 1, FLAVOR_PREVIEW_LIMIT) // What examine_tgui.dm uses to determine if flavor text appears as "Obscured". var/face_obscured = obscured_slots & HIDEFACE if(!face_obscured || (face_obscured && client?.prefs.read_preference(/datum/preference/toggle/show_flavor_text_when_masked))) diff --git a/modular_darkpack/modules/flavor_text/code/preferences.dm b/modular_darkpack/modules/flavor_text/code/preferences.dm index d6a2b6d88f75..af433a1c6259 100644 --- a/modular_darkpack/modules/flavor_text/code/preferences.dm +++ b/modular_darkpack/modules/flavor_text/code/preferences.dm @@ -72,6 +72,7 @@ /datum/preference/text/war_form_flavor_text category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + priority = PREFERENCE_PRIORITY_BODYPARTS savefile_identifier = PREFERENCE_CHARACTER savefile_key = "war_form_flavor_text" maximum_value_length = MAX_FLAVOR_LEN @@ -81,24 +82,19 @@ /datum/preference/text/war_form_flavor_text/apply_to_human(mob/living/carbon/human/target, value) target.dna.features[EXAMINE_DNA_WAR_FORM_FLAVOR_TEXT] = value -/datum/preference/text/feral_form_flavor_text/is_accessible(datum/preferences/preferences) - . = ..() /datum/preference/text/feral_form_flavor_text category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + priority = PREFERENCE_PRIORITY_BODYPARTS savefile_identifier = PREFERENCE_CHARACTER savefile_key = "feral_form_flavor_text" maximum_value_length = MAX_FLAVOR_LEN relevant_inherent_trait = TRAIT_FERA_FORMS must_have_relevant_trait = TRUE - /datum/preference/text/feral_form_flavor_text/apply_to_human(mob/living/carbon/human/target, value) target.dna.features[EXAMINE_DNA_FERAL_FORM_FLAVOR_TEXT] = value -/datum/preference/text/feral_form_flavor_text/is_accessible(datum/preferences/preferences) - . = ..() - /////////////////////////////////////////////////////////////////////////// /datum/preference/text/nsfw_flavor_text From e314962da7b3cacda7488fe1ab53efbb095acdcc Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Fri, 8 May 2026 18:38:44 -0500 Subject: [PATCH 3/3] fix --- code/_globalvars/traits/_traits.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index ce73e59955f3..070bdb662dbb 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -693,6 +693,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_ENHANCED_MELEE_DODGE" = TRAIT_ENHANCED_MELEE_DODGE, // DARKPACK EDIT ADD "TRAIT_FAIR_GLABRO" = TRAIT_FAIR_GLABRO, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_FEEDING_RESTRICTION" = TRAIT_FEEDING_RESTRICTION, // DARKPACK EDIT ADD + "TRAIT_FERA_FORMS" = TRAIT_FERA_FORMS, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_FERA_FUR" = TRAIT_FERA_FUR, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_FERA_RENOWN" = TRAIT_FERA_RENOWN, // DARKPACK EDIT ADD - WEREWOLF "TRAIT_FORCED_EMOTION" = TRAIT_FORCED_EMOTION, // DARKPACK EDIT ADD - Melpominee @@ -742,10 +743,10 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_STAKED" = TRAIT_STAKED, // DARKPACK EDIT ADD "TRAIT_STAKE_IMMUNE" = TRAIT_STAKE_IMMUNE, // DARKPACK EDIT ADD "TRAIT_STAKE_RESISTANT" = TRAIT_STAKE_RESISTANT, // DARKPACK EDIT ADD - "TRAIT_THE_LARGEST_MAW" = TRAIT_THE_LARGEST_MAW, // DARKPACK EDIT ADD - MERITS/FLAWS - "TRAIT_THIRD_EYE" = TRAIT_THIRD_EYE, // DARKPACK EDIT ADD - Tremere & Salubri Quirk "TRAIT_STILLNESS_OF_DEATH" = TRAIT_STILLNESS_OF_DEATH, // DARKPACK EDIT ADD - Gargoyle Quirk "TRAIT_THE_LARGEST_MAW" = TRAIT_THE_LARGEST_MAW, // DARKPACK EDIT ADD - MERITS/FLAWS + "TRAIT_THE_LARGEST_MAW" = TRAIT_THE_LARGEST_MAW, // DARKPACK EDIT ADD - MERITS/FLAWS + "TRAIT_THIRD_EYE" = TRAIT_THIRD_EYE, // DARKPACK EDIT ADD - Tremere & Salubri Quirk "TRAIT_TIMEWARPER" = TRAIT_TIMEWARPER, // DARKPACK EDIT ADD "TRAIT_TIME_SENSE" = TRAIT_TIME_SENSE, // DARKPACK EDIT ADD - MERITS_FLAWS "TRAIT_TORPOR" = TRAIT_TORPOR, // DARKPACK EDIT ADD