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)