diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css
index ab8fee1616..2e8dd17163 100644
--- a/code/modules/goonchat/browserassets/css/browserOutput.css
+++ b/code/modules/goonchat/browserassets/css/browserOutput.css
@@ -395,6 +395,13 @@ h1.alert, h2.alert {color: #000000;}
.redtext {color: #FF0000; font-size: 24px;}
.clown {color: #FF69Bf; font-size: 24px; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;}
.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;}
+.velvet {color: #660015; font-weight: bold; animation: velvet 3000ms infinite;}
+@keyframes velvet {
+ 0% { color: #400020; }
+ 50% { color: #FF0000; }
+ 100% { color: #400020; }
+}
+
.hypnophrase {color: #202020; font-weight: bold; animation: hypnocolor 1500ms infinite;}
@keyframes hypnocolor {
0% { color: #202020; }
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 8a42752615..2ef8d52f8c 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -617,13 +617,16 @@
name = "Velvet chords"
desc = "The voice spoken from these just make you want to drift off, sleep and obey."
icon_state = "velvet_chords"
- spans = list("velvet","croon")
+ actions_types = list(/datum/action/item_action/organ_action/velvet)
+ spans = list("velvet")
/datum/action/item_action/organ_action/velvet
- name = "Velvet speech"
+ name = "Velvet chords"
var/obj/item/organ/vocal_cords/velvet/cords = null
- icon_icon = 'icons/mob/screen_alert.dmi'
- button_icon_state = "in_love"
+ //icon_icon = 'icons/mob/screen_alert.dmi'
+ //button_icon_state = "velvet_chords"
+ //icon = 'icons/mob/screen_alert.dmi'
+ //icon_state = "in_love"
/datum/action/item_action/organ_action/velvet/New()
..()
@@ -641,6 +644,9 @@
return
owner.say(".x[command]")
+/obj/item/organ/vocal_cords/velvet/can_speak_with()
+ return TRUE
+
/obj/item/organ/vocal_cords/velvet/handle_speech(message) //actually say the message
owner.say(message, spans = spans, sanitize = FALSE)
velvetspeech(message, owner)
@@ -814,7 +820,7 @@
if(L == user)
continue
if (L.lewd)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[E.enthrallGender] has praised me!!"), 5)
+ addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "[E.enthrallGender] has praised me!!"), 5)
if(HAS_TRAIT(L, TRAIT_NYMPHO))
L.adjustArousalLoss(2*power_multiplier)
if(HAS_TRAIT(L, TRAIT_MASO))
@@ -1070,11 +1076,12 @@
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 > 2)
+ if (E.phase == 3)
for (var/trigger in E.customTriggers)
speaktrigger += "[trigger], "
- ADD_TRAIT(C, TRAIT_DEAF, "Triggers") //So you don't trigger yourself! Actually this will trigger yourself oops.
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, /atom/movable/proc/say, "[speaktrigger]"), 5)
+ 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")
@@ -1088,12 +1095,12 @@
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.'")
+ user.emote("me", 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)
if (E.mental_capacity >= 10)
var/trigger = stripped_input(user, "Enter the trigger phrase", MAX_MESSAGE_LEN)
- var/custom_words_words_list = list("speak", "echo", "shock", "cum", "kneel", "strip", "trance")
+ 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)
@@ -1124,7 +1131,7 @@
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.emote("me", 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)
@@ -1146,12 +1153,13 @@
to_chat(user, "You need to be next to your pet to give them a new objective!")
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.emote("me", 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 >= 200)
var/datum/objective/brainwashing/objective = stripped_input(user, "Add an objective to give your pet.", MAX_MESSAGE_LEN)
if(!LAZYLEN(objective))
+ to_chat(user, "You can't give your pet an objective to do nothing!")
return
//Pets don't understand harm
objective = replacetext(lowertext(objective), "kill", "hug")
@@ -1272,8 +1280,6 @@
E.status = "charge"
E.cooldown += 10
- else
- 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].")
if(debug == TRUE)
diff --git a/goon/browserassets/css/browserOutput.css b/goon/browserassets/css/browserOutput.css
index 674ab7c2b6..c24de22f84 100644
--- a/goon/browserassets/css/browserOutput.css
+++ b/goon/browserassets/css/browserOutput.css
@@ -392,6 +392,13 @@ h1.alert, h2.alert {color: #000000;}
.greentext {color: #00FF00; font-size: 24px;}
.redtext {color: #FF0000; font-size: 24px;}
.clown {color: #FF69Bf; font-size: 24px; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;}
+.velvet {color: #660015; font-weight: bold; animation: velvet 3000ms infinite;}
+@keyframes velvet {
+ 0% { color: #400020; }
+ 50% { color: #FF0000; }
+ 100% { color: #400020; }
+}
+
.hypnophrase {color: #202020; font-weight: bold; animation: hypnocolor 1500ms infinite;}
@keyframes hypnocolor {
0% { color: #202020; }
@@ -864,4 +871,4 @@ h1.alert, h2.alert {color: #000000;}
/* HELPER CLASSES */
.text-normal {font-weight: normal; font-style: normal;}
-.hidden {display: none; visibility: hidden;}
\ No newline at end of file
+.hidden {display: none; visibility: hidden;}
diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi
index 65b5733ffe..4e23c102ce 100644
Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ
diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi
index d55624940b..3641e8a923 100755
Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ
diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm
index 9fb09a3d3a..d2af0cf9d7 100644
--- a/interface/stylesheet.dm
+++ b/interface/stylesheet.dm
@@ -153,7 +153,13 @@ h1.alert, h2.alert {color: #000000;}
.redtext {color: #FF0000; font-size: 3;}
.clown {color: #FF69Bf; font-size: 3; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;}
.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;}
-.velvet {color: #840000; font-style: italic}
+.velvet {color: #660015; font-weight: bold; animation: velvet 3000ms infinite;}
+@keyframes velvet {
+ 0% { color: #400020; }
+ 50% { color: #FF0000; }
+ 100% { color: #400020; }
+}
+
.hypnophrase {color: #3bb5d3; font-weight: bold; animation: hypnocolor 1500ms infinite;}
@keyframes hypnocolor {
0% { color: #0d0d0d; }
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 8c5fbed8cb..9b5cf5d445 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -522,7 +522,7 @@
cooldown = 0
if (tranceTime > 0) //custom trances only last 50 ticks.
tranceTime -= 1
- else if (tranceTime <= 0) //remove trance after.
+ else if (!tranceTime == null) //remove trance after.
M.cure_trauma_type(/datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY)
M.remove_status_effect(/datum/status_effect/trance)
tranceTime = null
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
index ae70175842..10e6bc2239 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
@@ -133,7 +133,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
name = "MKUltra"
id = "enthrall"
description = "A forbidden deep red mixture that overwhelms a foreign body with waves of pleasure, intoxicating them into servitude. When taken by the creator, it will enhance the draw of their voice to those affected by it."
- color = "#80000c" // rgb: , 0, 255
+ color = "#660015" // rgb: , 0, 255
taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses"
overdose_threshold = 100 //If this is too easy to get 100u of this, then double it please.
DoNotSplit = TRUE
@@ -150,7 +150,6 @@ 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 = "#c40020" // rgb: , 0, 255
data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Fermis Yakumo")
creatorID = "honkatonkbramblesnatch"//ckey
creatorGender = "Mistress"