diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index b69d857739..0f8e8dd570 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -617,9 +617,6 @@
name = "velvet chords"
desc = "The voice spoken from these just make you want to drift off, sleep and obey."
icon_state = "in_love"
- var/next_command = 0
- var/cooldown_mod = 1
- var/base_multiplier = 1
/datum/action/item_action/organ_action/velvet/Trigger()
. = ..()
@@ -638,7 +635,7 @@
///////////FermiChem//////////////////
//////////////////////////////////////
//Removed span_list from input arguments. //mob/living/user
-/proc/velvetspeech(message, mob/living/user, base_multiplier = 1, include_speaker = FALSE, message_admins = TRUE, debug = FALSE)
+/proc/velvetspeech(message, mob/living/user, base_multiplier = 1, include_speaker = TRUE, message_admins = TRUE, debug = FALSE)
if(!user || !user.can_speak() || user.stat)
return 0 //no cooldown
@@ -651,8 +648,8 @@
for(var/mob/living/L in get_hearers_in_view(8, user))
if(L.can_hear() && !L.anti_magic_check(FALSE, TRUE) && L.stat != DEAD)
if(L.has_status_effect(/datum/status_effect/chem/enthrall))//Check to see if they have the status
- //if(L == user && !include_speaker) //Remove this if I decide to make OD apply to self.
- // continue
+ if(L == user && !include_speaker) //Remove this if I decide to make OD apply to self.
+ continue
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
@@ -758,6 +755,7 @@
var/static/regex/statecustom_words = regex("state triggers|state your triggers")
var/static/regex/custom_words = regex("new trigger|listen to me")
var/static/regex/custom_words_words = regex("speak|echo|shock|cum|kneel|strip|trance")//What a descriptive name!
+ var/static/regex/custom_echo = regex("obsess|fills your mind|loop")
var/static/regex/recognise_words = regex("recognise me|did you miss me?")
var/static/regex/objective_words = regex("new objective|obey this command|unable to resist|compulsed")
var/static/regex/heal_words = regex("live|heal|survive|mend|life|pets never die")
@@ -1081,7 +1079,9 @@
H.SetStun(1000)
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)
+ 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")
@@ -1100,6 +1100,28 @@
user.SetStun(0)
H.SetStun(0)
+ //CUSTOM ECHO
+ else if((findtext(message, custom_echo)))
+ for(var/V in listeners)
+ var/mob/living/carbon/human/H = V
+ var/datum/status_effect/chem/enthrall/E = H.has_status_effect(/datum/status_effect/chem/enthrall)
+ if(E.phase == 3)
+ 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 give them a new echophrase!")
+ return
+ else
+ user.emote(user, 1, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'")
+ user.SetStun(1000)//Hands are handy, so you have to stay still
+ H.SetStun(1000)
+ var/trigger = stripped_input(user, "Enter the loop phrase", MAX_MESSAGE_LEN)
+ var/customSpan = list("Notice", "Warning", "Hypnophrase", "Love")
+ var/trigger2 = input(user, "Pick the style", "Style") in customSpan
+ trigger2 = lowertext(trigger2)
+ E.customEcho = trigger
+ E.customSpan = trigger2
+ user.SetStun(0)
+ H.SetStun(0)
+
//CUSTOM OBJECTIVE
else if((findtext(message, objective_words)))
for(var/V in listeners)
@@ -1113,7 +1135,7 @@
user.emote(user, 1, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'")
user.SetStun(1000)//So you can't run away!
H.SetStun(1000)
- if (E.mental_capacity >= 250 || message == "objective")
+ if (E.mental_capacity >= 200)
var/datum/objective/brainwashing/objective = stripped_input(user, "Add an objective to give your pet.", MAX_MESSAGE_LEN)
if(!LAZYLEN(objective))
return
@@ -1128,7 +1150,6 @@
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(H.lewd?"Your [E.enthrallGender]":"[E.master]")] whispers you a new objective."), 5)
brainwash(H, objective)
E.mental_capacity -= 200
- //else if (E.mental_capacity >= 150)
else
to_chat(user, "Your pet looks at you with a vacant blasé expression, you don't think you can program anything else into them")
user.SetStun(0)
@@ -1197,7 +1218,7 @@
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
switch(E.phase)
if(3 to INFINITY)//Tier 3 only
- L.adjust_bodytemperature(-50 * power_multiplier)//This
+ L.adjust_bodytemperature(-50 * power_multiplier)
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "You feel your metabolism slow down!"), 5)
@@ -1241,7 +1262,8 @@
return
if(message_admins)//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].")
- log_game("FERMICHEM: [key_name(user)] has said '[log_message]' with a Velvet Voice, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
+ if(debug == TRUE)
+ log_game("FERMICHEM: [key_name(user)] has said '[log_message]' with a Velvet Voice, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
//SSblackbox.record_feedback("tally", "Velvet_voice", 1, log_message) If this is on, it fills the thing up and OOFs the server
return
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index f7c1d7c72b..d320a54fd6 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -212,6 +212,9 @@
var/DistApart = 1 //Distance between master and owner
var/tranceTime = 0 //how long trance effects apply on trance status
+ var/customEcho //Custom looping text in owner
+ var/customSpan //Custom spans for looping text
+
/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
@@ -496,6 +499,13 @@
//Truth serum?
//adrenals?
+ //customEcho
+ if(customEcho)
+ if(prob(5))
+ if(!customSpan) //just in case!
+ customSpan = "notice"
+ to_chat(owner, "[customEcho].")
+
//final tidying
resistanceTally += deltaResist
deltaResist = 0
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
index 20334a2151..1cb8731092 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
@@ -150,7 +150,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
name = "MKUltraTest"
id = "enthrallTest"
description = "A forbidden deep red mixture that overwhelms a foreign body with waves of joy, intoxicating them into servitude. When taken by the creator, it will enhance the draw of their voice to those affected by it."
- color = "#2C051A" // rgb: , 0, 255
+ color = "#c40020" // rgb: , 0, 255
data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Fermis Yakumo")
creatorID = "honkatonkbramblesnatch"//ckey
creatorGender = "Mistress"