diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css
index ee199a7b0d..30532e5ed3 100644
--- a/code/modules/goonchat/browserassets/css/browserOutput.css
+++ b/code/modules/goonchat/browserassets/css/browserOutput.css
@@ -395,12 +395,12 @@ 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;}
+.velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;}
@keyframes velvet {
0% { color: #400020; }
- 25% { color: #FF0000; }
- 50% { color: #FFAAAA; }
- 75% { color: #FF0000; }
+ 40% { color: #FF0000; }
+ 50% { color: #FF8888; }
+ 60% { color: #FF0000; }
100% { color: #400020; }
}
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 2cb70928b7..bf684cdd6e 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -1234,7 +1234,7 @@
H.SetStun(1000)
if (E.mental_capacity >= 5)
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/custom_words_words_list = list("Speak", "Echo", "Shock", "Cum", "Kneel", "Strip", "Trance", "Cancel")
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)
diff --git a/goon/browserassets/css/browserOutput.css b/goon/browserassets/css/browserOutput.css
index 102c8ac40c..58129ac1cb 100644
--- a/goon/browserassets/css/browserOutput.css
+++ b/goon/browserassets/css/browserOutput.css
@@ -392,12 +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;}
+.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;}
+.velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;}
@keyframes velvet {
0% { color: #400020; }
- 25% { color: #FF0000; }
- 50% { color: #FFAAAA; }
- 75% { color: #FF0000; }
+ 40% { color: #FF0000; }
+ 50% { color: #FF8888; }
+ 60% { color: #FF0000; }
100% { color: #400020; }
}
@@ -416,7 +417,6 @@ h1.alert, h2.alert {color: #000000;}
50% { color: #dd0000; }
100% { color: #f75a5a; }
}
-.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;}
.icon {height: 1em; width: auto;}
diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm
index 59ed84c177..2ecd9f9004 100644
--- a/interface/stylesheet.dm
+++ b/interface/stylesheet.dm
@@ -153,12 +153,12 @@ 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: #660015; font-weight: bold; animation: velvet 3000ms infinite;}
+.velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;}
@keyframes velvet {
0% { color: #400020; }
- 25% { color: #FF0000; }
- 50% { color: #FFAAAA; }
- 75% { color: #FF0000; }
+ 40% { color: #FF0000; }
+ 50% { color: #FF8888; }
+ 60% { color: #FF0000; }
100% { color: #400020; }
}
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 06616e1990..c1e9c1af03 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -361,9 +361,9 @@
if(withdrawalTick > 0)
withdrawalTick -= 1
//calming effects
- M.hallucination = max(0, M.hallucination - 1)
- M.stuttering = max(0, M.stuttering - 1)
- M.jitteriness = max(0, M.jitteriness - 1)
+ M.hallucination = max(0, M.hallucination - 5)
+ M.stuttering = max(0, M.stuttering - 5)
+ M.jitteriness = max(0, M.jitteriness - 5)
if(owner.getBrainLoss() >=60)
owner.adjustBrainLoss(-0.1)
if(withdrawal == TRUE)
@@ -564,19 +564,21 @@
cTriggered = TRUE
log_game("FERMICHEM: MKULTRA: [owner] ckey: [owner.key] has been triggered with [cached_trigger] from [speaker] saying: \"[message]\". (their master being [master] ckey: [enthrallID].)")
- //Speak (Forces player to talk) works
+ //Speak (Forces player to talk)
if (lowertext(customTriggers[trigger][1]) == "speak")//trigger2
var/saytext = "Your mouth moves on it's own before you can even catch it."
if(HAS_TRAIT(C, TRAIT_NYMPHO))
saytext += " You find yourself fully believing in the validity of what you just said and don't think to question it."
- to_chat(C, "[saytext]")
- (C.say(customTriggers[trigger][2]))//trigger3
+ addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "[saytext]"), 5)
+ addtimer(CALLBACK(C, /atom/movable/proc/say, "[customTriggers[trigger][2]]"), 5)
+ //(C.say(customTriggers[trigger][2]))//trigger3
log_game("FERMICHEM: MKULTRA: [owner] ckey: [owner.key] has been forced to say: \"[customTriggers[trigger][2]]\" from previous trigger.")
- //Echo (repeats message!)
+ //Echo (repeats message!) allows customisation, but won't display var calls! Defaults to hypnophrase.
else if (lowertext(customTriggers[trigger][1]) == "echo")//trigger2
- (to_chat(owner, "[customTriggers[trigger][2]]"))//trigger3
+ addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, "[customTriggers[trigger][2]]"), 5)
+ //(to_chat(owner, "[customTriggers[trigger][2]]"))//trigger3
//Shocking truth!
else if (lowertext(customTriggers[trigger]) == "shock")
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
index d8f01e445d..40497f4957 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
@@ -205,18 +205,28 @@ Creating a chem with a low purity will make you permanently fall in love with so
/datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M)
. = ..()
if(purity < 0.5)//DO NOT SPLIT INTO DIFFERENT CHEM: This relies on DoNotSplit - has to be done this way.
+ if(volume < 0.5)//You don't get to escape that easily
+ FallInLove(pick(GLOB.player_list), M)
+ M.reagents.remove_reagent(id, volume)
+
if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks it, they fall in love randomly. If someone else drinks it, the creator falls in love with them.
if(M.has_status_effect(STATUS_EFFECT_INLOVE))//Can't be enthralled when enthralled, so to speak.
return
var/list/seen = viewers(7, get_turf(M))
for(var/victim in seen)
- if((victim == /mob/living/simple_animal/pet/) || (victim == M) || (!M.client) || (M.stat == DEAD))
+ if(ishuman(victim))
+ var/mob/living/carbon/V = victim
+ if((V == M) || (!V.client) || (V.stat == DEAD))
+ seen = seen - victim
+ else
seen = seen - victim
- if(!seen)
+
+ if(LAZYLEN(seen))
return
M.reagents.remove_reagent(id, volume)
FallInLove(M, pick(seen))
return
+
else // If someone else drinks it, the creator falls in love with them!
var/mob/living/carbon/C = get_mob_by_key(creatorID)
if(M.has_status_effect(STATUS_EFFECT_INLOVE))
@@ -225,11 +235,8 @@ Creating a chem with a low purity will make you permanently fall in love with so
M.reagents.remove_reagent(id, volume)
FallInLove(C, M)
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 supresses the vocal effects, for stealth.
- var/obj/item/organ/vocal_cords/Vc = M.getorganslot(ORGAN_SLOT_VOICE)
- Vc.spans = list("say")
+
+ if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it supresses the vocal effects, for stealth. NEVERMIND ADD THIS LATER I CAN'T GET IT TO WORK
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.
@@ -287,13 +294,6 @@ Creating a chem with a low purity will make you permanently fall in love with so
M.adjustBrainLoss(0.2)//should be ~40 in total
..()
-/datum/reagent/fermi/enthrall/on_mob_delete(mob/living/carbon/M)
- message_admins("Del enthrall")
- if (M.getorganslot(ORGAN_SLOT_VOICE))//Returns spans
- 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.
/datum/reagent/fermi/enthrallExplo//Created in a gas cloud when it explodes
name = "MKUltra"