diff --git a/code/__SPLURTCODE/DEFINES/zeros/traits.dm b/code/__SPLURTCODE/DEFINES/zeros/traits.dm index e6e13f9963..b1d1b3ef64 100644 --- a/code/__SPLURTCODE/DEFINES/zeros/traits.dm +++ b/code/__SPLURTCODE/DEFINES/zeros/traits.dm @@ -7,3 +7,5 @@ #define TRAIT_IN_HEAT "in_heat" #define TRAIT_HEAT_DETECT "heat_detect" #define TRAIT_ILLITERATE "illiterate" + +#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 7fb1dd0065..116e213416 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -779,6 +779,10 @@ 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 @@ -861,7 +865,7 @@ GLOBAL_LIST_EMPTY(PDAs) else L = get(src, /mob/living/silicon) - if(L && L.stat != UNCONSCIOUS) + if(L && L.stat != UNCONSCIOUS && !HAS_TRAIT(L, TRAIT_DUMB4CUM)) 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 8573324b56..a97874b1c0 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -24,6 +24,9 @@ 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 578d8595dd..c921942541 100644 --- a/code/game/objects/items/implants/implanter.dm +++ b/code/game/objects/items/implants/implanter.dm @@ -45,6 +45,9 @@ 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 67bc28b2ea..e83c88db8f 100644 --- a/code/game/objects/items/signs.dm +++ b/code/game/objects/items/signs.dm @@ -21,6 +21,9 @@ 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 09441a577e..706c2f65fe 100644 --- a/code/game/objects/structures/crates_lockers/closets/bodybag.dm +++ b/code/game/objects/structures/crates_lockers/closets/bodybag.dm @@ -20,6 +20,9 @@ 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 69206f0d08..59d60f2812 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -85,6 +85,9 @@ 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 df00f873b5..16ae047729 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -55,6 +55,9 @@ 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 9d0e38cdec..0a4fde4171 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -195,6 +195,9 @@ 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 77db8dbe3f..59766fad1d 100644 --- a/code/modules/games/cas.dm +++ b/code/modules/games/cas.dm @@ -147,6 +147,9 @@ 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 26fa5b6f3d..7eabdb9d3a 100644 --- a/code/modules/library/lib_codex_gigas.dm +++ b/code/modules/library/lib_codex_gigas.dm @@ -27,6 +27,9 @@ 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 d558c2994f..ca5e3b78c2 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -113,6 +113,9 @@ 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 f59ed15c88..3a036c2bb8 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -591,6 +591,9 @@ 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 0afb36a7e7..57fa8ae913 100644 --- a/code/modules/newscaster/newspaper.dm +++ b/code/modules/newscaster/newspaper.dm @@ -158,6 +158,9 @@ 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 f46d4bf029..fef3bbdade 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -190,6 +190,9 @@ 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 d69da4d797..707ff06a8f 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -46,6 +46,9 @@ 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 c363c549de..4f39ccb048 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -57,6 +57,9 @@ 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 87349058a4..6548727746 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -89,6 +89,9 @@ 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 008e093b74..572fb392df 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -36,6 +36,9 @@ 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 @@ -122,6 +125,9 @@ 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/mood_events/needs_events.dm b/modular_splurt/code/datums/mood_events/needs_events.dm index da5a575ebb..3cce41244d 100644 --- a/modular_splurt/code/datums/mood_events/needs_events.dm +++ b/modular_splurt/code/datums/mood_events/needs_events.dm @@ -5,3 +5,12 @@ return description = span_nicegreen("MORE FOOD!!! MORE FOOD!!! MORE FOOD!!!") mood_change = 8 + +/datum/mood_event/cum_craving + description = "I... NEED... CUM...\n" + mood_change = -20 + +/datum/mood_event/cum_stuffed + description = "It feels so good inside me!\n" + mood_change = 8 + timeout = 5 MINUTES diff --git a/modular_splurt/code/datums/traits/negative.dm b/modular_splurt/code/datums/traits/negative.dm index 45dafa4261..0953aaadd4 100644 --- a/modular_splurt/code/datums/traits/negative.dm +++ b/modular_splurt/code/datums/traits/negative.dm @@ -167,3 +167,42 @@ to_chat(quirk_holder, span_lewd(pick(notices))) notice_delay = world.time + 15 SECONDS + +/datum/quirk/dumb4cum + name = "Dumb For Cum" + desc = "You just like cum, it's heat, it's smell, it's... Taste." + value = -3 + gain_text = "You suddenly start craving some seed inside of you." + lose_text = "It didn't even taste that good, really!" + medical_record_text = "Patient seems to drool for seminal fluid." + var/craving_after = 15 MINUTES + var/timer + +/datum/quirk/dumb4cum/on_spawn() + . = ..() + timer = addtimer(CALLBACK(src, .proc/crave), craving_after, TIMER_STOPPABLE) + +/datum/quirk/dumb4cum/proc/crave() + var/list/hungry_phrases = list( + "Your stomach rumbles a bit and cum comes to your mind.",\ + "Urgh, you really should get some cum...",\ + "Some jizz wouldn't sit bad right now!",\ + "You're starting to long for more cum." + ) + to_chat(quirk_holder, "[pick(hungry_phrases)]") + + if(quirk_holder.stat == CONSCIOUS) + quirk_holder.emote("sigh") + ADD_TRAIT(quirk_holder, TRAIT_PACIFISM, type) + ADD_TRAIT(quirk_holder, TRAIT_DUMB4CUM, type) + 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) + SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "cum_craving") + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "cum_stuffed", /datum/mood_event/cum_stuffed) + + deltimer(timer) + timer = null + timer = addtimer(CALLBACK(src, .proc/crave), craving_after, TIMER_STOPPABLE) diff --git a/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm new file mode 100644 index 0000000000..ed82baba1b --- /dev/null +++ b/modular_splurt/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -0,0 +1,7 @@ +/datum/reagent/consumable/semen/on_mob_add(mob/living/carbon/M) + . = ..() + var/datum/quirk/dumb4cum/d4c + for(var/datum/quirk/Q in M.roundstart_quirks) + if(Q.type == /datum/quirk/dumb4cum) + d4c = Q + d4c.uncrave() diff --git a/tgstation.dme b/tgstation.dme index 77b56e7213..4dfef7f1c6 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4588,6 +4588,7 @@ #include "modular_splurt\code\modules\reagents\chemistry\reagents\drug_reagents.dm" #include "modular_splurt\code\modules\reagents\chemistry\reagents\enlargement.dm" #include "modular_splurt\code\modules\reagents\chemistry\reagents\food_reagents.dm" +#include "modular_splurt\code\modules\reagents\chemistry\reagents\other_reagents.dm" #include "modular_splurt\code\modules\reagents\chemistry\recipes\drugs.dm" #include "modular_splurt\code\modules\reagents\chemistry\recipes\lewd.dm" #include "modular_splurt\code\modules\reagents\reagent_containers\bottle.dm"