From 044403ae7ff0d0a6efb52151dfd366e6417d21d5 Mon Sep 17 00:00:00 2001
From: BongaTheProto <93835010+BongaTheProto@users.noreply.github.com>
Date: Tue, 7 Jun 2022 01:42:23 -0500
Subject: [PATCH] removes all well-trained constant effects
Except for the moodlet that is, but that's not as annoying.
Blushing and jittering are now part of the snap effects instead of being constantly applied when a dom is near. In addition, it'll tell you only ONCE when a dom is near you, and then not do it again until you've been enough time away from a dom
---
modular_splurt/code/datums/traits/good.dm | 4 ++
modular_splurt/code/datums/traits/negative.dm | 70 +++++++++++--------
2 files changed, 43 insertions(+), 31 deletions(-)
diff --git a/modular_splurt/code/datums/traits/good.dm b/modular_splurt/code/datums/traits/good.dm
index cc0fe10309..d45cd0805f 100644
--- a/modular_splurt/code/datums/traits/good.dm
+++ b/modular_splurt/code/datums/traits/good.dm
@@ -79,15 +79,19 @@
switch(E?.key)
if("snap")
sub.dir = get_dir(sub, quirk_holder)
+ sub.emote(pick("blush", "pant"))
sub.visible_message(span_notice("\The [sub] turns shyly towards \the [quirk_holder]."), "You stare into \the [quirk_holder] submissively.")
if("snap2")
sub.dir = get_dir(sub, quirk_holder)
sub.KnockToFloor()
+ sub.emote(pick("blush", "pant"))
sub.visible_message(span_lewd("\The [sub] submissively throws [sub.p_them()]self on the floor."),
span_lewd("You throw yourself on the floor like a dog on [quirk_holder]'s command."))
if("snap3")
sub.KnockToFloor()
step(sub, get_dir(sub, quirk_holder))
+ sub.emote(pick("blush", "pant"))
+ sub.do_jitter_animation(30) //You're being moved anyways
sub.visible_message(span_lewd("\The [sub] crawls closer to \the [quirk_holder] in all fours, following [quirk_holder.p_their()] command"),
span_lewd("You get on your fours and crawl towards \the [quirk_holder] like a good, submissive boy."))
. = TRUE
diff --git a/modular_splurt/code/datums/traits/negative.dm b/modular_splurt/code/datums/traits/negative.dm
index f1a3813bb6..15c20ab9c9 100644
--- a/modular_splurt/code/datums/traits/negative.dm
+++ b/modular_splurt/code/datums/traits/negative.dm
@@ -92,7 +92,25 @@
lose_text = "You no longer feel like being a pet..."
processing_quirk = TRUE
var/mood_category = "dom_trained"
- var/distance_delay = 0
+ var/notice_delay = 0
+ var/mob/living/carbon/human/last_dom
+
+/datum/quirk/well_trained/add()
+ . = ..()
+ RegisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE, .proc/on_examine_holder)
+
+/datum/quirk/well_trained/remove()
+ . = ..()
+ UnregisterSignal(quirk_holder, COMSIG_PARENT_EXAMINE)
+
+/datum/quirk/well_trained/proc/on_examine_holder(atom/source, mob/living/user, list/examine_list)
+ SIGNAL_HANDLER
+
+ if(!istype(user))
+ return
+ if(!user.has_quirk(/datum/quirk/dominant_aura))
+ return
+ examine_list += span_lewd("You can sense submissiveness irradiating from [quirk_holder.p_them()]")
/datum/quirk/well_trained/on_process()
. = ..()
@@ -118,6 +136,7 @@
//Return if no dom is found
if(!.)
+ last_dom = null
return
//Handle the mood
@@ -127,35 +146,24 @@
else
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, mood_category, /datum/mood_event/dominant/need)
- //Handle chat effects
- if(world.time < distance_delay)
- return .
- var/distance_mod = (-9/50)*closest_distance + 1
- var/distance_seconds
- switch(closest_distance)
- if(5)
- distance_seconds = 20
- if(4)
- distance_seconds = 15
- if(3)
- distance_seconds = 10
- if(0 to 2)
- distance_seconds = 7
+ //Don't do anything if a previous dom was found
+ if(last_dom)
+ notice_delay = world.time + 15 SECONDS
+ return
- if(prob(30 * distance_mod))
- var/list/notices = list(
- "You feel someone's presence making you more submissive.",
- "The thought of being commanded floods you with lust.",
- "You really want to be called a good [good_x].",
- "Someone's presence is making you all flustered.",
- "You start getting excited and sweating."
- )
- to_chat(quirk_holder, span_lewd(pick(notices)))
- if(prob(20) * distance_mod)
- quirk_holder.emote(pick("blush", "pant"))
- if(prob(15) * distance_mod)
- quirk_holder.do_jitter_animation(50*distance_mod)
- quirk_holder.visible_message(span_notice("\The [quirk_holder] shakes lewdly in [quirk_holder.p_their()] place..."))
+ last_dom = .
- if(distance_seconds > 1)
- distance_delay = world.time + (distance_seconds SECONDS)
+ if(notice_delay > world.time)
+ return
+
+ //Let them know they're near
+ var/list/notices = list(
+ "You feel someone's presence making you more submissive.",
+ "The thought of being commanded floods you with lust.",
+ "You really want to be called a good [good_x].",
+ "Someone's presence is making you all flustered.",
+ "You start getting excited and sweating."
+ )
+
+ to_chat(quirk_holder, span_lewd(pick(notices)))
+ notice_delay = world.time + 15 SECONDS