From cb0898bbeb4b7645d4a9ea69cade7c1761e07fa1 Mon Sep 17 00:00:00 2001 From: TotallyNotADog Date: Sun, 23 Jan 2022 01:34:35 -0600 Subject: [PATCH] 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!")