diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 2ef8d52f8c..e93d97c3c3 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -1070,19 +1070,20 @@ //tier3 //STATE TRIGGERS - //Doesn't work, Maintaners, help. else if((findtext(message, statecustom_words)))//doesn't work for(var/V in listeners) - var/speaktrigger = "" var/mob/living/carbon/C = V var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall) if (E.phase == 3) + var/speaktrigger = "" + user.emote("me", 1, "whispers something quietly.") + 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 hear them!") + return for (var/trigger in E.customTriggers) speaktrigger += "[trigger], " - ADD_TRAIT(C, TRAIT_DEAF, "Triggers") //So you don't trigger yourself! - //addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, /atom/movable/proc/say, "[speaktrigger]"), 5) - C.say("[speaktrigger]") - REMOVE_TRAIT(C, TRAIT_DEAF, "Triggers") + 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 [(H.lewd?"Your [E.enthrallGender]":"[E.master]")]."), 5) //CUSTOM TRIGGERS @@ -1099,14 +1100,14 @@ user.SetStun(1000)//Hands are handy, so you have to stay still H.SetStun(1000) if (E.mental_capacity >= 10) - var/trigger = stripped_input(user, "Enter the trigger phrase", MAX_MESSAGE_LEN) + var/trigger = html_decode(stripped_input(user, "Enter the trigger phrase", MAX_MESSAGE_LEN)) var/custom_words_words_list = list("Speak", "Echo", "Shock", "Cum", "Kneel", "Strip", "Trance") var/trigger2 = input(user, "Pick an effect", "Effects") in custom_words_words_list //var/trigger2 = stripped_input(user, "Enter the effect.", MAX_MESSAGE_LEN) trigger2 = lowertext(trigger2) if ((findtext(trigger2, custom_words_words))) if (trigger2 == "speak" || trigger2 == "echo") - var/trigger3 = stripped_input(user, "Enter the phrase spoken.", MAX_MESSAGE_LEN) + var/trigger3 = html_decode(stripped_input(user, "Enter the phrase spoken.", MAX_MESSAGE_LEN)) E.customTriggers[trigger] = list(trigger2, trigger3) message_admins("[H] has been implanted by [user] with [trigger], triggering [trigger2], to send [trigger3].") else diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 9b5cf5d445..744827b0d0 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -236,7 +236,7 @@ H.lewd = FALSE var/message = "[(owner.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].") return ..() @@ -244,10 +244,7 @@ var/mob/living/carbon/M = owner //chem calculations - if (owner.reagents.has_reagent("enthrall")) - if (phase >= 2) - enthrallTally += phase - else + if!owner.reagents.has_reagent("enthrall"))) if (phase < 3 && phase != 0) deltaResist += 3//If you've no chem, then you break out quickly if(prob(10)) @@ -284,7 +281,7 @@ resistanceTally /= 2 enthrallTally = 0 if(owner.lewd) - to_chat(owner, "Your conciousness slips, as you sink deeper into trance and servitude.") + to_chat(owner, "Your conciousness slips, as you sink deeper into trance and servitude.") else else if (resistanceTally > 150) @@ -295,7 +292,7 @@ owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. if(prob(10)) 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.")].") + 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 > 250) phase += 1 @@ -303,7 +300,7 @@ enthrallTally = 0 resistanceTally /= 2 if(owner.lewd) - to_chat(owner, "Your mind gives, eagerly obeying and serving [master].") + 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 control 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 serve your [master] in death. ") @@ -317,7 +314,7 @@ 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.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.")].") + 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))) enthrallTally = 0 @@ -330,7 +327,7 @@ 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 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent("MKUltra")) + if (mental_capacity >= 499 && (owner.getBrainLoss() <=20 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent("MKUltra")) phase = 2 mental_capacity = 500 customTriggers = list() @@ -357,16 +354,20 @@ if(0 to 8)//If the enchanter is within range, increase enthrallTally, remove withdrawal subproc and undo withdrawal effects. if(phase <= 2) enthrallTally += distancelist[get_dist(master, owner)+1] - withdrawal = FALSE if(withdrawalTick > 0) withdrawalTick -= 2 - M.hallucination = max(0, M.hallucination - 2) - M.stuttering = max(0, M.stuttering - 2) - M.jitteriness = max(0, M.jitteriness - 2) - 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, "EnthMissing4") + //calming effects + M.hallucination = max(0, M.hallucination - 1) + M.stuttering = max(0, M.stuttering - 1) + M.jitteriness = max(0, M.jitteriness - 1) + if(owner.getBrainLoss() >=60) + owner.adjustBrainLoss(-0.1) + if(withdrawal == TRUE) + 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, "EnthMissing4") + withdrawal = FALSE if(9 to INFINITY)//If they're not nearby, enable withdrawl effects. withdrawal = TRUE @@ -500,7 +501,7 @@ //adrenals? //customEcho - if(customEcho) + if(customEcho && withdrawl == FALSE) if(prob(5)) if(!customSpan) //just in case! customSpan = "notice" @@ -520,12 +521,12 @@ to_chat(master, "Your thrall [owner] appears to have finished internalising your last command.") cooldownMsg = TRUE cooldown = 0 - if (tranceTime > 0) //custom trances only last 50 ticks. + if (tranceTime > 0 && tranceTime != 51) //custom trances only last 50 ticks. tranceTime -= 1 - else if (!tranceTime == null) //remove trance after. + else if (tranceTime == 0) //remove trance after. M.cure_trauma_type(/datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY) M.remove_status_effect(/datum/status_effect/trance) - tranceTime = null + tranceTime = 51 message_admins("test") //..() @@ -632,9 +633,9 @@ return else if (phase == 3 && withdrawal == FALSE) if(owner.lewd) - to_chat(owner, "The presence of your [enthrallGender] fully captures the horizon of your mind, removing any thoughts of resistance. Try getting away from them.") + 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. Try getting away from them.") + 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) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm index 10e6bc2239..0eb61ce136 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm @@ -227,7 +227,9 @@ Creating a chem with a low purity will make you permanently fall in love with so return if(volume < 1)//You don't get to escape that easily FallInLove(pick(GLOB.player_list), M) - if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it does nothing. + if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it supresses the vocal effects, for stealth. + var/obj/item/organ/vocal_cords/Vc = M.getorganslot(ORGAN_SLOT_VOICE) + Vc.spans = null return if(!M.client) metabolization_rate = 0 //Stops powergamers from quitting to avoid affects. but prevents affects on players that don't exist for performance. @@ -239,8 +241,7 @@ Creating a chem with a low purity will make you permanently fall in love with so return else E.enthrallTally += 1 - if(prob(1)) - M.adjustBrainLoss(1)//Honestly this could be removed, in testing it made everyone brain damaged, but on the other hand, we were chugging tons of it. + M.adjustBrainLoss(0.05)//Honestly this could be removed, in testing it made everyone brain damaged, but on the other hand, we were chugging tons of it. ..() /datum/reagent/fermi/enthrall/overdose_start(mob/living/carbon/M)//I made it so the creator is set to gain the status for someone random. @@ -282,7 +283,13 @@ Creating a chem with a low purity will make you permanently fall in love with so E.customTriggers = list() /datum/reagent/fermi/enthrall/overdose_process(mob/living/carbon/M) - M.adjustBrainLoss(0.1)//should be 15 in total + M.adjustBrainLoss(0.025)//should be ~40 in total + ..() + +/datum/reagent/fermi/enthrall/on_mob_delete(mob/living/carbon/M) + if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it supresses the vocal effects, for stealth. + var/obj/item/organ/vocal_cords/Vc = M.getorganslot(ORGAN_SLOT_VOICE) + Vc.spans = list("velvet") ..() //Creates a gas cloud when the reaction blows up, causing everyone in it to fall in love with someone/something while it's in their system. @@ -348,3 +355,4 @@ Creating a chem with a low purity will make you permanently fall in love with so return //For addiction see chem.dm +//For vocal commands see vocal_cords.dm