diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index d50b229698..54621f71a3 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -758,6 +758,7 @@
//phase1
var/static/regex/petstatus_words = regex("how are you|what is your status|are you okay")
var/static/regex/silence_words = regex("shut up|silence|be silent|ssh|quiet|hush")
+ var/static/regex/speak_words = regex("talk to me|speak")
var/static/regex/antiresist_words = regex("unable to resist|give in")//useful if you think your target is resisting a lot
var/static/regex/resist_words = regex("resist|snap out of it|fight")//useful if two enthrallers are fighting
var/static/regex/forget_words = regex("forget|muddled|awake and forget")
@@ -869,6 +870,7 @@
var/mob/living/carbon/C = V
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)
addtimer(CALLBACK(C, /atom/movable/proc/say, "[E.enthrallGender]"), 5)
else
@@ -889,7 +891,7 @@
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)
-
+ to_chat(user, "You wake up [L]!")
//tier 1
@@ -1032,14 +1034,17 @@
else
C.silent += ((10 * power_multiplier) * E.phase)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You are unable to speak!"), 5)
+ to_chat(user, "You silence [C].")
E.cooldown += 3
//SPEAK
- else if((findtext(message, silence_words)))
+ else if((findtext(message, speak_words)))//fix
for(var/mob/living/carbon/C in listeners)
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
E.cooldown += 3
+ to_chat(user, "You [(C.client?.prefs.lewdchem?"allow [C] to speak again":"encourage [C] to speak again")].")
//Antiresist
@@ -1051,6 +1056,7 @@
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "Your mind clouds over, as you find yourself unable to resist!"), 5)
E.statusStrength = (1 * power_multiplier * E.phase)
E.cooldown += 15//Too short? yes, made 15
+ to_chat(user, "You frustrate [L]'s attempts at resisting.")
//RESIST
else if((findtext(message, resist_words)))
@@ -1061,6 +1067,7 @@
E.owner_resist()
E.cooldown += 2
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "You are spurred into resisting from [user]'s words!'"), 5)
+ to_chat(user, "You spark resistance in [C].")
//FORGET (A way to cancel the process)
else if((findtext(message, forget_words)))
@@ -1075,6 +1082,7 @@
if(1 to 2)
E.phase = -1
to_chat(C, "You have no recollection of being enthralled by [E.master]!")
+ to_chat(user, "You revert [C] back to their state before enthrallment.")
if(3)
E.phase = 0
E.cooldown = 0
@@ -1082,6 +1090,7 @@
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)
+ to_chat(user, "You put [C] into a sleeper state, ready to turn them back at the snap of your fingers.")
//ATTRACT
else if((findtext(message, attract_words)))
@@ -1091,6 +1100,7 @@
L.throw_at(get_step_towards(user,L), 3 * power_multiplier, 1 * power_multiplier)
E.cooldown += 3
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You are drawn towards [user]!"), 5)
+ to_chat(user, "You draw [L] towards you!")
//teir 2
@@ -1145,6 +1155,7 @@
C.Sleeping(45 * power_multiplier)
E.cooldown += 10
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "Drowsiness suddenly overwhelms you as you fall asleep!"), 5)
+ to_chat(user, "You send [C] to sleep.")
//STRIP
else if((findtext(message, strip_words)))
@@ -1171,6 +1182,7 @@
L.toggle_move_intent()
E.cooldown += 1
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You slow down to a walk."), 5)
+ to_chat(user, "You encourage [L] to slow down.")
//RUN
else if((findtext(message, run_words)))
@@ -1183,6 +1195,7 @@
L.toggle_move_intent()
E.cooldown += 1
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You speed up into a jog!"), 5)
+ to_chat(user, "You encourage [L] to pick up the pace!")
//LIE DOWN
else if(findtext(message, liedown_words))
@@ -1194,6 +1207,7 @@
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)
+ to_chat(user, "You encourage [L] to lie down.")
//KNOCKDOWN
else if(findtext(message, knockdown_words))
@@ -1205,6 +1219,7 @@
L.Knockdown(30 * power_multiplier * E.phase)
E.cooldown += 8
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You suddenly drop to the ground!"), 5)
+ to_chat(user, "You encourage [L] to drop down to the ground.")
//tier3
@@ -1329,6 +1344,8 @@
var/customSpan = list("Notice", "Warning", "Hypnophrase", "Love", "Velvet")
var/instillSpan = input(user, "Pick the style", "Style") in customSpan
to_chat(H, "[instill]")
+ to_chat(user, "You sucessfully instill a feeling in [H]")
+ log_game("FERMICHEM: [H] has been instilled by [user] with [instill] via MKUltra.")
E.cooldown += 1
//RECOGNISE
@@ -1340,6 +1357,7 @@
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)
+ 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
@@ -1355,6 +1373,7 @@
E.cooldown += 5
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You begin to lick your wounds."), 5)
L.Stun(15 * power_multiplier)
+ to_chat(user, "[L] begins to lick their wounds.")
//STUN
else if(findtext(message, stun_words))
@@ -1366,6 +1385,7 @@
L.Stun(40 * power_multiplier)
E.cooldown += 8
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "Your muscles freeze up!"), 5)
+ to_chat(user, "You cause [L] to freeze up!")
//HALLUCINATE
else if(findtext(message, hallucinate_words))
@@ -1375,6 +1395,7 @@
switch(E.phase)
if(3 to INFINITY)
new /datum/hallucination/delusion(C, TRUE, null,150 * power_multiplier,0)
+ to_chat(user, "You send [C] on a trip.")
//HOT
else if(findtext(message, hot_words))
@@ -1385,6 +1406,7 @@
if(3 to INFINITY)
L.adjust_bodytemperature(50 * power_multiplier)//This seems nuts, reduced it, but then it didn't do anything, so I reverted it.
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You feel your metabolism speed up!"), 5)
+ to_chat(user, "You speed [L]'s metabolism up!")
//COLD
else if(findtext(message, cold_words))
@@ -1395,7 +1417,7 @@
if(3 to INFINITY)
L.adjust_bodytemperature(-50 * power_multiplier)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You feel your metabolism slow down!"), 5)
-
+ to_chat(user, "You slow [L]'s metabolism down!")
//GET UP
else if(findtext(message, getup_words))
@@ -1411,6 +1433,7 @@
L.SetUnconscious(0) //i said get up i don't care if you're being tased
E.cooldown += 10 //This could be really strong
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You jump to your feet from sheer willpower!"), 5)
+ to_chat(user, "You spur [L] to their feet!")
//PACIFY
else if(findtext(message, pacify_words))
@@ -1422,6 +1445,7 @@
E.status = "pacify"
E.cooldown += 10
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You feel like never hurting anyone ever again."), 5)
+ to_chat(user, "You remove any intent to harm from [L]'s mind.")
//CHARGE
else if(findtext(message, charge_words))
@@ -1433,6 +1457,7 @@
E.statusStrength = 2* power_multiplier
E.status = "charge"
E.cooldown += 10
+ to_chat(user, "You rally [L], leading them into a charge!")
if(message_admins || debug)//Do you want this in?
message_admins("[ADMIN_LOOKUPFLW(user)] has said '[log_message]' with a Velvet Voice, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 9b6f0c8b4c..4e2226a99e 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -548,6 +548,7 @@
//Remove all stuff
/datum/status_effect/chem/enthrall/on_remove()
var/mob/living/carbon/M = owner
+ M.mind.remove_antag_datum(/datum/antagonist/brainwashed)
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "enthrall")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "enthrallpraise")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "enthrallscold")
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm
index c6bc537ed3..399d9eeb1a 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm
@@ -102,12 +102,15 @@
M.Jitter(200)
M.Knockdown(200)
M.Stun(80)
-
var/items = M.get_contents()
if(!LAZYLEN(items))
return ..()
var/obj/item/I = pick(items)
- M.dropItemToGround(I, TRUE)
+ if(istype(I, /obj/item/implant))
+ qdel(I)
+ to_chat(M, "You feel your implant rip itself out of you, sent flying off to another dimention!")
+ else
+ M.dropItemToGround(I, TRUE)
do_sparks(5,FALSE,I)
do_teleport(I, get_turf(I), 5, no_effects=TRUE);
do_sparks(5,FALSE,I)