diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm
index f74a6cda6..94d1d2135 100644
--- a/code/__DEFINES/citadel_defines.dm
+++ b/code/__DEFINES/citadel_defines.dm
@@ -132,7 +132,21 @@
#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 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)
//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..b79351e6e 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."
@@ -151,7 +141,19 @@
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
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..848c8a3bc 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,33 @@ 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 += "
"
if(!IsGuestKey(user.key))
@@ -2538,8 +2560,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")
@@ -2708,6 +2728,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
@@ -2716,6 +2742,40 @@ 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("ass_enlargement")
+ cit_toggles ^= ASS_ENLARGEMENT
+
+ if("feminization")
+ cit_toggles ^= FORCED_FEM
+
+ if("masculinization")
+ cit_toggles ^= FORCED_MASC
+
+ 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
+
+ if("auto_wag")
+ cit_toggles ^= NO_AUTO_WAG
+
+ if("no_uwu")
+ cit_toggles ^= NO_UWU
+
//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/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index ac3702492..e6ea0da83 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -315,7 +315,8 @@
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
+ 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/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 66a825e8f..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
@@ -331,7 +332,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..a036dbb7f 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1612,6 +1612,20 @@ 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)
+ 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)
user.adjustStaminaLossBuffered(3)
if(HAS_TRAIT(target, TRAIT_ASSBLASTUSA))
@@ -1625,7 +1639,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..c18ccbc0a 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
@@ -167,6 +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)
. = ..()
+ if(M.client?.prefs.cit_toggles & NEVER_HYPNO) // Just in case people are opting out of this
+ holder.del_reagent(type)
+ return
if(!ishuman(M))//Just to make sure screwy stuff doesn't happen.
return
if(!creatorID)
@@ -180,7 +183,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 +194,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)
@@ -202,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
@@ -230,7 +232,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 +262,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 +288,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 +304,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 +332,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 +340,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..e0d8e8417 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,11 +69,11 @@
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
+ //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,17 +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.
-
- //Acute hepatic pharmacokinesis.
- if(HAS_TRAIT(M, TRAIT_PHARMA))
- var/obj/item/organ/liver/L = M.getorganslot("liver")
- L.swelling+= 0.05
+ if(!(M.client?.prefs.cit_toggles & FORCED_FEM))
+ //var/obj/item/organ/liver/L = M.getorganslot("liver")
+ //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,17 +141,13 @@
/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..()
- B.cached_size = B.cached_size - 0.05
- B.update()
+ if(!(M.client?.prefs.cit_toggles & BREAST_ENLARGEMENT) || !B)
+ //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(M.client?.prefs.cit_toggles & BREAST_ENLARGEMENT)
+ B.cached_size = B.cached_size - 0.05
+ B.update()
..()
/datum/reagent/fermi/BEsmaller_hypo
@@ -240,15 +235,15 @@
/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
+ //L.swelling+= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life()
return..()
else
M.adjustToxLoss(1)
@@ -263,14 +258,11 @@
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
+ //L.swelling+= 0.05 //HYPER CHANGE: See comment in /breast_enlarger/on_mob_life()
return..()
else
M.adjustToxLoss(1)
@@ -286,19 +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.
- //Acute hepatic pharmacokinesis.
- if(HAS_TRAIT(M, TRAIT_PHARMA))
- var/obj/item/organ/liver/L = M.getorganslot("liver")
- L.swelling+= 0.05
+ if(!(M.client?.prefs.cit_toggles & FORCED_MASC))
+ //var/obj/item/organ/liver/L = M.getorganslot("liver")
+ //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")
@@ -334,17 +325,13 @@
/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 //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
@@ -408,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()
- ..()
\ No newline at end of file
+ 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))
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!")
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",