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. 
<details>
<summary>Screenshots/Videos</summary>
<img width="991" height="239" alt="image"
src="https://github.com/user-attachments/assets/1bc50e31-7d7b-463d-ba24-491498f2fba0"
/>
<img width="358" height="146" alt="image"
src="https://github.com/user-attachments/assets/ffcabb66-b6d8-4bd3-85b9-d61acd74545a"
/>
<img width="356" height="145" alt="image"
src="https://github.com/user-attachments/assets/a3057d96-6a47-498f-84a3-f4374419f102"
/>
<img width="417" height="145" alt="image"
src="https://github.com/user-attachments/assets/0fcf03d2-b386-4304-b811-05feffabc8c5"
/>


</details>

## Changelog
🆑 
add: Added the ability to set short Flavor Text for three levels of
mechanical arousal.
/🆑
This commit is contained in:
NiklasNeighbor
2025-10-12 19:02:01 -04:00
committed by GitHub
parent 58cae7199b
commit db05dd184d
3 changed files with 58 additions and 0 deletions
@@ -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
@@ -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"
@@ -92,6 +92,24 @@ export const flavor_text_nsfw: Feature<string> = {
component: FeatureTextInput,
};
export const low_arousal_text: Feature<string> = {
name: 'Arousal Flavor - Low',
description: 'How your character can be perceived to be slightly aroused',
component: FeatureShortTextInput,
};
export const medium_arousal_text: Feature<string> = {
name: 'Arousal Flavor - Medium',
description: 'How your character can be perceived to be somewhat aroused',
component: FeatureShortTextInput,
};
export const high_arousal_text: Feature<string> = {
name: 'Arousal Flavor - Strong',
description: 'How your character can be perceived to be highly aroused',
component: FeatureShortTextInput,
};
export const silicon_flavor_text_nsfw: Feature<string> = {
name: 'Silicon NSFW Flavor Text',
description: