From db05dd184d01d6e1d8caad2175b0bb2fefa0b861 Mon Sep 17 00:00:00 2001 From: NiklasNeighbor <121561587+NiklasNeighbor@users.noreply.github.com> Date: Mon, 13 Oct 2025 01:02:01 +0200 Subject: [PATCH] Gives optional customizable lines of Flavor text for different stages of mechanical arousal (#4801) ## About The Pull Request Adds three new small input fields in the Character Lore section. these are short flavor text for low, medium, and high arousal. they will show up when being examined while mechnically aroused and both the examiner and examined have ERP interactions turned on in their prefs. Leaving the fields blank also stops any flavor text from showing up for that arousal level From what I can tell the implemented feature works fine. Minor issue remains in that the fields to enter these flavor texts are ordered a bit weird. If anyone who knows how fix that, please tell me. ## Why It's Good For The Game Currently, mechanical arousal has either no impact or is annoying and distracting. This change hopes to make mechanical arousal actually add to the roleplay rather than distracting from it. This should hopefully also make the arousal system actually usable for other features. ## Proof Of Testing From what I can tell the implemented feature works fine.
Screenshots/Videos image image image image
## Changelog :cl: add: Added the ability to set short Flavor Text for three levels of mechanical arousal. /:cl: --- .../lewd_items/code/lewd_arousal/arousal.dm | 13 +++++++++ .../modules/client/flavor_text/flavor_text.dm | 27 +++++++++++++++++++ .../bubbers/species_features.tsx | 18 +++++++++++++ 3 files changed, 58 insertions(+) diff --git a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm index 92b4af17559..3d34568869e 100644 --- a/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm +++ b/modular_skyrat/modules/modular_items/lewd_items/code/lewd_arousal/arousal.dm @@ -49,3 +49,16 @@ return TRUE + +/mob/living/carbon/human/examine(mob/user) + . = ..() + if(src.client?.prefs.read_preference(/datum/preference/toggle/erp) && user.client.prefs.read_preference(/datum/preference/toggle/erp)) + if (arousal > AROUSAL_HIGH && src.dna.features["high_arousal"]) + . += span_userlove(src.dna.features["high_arousal"]) + return + if (arousal > AROUSAL_LOW && src.dna.features["medium_arousal"]) + . += span_userlove(src.dna.features["medium_arousal"]) + return + if (arousal > AROUSAL_NONE && src.dna.features["low_arousal"]) + . += span_purple(src.dna.features["low_arousal"]) + return diff --git a/modular_zubbers/code/modules/client/flavor_text/flavor_text.dm b/modular_zubbers/code/modules/client/flavor_text/flavor_text.dm index a7dc7a4b3c1..a3091df0cbc 100644 --- a/modular_zubbers/code/modules/client/flavor_text/flavor_text.dm +++ b/modular_zubbers/code/modules/client/flavor_text/flavor_text.dm @@ -24,6 +24,33 @@ /datum/preference/text/flavor_text_nsfw/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) target.dna.features["flavor_text_nsfw"] = value +/datum/preference/text/low_arousal + category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "low_arousal_text" + maximum_value_length = 100 + +/datum/preference/text/low_arousal/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + target.dna.features["low_arousal"] = value + +/datum/preference/text/medium_arousal + category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "medium_arousal_text" + maximum_value_length = 100 + +/datum/preference/text/medium_arousal/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + target.dna.features["medium_arousal"] = value + +/datum/preference/text/high_arousal + category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "high_arousal_text" + maximum_value_length = 100 + +/datum/preference/text/high_arousal/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + target.dna.features["high_arousal"] = value + //This is just a silicon variant of the NSFW flavor text. /datum/preference/text/flavor_text_nsfw/silicon savefile_key = "silicon_flavor_text_nsfw" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx index 3132a17532c..631ec1e8170 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/bubbers/species_features.tsx @@ -92,6 +92,24 @@ export const flavor_text_nsfw: Feature = { component: FeatureTextInput, }; +export const low_arousal_text: Feature = { + name: 'Arousal Flavor - Low', + description: 'How your character can be perceived to be slightly aroused', + component: FeatureShortTextInput, +}; + +export const medium_arousal_text: Feature = { + name: 'Arousal Flavor - Medium', + description: 'How your character can be perceived to be somewhat aroused', + component: FeatureShortTextInput, +}; + +export const high_arousal_text: Feature = { + name: 'Arousal Flavor - Strong', + description: 'How your character can be perceived to be highly aroused', + component: FeatureShortTextInput, +}; + export const silicon_flavor_text_nsfw: Feature = { name: 'Silicon NSFW Flavor Text', description: