From cb0898bbeb4b7645d4a9ea69cade7c1761e07fa1 Mon Sep 17 00:00:00 2001 From: TotallyNotADog Date: Sun, 23 Jan 2022 01:34:35 -0600 Subject: [PATCH 01/10] begins porting 10243 compiles but doesn't work yet --- code/__DEFINES/citadel_defines.dm | 11 ++- code/__DEFINES/traits.dm | 4 +- code/datums/traits/neutral.dm | 24 ++--- .../objects/items/implants/implant_slave.dm | 2 +- code/modules/client/preferences.dm | 48 ++++++++-- code/modules/client/preferences_savefile.dm | 17 +++- .../mob/living/carbon/human/examine.dm | 2 +- .../mob/living/carbon/human/species.dm | 4 +- code/modules/surgery/organs/vocal_cords.dm | 55 ++++++----- .../code/datums/status_effects/chems.dm | 95 ++++++++++--------- modular_citadel/code/datums/traits/neutral.dm | 4 +- .../code/modules/arousal/organs/genitals.dm | 2 + .../code/modules/client/preferences.dm | 4 +- .../reagents/chemistry/reagents/MKUltra.dm | 27 ++++-- .../chemistry/reagents/enlargement.dm | 54 ++++------- .../modules/reagents/reagents/cit_reagents.dm | 6 +- 16 files changed, 204 insertions(+), 155 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index f74a6cda6..8f9fa99f9 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -132,7 +132,16 @@ #define EATING_NOISES (1<<1) #define DIGESTION_NOISES (1<<2) -#define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES) +#define BREAST_ENLARGEMENT (1<<3) +#define PENIS_ENLARGEMENT (1<<4) +#define FORCED_FEM (1<<5) +#define FORCED_MASC (1<<6) +#define HYPNO (1<<7) +#define NEVER_HYPNO (1<<8) +#define NO_APHRO (1<<9) +#define NO_ASS_SLAP (1<<9) + +#define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES|BREAST_ENLARGEMENT|PENIS_ENLARGEMENT) //component stuff #define COMSIG_COMBAT_TOGGLED "combatmode_toggled" //called by combat mode toggle on all equipped items. args: (mob/user, combatmode) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index edcae80f6..905e6c950 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -170,14 +170,14 @@ #define TRAIT_TAGGER "tagger" #define TRAIT_PHOTOGRAPHER "photographer" #define TRAIT_MUSICIAN "musician" -#define TRAIT_CROCRIN_IMMUNE "crocin_immune" +//#define TRAIT_CROCRIN_IMMUNE "crocin_immune" replaced with pref #define TRAIT_NYMPHO "nymphomania" #define TRAIT_DISTANT "headpat_hater" //#define TRAIT_FLUID_LEAK "leaky_fluids" removed because milk snail trails are not okay #define TRAIT_MASO "masochism" #define TRAIT_CHOKE_SLUT "choke_slut" #define TRAIT_HIGH_BLOOD "high_blood" -#define TRAIT_PHARMA "hepatic_pharmacokinesis" +//#define TRAIT_PHARMA "hepatic_pharmacokinesis" replaced with pref #define TRAIT_PARA "paraplegic" #define TRAIT_EMPATH "empath" #define TRAIT_FRIENDLY "friendly" diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 47c5ba9aa..5e5be1b96 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -117,16 +117,6 @@ if(quirk_holder) quirk_holder.remove_client_colour(/datum/client_colour/monochrome) -/datum/quirk/crocrin_immunity - name = "Crocin Immunity" - desc = "You're one of the few people in the galaxy who are genetically immune to Crocin and Hexacrocin products and their addictive properties! However, you can still get brain damage from Hexacrocin addiction." - mob_trait = TRAIT_CROCRIN_IMMUNE - value = 0 - category = CATEGORY_SEXUAL - gain_text = "You feel more prudish." - lose_text = "You don't feel as prudish as before." - medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." - /datum/quirk/assblastusa name = "Buns of Steel" desc = "You've never skipped ass day. With this trait, you are completely immune to all forms of ass slapping and anyone who tries to slap your rock hard ass usually gets a broken hand." @@ -137,6 +127,17 @@ gain_text = "Your ass rivals those of golems." lose_text = "Your butt feels more squishy and slappable." +/* REPLACED WITH PREFS +/datum/quirk/crocrin_immunity + name = "Crocin Immunity" + desc = "You're one of the few people in the galaxy who are genetically immune to Crocin and Hexacrocin products and their addictive properties! However, you can still get brain damage from Hexacrocin addiction." + mob_trait = TRAIT_CROCRIN_IMMUNE + value = 0 + category = CATEGORY_SEXUAL + gain_text = "You feel more prudish." + lose_text = "You don't feel as prudish as before." + medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." + /datum/quirk/headpat_slut name = "Headpat Slut" desc = "You like headpats, alot, maybe even a little bit too much. Headpats give you a bigger mood boost and cause arousal" @@ -152,6 +153,7 @@ value = 0 category = CATEGORY_SEXUAL //Any better place to put it? Doesn't really affect gameplay medical_record_text = "Patient cares little with or dislikes being touched." +*/ /datum/quirk/colorist name = "Colorist" @@ -168,4 +170,4 @@ /datum/quirk/colorist/post_add() var/mob/living/carbon/human/H = quirk_holder SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_SHOW, H) - to_chat(quirk_holder, "You brought some extra dye with you! It's in your bag if you forgot.") \ No newline at end of file + to_chat(quirk_holder, "You brought some extra dye with you! It's in your bag if you forgot.") diff --git a/code/game/objects/items/implants/implant_slave.dm b/code/game/objects/items/implants/implant_slave.dm index e923d3311..98880c03c 100644 --- a/code/game/objects/items/implants/implant_slave.dm +++ b/code/game/objects/items/implants/implant_slave.dm @@ -50,7 +50,7 @@ to_chat(target, "You feel something interfering with your mental conditioning, but you resist it!") else to_chat(target, "You feel a sense of peace and security. You are now enslaved!") - var/slave_objective = "[(target.client?.prefs.lewdchem?"Security has enslaved you into being their pet! Obey their commands, but remember: a good pet is not violent.":"You've been neutralized by security! Follow their orders, but remember: neutralization also means nonviolence.")]" + var/slave_objective = "[((target.client?.prefs.cit_toggles & HYPNO)?"Security has enslaved you into being their pet! Obey their commands, but remember: a good pet is not violent.":"You've been neutralized by security! Follow their orders, but remember: neutralization also means nonviolence.")]" brainwash(target, slave_objective) target.sec_hud_set_implants() return TRUE diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 888bd00e3..2f8fc19f8 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -312,6 +312,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Loadout" dat += "Game Preferences" dat += "Antagonist Preferences" + dat += "Content Preferences" if(!path) dat += "
Please create an account to save your preferences
" @@ -1013,12 +1014,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat +="" dat += "

Citadel Preferences

" //Because fuck me if preferences can't be fucking modularized and expected to update in a reasonable timeframe. - dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
" - dat += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
" - dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
" - dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
" - dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
" - dat += "Lewdchem:[lewdchem == TRUE ? "Enabled" : "Disabled"]
" dat += "Widescreen: [widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]
" dat += "Auto stand: [autostand ? "Enabled" : "Disabled"]
" dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
" @@ -1169,7 +1164,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[gear.description]" dat += "" - if(4) //Antag Preferences + if(4) //Antag Preferences dat += "

Special Role Settings

" if(jobban_isbanned(user, ROLE_SYNDICATE)) dat += "

You are banned from antagonist roles.

" @@ -1191,6 +1186,27 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Be [capitalize(i)]: [(i in be_special) ? "Enabled" : "Disabled"]
" dat += "Midround Antagonist: [(toggles & MIDROUND_ANTAG) ? "Enabled" : "Disabled"]
" + if(5) //Content Preferences + dat += "" + dat +="
" + dat += "

Fetish content prefs

" + dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
" + dat += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
" + dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
" + dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
" + dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
" + dat += "Forced Feminization: [(cit_toggles & FORCED_FEM) ? "Allowed" : "Disallowed"]
" + dat += "Forced Masculinization: [(cit_toggles & FORCED_MASC) ? "Allowed" : "Disallowed"]
" + dat += "Lewd Hypno: [(cit_toggles & HYPNO) ? "Allowed" : "Disallowed"]
" + dat += "
" + dat += "

Other content prefs

" + dat += "Breast Enlargement: [(cit_toggles & BREAST_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" + dat += "Penis Enlargement: [(cit_toggles & PENIS_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" + dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"]
" + dat += "Aphrodisiacs: [(cit_toggles & NO_APHRO) ? "Disallowed" : "Allowed"]
" + dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"]
" + dat += "
" + dat += "
" if(!IsGuestKey(user.key)) @@ -2538,8 +2554,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["genitals_use_skintone"] = !features["genitals_use_skintone"] if("arousable") arousable = !arousable - if("lewdchem") - lewdchem = !lewdchem if("noncon") noncon = !noncon if("has_cock") @@ -2716,6 +2730,22 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("toggledigestionnoise") cit_toggles ^= DIGESTION_NOISES + + if("breast_enlargement") + cit_toggles ^= BREAST_ENLARGEMENT + + if("penis_enlargement") + cit_toggles ^= PENIS_ENLARGEMENT + + if("feminization") + cit_toggles ^= FORCED_FEM + + if("masculinization") + cit_toggles ^= FORCED_MASC + + if("hypno") + cit_toggles ^= HYPNO + //END CITADEL EDIT if("ambientocclusion") diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index da416ee02..80fab69e6 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -137,7 +137,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["widescreenpref"] >> widescreenpref S["autostand"] >> autostand S["cit_toggles"] >> cit_toggles - S["lewdchem"] >> lewdchem //Hyper code S["noncon"] >> noncon @@ -262,7 +261,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["widescreenpref"], widescreenpref) WRITE_FILE(S["autostand"], autostand) WRITE_FILE(S["cit_toggles"], cit_toggles) - WRITE_FILE(S["lewdchem"], lewdchem) //Hyper WRITE_FILE(S["noncon"], noncon) @@ -562,6 +560,21 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car medical_records = copytext(medical_records, 1, MAX_FLAVOR_LEN) all_quirks = SANITIZE_LIST(all_quirks) + for(var/V in all_quirks) // quirk migration + switch(V) + if("Acute hepatic pharmacokinesis") + DISABLE_BITFIELD(cit_toggles, PENIS_ENLARGEMENT) + DISABLE_BITFIELD(cit_toggles, BREAST_ENLARGEMENT) + ENABLE_BITFIELD(cit_toggles,FORCED_FEM) + ENABLE_BITFIELD(cit_toggles,FORCED_MASC) + all_quirks -= V + if("Crocin Immunity") + ENABLE_BITFIELD(cit_toggles,NO_APHRO) + all_quirks -= V + if("Buns of Steel") + ENABLE_BITFIELD(cit_toggles,NO_ASS_SLAP) + all_quirks -= V + cit_character_pref_load(S) return 1 diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 66a825e8f..28687d297 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -331,7 +331,7 @@ var/obj/item/organ/vocal_cords/Vc = user.getorganslot(ORGAN_SLOT_VOICE) if(Vc) if(istype(Vc, /obj/item/organ/vocal_cords/velvet)) - if(client?.prefs.lewdchem) + if(client.prefs.cit_toggles & HYPNO) msg += "You feel your chords resonate looking at them.\n" diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 2fd92dcba..f637ca421 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1612,6 +1612,9 @@ GLOBAL_LIST_EMPTY(roundstart_races) user.adjustStaminaLossBuffered(3) return FALSE else if(aim_for_groin && (target == user || target.lying || same_dir) && (target_on_help || target_restrained || target_aiming_for_groin)) + if(target.client?.prefs.cit_toggles & NO_ASS_SLAP) + to_chat(user,"A force stays your hand, preventing you from slapping \the [target]'s ass!") + return FALSE user.do_attack_animation(target, ATTACK_EFFECT_ASS_SLAP) user.adjustStaminaLossBuffered(3) if(HAS_TRAIT(target, TRAIT_ASSBLASTUSA)) @@ -1625,7 +1628,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) playsound(target.loc, 'sound/weapons/tap.ogg', 50, 1, -1) user.emote("scream") return FALSE - playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1) user.visible_message(\ "\The [user] slaps \the [target]'s ass!",\ diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 309e554e0..b2d19c586 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -816,9 +816,8 @@ E.enthrallTally += (power_multiplier*(((length(message))/200) + 1)) //encourage players to say more than one word. else E.enthrallTally += power_multiplier*1.25 //thinking about it, I don't know how this can proc - if(L.canbearoused) - if(L.client?.prefs.lewdchem) - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[E.enthrallGender] is so nice to listen to."), 5) + if(L.canbearoused && E.lewd) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[E.enthrallGender] is so nice to listen to."), 5) E.cooldown += 1 //REWARD mixable works @@ -829,7 +828,7 @@ power_multiplier *= distancelist[get_dist(user, V)+1] if(L == user) continue - if (L.client?.prefs.lewdchem) + if (E.lewd) addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[E.enthrallGender] has praised me!!"), 5) if(HAS_TRAIT(L, TRAIT_NYMPHO)) L.adjustArousalLoss(2*power_multiplier) @@ -841,7 +840,7 @@ addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "I've been praised for doing a good job!"), 5) E.resistanceTally -= power_multiplier E.enthrallTally += power_multiplier - var/descmessage = "[(L.client?.prefs.lewdchem?"I feel so happy! I'm a good pet who [E.enthrallGender] loves!":"I did a good job!")]" + var/descmessage = "[(E.lewd?"I feel so happy! I'm a good pet who [E.enthrallGender] loves!":"I did a good job!")]" SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "enthrallpraise", /datum/mood_event/enthrallpraise, descmessage) E.cooldown += 1 @@ -850,10 +849,10 @@ for(var/V in listeners) var/mob/living/L = V var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall) - var/descmessage = "[(L.client?.prefs.lewdchem?"I've failed [E.enthrallGender]... What a bad, bad pet!":"I did a bad job...")]" + var/descmessage = "[(E.lewd?"I've failed [E.enthrallGender]... What a bad, bad pet!":"I did a bad job...")]" if(L == user) continue - if (L.client?.prefs.lewdchem) + if (E.lewd) if(HAS_TRAIT(L, TRAIT_MASO)) L.adjustArousalLoss(3*power_multiplier) descmessage += "And yet, it feels so good..!" //I don't really understand masco, is this the right sort of thing they like? @@ -880,7 +879,7 @@ var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall) REMOVE_TRAIT(C, TRAIT_MUTE, "enthrall") C.silent = 0 - if(C.client?.prefs.lewdchem) + if(E.lewd) addtimer(CALLBACK(C, /atom/movable/proc/say, "[E.enthrallGender]"), 5) else addtimer(CALLBACK(C, /atom/movable/proc/say, "[E.master]"), 5) @@ -896,7 +895,7 @@ E.phase = 3 E.status = null user.emote("snap") - if(L.client?.prefs.lewdchem) + if(E.lewd) addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "The snapping of your [E.enthrallGender]'s fingers brings you back to your enthralled state, obedient and ready to serve."), 5) else addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "The snapping of [E.master]'s fingers brings you back to being under their influence."), 5) @@ -919,11 +918,11 @@ addtimer(CALLBACK(H, /atom/movable/proc/say, "I feel happy being with you."), 5) continue if(2) - speaktrigger += "[(H.client?.prefs.lewdchem?"I think I'm in love with you... ":"I find you really inspirational, ")]" //' + speaktrigger += "[(E.lewd?"I think I'm in love with you... ":"I find you really inspirational, ")]" //' if(3) - speaktrigger += "[(H.client?.prefs.lewdchem?"I'm devoted to being your pet":"I'm commited to following your cause!")]! " + speaktrigger += "[(E.lewd?"I'm devoted to being your pet":"I'm commited to following your cause!")]! " if(4) - speaktrigger += "[(H.client?.prefs.lewdchem?"You are my whole world and all of my being belongs to you, ":"I cannot think of anything else but aiding your cause, ")] "//Redflags!! + speaktrigger += "[(E.lewd?"You are my whole world and all of my being belongs to you, ":"I cannot think of anything else but aiding your cause, ")] "//Redflags!! //mood var/datum/component/mood/mood = H.GetComponent(/datum/component/mood) @@ -1012,7 +1011,7 @@ speaktrigger += "I feel like I'm on the brink of losing my mind, " //horny - if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && H.client?.prefs.lewdchem) + if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && E.lewd) switch(H.getArousalLoss()) if(40 to 60) speaktrigger += "I'm feeling a little horny, " @@ -1022,10 +1021,10 @@ speaktrigger += "I'm really, really horny, " //collar - if(istype(H.wear_neck, /obj/item/clothing/neck/petcollar) && H.client?.prefs.lewdchem) + if(istype(H.wear_neck, /obj/item/clothing/neck/petcollar) && E.lewd) speaktrigger += "I love the collar you gave me, " //End - if(H.client?.prefs.lewdchem) + if(E.lewd) speaktrigger += "[E.enthrallGender]!" else speaktrigger += "[user.first_name()]!" @@ -1053,7 +1052,7 @@ REMOVE_TRAIT(C, TRAIT_MUTE, "enthrall") C.silent = 0 E.cooldown += 3 - to_chat(user, "You [(C.client?.prefs.lewdchem?"allow [C] to speak again":"encourage [C] to speak again")].") + to_chat(user, "You [(E.lewd?"allow [C] to speak again":"encourage [C] to speak again")].") //Antiresist @@ -1083,7 +1082,7 @@ for(var/mob/living/carbon/C in listeners) var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall) if(E.phase == 4) - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You're unable to forget about [(C.client?.prefs.lewdchem?"the dominating presence of [E.enthrallGender]":"[E.master]")]!"), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You're unable to forget about [(E.lewd?"the dominating presence of [E.enthrallGender]":"[E.master]")]!"), 5) continue addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You wake up, forgetting everything that just happened. You must've dozed off..? How embarassing!"), 5) C.Sleeping(50) @@ -1095,7 +1094,7 @@ if(3) E.phase = 0 E.cooldown = 0 - if(C.client?.prefs.lewdchem) + if(E.lewd) addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You revert to yourself before being enthralled by your [E.enthrallGender], with no memory of what happened."), 5) else addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You revert to who you were before, with no memory of what happened with [E.master]."), 5) @@ -1122,7 +1121,7 @@ var/mob/living/carbon/human/H = V var/datum/status_effect/chem/enthrall/E = H.has_status_effect(/datum/status_effect/chem/enthrall) if(E.phase > 1) - if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && H.client?.prefs.lewdchem) // probably a redundant check but for good measure + if(HAS_TRAIT(H, TRAIT_NYMPHO) && H.canbearoused && E.lewd) // probably a redundant check but for good measure addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "Your [E.enthrallGender] pushes you over the limit, overwhelming your body with pleasure."), 5) H.mob_climax(forced_climax=TRUE) H.SetStun(20) @@ -1178,7 +1177,7 @@ for(var/obj/item/W in items) if(W == H.wear_suit) H.dropItemToGround(W, TRUE) - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "Before you can even think about it, you quickly remove your clothes in response to [(H.client?.prefs.lewdchem?"your [E.enthrallGender]'s command'":"[E.master]'s directive'")]."), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "Before you can even think about it, you quickly remove your clothes in response to [(E.lewd?"your [E.enthrallGender]'s command'":"[E.master]'s directive'")]."), 5) E.cooldown += 10 //WALK @@ -1216,7 +1215,7 @@ if(2 to INFINITY) L.lay_down() E.cooldown += 10 - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[(L.client?.prefs.lewdchem?"You eagerly lie down!":"You suddenly lie down!")]"), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[(E.lewd?"You eagerly lie down!":"You suddenly lie down!")]"), 5) to_chat(user, "You encourage [L] to lie down.") //KNOCKDOWN @@ -1247,7 +1246,7 @@ for (var/trigger in E.customTriggers) speaktrigger += "[trigger], " to_chat(user, "[C] whispers, \"[speaktrigger] are my triggers.\"")//So they don't trigger themselves! - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You whisper your triggers to [(C.client?.prefs.lewdchem?"Your [E.enthrallGender]":"[E.master]")]."), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You whisper your triggers to [(E.lewd?"Your [E.enthrallGender]":"[E.master]")]."), 5) //CUSTOM TRIGGERS @@ -1259,7 +1258,7 @@ if (get_dist(user, H) > 1)//Requires user to be next to their pet. to_chat(user, "You need to be next to your pet to give them a new trigger!") continue - if(!H.client?.prefs.lewdchem) + if(!E.lewd) to_chat(user, "[H] seems incapable of being implanted with triggers.") continue else @@ -1282,7 +1281,7 @@ E.customTriggers[trigger] = trigger2 log_game("FERMICHEM: [H] has been implanted by [user] with [trigger], triggering [trigger2].") E.mental_capacity -= 5 - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(H.client?.prefs.lewdchem?"your [E.enthrallGender]":"[E.master]")] whispers you a new trigger."), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(E.lewd?"your [E.enthrallGender]":"[E.master]")] whispers you a new trigger."), 5) to_chat(user, "You sucessfully set the trigger word [trigger] in [H]") else to_chat(user, "Your pet looks at you confused, it seems they don't understand that effect!") @@ -1300,7 +1299,7 @@ if (get_dist(user, H) > 1)//Requires user to be next to their pet. to_chat(user, "You need to be next to your pet to give them a new echophrase!") continue - if(!H.client?.prefs.lewdchem) + if(!E.lewd) to_chat(user, "[H] seems incapable of being implanted with an echoing phrase.") continue else @@ -1344,7 +1343,7 @@ objective = replacetext(lowertext(objective), "suicide", "self-love") message_admins("[H] has been implanted by [user] with the objective [objective].") log_game("FERMICHEM: [H] has been implanted by [user] with the objective [objective] via MKUltra.") - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(H.client?.prefs.lewdchem?"Your [E.enthrallGender]":"[E.master]")] whispers you a new objective."), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(E.lewd?"Your [E.enthrallGender]":"[E.master]")] whispers you a new objective."), 5) brainwash(H, objective) E.mental_capacity -= 200 to_chat(user, "You sucessfully give an objective to [H]") @@ -1358,7 +1357,7 @@ for(var/V in listeners) var/mob/living/carbon/human/H = V var/datum/status_effect/chem/enthrall/E = H.has_status_effect(/datum/status_effect/chem/enthrall) - if(E.phase >= 3 && H.client?.prefs.lewdchem) + if(E.phase >= 3 && E.lewd) var/instill = stripped_input(user, "Instill an emotion in [H].", MAX_MESSAGE_LEN) to_chat(H, "[instill]") to_chat(user, "You sucessfully instill a feeling in [H]") @@ -1373,7 +1372,7 @@ if(E.phase > 1) if(user.ckey == E.enthrallID && user.real_name == E.master.real_name) E.master = user - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(H.client?.prefs.lewdchem?"You hear the words of your [E.enthrallGender] again!! They're back!!":"You recognise the voice of [E.master].")]"), 5) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(E.lewd?"You hear the words of your [E.enthrallGender] again!! They're back!!":"You recognise the voice of [E.master].")]"), 5) to_chat(user, "[H] looks at you with sparkling eyes, recognising you!") //I dunno how to do state objectives without them revealing they're an antag diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index a35a5f50d..92aa3b21b 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -176,12 +176,12 @@ var/lewd = TRUE */ -/mob/living/verb/toggle_lewd() +/mob/living/verb/toggle_hypno() set category = "IC" - set name = "Toggle Lewdchem" - set desc = "Allows you to toggle if you'd like lewd flavour messages." - client.prefs.lewdchem = !(client.prefs.lewdchem) - to_chat(usr, "You [(client.prefs.lewdchem?"will":"no longer")] receive lewdchem messages.") + set name = "Toggle Lewd MKUltra" + set desc = "Allows you to toggle if you'd like lewd flavour messages for MKUltra." + client.prefs.cit_toggles ^= HYPNO + to_chat(usr, "You [((client.prefs.cit_toggles & HYPNO) ?"will":"no longer")] receive lewd flavour messages for MKUltra.") /datum/status_effect/chem/enthrall id = "enthrall" @@ -219,11 +219,13 @@ var/customEcho //Custom looping text in owner var/customSpan //Custom spans for looping text + var/lewd = FALSE // Set on on_apply. Will only be true if both individuals involved have opted in. + /datum/status_effect/chem/enthrall/on_apply() var/mob/living/carbon/M = owner var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in M.reagents.reagent_list if(!E) - message_admins("WARNING: FermiChem: No master found in thrall, did you bus in the status? You need to set up the vars manually in the chem if it's not reacted/bussed. Someone set up the reaction/status proc incorrectly if not (Don't use donor blood). Console them with a chemcat plush maybe?") + message_admins("WARNING: FermiChem: No master found in thrall, did you bus in the status? You need to set up the vars manually in the chem if it's not reacted/bussed. Someone set up the reaction/status proc incorrectly if not (Don't use donor blood).") owner.remove_status_effect(src) enthrallID = E.creatorID enthrallGender = E.creatorGender @@ -237,10 +239,11 @@ var/mob/living/carbon/human/H = owner if(H)//Prefs if(!H.canbearoused) - H.client?.prefs.lewdchem = FALSE - var/message = "[(owner.client?.prefs.lewdchem?"I am a good pet for [enthrallGender].":"[master] is a really inspirational person!")]" + H.client?.prefs.cit_toggles &= ~HYPNO + lewd = (owner.client?.prefs.cit_toggles & HYPNO) && (master.client?.prefs.cit_toggles & HYPNO) + var/message = "[(lewd ? "I am a good pet for [enthrallGender]." : "[master] is a really inspirational person!")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "enthrall", /datum/mood_event/enthrall, message) - to_chat(owner, "You feel inexplicably drawn towards [master], their words having a demonstrable effect on you. It seems the closer you are to them, the stronger the effect is. However you aren't fully swayed yet and can resist their effects by repeatedly resisting as much as you can!") + to_chat(owner, "You feel inexplicably drawn towards [master], their words having a demonstrable effect on you. It seems the closer you are to them, the stronger the effect is. However you aren't fully swayed yet and can resist their effects by repeatedly resisting as much as you can!") log_game("FERMICHEM: MKULTRA: Status applied on [owner] ckey: [owner.key] with a master of [master] ckey: [enthrallID].") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Enthrall attempts") return ..() @@ -286,7 +289,7 @@ resistanceTally /= 2 enthrallTally = 0 SSblackbox.record_feedback("tally", "fermi_chem", 1, "Enthralled to state 2") - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "Your conciousness slips, as you sink deeper into trance and servitude.") else to_chat(owner, "Your conciousness slips, as you feel more drawn to following [master].") @@ -295,24 +298,23 @@ phase = -1 to_chat(owner, "You break free of the influence in your mind, your thoughts suddenly turning lucid!") if(DistApart < 10) - to_chat(master, "[(master.client?.prefs.lewdchem?"Your pet":"Your thrall")] seems to have broken free of your enthrallment!") + to_chat(master, "[(lewd?"Your pet":"Your thrall")] seems to have broken free of your enthrallment!") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Thralls broken free") owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. - if(prob(10)) - if(owner.client?.prefs.lewdchem) - to_chat(owner, "[pick("It feels so good to listen to [master].", "You can't keep your eyes off [master].", "[master]'s voice is making you feel so sleepy.", "You feel so comfortable with [master]", "[master] is so dominant, it feels right to obey them.")].") + if(lewd && prob(10)) + to_chat(owner, "[pick("It feels so good to listen to [enthrallGender].", "You can't keep your eyes off [enthrallGender].", "[enthrallGender]'s voice is making you feel so sleepy.", "You feel so comfortable with [enthrallGender]", "[enthrallGender] is so dominant, it feels right to obey them.")].") if (2) //partially enthralled if(enthrallTally > 200) phase += 1 mental_capacity -= resistanceTally//leftover resistance per step is taken away from mental_capacity. enthrallTally = 0 resistanceTally /= 2 - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "Your mind gives, eagerly obeying and serving [master].") to_chat(owner, "You are now fully enthralled to [master], and eager to follow their commands. However you find that in your intoxicated state you are unable to resort to violence. Equally you are unable to commit suicide, even if ordered to, as you cannot serve your [enthrallGender] in death. ")//If people start using this as an excuse to be violent I'll just make them all pacifists so it's not OP. else to_chat(owner, "You are unable to put up a resistance any longer, and now are under the influence of [master]. However you find that in your intoxicated state you are unable to resort to violence. Equally you are unable to commit suicide, even if ordered to, as you cannot follow [master] in death. ") - to_chat(master, "Your [(master.client?.prefs.lewdchem?"pet":"follower")] [owner] appears to have fully fallen under your sway.") + to_chat(master, "Your [(lewd?"pet":"follower")] [owner] appears to have fully fallen under your sway.") log_game("FERMICHEM: MKULTRA: Status on [owner] ckey: [owner.key] has been fully entrhalled (state 3) with a master of [master] ckey: [enthrallID].") SSblackbox.record_feedback("tally", "fermi_chem", 1, "thralls fully enthralled.") else if (resistanceTally > 200) @@ -322,7 +324,7 @@ resistGrowth = 0 to_chat(owner, "You manage to shake some of the effects from your addled mind, however you can still feel yourself drawn towards [master].") if(prob(10)) - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "[pick("It feels so good to listen to [enthrallGender].", "You can't keep your eyes off [enthrallGender].", "[enthrallGender]'s voice is making you feel so sleepy.", "You feel so comfortable with [enthrallGender]", "[enthrallGender] is so dominant, it feels right to obey them.")].") if (3)//fully entranced if ((resistanceTally >= 200 && withdrawalTick >= 150) || (HAS_TRAIT(M, TRAIT_MINDSHIELD) && (resistanceTally >= 100))) @@ -330,11 +332,10 @@ phase -= 1 resistanceTally = 0 resistGrowth = 0 - to_chat(owner, "The separation from [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.") + to_chat(owner, "The separation from [(lewd?"your [enthrallGender]":"[master]")] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.") REMOVE_TRAIT(owner, TRAIT_PACIFISM, "MKUltra") - if(prob(1)) - if(owner.client?.prefs.lewdchem && !customEcho) - to_chat(owner, "[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].") + if(lewd && prob(1) && !customEcho) + to_chat(owner, "[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].") if (4) //mindbroken if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall)) phase = 2 @@ -350,7 +351,7 @@ cooldownMsg = FALSE else if (cooldownMsg == FALSE) if(DistApart < 10) - if(master.client?.prefs.lewdchem) + if(lewd) to_chat(master, "Your pet [owner] appears to have finished internalising your last command.") cooldownMsg = TRUE else @@ -358,7 +359,7 @@ cooldownMsg = TRUE if(get_dist(master, owner) > 10) if(prob(10)) - to_chat(owner, "You feel [(owner.client?.prefs.lewdchem?"a deep NEED to return to your [enthrallGender]":"like you have to return to [master]")].") + to_chat(owner, "You feel [(lewd?"a deep NEED to return to your [enthrallGender]":"like you have to return to [master]")].") M.throw_at(get_step_towards(master,owner), 5, 1) return//If you break the mind of someone, you can't use status effects on them. @@ -391,29 +392,29 @@ if (withdrawal == TRUE)//Your minions are really REALLY needy. switch(withdrawalTick)//denial if(5)//To reduce spam - to_chat(owner, "You are unable to complete [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")]'s orders without their presence, and any commands and objectives given to you prior are not in effect until you are back with them.") + to_chat(owner, "You are unable to complete [(lewd?"your [enthrallGender]":"[master]")]'s orders without their presence, and any commands and objectives given to you prior are not in effect until you are back with them.") ADD_TRAIT(owner, TRAIT_PACIFISM, "MKUltra") //IMPORTANT if(10 to 35)//Gives wiggle room, so you're not SUPER needy if(prob(5)) - to_chat(owner, "You're starting to miss [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")].") + to_chat(owner, "You're starting to miss [(lewd?"your [enthrallGender]":"[master]")].") if(prob(5)) owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.1) - to_chat(owner, "[(owner.client?.prefs.lewdchem?"[enthrallGender]":"[master]")] will surely be back soon") //denial + to_chat(owner, "[(lewd?"[enthrallGender]":"[master]")] will surely be back soon") //denial if(36) - var/message = "[(owner.client?.prefs.lewdchem?"I feel empty when [enthrallGender]'s not around..":"I miss [master]'s presence")]" + var/message = "[(lewd?"I feel empty when [enthrallGender]'s not around..":"I miss [master]'s presence")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing1", /datum/mood_event/enthrallmissing1, message) if(37 to 65)//barganing if(prob(10)) to_chat(owner, "They are coming back, right...?") owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5) if(prob(10)) - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "I just need to be a good pet for [enthrallGender], they'll surely return if I'm a good pet.") owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1.5) if(66) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing1") - var/message = "[(owner.client?.prefs.lewdchem?"I feel so lost in this complicated world without [enthrallGender]..":"I have to return to [master]!")]" - to_chat(owner, "You start to feel really angry about how you're not with [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")]!") + var/message = "[(lewd?"I feel so lost in this complicated world without [enthrallGender]..":"I have to return to [master]!")]" + to_chat(owner, "You start to feel really angry about how you're not with [(lewd?"your [enthrallGender]":"[master]")]!") SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing2", /datum/mood_event/enthrallmissing2, message) owner.stuttering += 50 owner.jitteriness += 250 @@ -421,15 +422,15 @@ if(prob(10)) addtimer(CALLBACK(M, /mob/verb/a_intent_change, INTENT_HARM), 2) addtimer(CALLBACK(M, /mob/proc/click_random_mob), 2) - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "You are overwhelmed with anger at the lack of [enthrallGender]'s presence and suddenly lash out!") else to_chat(owner, "You are overwhelmed with anger and suddenly lash out!") if(90) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2") - var/message = "[(owner.client?.prefs.lewdchem?"Where are you [enthrallGender]??!":"I need to find [master]!")]" + var/message = "[(lewd?"Where are you [enthrallGender]??!":"I need to find [master]!")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing3", /datum/mood_event/enthrallmissing3, message) - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "You need to find your [enthrallGender] at all costs, you can't hold yourself back anymore!") else to_chat(owner, "You need to find [master] at all costs, you can't hold yourself back anymore!") @@ -442,15 +443,15 @@ M.hallucination += 10 if(101) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3") - var/message = "[(owner.client?.prefs.lewdchem?"I'm all alone, It's so hard to continute without [enthrallGender]...":"I really need to find [master]!!!")]" + var/message = "[(lewd?"I'm all alone, It's so hard to continute without [enthrallGender]...":"I really need to find [master]!!!")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing4", /datum/mood_event/enthrallmissing4, message) - to_chat(owner, "You can hardly find the strength to continue without [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")].") + to_chat(owner, "You can hardly find the strength to continue without [(lewd?"your [enthrallGender]":"[master]")].") M.gain_trauma_type(BRAIN_TRAUMA_SEVERE) if(102 to 140) //depression 2, revengeance if(prob(20)) owner.Stun(50) owner.emote("cry")//does this exist? - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "You're unable to hold back your tears, suddenly sobbing as the desire to see your [enthrallGender] oncemore overwhelms you.") else to_chat(owner, "You are overwheled with withdrawl from [master].") @@ -472,7 +473,7 @@ deltaResist += 5 owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1) if(prob(20)) - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "Maybe you'll be okay without your [enthrallGender].") else to_chat(owner, "You feel your mental functions slowly begin to return.") @@ -505,7 +506,7 @@ else if(status == "charge") ADD_TRAIT(owner, TRAIT_GOTTAGOFAST, "MKUltra") status = "charged" - if(master.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "Your [enthrallGender]'s order fills you with a burst of speed!") else to_chat(owner, "[master]'s command fills you with a burst of speed!") @@ -528,7 +529,7 @@ //adrenals? //customEcho - if(customEcho && withdrawal == FALSE && owner.client?.prefs.lewdchem) + if(customEcho && withdrawal == FALSE && lewd) if(prob(2)) if(!customSpan) //just in case! customSpan = "notice" @@ -544,7 +545,7 @@ cooldownMsg = FALSE else if (cooldownMsg == FALSE) if(DistApart < 10) - if(master.client?.prefs.lewdchem) + if(lewd) to_chat(master, "Your pet [owner] appears to have finished internalising your last command.") else to_chat(master, "Your thrall [owner] appears to have finished internalising your last command.") @@ -577,7 +578,7 @@ /datum/status_effect/chem/enthrall/proc/owner_hear(datum/source, list/hearing_args) - if(owner.client?.prefs.lewdchem == FALSE) + if(lewd == FALSE) return if (cTriggered > 0) return @@ -607,7 +608,7 @@ //Shocking truth! else if (lowertext(customTriggers[trigger]) == "shock") - if (C.canbearoused && C.client?.prefs.lewdchem) + if (C.canbearoused && lewd) C.adjustArousalLoss(5) C.jitteriness += 100 C.stuttering += 25 @@ -617,7 +618,7 @@ //wah intensifies wah-rks else if (lowertext(customTriggers[trigger]) == "cum")//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - if (HAS_TRAIT(C, TRAIT_NYMPHO) && C.client?.prefs.lewdchem) + if (HAS_TRAIT(C, TRAIT_NYMPHO) && lewd) if (C.getArousalLoss() > 80) C.mob_climax(forced_climax=TRUE) C.SetStun(10)//We got your stun effects in somewhere, Kev. @@ -658,20 +659,20 @@ if (status == "Sleeper" || phase == 0) return else if (phase == 4) - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "Your mind is too far gone to even entertain the thought of resisting. Unless you can fix the brain damage, you won't be able to break free of your [enthrallGender]'s control.") else to_chat(owner, "Your brain is too overwhelmed with from the high volume of chemicals in your system, rendering you unable to resist, unless you can fix the brain damage.") return else if (phase == 3 && withdrawal == FALSE) - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "The presence of your [enthrallGender] fully captures the horizon of your mind, removing any thoughts of resistance. If you get split up from them, then you might be able to entertain the idea of resisting.") else to_chat(owner, "You are unable to resist [master] in your current state. If you get split up from them, then you might be able to resist.") return else if (status == "Antiresist")//If ordered to not resist; resisting while ordered to not makes it last longer, and increases the rate in which you are enthralled. if (statusStrength > 0) - if(owner.client?.prefs.lewdchem) + if(lewd) to_chat(owner, "The order from your [enthrallGender] to give in is conflicting with your attempt to resist, drawing you deeper into trance! You'll have to wait a bit before attemping again, lest your attempts become frustrated again.") else to_chat(owner, "The order from your [master] to give in is conflicting with your attempt to resist. You'll have to wait a bit before attemping again, lest your attempts become frustrated again.") @@ -711,7 +712,7 @@ deltaResist *= 1.25 if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine)) deltaResist *= 1.5 - if (!HAS_TRAIT(owner, TRAIT_CROCRIN_IMMUNE) && M.canbearoused && owner.client?.prefs.lewdchem) + if (!(owner.client?.prefs.cit_toggles & NO_APHRO) && M.canbearoused && lewd) if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiac)) deltaResist *= 1.5 if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiacplus)) diff --git a/modular_citadel/code/datums/traits/neutral.dm b/modular_citadel/code/datums/traits/neutral.dm index 20530dcc5..9b8fe1917 100644 --- a/modular_citadel/code/datums/traits/neutral.dm +++ b/modular_citadel/code/datums/traits/neutral.dm @@ -41,7 +41,7 @@ mob_trait = TRAIT_CHOKE_SLUT gain_text = "You feel like you want to feel fingers around your neck, choking you until you pass out or make a mess... Maybe both." lose_text = "Seems you don't have a kink for suffocation anymore." - +/* /datum/quirk/pharmacokinesis //Prevents unwanted organ additions. name = "Acute hepatic pharmacokinesis" desc = "You've a rare genetic disorder that causes Incubus draft and Sucubus milk to be absorbed by your liver instead." @@ -52,7 +52,7 @@ var/active = FALSE var/power = 0 var/cachedmoveCalc = 1 -/* + /datum/quirk/fluid_leak name = "Leaky breasts" desc = "You don't stop making milk, and you have a habit of leaking everywhere when your breasts are full" diff --git a/modular_citadel/code/modules/arousal/organs/genitals.dm b/modular_citadel/code/modules/arousal/organs/genitals.dm index dd5099cbd..7995eee9d 100644 --- a/modular_citadel/code/modules/arousal/organs/genitals.dm +++ b/modular_citadel/code/modules/arousal/organs/genitals.dm @@ -368,9 +368,11 @@ var/organCheck = FALSE var/breastCheck = FALSE var/willyCheck = FALSE + /* pharma trait deprecieated if(!canbearoused) ADD_TRAIT(src, TRAIT_PHARMA, "pharma")//Prefs prevent unwanted organs. return + */ for(var/obj/item/organ/O in internal_organs) if(istype(O, /obj/item/organ/genital)) organCheck = TRUE diff --git a/modular_citadel/code/modules/client/preferences.dm b/modular_citadel/code/modules/client/preferences.dm index db0727324..159f2f9f5 100644 --- a/modular_citadel/code/modules/client/preferences.dm +++ b/modular_citadel/code/modules/client/preferences.dm @@ -16,7 +16,7 @@ var/widescreenpref = TRUE var/autostand = TRUE var/auto_ooc = FALSE - var/lewdchem = TRUE + //var/lewdchem = TRUE replaced with new prefs //vore prefs var/toggleeatingnoise = TRUE @@ -58,6 +58,6 @@ datum/preferences/copy_to(mob/living/carbon/human/character, icon_updates = 1) character.give_genitals(TRUE) character.ooc_text = features["ooc_text"] //Let's update their flavor_text at least initially character.canbearoused = arousable - character.client?.prefs.lewdchem = lewdchem + //character.client?.prefs.lewdchem = lewdchem if(icon_updates) character.update_genitals() diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm index e8f3b78f6..79eefb765 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm @@ -167,6 +167,11 @@ Creating a chem with a low purity will make you permanently fall in love with so /datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M) . = ..() + /* TODO FIGURE OUT A WAY TO MAKE THIS SHIT WORK!!! + if(M.client?.prefs.cit_toggles & NEVER_HYPNO) // Just in case people are opting out of this + holder.remove_reagent(id, 10000000) + return + */ if(!ishuman(M))//Just to make sure screwy stuff doesn't happen. return if(!creatorID) @@ -180,7 +185,7 @@ Creating a chem with a low purity will make you permanently fall in love with so E.enthrallID = creatorID E.enthrallGender = creatorGender E.master = get_mob_by_key(creatorID) - to_chat(M, to_chat(M, "Your aldled, plastic, mind bends under the chemical influence of a new [(M.client?.prefs.lewdchem?"master":"leader")]. Your highest priority is now to stay by [creatorName]'s side, following and aiding them at all costs.")) //THIS SHOULD ONLY EVER APPEAR IF YOU MINDBREAK YOURSELF AND THEN GET INJECTED FROM SOMEONE ELSE. + to_chat(M, "Your addled, plastic, mind bends under the chemical influence of a new [(E.lewd?"master":"leader")]. Your highest priority is now to stay by [creatorName]'s side, following and aiding them at all costs.") //THIS SHOULD ONLY EVER APPEAR IF YOU MINDBREAK YOURSELF AND THEN GET INJECTED FROM SOMEONE ELSE. log_game("FERMICHEM: Narcissist [M] ckey: [M.key] been rebound to [creatorName], ID: [creatorID]") return if((M.ckey == creatorID) && (creatorName == M.real_name)) //same name AND same player - same instance of the player. (should work for clones?) @@ -191,7 +196,7 @@ Creating a chem with a low purity will make you permanently fall in love with so Vc.Remove(M) nVc.Insert(M) qdel(Vc) - to_chat(M, "You feel your vocal chords tingle you speak in a more charasmatic and sultry tone.)]") + to_chat(M, "You feel your vocal chords tingle you speak in a more charasmatic and sultry tone.") else log_game("FERMICHEM: MKUltra: [creatorName], [creatorID], is enthralling [M.name], [M.ckey]") M.apply_status_effect(/datum/status_effect/chem/enthrall) @@ -230,7 +235,6 @@ Creating a chem with a low purity will make you permanently fall in love with so M.reagents.del_reagent(type) FallInLove(C, M) return - if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it supresses the vocal effects, for stealth. NEVERMIND ADD THIS LATER I CAN'T GET IT TO WORK return if(!M.client) @@ -261,7 +265,7 @@ Creating a chem with a low purity will make you permanently fall in love with so E.master = creator else E = M.has_status_effect(/datum/status_effect/chem/enthrall) - if(M.client?.prefs.lewdchem) + if(E.lewd) to_chat(M, "Your mind shatters under the volume of the mild altering chem inside of you, breaking all will and thought completely. Instead the only force driving you now is the instinctual desire to obey and follow [creatorName]. Your highest priority is now to stay by their side and protect them at all costs.") else to_chat(M, "The might volume of chemicals in your system overwhelms your mind, and you suddenly agree with what [creatorName] has been saying. Your highest priority is now to stay by their side and protect them at all costs.") @@ -287,6 +291,7 @@ Creating a chem with a low purity will make you permanently fall in love with so chemical_flags = REAGENT_DONOTSPLIT can_synth = FALSE var/mob/living/carbon/love + var/lewd = FALSE /datum/reagent/fermi/enthrallExplo/on_mob_life(mob/living/carbon/M)//Love gas, only affects while it's in your system,Gives a positive moodlet if close, gives brain damagea and a negative moodlet if not close enough. if(HAS_TRAIT(M, TRAIT_MINDSHIELD)) @@ -302,24 +307,25 @@ Creating a chem with a low purity will make you permanently fall in love with so if(!love) return M.apply_status_effect(STATUS_EFFECT_INLOVE, love) - to_chat(M, "[(M.client?.prefs.lewdchem?"":"")][(M.client?.prefs.lewdchem?"You develop a sudden crush on [love], your heart beginning to race as you look upon them with new eyes.":"You suddenly feel like making friends with [love].")] You feel strangely drawn towards them.") + lewd = (M.client?.prefs.cit_toggles & HYPNO) && (love.client?.prefs.cit_toggles & HYPNO) + to_chat(M, "[(lewd?"":"")][(lewd?"You develop a sudden crush on [love], your heart beginning to race as you look upon them with new eyes.":"You suddenly feel like making friends with [love].")] You feel strangely drawn towards them.") log_game("FERMICHEM: [M] ckey: [M.key] has temporarily bonded with [love] ckey: [love.key]") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Times people have bonded") else if(get_dist(M, love) < 8) if(HAS_TRAIT(M, TRAIT_NYMPHO)) //Add this back when merged/updated. M.adjustArousalLoss(5) - var/message = "[(M.client?.prefs.lewdchem?"I'm next to my crush..! Eee!":"I'm making friends with [love]!")]" + var/message = "[(lewd?"I'm next to my crush..! Eee!":"I'm making friends with [love]!")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "InLove", /datum/mood_event/InLove, message) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "MissingLove") else - var/message = "[(M.client?.prefs.lewdchem?"I can't keep my crush off my mind, I need to see them again!":"I really want to make friends with [love]!")]" + var/message = "[(lewd?"I can't keep my crush off my mind, I need to see them again!":"I really want to make friends with [love]!")]" SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "MissingLove", /datum/mood_event/MissingLove, message) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "InLove") if(prob(5)) M.Stun(10) M.emote("whimper")//does this exist? - to_chat(M, "[(M.client?.prefs.lewdchem?"":"")] You're overcome with a desire to see [love].") + to_chat(M, "[(lewd?"":"")] You're overcome with a desire to see [love].") M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5)//I found out why everyone was so damaged! ..() @@ -329,7 +335,7 @@ Creating a chem with a low purity will make you permanently fall in love with so M.remove_status_effect(STATUS_EFFECT_INLOVE) SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "InLove") SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "MissingLove") - to_chat(M, "[(M.client?.prefs.lewdchem?"":"")]Your feelings for [love] suddenly vanish!") + to_chat(M, "[(lewd?"":"")]Your feelings for [love] suddenly vanish!") log_game("FERMICHEM: [M] ckey: [M.key] is no longer in temp bond") ..() @@ -337,7 +343,8 @@ Creating a chem with a low purity will make you permanently fall in love with so if(Lover.has_status_effect(STATUS_EFFECT_INLOVE)) to_chat(Lover, "You are already fully devoted to someone else!") return - to_chat(Lover, "[(Lover.client?.prefs.lewdchem?"":"")]You develop a deep and sudden bond with [Love][(Lover.client?.prefs.lewdchem?", your heart beginning to race as your mind filles with thoughts about them.":".")] You are determined to keep them safe and happy, and feel drawn towards them.") + var/lewd = (Lover.client?.prefs.cit_toggles & HYPNO) && (Love.client?.prefs.cit_toggles & HYPNO) + to_chat(Lover, "[(lewd?"":"")]You develop a deep and sudden bond with [Love][(lewd?", your heart beginning to race as your mind filles with thoughts about them.":".")] You are determined to keep them safe and happy, and feel drawn towards them.") if(Lover.mind) Lover.mind.store_memory("You are in love with [Love].") Lover.faction |= "[REF(Love)]" diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 147602004..61bd76885 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -25,7 +25,7 @@ taste_description = "a milky ice cream like flavour." overdose_threshold = 17 metabolization_rate = 0.25 - impure_chem = /datum/reagent/fermi/BEsmaller //If you make an inpure chem, it stalls growth + impure_chem = /datum/reagent/fermi/BEsmaller //If you make an impure chem, it stalls growth inverse_chem_val = 0.35 inverse_chem = /datum/reagent/fermi/BEsmaller //At really impure vols, it just becomes 100% inverse can_synth = FALSE @@ -49,7 +49,7 @@ B.throw_at(T2, 8, 1) M.reagents.del_reagent(type) return - log_game("FERMICHEM: [M] ckey: [M.key] has ingested Sucubus milk") + log_game("FERMICHEM: [M] ckey: [M.key] has ingested Succubus milk") var/mob/living/carbon/human/H = M H.genital_override = TRUE var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts") @@ -69,8 +69,8 @@ var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") if(!B) //If they don't have breasts, give them breasts. - //If they have Acute hepatic pharmacokinesis, then route processing though liver. - if(HAS_TRAIT(M, TRAIT_PHARMA)) + //If they've opted out, then route processing though liver. + if(!(H.client?.prefs.cit_toggles & BREAST_ENLARGEMENT)) var/obj/item/organ/liver/L = M.getorganslot("liver") if(L) L.swelling+= 0.05 @@ -101,9 +101,7 @@ ..() /datum/reagent/fermi/breast_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a female if male and ODing, doesn't touch nonbinary and object genders. - - //Acute hepatic pharmacokinesis. - if(HAS_TRAIT(M, TRAIT_PHARMA)) + if(!(M.client?.prefs.cit_toggles & FORCED_FEM)) var/obj/item/organ/liver/L = M.getorganslot("liver") L.swelling+= 0.05 return ..() @@ -142,15 +140,10 @@ /datum/reagent/fermi/BEsmaller/on_mob_life(mob/living/carbon/M) var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") - if(!B) - //Acute hepatic pharmacokinesis. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") - L.swelling-= 0.05 - return ..() - - //otherwise proceed as normal - return..() + if(!(M.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) || !B) + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) + L.swelling-= 0.05 + return ..() B.cached_size = B.cached_size - 0.05 B.update() ..() @@ -240,12 +233,12 @@ /datum/reagent/fermi/penis_enlarger/on_mob_life(mob/living/carbon/M) //Increases penis size, 5u = +1 inch. if(!ishuman(M)) return + + var/mob/living/carbon/human/H = M var/obj/item/organ/genital/testicles/T = M.getorganslot("testicles") //Hyper Change, testicles come first so the dick isn't hidden behind the testicles layer var/obj/item/organ/genital/penis/P = M.getorganslot("penis") if(!T)//Hyper change// Adds testicles if there are none. - - //If they have Acute hepatic pharmacokinesis, then route processing though liver. - if(HAS_TRAIT(M, TRAIT_PHARMA)) + if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT)) var/obj/item/organ/liver/L = M.getorganslot("liver") if(L) L.swelling+= 0.05 @@ -263,11 +256,8 @@ nT.cached_size = 1 nT.sack_size = BALLS_SACK_SIZE_DEF T = nT - - if(!P)//They do have a preponderance for escapism, or so I've heard. - - //If they have Acute hepatic pharmacokinesis, then route processing though liver. - if(HAS_TRAIT(M, TRAIT_PHARMA)) + if(!P) + if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT)) var/obj/item/organ/liver/L = M.getorganslot("liver") if(L) L.swelling+= 0.05 @@ -295,8 +285,7 @@ ..() /datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. - //Acute hepatic pharmacokinesis. - if(HAS_TRAIT(M, TRAIT_PHARMA)) + if(!(M.client?.prefs.cit_toggles & FORCED_MASC)) var/obj/item/organ/liver/L = M.getorganslot("liver") L.swelling+= 0.05 return..() @@ -334,14 +323,9 @@ /datum/reagent/fermi/PEsmaller/on_mob_life(mob/living/carbon/M) var/mob/living/carbon/human/H = M var/obj/item/organ/genital/penis/P = H.getorganslot("penis") - if(!P) - //Acute hepatic pharmacokinesis. - if(HAS_TRAIT(M, TRAIT_PHARMA)) - var/obj/item/organ/liver/L = M.getorganslot("liver") - L.swelling-= 0.05 - return..() - - //otherwise proceed as normal + if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT) || !P) + var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) + L.swelling-= 0.05 return..() P.cached_length = P.cached_length - 0.1 P.update() @@ -426,4 +410,4 @@ if(B.size < 5) //just make sure you dont break sprites B.size = B.size + 0.05 B.update() - ..() \ No newline at end of file + ..() diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index e2420ebd5..bc8f5a8c8 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -141,7 +141,7 @@ color = "#FFADFF"//PINK, rgb(255, 173, 255) /datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M) - if(M && M.canbearoused && !HAS_TRAIT(M, TRAIT_CROCRIN_IMMUNE)) + if(M && M.canbearoused && !(M.client?.prefs.cit_toggles & NO_APHRO)) if(prob(33)) M.adjustArousalLoss(2) if(prob(5)) @@ -162,7 +162,7 @@ overdose_threshold = 20 /datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M) - if(M && M.canbearoused && !HAS_TRAIT(M, TRAIT_CROCRIN_IMMUNE)) + if(M && M.canbearoused && !(M.client?.prefs.cit_toggles & NO_APHRO)) if(prob(33)) M.adjustArousalLoss(6)//not quite six times as powerful, but still considerably more powerful. if(prob(5)) @@ -194,7 +194,7 @@ ..() /datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M) - if(M && M.canbearoused && !HAS_TRAIT(M, TRAIT_CROCRIN_IMMUNE) && prob(33)) + if(M && M.canbearoused && !(M.client?.prefs.cit_toggles & NO_APHRO) && prob(33)) if(prob(5) && M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna()) if(prob(5)) //Less spam to_chat(M, "Your libido is going haywire!") From eaa4a3e926f714d097574a4b87afbf10ca516b1f Mon Sep 17 00:00:00 2001 From: TotallyNotADog Date: Sun, 23 Jan 2022 19:43:07 -0600 Subject: [PATCH 02/10] finalizes MKUltra.dm --- .../code/modules/reagents/chemistry/reagents/MKUltra.dm | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm index 79eefb765..c18ccbc0a 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm @@ -167,11 +167,9 @@ Creating a chem with a low purity will make you permanently fall in love with so /datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M) . = ..() - /* TODO FIGURE OUT A WAY TO MAKE THIS SHIT WORK!!! if(M.client?.prefs.cit_toggles & NEVER_HYPNO) // Just in case people are opting out of this - holder.remove_reagent(id, 10000000) + holder.del_reagent(type) return - */ if(!ishuman(M))//Just to make sure screwy stuff doesn't happen. return if(!creatorID) @@ -207,8 +205,7 @@ Creating a chem with a low purity will make you permanently fall in love with so if(purity < 0.5)//DO NOT SPLIT INTO DIFFERENT CHEM: This relies on DoNotSplit - has to be done this way. if(volume < 0.5)//You don't get to escape that easily //FallInLove(pick(GLOB.player_list), M) //goodbye - M.reagents.remove_reagent(type, volume) - + M.reagents.del_reagent(type) if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks it, they fall in love randomly. If someone else drinks it, the creator falls in love with them. if(M.has_status_effect(STATUS_EFFECT_INLOVE))//Can't be enthralled when enthralled, so to speak. return From 7963a93f3f6bd9ee43f8264daf3d3275fa35a042 Mon Sep 17 00:00:00 2001 From: TotallyNotADog Date: Mon, 24 Jan 2022 01:06:31 -0600 Subject: [PATCH 03/10] makes some pref toggles actually work makes the buttons functional for hypno, aphro, and ass slapping, and makes enlargement prefs actually functional instead of just affecting new organs --- code/__DEFINES/citadel_defines.dm | 2 +- code/modules/client/preferences.dm | 15 +++++-- .../chemistry/reagents/enlargement.dm | 43 ++++++++++--------- 3 files changed, 36 insertions(+), 24 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 8f9fa99f9..86b7410b6 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -139,7 +139,7 @@ #define HYPNO (1<<7) #define NEVER_HYPNO (1<<8) #define NO_APHRO (1<<9) -#define NO_ASS_SLAP (1<<9) +#define NO_ASS_SLAP (1<<10) #define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES|BREAST_ENLARGEMENT|PENIS_ENLARGEMENT) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 2f8fc19f8..2ecd4ec20 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -312,7 +312,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Loadout" dat += "Game Preferences" dat += "Antagonist Preferences" - dat += "Content Preferences" + dat += "Content Preferences" if(!path) dat += "
Please create an account to save your preferences
" @@ -1202,9 +1202,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

Other content prefs

" dat += "Breast Enlargement: [(cit_toggles & BREAST_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" dat += "Penis Enlargement: [(cit_toggles & PENIS_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" - dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"]
" + dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"]
" dat += "Aphrodisiacs: [(cit_toggles & NO_APHRO) ? "Disallowed" : "Allowed"]
" - dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"]
" + dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"]
" dat += "
" dat += "
" @@ -2746,6 +2746,15 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("hypno") cit_toggles ^= HYPNO + if("never_hypno") + cit_toggles ^= NEVER_HYPNO + + if("aphro") + cit_toggles ^= NO_APHRO + + if("ass_slap") + cit_toggles ^= NO_ASS_SLAP + //END CITADEL EDIT if("ambientocclusion") diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 61bd76885..a13253d4d 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -73,7 +73,7 @@ if(!(H.client?.prefs.cit_toggles & BREAST_ENLARGEMENT)) var/obj/item/organ/liver/L = M.getorganslot("liver") if(L) - L.swelling+= 0.05 + //L.swelling+= 0.05 HYPER CHANGE: Liver swelling is the non-lewd equivalent of large genitals impeding movement. Feature is depreciated on Hyper. return..() else M.adjustToxLoss(1) @@ -95,15 +95,16 @@ to_chat(M, "Your chest feels warm, tingling with newfound sensitivity.") M.reagents.remove_reagent(type, 5) B = nB - //If they have them, increase size. If size is comically big, limit movement and rip clothes. - B.cached_size = B.cached_size + 0.05 - B.update() + //If they have them, and opted in, increase size. + if(H.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) + B.cached_size = B.cached_size + 0.05 + B.update() ..() /datum/reagent/fermi/breast_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a female if male and ODing, doesn't touch nonbinary and object genders. if(!(M.client?.prefs.cit_toggles & FORCED_FEM)) var/obj/item/organ/liver/L = M.getorganslot("liver") - L.swelling+= 0.05 + //L.swelling+= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life() return ..() var/obj/item/organ/genital/penis/P = M.getorganslot("penis") @@ -142,10 +143,11 @@ var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") if(!(M.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) || !B) var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) - L.swelling-= 0.05 + //L.swelling-= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life() return ..() - B.cached_size = B.cached_size - 0.05 - B.update() + if(H.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) + B.cached_size = B.cached_size - 0.05 + B.update() ..() /datum/reagent/fermi/BEsmaller_hypo @@ -241,7 +243,7 @@ if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT)) var/obj/item/organ/liver/L = M.getorganslot("liver") if(L) - L.swelling+= 0.05 + //L.swelling+= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life() return..() else M.adjustToxLoss(1) @@ -260,7 +262,7 @@ if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT)) var/obj/item/organ/liver/L = M.getorganslot("liver") if(L) - L.swelling+= 0.05 + //L.swelling+= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life() return..() else M.adjustToxLoss(1) @@ -276,18 +278,18 @@ nP.prev_length = 1 M.reagents.remove_reagent(type, 5) P = nP - - P.cached_length = P.cached_length + 0.1 - //Hyper change// Increase ball size too - T.size = T.size + 0.1 - T.update() //Hyper change - Make the ball size update - P.update() + if(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT) + P.cached_length = P.cached_length + 0.1 + //Hyper change// Increase ball size too + T.size = T.size + 0.1 + T.update() //Hyper change - Make the ball size update + P.update() ..() /datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. if(!(M.client?.prefs.cit_toggles & FORCED_MASC)) var/obj/item/organ/liver/L = M.getorganslot("liver") - L.swelling+= 0.05 + //L.swelling+= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life() return..() var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") @@ -325,10 +327,11 @@ var/obj/item/organ/genital/penis/P = H.getorganslot("penis") if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT) || !P) var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) - L.swelling-= 0.05 + //L.swelling-= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life() return..() - P.cached_length = P.cached_length - 0.1 - P.update() + if(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT) + P.cached_length = P.cached_length - 0.1 + P.update() ..() /datum/reagent/fermi/PEsmaller_hypo From a2e47a8d0837b268773808ae995b5d833f42df5e Mon Sep 17 00:00:00 2001 From: TotallyNotADog Date: Mon, 24 Jan 2022 01:19:07 -0600 Subject: [PATCH 04/10] reverts dependabot commit whoops i made a fucko wucko --- tgui/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tgui/package-lock.json b/tgui/package-lock.json index e6fb323c9..86c2b95e1 100644 --- a/tgui/package-lock.json +++ b/tgui/package-lock.json @@ -5796,9 +5796,9 @@ "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" }, "nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==" + "version": "3.1.23", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", + "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==" }, "nanomatch": { "version": "1.2.13", From 1737a0aeb55e4c1198b34ad73062ba265a0b2ee5 Mon Sep 17 00:00:00 2001 From: TotallyNotADog <66381600+TotallyNotADog@users.noreply.github.com> Date: Mon, 24 Jan 2022 01:44:34 -0600 Subject: [PATCH 05/10] missed a ? runtimes will ensue without it --- code/modules/mob/living/carbon/human/examine.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 28687d297..b9da55e0c 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -331,7 +331,7 @@ var/obj/item/organ/vocal_cords/Vc = user.getorganslot(ORGAN_SLOT_VOICE) if(Vc) if(istype(Vc, /obj/item/organ/vocal_cords/velvet)) - if(client.prefs.cit_toggles & HYPNO) + if(client?.prefs.cit_toggles & HYPNO) msg += "You feel your chords resonate looking at them.\n" From 095a170cedd42fa53c472e6ec6e7217d38f30377 Mon Sep 17 00:00:00 2001 From: TotallyNotADog Date: Mon, 24 Jan 2022 12:46:00 -0600 Subject: [PATCH 06/10] cleans up warnings and fixes a mistake --- .../modules/reagents/chemistry/reagents/enlargement.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index a13253d4d..becfbc357 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -103,7 +103,7 @@ /datum/reagent/fermi/breast_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a female if male and ODing, doesn't touch nonbinary and object genders. if(!(M.client?.prefs.cit_toggles & FORCED_FEM)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + //var/obj/item/organ/liver/L = M.getorganslot("liver") //L.swelling+= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life() return ..() @@ -142,10 +142,10 @@ /datum/reagent/fermi/BEsmaller/on_mob_life(mob/living/carbon/M) var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") if(!(M.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) || !B) - var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) + //var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) //L.swelling-= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life() return ..() - if(H.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) + if(M.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) B.cached_size = B.cached_size - 0.05 B.update() ..() @@ -288,7 +288,7 @@ /datum/reagent/fermi/penis_enlarger/overdose_process(mob/living/carbon/M) //Turns you into a male if female and ODing, doesn't touch nonbinary and object genders. if(!(M.client?.prefs.cit_toggles & FORCED_MASC)) - var/obj/item/organ/liver/L = M.getorganslot("liver") + //var/obj/item/organ/liver/L = M.getorganslot("liver") //L.swelling+= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life() return..() @@ -326,7 +326,7 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/genital/penis/P = H.getorganslot("penis") if(!(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT) || !P) - var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) + //var/obj/item/organ/liver/L = M.getorganslot(ORGAN_SLOT_LIVER) //L.swelling-= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life() return..() if(H.client?.prefs.cit_toggles & PENIS_ENLARGEMENT) From 0085fdd5cc7993ce3aa3c936c876f48c9ba2e869 Mon Sep 17 00:00:00 2001 From: TotallyNotADog Date: Mon, 24 Jan 2022 14:10:38 -0600 Subject: [PATCH 07/10] headpat wagging pref --- code/__DEFINES/citadel_defines.dm | 1 + code/datums/traits/neutral.dm | 24 +++++++++---------- code/modules/client/preferences.dm | 5 ++++ .../mob/living/carbon/carbon_defense.dm | 4 +++- .../mob/living/carbon/human/species.dm | 11 +++++++++ 5 files changed, 32 insertions(+), 13 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 86b7410b6..24251f202 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -140,6 +140,7 @@ #define NEVER_HYPNO (1<<8) #define NO_APHRO (1<<9) #define NO_ASS_SLAP (1<<10) +#define NO_AUTO_WAG (1<<11) #define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES|BREAST_ENLARGEMENT|PENIS_ENLARGEMENT) diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 5e5be1b96..b79351e6e 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -127,17 +127,6 @@ gain_text = "Your ass rivals those of golems." lose_text = "Your butt feels more squishy and slappable." -/* REPLACED WITH PREFS -/datum/quirk/crocrin_immunity - name = "Crocin Immunity" - desc = "You're one of the few people in the galaxy who are genetically immune to Crocin and Hexacrocin products and their addictive properties! However, you can still get brain damage from Hexacrocin addiction." - mob_trait = TRAIT_CROCRIN_IMMUNE - value = 0 - category = CATEGORY_SEXUAL - gain_text = "You feel more prudish." - lose_text = "You don't feel as prudish as before." - medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." - /datum/quirk/headpat_slut name = "Headpat Slut" desc = "You like headpats, alot, maybe even a little bit too much. Headpats give you a bigger mood boost and cause arousal" @@ -152,7 +141,18 @@ mob_trait = TRAIT_DISTANT value = 0 category = CATEGORY_SEXUAL //Any better place to put it? Doesn't really affect gameplay - medical_record_text = "Patient cares little with or dislikes being touched." + medical_record_text = "Patient dislikes being touched." + +/* REPLACED WITH PREFS +/datum/quirk/crocrin_immunity + name = "Crocin Immunity" + desc = "You're one of the few people in the galaxy who are genetically immune to Crocin and Hexacrocin products and their addictive properties! However, you can still get brain damage from Hexacrocin addiction." + mob_trait = TRAIT_CROCRIN_IMMUNE + value = 0 + category = CATEGORY_SEXUAL + gain_text = "You feel more prudish." + lose_text = "You don't feel as prudish as before." + medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." */ /datum/quirk/colorist diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 2ecd4ec20..ffd4de63f 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1205,6 +1205,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"]
" dat += "Aphrodisiacs: [(cit_toggles & NO_APHRO) ? "Disallowed" : "Allowed"]
" dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"]
" + dat += "Automatic Wagging: [(cit_toggles & NO_AUTO_WAG) ? "Disabled" : "Enabled"]
" + dat += "
" dat += "
" dat += "
" @@ -2755,6 +2757,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("ass_slap") cit_toggles ^= NO_ASS_SLAP + if("auto_wag") + cit_toggles ^= NO_AUTO_WAG + //END CITADEL EDIT if("ambientocclusion") diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index ac3702492..93bdafc7a 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -315,7 +315,9 @@ else if (mood.sanity >= SANITY_DISTURBED) SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/betterhug, M) - if(HAS_TRAIT(H, TRAIT_DISTANT)) + if(H.client?.prefs.cit_toggles & NO_AUTO_WAG) //if they don't wanna wag + if(!(HAS_TRAIT(H, TRAIT_DISTANT))) //because distant = the pet didn't actually happen + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) //so the sound plays as expected return else if(H.dna.species.can_wag_tail(H)) if("tail_human" in pref_species.default_features) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index f637ca421..a036dbb7f 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1613,6 +1613,17 @@ GLOBAL_LIST_EMPTY(roundstart_races) return FALSE else if(aim_for_groin && (target == user || target.lying || same_dir) && (target_on_help || target_restrained || target_aiming_for_groin)) if(target.client?.prefs.cit_toggles & NO_ASS_SLAP) + if(HAS_TRAIT(target, TRAIT_ASSBLASTUSA)) //is their ass ROCK HARD? + var/hit_zone = (user.held_index_to_dir(user.active_hand_index) == "l" ? "l_":"r_") + "arm" + user.adjustStaminaLoss(20, affected_zone = hit_zone) + user.visible_message(\ + "\The [user] slaps \the [target]'s ass, but their hand bounces off like they hit metal!",\ + "You slap [user == target ? "your" : "\the [target]'s"] ass, but feel an intense amount of pain as you realise their buns are harder than steel!",\ + "You hear a slap." + ) + playsound(target.loc, 'sound/weapons/tap.ogg', 50, 1, -1) + user.emote("scream") + return FALSE to_chat(user,"A force stays your hand, preventing you from slapping \the [target]'s ass!") return FALSE user.do_attack_animation(target, ATTACK_EFFECT_ASS_SLAP) From 69253367f954bc7c19f9e71f59f7c77709b1e58b Mon Sep 17 00:00:00 2001 From: TotallyNotADog Date: Mon, 24 Jan 2022 15:22:39 -0600 Subject: [PATCH 08/10] fixing this --- code/modules/mob/living/carbon/carbon_defense.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 93bdafc7a..e6ea0da83 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -316,8 +316,7 @@ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "friendly_hug", /datum/mood_event/betterhug, M) if(H.client?.prefs.cit_toggles & NO_AUTO_WAG) //if they don't wanna wag - if(!(HAS_TRAIT(H, TRAIT_DISTANT))) //because distant = the pet didn't actually happen - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) //so the sound plays as expected + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) //so the sound plays as expected return else if(H.dna.species.can_wag_tail(H)) if("tail_human" in pref_species.default_features) From 4b0e4cc1e2ed2de991e8e44539433fa81292af3d Mon Sep 17 00:00:00 2001 From: TotallyNotADog Date: Mon, 24 Jan 2022 16:10:47 -0600 Subject: [PATCH 09/10] adds genital and vore examine prefs --- code/__DEFINES/citadel_defines.dm | 2 ++ code/modules/client/preferences.dm | 8 ++++++++ code/modules/mob/living/carbon/human/examine.dm | 9 +++++---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 24251f202..f5c1c28e7 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -141,6 +141,8 @@ #define NO_APHRO (1<<9) #define NO_ASS_SLAP (1<<10) #define NO_AUTO_WAG (1<<11) +#define GENITAL_EXAMINE (1<<12) +#define VORE_EXAMINE (1<<13) #define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES|BREAST_ENLARGEMENT|PENIS_ENLARGEMENT) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index ffd4de63f..bd32f33c1 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1191,6 +1191,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

Fetish content prefs

" dat += "Arousal:[arousable == TRUE ? "Enabled" : "Disabled"]
" dat += "Exhibitionist:[features["exhibitionist"] == TRUE ? "Yes" : "No"]
" + dat += "Genital examine text:[(cit_toggles & GENITAL_EXAMINE) ? "Enabled" : "Disabled"]
" + dat += "Vore examine text:[(cit_toggles & VORE_EXAMINE) ? "Enabled" : "Disabled"]
" dat += "Voracious MediHound sleepers: [(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]
" dat += "Hear Vore Sounds: [(cit_toggles & EATING_NOISES) ? "Yes" : "No"]
" dat += "Hear Vore Digestion Sounds: [(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]
" @@ -2724,6 +2726,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) parent.mob.hud_used.update_parallax_pref(parent.mob) // Citadel edit - Prefs don't work outside of this. :c + if("genital_examine") + cit_toggles ^= GENITAL_EXAMINE + + if("vore_examine") + cit_toggles ^= VORE_EXAMINE + if("hound_sleeper") cit_toggles ^= MEDIHOUND_SLEEPER diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index b9da55e0c..1be10296d 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -127,14 +127,15 @@ . += "[t_He] [t_is] currently in heat." //CIT CHANGES START HERE - adds genital details to examine text - if(LAZYLEN(internal_organs)) + if(LAZYLEN(internal_organs) && user.client?.prefs.cit_toggles & GENITAL_EXAMINE) for(var/obj/item/organ/genital/dicc in internal_organs) if(istype(dicc) && dicc.is_exposed()) . += "[dicc.desc]" - var/cursed_stuff = attempt_vr(src,"examine_bellies",args) //vore Code - if(!isnull(cursed_stuff)) - . += cursed_stuff + if(user.client?.prefs.cit_toggles & VORE_EXAMINE) + var/cursed_stuff = attempt_vr(src,"examine_bellies",args) //vore Code + if(cursed_stuff) + . += cursed_stuff //END OF CIT CHANGES //Jitters From c0baf9687fc1362cce4bac6cac721887ff3559fb Mon Sep 17 00:00:00 2001 From: TotallyNotADog Date: Mon, 24 Jan 2022 18:58:25 -0600 Subject: [PATCH 10/10] adds butt expansion and furranium prefs --- code/__DEFINES/citadel_defines.dm | 20 +++++----- code/modules/client/preferences.dm | 10 ++++- .../chemistry/reagents/enlargement.dm | 38 ++++++++++--------- .../chemistry/reagents/fermi_reagents.dm | 4 +- 4 files changed, 43 insertions(+), 29 deletions(-) diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index f5c1c28e7..94d1d2135 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -134,15 +134,17 @@ #define BREAST_ENLARGEMENT (1<<3) #define PENIS_ENLARGEMENT (1<<4) -#define FORCED_FEM (1<<5) -#define FORCED_MASC (1<<6) -#define HYPNO (1<<7) -#define NEVER_HYPNO (1<<8) -#define NO_APHRO (1<<9) -#define NO_ASS_SLAP (1<<10) -#define NO_AUTO_WAG (1<<11) -#define GENITAL_EXAMINE (1<<12) -#define VORE_EXAMINE (1<<13) +#define ASS_ENLARGEMENT (1<<5) +#define FORCED_FEM (1<<6) +#define FORCED_MASC (1<<7) +#define HYPNO (1<<8) +#define NEVER_HYPNO (1<<9) +#define NO_APHRO (1<<10) +#define NO_ASS_SLAP (1<<11) +#define NO_AUTO_WAG (1<<12) +#define GENITAL_EXAMINE (1<<13) +#define VORE_EXAMINE (1<<14) +#define NO_UWU (1<<15) #define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES|BREAST_ENLARGEMENT|PENIS_ENLARGEMENT) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index bd32f33c1..848c8a3bc 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1204,10 +1204,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

Other content prefs

" dat += "Breast Enlargement: [(cit_toggles & BREAST_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" dat += "Penis Enlargement: [(cit_toggles & PENIS_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" + dat += "Ass Enlargement: [(cit_toggles & ASS_ENLARGEMENT) ? "Allowed" : "Disallowed"]
" dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"]
" dat += "Aphrodisiacs: [(cit_toggles & NO_APHRO) ? "Disallowed" : "Allowed"]
" dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"]
" - dat += "Automatic Wagging: [(cit_toggles & NO_AUTO_WAG) ? "Disabled" : "Enabled"]
" + dat += "Automatic Wagging: [(cit_toggles & NO_AUTO_WAG) ? "Disallowed" : "Allowed"]
" + dat += "Forced UwUspeak: [(cit_toggles & NO_UWU) ? "Disallowed" : "Allowed"]
" dat += "" dat += "
" @@ -2747,6 +2749,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("penis_enlargement") cit_toggles ^= PENIS_ENLARGEMENT + if("ass_enlargement") + cit_toggles ^= ASS_ENLARGEMENT + if("feminization") cit_toggles ^= FORCED_FEM @@ -2768,6 +2773,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("auto_wag") cit_toggles ^= NO_AUTO_WAG + if("no_uwu") + cit_toggles ^= NO_UWU + //END CITADEL EDIT if("ambientocclusion") diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index becfbc357..e0d8e8417 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -395,22 +395,24 @@ var/mob/living/carbon/human/H = M var/obj/item/organ/genital/anus/B = M.getorganslot("anus") - if(!B) //If they don't have a butt. Give them one! - var/obj/item/organ/genital/anus/nB = new - nB.Insert(M) - if(nB) - if(M.dna.species.use_skintones && M.dna.features["genitals_use_skintone"]) - nB.color = skintone2hex(H.skin_tone) - else if(M.dna.features["breasts_color"]) - nB.color = "#[M.dna.features["breasts_color"]]" - else - nB.color = skintone2hex(H.skin_tone) - nB.size = 1 - to_chat(M, "Your ass cheeks bulge outwards and feel heavier.") - M.reagents.remove_reagent(type, 5) - B = nB - //If they have, increase size. - if(B.size < 5) //just make sure you dont break sprites - B.size = B.size + 0.05 - B.update() + if(!B) //If they don't have a butt and are opted in, give them one! + if(H.client?.prefs.cit_toggles & ASS_ENLARGEMENT) + var/obj/item/organ/genital/anus/nB = new + nB.Insert(M) + if(nB) + if(M.dna.species.use_skintones && M.dna.features["genitals_use_skintone"]) + nB.color = skintone2hex(H.skin_tone) + else if(M.dna.features["breasts_color"]) + nB.color = "#[M.dna.features["breasts_color"]]" + else + nB.color = skintone2hex(H.skin_tone) + nB.size = 1 + to_chat(M, "Your ass cheeks bulge outwards and feel heavier.") + M.reagents.remove_reagent(type, 5) + B = nB + //If they have & opt in, increase size. + if(H.client?.prefs.cit_toggles & ASS_ENLARGEMENT) + if(B.size < 5) //just make sure you dont break sprites + B.size = B.size + 0.05 + B.update() ..() diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index b5324515d..067a32fe7 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -108,7 +108,9 @@ ..() /datum/reagent/fermi/furranium/on_mob_life(mob/living/carbon/M) - + if(M.client?.prefs.cit_toggles & NO_UWU) //if opted out of uwuspeak + holder.del_reagent(type) + return switch(current_cycle) if(1 to 9) if(prob(20))