diff --git a/modular_zzplurt/code/datums/quirks/negative_quirks/dumb_for_cum.dm b/modular_zzplurt/code/datums/quirks/negative_quirks/dumb_for_cum.dm new file mode 100644 index 0000000000000..15e105b0ef580 --- /dev/null +++ b/modular_zzplurt/code/datums/quirks/negative_quirks/dumb_for_cum.dm @@ -0,0 +1,80 @@ +/datum/quirk/dumb_for_cum + name = "Dumb For Cum" + 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 = -1 + 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." + quirk_flags = /datum/quirk::quirk_flags | QUIRK_MOODLET_BASED + var/timer + var/timer_trigger = 15 MINUTES + +/datum/quirk/dumb_for_cum/add(client/client_source) + . = ..() + + // Set timer + timer = addtimer(CALLBACK(src, PROC_REF(crave)), timer_trigger, TIMER_STOPPABLE) + +/datum/quirk/dumb_for_cum/remove() + . = ..() + + // Remove status trait + REMOVE_TRAIT(quirk_holder, TRAIT_DUMB_CUM_CRAVE, QUIRK_TRAIT) + + // Remove penalty traits + REMOVE_TRAIT(quirk_holder, TRAIT_ILLITERATE, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_DUMB, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_PACIFISM, QUIRK_TRAIT) + + // Remove mood event + SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, QMOOD_DUMB_CUM) + + // Remove timer + deltimer(timer) + +/datum/quirk/dumb_for_cum/proc/crave() + // Check if conscious + if(quirk_holder.stat == CONSCIOUS) + // Display emote + quirk_holder.emote("sigh") + + // 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, QUIRK_TRAIT) + + // Add illiterate, dumb, and pacifist + ADD_TRAIT(quirk_holder, TRAIT_ILLITERATE, QUIRK_TRAIT) + ADD_TRAIT(quirk_holder, TRAIT_DUMB, QUIRK_TRAIT) + ADD_TRAIT(quirk_holder, TRAIT_PACIFISM, QUIRK_TRAIT) + + // Add negative mood effect + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, QMOOD_DUMB_CUM, /datum/mood_event/cum_craving) + +/datum/quirk/dumb_for_cum/proc/uncrave() + // Remove active status trait + REMOVE_TRAIT(quirk_holder, TRAIT_DUMB_CUM_CRAVE, QUIRK_TRAIT) + + // Remove penalty traits + REMOVE_TRAIT(quirk_holder, TRAIT_ILLITERATE, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_DUMB, QUIRK_TRAIT) + REMOVE_TRAIT(quirk_holder, TRAIT_PACIFISM, QUIRK_TRAIT) + + // Add positive mood event + SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, QMOOD_DUMB_CUM, /datum/mood_event/cum_stuffed) + + // Remove timer + deltimer(timer) + timer = null + + // Add new timer + timer = addtimer(CALLBACK(src, PROC_REF(crave)), timer_trigger, TIMER_STOPPABLE) diff --git a/modular_zzplurt/code/datums/quirks/negative_quirks/flimsy.dm b/modular_zzplurt/code/datums/quirks/negative_quirks/flimsy.dm new file mode 100644 index 0000000000000..e43de83019314 --- /dev/null +++ b/modular_zzplurt/code/datums/quirks/negative_quirks/flimsy.dm @@ -0,0 +1,19 @@ +/datum/quirk/flimsy + name = "Flimsy" + desc = "Your body is a little more fragile then most, decreasing total health by 20%." + value = -2 + medical_record_text = "Patient has abnormally low capacity for injury." + gain_text = span_notice("You feel like you could break with a single hit.") + lose_text = span_notice("You feel more durable.") + +/datum/quirk/flimsy/add(client/client_source) + . = ..() + + quirk_holder.maxHealth *= 0.8 + +/datum/quirk/flimsy/remove() + . = ..() + + if(!quirk_holder) + return + quirk_holder.maxHealth *= 1.25 diff --git a/modular_zzplurt/code/datums/quirks/neutral_quirks/gargoyle.dm b/modular_zzplurt/code/datums/quirks/neutral_quirks/gargoyle.dm index 0ab7f651f5608..12dcba5c905e9 100644 --- a/modular_zzplurt/code/datums/quirks/neutral_quirks/gargoyle.dm +++ b/modular_zzplurt/code/datums/quirks/neutral_quirks/gargoyle.dm @@ -191,7 +191,7 @@ ADD_TRAIT(L, TRAIT_NOFIRE, STATUE_MUTE) //OH GOD HELP I'M ON FIRE INSIDE THE STATUE I CAN'T MOVE AND I CAN'T STOP IT HAAAAALP - person who experienced this L.click_intercept = src L.faction |= FACTION_MIMIC //Stops mimics from instaqdeling people in statues - L.status_flags |= GODMODE + ADD_TRAIT(L, TRAIT_GODMODE, STATUE_MUTE) old_max_health = L.maxHealth old_size = H.dna.features["body_size"] atom_integrity = L.health + 100 //stoning damaged mobs will result in easier to shatter statues @@ -219,7 +219,7 @@ /obj/structure/statue/gargoyle/Destroy() if(petrified_mob) - petrified_mob.status_flags &= ~GODMODE + REMOVE_TRAIT(petrified_mob, TRAIT_GODMODE, STATUE_MUTE) petrified_mob.forceMove(loc) REMOVE_TRAIT(petrified_mob, TRAIT_MUTE, STATUE_MUTE) REMOVE_TRAIT(petrified_mob, TRAIT_IMMOBILIZED, STATUE_MUTE) diff --git a/tgstation.dme b/tgstation.dme index b091dff801090..1f96d1016a4aa 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9385,6 +9385,8 @@ #include "modular_zzplurt\code\datums\elements\headpat.dm" #include "modular_zzplurt\code\datums\keybinding\human.dm" #include "modular_zzplurt\code\datums\keybinding\living.dm" +#include "modular_zzplurt\code\datums\quirks\negative_quirks\dumb_for_cum.dm" +#include "modular_zzplurt\code\datums\quirks\negative_quirks\flimsy.dm" #include "modular_zzplurt\code\datums\quirks\neutral_quirks\body_morpher.dm" #include "modular_zzplurt\code\datums\quirks\neutral_quirks\buns_of_steel.dm" #include "modular_zzplurt\code\datums\quirks\neutral_quirks\choke_slut.dm"