diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm
index c3bf3d2891..2b19610040 100644
--- a/code/__DEFINES/citadel_defines.dm
+++ b/code/__DEFINES/citadel_defines.dm
@@ -111,6 +111,7 @@
#define NEVER_HYPNO (1<<8)
#define NO_APHRO (1<<9)
#define NO_ASS_SLAP (1<<10)
+#define BIMBOFICATION (1<<11)
#define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES|BREAST_ENLARGEMENT|PENIS_ENLARGEMENT)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 7b7cf3413e..546268b5c7 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1007,6 +1007,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
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 += "Bimbofication: [(cit_toggles & BIMBOFICATION) ? "Allowed" : "Disallowed"]
"
dat += ""
dat +="
"
dat += "Other content prefs"
@@ -1015,6 +1016,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Hypno: [(cit_toggles & NEVER_HYPNO) ? "Disallowed" : "Allowed"] "
dat += "Aphrodisiacs: [(cit_toggles & NO_APHRO) ? "Disallowed" : "Allowed"] "
dat += "Ass Slapping: [(cit_toggles & NO_ASS_SLAP) ? "Disallowed" : "Allowed"] "
+ dat += ""
dat += " "
@@ -2234,6 +2236,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("ass_slap")
cit_toggles ^= NO_ASS_SLAP
+
+ if("bimbo")
+ cit_toggles ^= BIMBOFICATION
//END CITADEL EDIT
diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm
index 2fa012ae87..ba4fe4909e 100644
--- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm
@@ -969,9 +969,10 @@
if(M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO) && prob(5))
for(var/obj/item/organ/genital/G in M.internal_organs)
if(!G.aroused_state && prob(5*G.sensitivity))
- G.aroused_state = TRUE
+ G.set_aroused_state(TRUE)
G.update_appearance()
- to_chat(M, "You feel like playing with your [G.name]!")
+ if(G.aroused_state)
+ to_chat(M, "You feel like playing with your [G.name]!")
..()
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index dc39c433eb..a39746519a 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -2284,7 +2284,8 @@
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/genital/G in H.internal_organs)
if(!G.aroused_state && prob(2*G.sensitivity))
- G.aroused_state = TRUE
+ G.set_aroused_state(TRUE)
G.update_appearance()
- to_chat(M, "You feel like playing with your [G.name]!")
+ if(G.aroused_state)
+ to_chat(M, "You feel like playing with your [G.name]!")
..()
diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm
index af9646fa51..3ea8bf8013 100644
--- a/modular_citadel/code/modules/arousal/genitals.dm
+++ b/modular_citadel/code/modules/arousal/genitals.dm
@@ -6,7 +6,8 @@
var/genital_flags //see citadel_defines.dm
var/masturbation_verb = "masturbate"
var/orgasm_verb = "cumming" //present continous
- var/arousal_verb = "feel aroused"
+ var/arousal_verb = "You feel aroused"
+ var/unarousal_verb = "You no longer feel aroused"
var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this?
var/size = 2 //can vary between num or text, just used in icon_state strings
var/fluid_id = null
@@ -38,6 +39,11 @@
Remove(owner, TRUE)//this should remove references to it, so it can be GCd correctly
return ..()
+/obj/item/organ/genital/proc/set_aroused_state(new_state)
+ if(!((HAS_TRAIT(owner,TRAIT_PERMABONER) && !new_state) || HAS_TRAIT(owner,TRAIT_NEVERBONER) && new_state))
+ aroused_state = new_state
+ return aroused_state
+
/obj/item/organ/genital/proc/update(removing = FALSE)
if(QDELETED(src))
return
@@ -126,8 +132,12 @@
var/obj/item/organ/genital/picked_organ
picked_organ = input(src, "Choose which genitalia to toggle arousal on", "Set genital arousal", null) in genital_list
if(picked_organ)
- picked_organ.aroused_state = !picked_organ.aroused_state
- to_chat(src,"You [picked_organ.arousal_verb].")
+ var/original_state = picked_organ.aroused_state
+ picked_organ.set_aroused_state(!picked_organ.aroused_state)
+ if(original_state != picked_organ.aroused_state)
+ to_chat(src,"[picked_organ.aroused_state ? picked_organ.arousal_verb : picked_organ.unarousal_verb].")
+ else
+ to_chat(src,"You can't make that genital [picked_organ.aroused_state ? "unaroused" : "aroused"]!")
picked_organ.update_appearance()
return
diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm
index 19c3ff80a9..6b4887c094 100644
--- a/modular_citadel/code/modules/arousal/organs/breasts.dm
+++ b/modular_citadel/code/modules/arousal/organs/breasts.dm
@@ -11,7 +11,8 @@
shape = "pair"
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION
masturbation_verb = "massage"
- arousal_verb = "feel very sensitive in your breasts"
+ arousal_verb = "Your breasts start feeling sensitive"
+ unarousal_verb = "Your breasts no longer feel sensitive"
orgasm_verb = "leaking"
fluid_transfer_factor = 0.5
var/static/list/breast_values = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0)
diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm
index d2d827e66d..c6d3c764ac 100644
--- a/modular_citadel/code/modules/arousal/organs/penis.dm
+++ b/modular_citadel/code/modules/arousal/organs/penis.dm
@@ -6,7 +6,8 @@
zone = BODY_ZONE_PRECISE_GROIN
slot = ORGAN_SLOT_PENIS
masturbation_verb = "stroke"
- arousal_verb = "pop a boner"
+ arousal_verb = "You pop a boner"
+ unarousal_verb = "Your boner goes down"
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH
linked_organ_slot = ORGAN_SLOT_TESTICLES
fluid_transfer_factor = 0.5
diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm
index 547674a5f1..a2a9f8eb05 100644
--- a/modular_citadel/code/modules/arousal/organs/testicles.dm
+++ b/modular_citadel/code/modules/arousal/organs/testicles.dm
@@ -6,6 +6,8 @@
zone = BODY_ZONE_PRECISE_GROIN
slot = ORGAN_SLOT_TESTICLES
size = BALLS_SIZE_MIN
+ arousal_verb = "Your balls ache a little"
+ unarousal_verb = "Your balls finally stop aching, again"
linked_organ_slot = ORGAN_SLOT_PENIS
genital_flags = CAN_MASTURBATE_WITH|MASTURBATE_LINKED_ORGAN|GENITAL_FUID_PRODUCTION
var/size_name = "average"
diff --git a/modular_citadel/code/modules/arousal/organs/vagina.dm b/modular_citadel/code/modules/arousal/organs/vagina.dm
index 7ecc0c155c..31d116b48e 100644
--- a/modular_citadel/code/modules/arousal/organs/vagina.dm
+++ b/modular_citadel/code/modules/arousal/organs/vagina.dm
@@ -8,7 +8,8 @@
size = 1 //There is only 1 size right now
genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH
masturbation_verb = "finger"
- arousal_verb = "feel wet"
+ arousal_verb = "You feel wetness on your crotch."
+ unarousal_verb = "You no longer feel wet."
fluid_transfer_factor = 0.1 //Yes, some amount is exposed to you, go get your AIDS
layer_index = VAGINA_LAYER_INDEX
var/cap_length = 8//D E P T H (cap = capacity)
diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
index 50dee539e3..9ec1c8b010 100644
--- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
+++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
@@ -110,9 +110,10 @@
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/genital/G in H.internal_organs)
if(!G.aroused_state && prob(current_cycle*G.sensitivity))
- G.aroused_state = TRUE
+ G.set_aroused_state(TRUE)
G.update_appearance()
- to_chat(M, "You suddenly [G.arousal_verb]!")
+ if(G.aroused_state)
+ to_chat(M, "[G.arousal_verb]!")
..()
/datum/reagent/drug/aphrodisiacplus
@@ -145,9 +146,10 @@
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/genital/G in H.internal_organs)
if(!G.aroused_state)
- G.aroused_state = TRUE
+ G.set_aroused_state(TRUE)
G.update_appearance()
- to_chat(M, "You suddenly [G.arousal_verb]!")
+ if(G.aroused_state)
+ to_chat(M, "[G.arousal_verb]!")
..()
/datum/reagent/drug/aphrodisiacplus/addiction_act_stage2(mob/living/M)
@@ -166,9 +168,9 @@
/datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M)
if(M && M.client?.prefs.arousable && !(M.client?.prefs.cit_toggles & NO_APHRO) && prob(33))
- if(prob(5) && ishuman(M) && M.has_dna())
- if(prob(5)) //Less spam
- to_chat(M, "Your libido is going haywire!")
+ if(prob(5) && ishuman(M) && M.has_dna() && (M.client?.prefs.cit_toggles & BIMBOFICATION))
+ if(!HAS_TRAIT(M,TRAIT_PERMABONER)) //Less spam
+ to_chat(M, "Your libido is going haywire!")
ADD_TRAIT(M,TRAIT_PERMABONER,"aphro")
..()
@@ -189,9 +191,9 @@
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/genital/G in H.internal_organs)
if(G.aroused_state)
- G.aroused_state = FALSE
+ G.set_aroused_state(FALSE)
G.update_appearance()
- unboner = TRUE
+ unboner = (G.aroused_state == FALSE)
if(unboner)
to_chat(M, "You no longer feel aroused.")
..()
@@ -213,9 +215,9 @@
var/mob/living/carbon/human/H = M
for(var/obj/item/organ/genital/G in H.internal_organs)
if(G.aroused_state)
- G.aroused_state = FALSE
+ G.set_aroused_state(FALSE)
G.update_appearance()
- unboner = TRUE
+ unboner = (G.aroused_state == FALSE)
if(unboner)
to_chat(M, "You no longer feel aroused.")
..()
|