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"