diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 7844ab860b..a668fdea6d 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -854,10 +854,10 @@
if (L.canbearoused)
//E.resistanceTally -= 1
L.adjustArousalLoss(1*power_multiplier)
- addtimer(CALLBACK(L, .proc.to_chat, "[E.enthrallGender] has praised me!!"), 5)
+ addtimer(CALLBACK(L, L.to_chat, "[E.enthrallGender] has praised me!!"), 5)
else
E.resistanceTally /= 2*power_multiplier
- addtimer(CALLBACK(L, .proc.to_chat, "I've been praised for doing a good job!"), 5)
+ addtimer(CALLBACK(L, L.to_chat, "I've been praised for doing a good job!"), 5)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "enthrallpraise", /datum/mood_event/enthrallpraise)
E.cooldown += 1
@@ -871,10 +871,10 @@
if (L.canbearoused)
E.resistanceTally /= 1*power_multiplier
L.adjustArousalLoss(-2*power_multiplier)
- addtimer(CALLBACK(L, .proc.to_chat, "I've let [E.enthrallGender] down..."), 5)
+ addtimer(CALLBACK(L, L.to_chat, "I've let [E.enthrallGender] down..."), 5)
else
E.resistanceTally /= 3*power_multiplier //asexuals are masochists apparently (not seriously)
- addtimer(CALLBACK(L, .proc.to_chat, "I've failed [E.master]..."), 5)
+ addtimer(CALLBACK(L, L.to_chat, "I've failed [E.master]..."), 5)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "enthrallscold", /datum/mood_event/enthrallscold)
E.cooldown += 1
@@ -900,9 +900,9 @@
E.phase = 3
E.status = null
if(L.canbearoused)
- addtimer(CALLBACK(L, .proc.to_chat, "The snapping of your [E.enthrallGender]'s fingers brings you back to your enthralled state, obedient and ready to serve."), 5)
+ addtimer(CALLBACK(L, L.to_chat, "The snapping of your [E.enthrallGender]'s fingers brings you back to your enthralled state, obedient and ready to serve."), 5)
else
- addtimer(CALLBACK(L, .proc.to_chat, "The snapping of [E.master]'s fingers brings you back to being under their command."), 5)
+ addtimer(CALLBACK(L, L.to_chat, "The snapping of [E.master]'s fingers brings you back to being under their command."), 5)
//to_chat(L, )
@@ -956,9 +956,9 @@
E.phase = 0
E.cooldown = 0
if(C.canbearoused)
- addtimer(CALLBACK(C, .proc.to_chat, "You revert to yourself before being enthralled by your [E.enthrallGender], with no memory of what happened."), 5)
+ addtimer(CALLBACK(C, C.to_chat, "You revert to yourself before being enthralled by your [E.enthrallGender], with no memory of what happened."), 5)
else
- addtimer(CALLBACK(C, .proc.to_chat, "You revert to who you were before, with no memory of what happened with [E.master]."), 5)
+ addtimer(CALLBACK(C, C.to_chat, "You revert to who you were before, with no memory of what happened with [E.master]."), 5)
//ATTRACT
else if((findtext(message, attract_words)))
@@ -1093,6 +1093,7 @@
to_chat(user, "You need to be next to your pet to give them a new trigger!")
return
else
+ user.emote(user, 1, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'")
if (E.mental_capacity >= 10)
var/trigger = stripped_input(user, "Enter the trigger phrase", MAX_MESSAGE_LEN)
var/trigger2 = stripped_input(user, "Enter the effect.", MAX_MESSAGE_LEN)
@@ -1118,7 +1119,7 @@
to_chat(user, "You need to be next to your pet to give them a new objective!")
return
else
- user.emote(user, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'")
+ user.emote(user, 1, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'")
if (E.mental_capacity >= 150 || message == "objective")
var/datum/objective/brainwashing/objective = stripped_input(user, "Add an objective to give your pet.", MAX_MESSAGE_LEN)
if(!LAZYLEN(objective))
@@ -1145,15 +1146,12 @@
if(E.phase > 1)
if(user.ckey == E.enthrallID && user.real_name == E.master.real_name)
E.master = user
- if(H.canbearoused)
- addtimer(CALLBACK(H, .proc.to_chat, "You hear the words of your [E.enthrallID] again!! They're back!!"), 5)
- else
- addtimer(CALLBACK(H, .proc.to_chat, "You recognise the words of [user], and comply with their orders oncemore."), 5)//It's a bit like a job, It's a living.
+ addtimer(CALLBACK(C, C.to_chat, "You hear the words of your [E.enthrallGender] again!! They're back!!"), 5)
//I dunno how to do state objectives without them revealing they're an antag
//HEAL (maybe make this nap instead?)
- else if((findtext(message, heal_words)))
+ else if(findtext(message, heal_words))
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)
@@ -1174,7 +1172,7 @@
E.cooldown += 8
//HALLUCINATE
- else if((findtext(message, hallucinate_words)))
+ else if(findtext(message, hallucinate_words))
for(var/V in listeners)
var/mob/living/carbon/C = V
var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall)
@@ -1183,7 +1181,7 @@
new /datum/hallucination/delusion(C, TRUE, null,150 * power_multiplier,0)
//HOT
- else if((findtext(message, hot_words)))
+ else if(findtext(message, hot_words))
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)
@@ -1193,7 +1191,7 @@
to_chat(L, "You feel your metabolism speed up!")
//COLD
- else if((findtext(message, cold_words)))
+ else if(findtext(message, cold_words))
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)
@@ -1204,7 +1202,7 @@
//GET UP
- else if((findtext(message, getup_words)))
+ else if(findtext(message, getup_words))
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)
@@ -1218,7 +1216,7 @@
E.cooldown += 10 //This could be really strong
//PACIFY
- else if((findtext(message, pacify_words)))
+ else if(findtext(message, pacify_words))
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)
@@ -1228,7 +1226,7 @@
E.cooldown += 10
//CHARGE
- else if((findtext(message, charge_words)))
+ else if(findtext(message, charge_words))
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)
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 50291ca20e..8e88cead93 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -158,6 +158,17 @@
///////////////////////////////////////////
*/
+//Preamble
+/datum/mob/living/carbon/
+ var/lewd = TRUE //Maybe false?
+
+/mob/living/carbon/verb/toggle_lewd()
+ set category = "IC"
+ set name = "toggle lewdchem"
+ set desc = "Allows you to toggle if you'd like lewd flavour messages."
+ lewd = !(lewd)
+ to_chat(usr, "You [(lewd?"will":"no longer")] receive lewdchem messages.")
+
/datum/status_effect/chem/enthrall
id = "enthrall"
alert_type = null
@@ -190,6 +201,8 @@
/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.creatorID)
+ message_admins("WARNING: FermiChem No master found in thrall, this makes me max sad.")
enthrallID = E.creatorID
enthrallGender = E.creatorGender
master = get_mob_by_key(enthrallID)
@@ -259,7 +272,7 @@
to_chat(owner, "You're now free of [master]'s influence, and fully independant oncemore.'")
owner.remove_status_effect(src) //If resisted in phase 1, effect is removed.
if(prob(10))
- if(owner.canbearoused)
+ if(owner.lewd)
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 (2) //partially enthralled
if (enthrallTally > 150)
@@ -276,16 +289,16 @@
to_chat(owner, "You manage to shake some of the entrancement from your addled mind, however you can still feel yourself drawn towards [master].")
//owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. Not at the moment,
if(prob(10))
- if(owner.canbearoused)
+ if(owner.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)
+ if ((resistanceTally >= 200 && withdrawalTick >= 150) || (M.has_trait(TRAIT_MINDSHIELD) && resistanceTally >= 100))
enthrallTally = 0
phase -= 1
resistanceTally = 0
to_chat(owner, "The separation from you [enthrallGender] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.")
if(prob(2))
- if(owner.canbearoused)
+ if(owner.lewd)
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.getBrainLoss() >=20 || !owner.reagents.has_reagent("MKUltra"))
@@ -446,7 +459,7 @@
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing1")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3")
- SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3")
+ SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing4")
qdel(redirect_component.resolve())
redirect_component = null
//qdel(redirect_component2.resolve())
diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm
index 5dfbaab64b..d8aaf3afab 100644
--- a/modular_citadel/code/modules/arousal/organs/breasts.dm
+++ b/modular_citadel/code/modules/arousal/organs/breasts.dm
@@ -84,7 +84,7 @@
prev_size = size
return
//message_admins("Breast size at start: [size], [cached_size], [owner]")
- if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!
+ if(cached_size < 0)//I don't actually know what round() does to negative numbers, so to be safe!!(Why does this runtime??)
to_chat(owner, "You feel your breasts shrinking away from your body as your chest flattens out.")
src.Remove(owner)
switch(round(cached_size))
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 3842342f97..4853b75f2e 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -57,10 +57,10 @@
return
//When merging two fermichems
-/datum/reagent/fermi/on_merge(data, amount, mob/living/carbon/M, purity)
+/datum/reagent/fermi/on_merge(data, amount, mob/living/carbon/M, purity)//basically on_mob_add but for merging
. = ..()
message_admins("purity of chem is [purity]")
- if(!M)
+ if(!istype(M, datum/mob/living/carbon/M))
return
message_admins("purity of chem is [purity]")
if (purity < 0)
@@ -187,6 +187,8 @@
M.Stun(40)
var/items = M.get_contents()
+ if(!LAZYLEN(items))
+ return ..()//This'll work, right?
var/obj/item/I = pick(items)
M.dropItemToGround(I, TRUE)
do_sparks(5,FALSE,I)
@@ -1158,9 +1160,11 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
return
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)//If purity is over 5, works as intended
if(!E)
+ E = null
M.reagents.remove_reagent(src.id, 10)
M.apply_status_effect(/datum/status_effect/chem/enthrall)
message_admins("No enthrall status found in [M]!")
+ var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
E.enthrallTally += 1
if(prob(50))
M.adjustBrainLoss(0.1)//Honestly this could be removed, in testing it made everyone brain damaged, but on the other hand, we were chugging tons of it.
@@ -1476,7 +1480,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
if(LAZYLEN(holder.reagent_list) == 1)
return
else
- holder.remove_reagent(src.id, 1000)//Avoiding recurrsion
+ holder.remove_reagent("fermiTest", 1000)//Avoiding recurrsion
message_admins("FermiTest addition!")
var/location = get_turf(holder.my_atom)
if(purity < 0.34 || purity == 1)
@@ -1499,7 +1503,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
to_chat(M, "The solution reacts dramatically, with a meow!")
playsound(get_turf(M), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1)
holder.clear_reagents()
-
+/*
/datum/reagent/fermi/fermiTest/on_merge()
..()
message_admins("FermiTest addition!")
@@ -1524,3 +1528,4 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
to_chat(M, "The solution reacts dramatically, with a meow!")
playsound(get_turf(M), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1)
holder.clear_reagents()
+ */
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index aecd0ba029..680a5018d2 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -247,6 +247,11 @@
message_admins("On finish for enthral proc'd")
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in my_atom.reagents.reagent_list
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in my_atom.reagents.reagent_list
+ if(!B.data)
+ var/list/seen = viewers(5, get_turf(holder.my_atom))
+ for(var/mob/M in seen)
+ to_chat(M, "The reaction splutters and fails to react.")
+ E.purity = 0
if (B.data.["gender"] == "female")
E.data.["creatorGender"] = "Mistress"
E.creatorGender = "Mistress"