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"