From f2cf15c590f3ab0b4c1eb818ce44d48b5d2d79df Mon Sep 17 00:00:00 2001
From: Darius <5933805+LeDrascol@users.noreply.github.com>
Date: Thu, 2 Feb 2023 17:21:54 -0500
Subject: [PATCH] Refactor Dumb For Cum quirk
This commit makes the following changes
- Adds comments
- Adds trait TRAIT_DUMB_CUM
- Adds mood quirk flag
- Adds quirk removal code
- Removes non-modular edits
- Renames trait TRAIT_DUMB4CUM to TRAIT_DUMB_CUM_CRAVE
- Removes interaction blocks
- Removes useless return functions
- Updates flavor text
- Updates variable names
- Changes reagent process to check for trait before triggering uncrave
- Changes on_spawn event to add event
---
code/__SPLURTCODE/DEFINES/traits.dm | 2 +
code/__SPLURTCODE/DEFINES/zeros/traits.dm | 2 -
code/game/objects/items/devices/PDA/PDA.dm | 6 +-
.../objects/items/implants/implantcase.dm | 3 -
code/game/objects/items/implants/implanter.dm | 3 -
code/game/objects/items/signs.dm | 3 -
.../crates_lockers/closets/bodybag.dm | 3 -
code/game/objects/structures/morgue.dm | 3 -
code/modules/events/holiday/vday.dm | 3 -
code/modules/food_and_drinks/pizzabox.dm | 3 -
code/modules/games/cas.dm | 3 -
code/modules/library/lib_codex_gigas.dm | 3 -
code/modules/library/lib_items.dm | 3 -
code/modules/mob/mob_helpers.dm | 3 -
code/modules/newscaster/newspaper.dm | 3 -
code/modules/paperwork/contract.dm | 3 -
code/modules/paperwork/folders.dm | 3 -
code/modules/photography/photos/photo.dm | 3 -
.../reagents/reagent_containers/blood_pack.dm | 3 -
code/modules/recycling/sortingmachinery.dm | 6 --
modular_splurt/code/datums/traits/negative.dm | 67 +++++++++++++------
.../chemistry/reagents/other_reagents.dm | 22 ++++--
22 files changed, 66 insertions(+), 87 deletions(-)
diff --git a/code/__SPLURTCODE/DEFINES/traits.dm b/code/__SPLURTCODE/DEFINES/traits.dm
index 121772f7e1..94d194e700 100644
--- a/code/__SPLURTCODE/DEFINES/traits.dm
+++ b/code/__SPLURTCODE/DEFINES/traits.dm
@@ -26,3 +26,5 @@
#define TRAIT_FLUTTER "flutter"
#define TRAIT_NUDIST "Nudist"
#define TRAIT_CLOTH_EATER "cloth_eater"
+#define TRAIT_DUMB_CUM "dumb_for_cum_base"
+#define TRAIT_DUMB_CUM_CRAVE "dumb_for_cum_need"
diff --git a/code/__SPLURTCODE/DEFINES/zeros/traits.dm b/code/__SPLURTCODE/DEFINES/zeros/traits.dm
index ea94313038..e2479bc362 100644
--- a/code/__SPLURTCODE/DEFINES/zeros/traits.dm
+++ b/code/__SPLURTCODE/DEFINES/zeros/traits.dm
@@ -7,5 +7,3 @@
#define TRAIT_HEAT_DETECT "heat_detect"
#define TRAIT_ILLITERATE "illiterate"
#define TRAIT_HIDE_BACKPACK "hide_backpack"
-
-#define TRAIT_DUMB4CUM "dumb4cum"
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index b7ac29562c..b3eb8ab439 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -764,10 +764,6 @@ GLOBAL_LIST_EMPTY(PDAs)
return t
/obj/item/pda/proc/send_message(mob/living/user, list/obj/item/pda/targets, everyone)
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't focus on anything but cum right now!")
- return
-
var/message = msg_input(user)
if(!message || !targets.len)
return
@@ -850,7 +846,7 @@ GLOBAL_LIST_EMPTY(PDAs)
else
L = get(src, /mob/living/silicon)
- if(L && L.stat != UNCONSCIOUS && !HAS_TRAIT(L, TRAIT_DUMB4CUM))
+ if(L && L.stat != UNCONSCIOUS)
var/hrefstart
var/hrefend
if (isAI(L))
diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm
index 14bdfd77d0..b2980d84d3 100644
--- a/code/game/objects/items/implants/implantcase.dm
+++ b/code/game/objects/items/implants/implantcase.dm
@@ -24,9 +24,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on the side of [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/t = stripped_input(user, "What would you like the label to be?", name, null)
if(user.get_active_held_item() != W)
return
diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm
index f36c2b5937..cfeb001112 100644
--- a/code/game/objects/items/implants/implanter.dm
+++ b/code/game/objects/items/implants/implanter.dm
@@ -45,9 +45,6 @@
if(!user.is_literate())
to_chat(user, "You prod at [src] with [W]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/t = stripped_input(user, "What would you like the label to be?", name, null)
if(user.get_active_held_item() != W)
return
diff --git a/code/game/objects/items/signs.dm b/code/game/objects/items/signs.dm
index e83c88db8f..67bc28b2ea 100644
--- a/code/game/objects/items/signs.dm
+++ b/code/game/objects/items/signs.dm
@@ -21,9 +21,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/txt = stripped_input(user, "What would you like to write on the sign?", "Sign Label", null , 30)
if(txt && user.canUseTopic(src, BE_CLOSE))
label = txt
diff --git a/code/game/objects/structures/crates_lockers/closets/bodybag.dm b/code/game/objects/structures/crates_lockers/closets/bodybag.dm
index 706c2f65fe..09441a577e 100644
--- a/code/game/objects/structures/crates_lockers/closets/bodybag.dm
+++ b/code/game/objects/structures/crates_lockers/closets/bodybag.dm
@@ -20,9 +20,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/t = stripped_input(user, "What would you like the label to be?", name, null, 53)
if(user.get_active_held_item() != I)
return
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 59d60f2812..69206f0d08 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -85,9 +85,6 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
if(!user.is_literate())
to_chat(user, "You scribble illegibly on the side of [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/t = stripped_input(user, "What would you like the label to be?", text("[]", name), null)
if (user.get_active_held_item() != P)
return
diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm
index ebe44d3e00..16d51337f1 100644
--- a/code/modules/events/holiday/vday.dm
+++ b/code/modules/events/holiday/vday.dm
@@ -57,9 +57,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/recipient = stripped_input(user, "Who is receiving this valentine?", "To:", null , 20)
var/sender = stripped_input(user, "Who is sending this valentine?", "From:", null , 20)
if(!user.canUseTopic(src, BE_CLOSE))
diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm
index 0a4fde4171..9d0e38cdec 100644
--- a/code/modules/food_and_drinks/pizzabox.dm
+++ b/code/modules/food_and_drinks/pizzabox.dm
@@ -195,9 +195,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/obj/item/pizzabox/box = boxes.len ? boxes[boxes.len] : src
box.boxtag += stripped_input(user, "Write on [box]'s tag:", box, "", 30)
if(!user.canUseTopic(src, BE_CLOSE))
diff --git a/code/modules/games/cas.dm b/code/modules/games/cas.dm
index 59766fad1d..77db8dbe3f 100644
--- a/code/modules/games/cas.dm
+++ b/code/modules/games/cas.dm
@@ -147,9 +147,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
if(!blank)
to_chat(user, "You cannot write on that card.")
return
diff --git a/code/modules/library/lib_codex_gigas.dm b/code/modules/library/lib_codex_gigas.dm
index 7eabdb9d3a..26fa5b6f3d 100644
--- a/code/modules/library/lib_codex_gigas.dm
+++ b/code/modules/library/lib_codex_gigas.dm
@@ -27,9 +27,6 @@
if(!user.is_literate())
to_chat(user, "You skim through the book but can't comprehend any of it.")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
if(inUse)
to_chat(user, "Someone else is reading it.")
if(ishuman(user))
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index ca5e3b78c2..d558c2994f 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -113,9 +113,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on the side of [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/newname = stripped_input(user, "What would you like to title this bookshelf?")
if(!user.canUseTopic(src, BE_CLOSE))
return
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 54e1a35175..41cf8b4522 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -601,9 +601,6 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
if(!is_literate())
to_chat(src, "You try to read [O], but can't comprehend any of it.")
return
- if(HAS_TRAIT(src, TRAIT_DUMB4CUM))
- to_chat(src, "You try reading [O] but only warm seed comes to your mind.")
- return
return TRUE
/mob/proc/checkloadappearance()
diff --git a/code/modules/newscaster/newspaper.dm b/code/modules/newscaster/newspaper.dm
index 57fa8ae913..0afb36a7e7 100644
--- a/code/modules/newscaster/newspaper.dm
+++ b/code/modules/newscaster/newspaper.dm
@@ -158,9 +158,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
if(scribble_page == curr_page)
to_chat(user, "There's already a scribble in this page... You wouldn't want to make things too cluttered, would you?")
else
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index fef3bbdade..f46d4bf029 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -190,9 +190,6 @@
if(!user.IsAdvancedToolUser() || !user.is_literate())
to_chat(user, "You don't know how to read or write.")
return 0
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
if(user.mind != target)
to_chat(user, "Your signature simply slides off the sheet, it seems this contract is not meant for you to sign.")
return 0
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index 707ff06a8f..d69da4d797 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -46,9 +46,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on the cover of [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/inputvalue = stripped_input(user, "What would you like to label the folder?", "Folder Labelling", "", MAX_NAME_LEN)
diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm
index 4f39ccb048..c363c549de 100644
--- a/code/modules/photography/photos/photo.dm
+++ b/code/modules/photography/photos/photo.dm
@@ -57,9 +57,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/txt = stripped_input(user, "What would you like to write on the back?", "Photo Writing", "", 128)
if(txt && user.canUseTopic(src, BE_CLOSE))
scribble = txt
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index 6548727746..87349058a4 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -89,9 +89,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on the label of [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/t = stripped_input(user, "What would you like to label the blood pack?", name, null, 53)
if(!user.canUseTopic(src, BE_CLOSE))
return
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 72a3aa274b..97a35f9312 100644
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -47,9 +47,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on the side of [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/str = stripped_input(user, "Label text?", "Set label", "", MAX_NAME_LEN)
if(!user.canUseTopic(src, BE_CLOSE))
return
@@ -192,9 +189,6 @@
if(!user.is_literate())
to_chat(user, "You scribble illegibly on the side of [src]!")
return
- if(HAS_TRAIT(user, TRAIT_DUMB4CUM))
- to_chat(user, "You can't think of anything but cum right now.")
- return
var/str = stripped_input(user, "Label text?", "Set label", "", MAX_NAME_LEN)
if(!user.canUseTopic(src, BE_CLOSE))
return
diff --git a/modular_splurt/code/datums/traits/negative.dm b/modular_splurt/code/datums/traits/negative.dm
index a000de17ab..561cf6f485 100644
--- a/modular_splurt/code/datums/traits/negative.dm
+++ b/modular_splurt/code/datums/traits/negative.dm
@@ -125,42 +125,69 @@
/datum/quirk/dumb4cum
name = "Dumb For Cum"
- desc = "For one reason or another, you're totally obsessed with cum. The heat of it, the smell... its taste... It's quite simply euphoric."
+ desc = "For one reason or another, you're totally obsessed with seminal fluids. The heat of it, the smell... the taste... It's quite simply euphoric."
value = 0
- gain_text = "You suddenly start craving some seed inside of you!"
- lose_text = span_danger("Cum didn't even taste that good, anyways.")
+ mob_trait = TRAIT_DUMB_CUM
+ gain_text = span_notice("You feel an insatiable craving for seminal fluids.")
+ lose_text = span_notice("Cum didn't even taste that good, anyways.")
medical_record_text = "Patient seems to have an unhealthy psychological obsession with seminal fluids."
- var/craving_after = 15 MINUTES
+ mood_quirk = TRUE
var/timer
+ var/timer_trigger = 15 MINUTES
-/datum/quirk/dumb4cum/on_spawn()
- . = ..()
- timer = addtimer(CALLBACK(src, .proc/crave), craving_after, TIMER_STOPPABLE)
+/datum/quirk/dumb4cum/add()
+ // Set timer
+ timer = addtimer(CALLBACK(src, .proc/crave), timer_trigger, TIMER_STOPPABLE)
+
+/datum/quirk/dumb4cum/remove()
+ // Remove status trait
+ REMOVE_TRAIT(quirk_holder, TRAIT_DUMB_CUM_CRAVE, type)
+
+ // Remove mood events
+ SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "cum_craving")
+ SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "cum_stuffed")
+
+ // Remove timer
+ deltimer(timer)
/datum/quirk/dumb4cum/proc/crave()
- var/list/hungry_phrases = list(
- "Your stomach rumbles a bit and cum comes to your mind.",\
- "Urgh, you should really get some cum...",\
- "Some jizz wouldn't be so bad right now!",\
- "You're starting to long for some more cum..."
- )
- to_chat(quirk_holder, span_love("[pick(hungry_phrases)]"))
-
+ // Check if conscious
if(quirk_holder.stat == CONSCIOUS)
+ // Display emote
quirk_holder.emote("sigh")
- //ADD_TRAIT(quirk_holder, TRAIT_PACIFISM, type)
- ADD_TRAIT(quirk_holder, TRAIT_DUMB4CUM, type)
+
+ // Define list of phrases
+ var/list/trigger_phrases = list(
+ "Your stomach rumbles a bit and cum comes to your mind.",\
+ "Urgh, you should really get some cum...",\
+ "Some jizz wouldn't be so bad right now!",\
+ "You're starting to long for some more cum..."
+ )
+ // Alert user in chat
+ to_chat(quirk_holder, span_love("[pick(trigger_phrases)]"))
+
+ // Add active status trait
+ ADD_TRAIT(quirk_holder, TRAIT_DUMB_CUM_CRAVE, type)
+
+ // Add negative mood effect
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "cum_craving", /datum/mood_event/cum_craving)
/datum/quirk/dumb4cum/proc/uncrave()
- //REMOVE_TRAIT(quirk_holder, TRAIT_PACIFISM, type)
- REMOVE_TRAIT(quirk_holder, TRAIT_DUMB4CUM, type)
+ // Remove active status trait
+ REMOVE_TRAIT(quirk_holder, TRAIT_DUMB_CUM_CRAVE, type)
+
+ // Remove negative mood event
SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "cum_craving")
+
+ // Add positive mood event
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "cum_stuffed", /datum/mood_event/cum_stuffed)
+ // Remove timer
deltimer(timer)
timer = null
- timer = addtimer(CALLBACK(src, .proc/crave), craving_after, TIMER_STOPPABLE)
+
+ // Add new timer
+ timer = addtimer(CALLBACK(src, .proc/crave), timer_trigger, TIMER_STOPPABLE)
// Small issue with this. If the quirk holder has NO_HUNGER or NO_THIRST, this trait can still be taken and they will still get the benefits of it.
// It's unlikely that someone will be both, especially at round start, but vampirism makes me wary of having these separate.
diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm
index e327fc1409..0872edf86e 100644
--- a/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -1,14 +1,24 @@
/datum/reagent/consumable/semen/on_mob_add(mob/living/carbon/M)
. = ..()
- var/datum/quirk/dumb4cum/d4c = locate() in M.roundstart_quirks
- if(d4c)
- d4c.uncrave()
+
+ // Check for D4C quirk
+ if(HAS_TRAIT(M,TRAIT_DUMB_CUM_CRAVE))
+ // Define quirk entry
+ var/datum/quirk/dumb4cum/quirk_target = locate() in M.roundstart_quirks
+
+ // Remove reset timer
+ quirk_target.uncrave()
/datum/reagent/consumable/ethanol/cum_in_a_hot_tub/semen/on_mob_add(mob/living/carbon/M)
. = ..()
- var/datum/quirk/dumb4cum/d4c = locate() in M.roundstart_quirks
- if(d4c)
- d4c.uncrave()
+
+ // Check for D4C quirk
+ if(HAS_TRAIT(M,TRAIT_DUMB_CUM_CRAVE))
+ // Define quirk entry
+ var/datum/quirk/dumb4cum/quirk_target = locate() in M.roundstart_quirks
+
+ // Remove reset timer
+ quirk_target.uncrave()
//incubus and succubus additions below
/datum/reagent/consumable/semen/on_mob_life(mob/living/carbon/M)