diff --git a/code/modules/mob/living/simple_animal/astral.dm b/code/modules/mob/living/simple_animal/astral.dm
index ceebb62be3..d58c013f10 100644
--- a/code/modules/mob/living/simple_animal/astral.dm
+++ b/code/modules/mob/living/simple_animal/astral.dm
@@ -8,7 +8,7 @@
attacktext = "raises the hairs on the neck of"
response_harm = "disrupts the concentration of"
response_disarm = "wafts"
- friendly = "touches"
+ friendly = "communes with"
loot = null
maxHealth = 5
health = 5
@@ -37,5 +37,5 @@
if(pseudo_death == FALSE)
if(isliving(A))
var/message = html_decode(stripped_input(src, "Enter a message to send to [A]", MAX_MESSAGE_LEN))
- to_chat(A, "[src] speaks into your mind, \"[message]\"")
+ to_chat(A, "[src] projects into your mind, \"[message].\"")
log_game("FERMICHEM: [src] has astrally transmitted [message] into [A]")
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index b6f09bcd77..de0ff80a6c 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -649,13 +649,13 @@
/obj/item/organ/vocal_cords/velvet/handle_speech(message) //actually say the message
owner.say(message, spans = spans, sanitize = FALSE)
- velvetspeech(message, owner)
+ velvetspeech(message, owner, 1)
//////////////////////////////////////
///////////FermiChem//////////////////
//////////////////////////////////////
//Removed span_list from input arguments.
-/proc/velvetspeech(message, mob/living/user, base_multiplier = 1, include_speaker = TRUE, message_admins = FALSE, debug = FALSE)
+/proc/velvetspeech(message, mob/living/user, base_multiplier = 1, message_admins = FALSE, debug = FALSE)
if(!user || !user.can_speak() || user.stat)
return 0 //no cooldown
@@ -668,13 +668,14 @@
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.
+ var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)//Check to see if pet is on cooldown from last command and if the master is right
+ if(E.master != user)
continue
if(ishuman(L))
var/mob/living/carbon/human/H = L
if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
continue
- var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)//Check to see if pet is on cooldown from last command
+
if (E.cooldown > 0)//If they're on cooldown you can't give them more commands.
continue
listeners += L
@@ -1270,6 +1271,7 @@
log_game("FERMICHEM: [H] has been implanted by [user] with [trigger], triggering [trigger2].")
E.mental_capacity -= 5
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(H.client?.prefs.lewdchem?"your [E.enthrallGender]":"[E.master]")] whispers you a new trigger."), 5)
+ to_chat(user, "You sucessfully set the trigger word [trigger] in [H]")
else
to_chat(user, "Your pet looks at you confused, it seems they don't understand that effect!")
else
@@ -1298,6 +1300,7 @@
E.customSpan = trigger2
user.SetStun(0)
H.SetStun(0)
+ to_chat(user, "You sucessfully set an echoing phrase in [H]")
//CUSTOM OBJECTIVE
else if((findtext(message, objective_words)))
@@ -1329,6 +1332,7 @@
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, H, "[(H.client?.prefs.lewdchem?"Your [E.enthrallGender]":"[E.master]")] whispers you a new objective."), 5)
brainwash(H, objective)
E.mental_capacity -= 200
+ to_chat(user, "You sucessfully give an objective to [H]")
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)
@@ -1341,9 +1345,7 @@
var/datum/status_effect/chem/enthrall/E = H.has_status_effect(/datum/status_effect/chem/enthrall)
if(E.phase == 3 && H.client?.prefs.lewdchem)
var/instill = stripped_input(user, "Instill an emotion in your [(user.client?.prefs.lewdchem?"Your pet":"listener")].", MAX_MESSAGE_LEN)
- var/customSpan = list("Notice", "Warning", "Hypnophrase", "Love", "Velvet")
- var/instillSpan = input(user, "Pick the style", "Style") in customSpan
- to_chat(H, "[instill]")
+ 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
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index c3c68cfa1e..e213a5132c 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -183,6 +183,7 @@
/datum/status_effect/chem/enthrall
id = "enthrall"
alert_type = null
+ //examine_text TODO
var/enthrallTally = 1 //Keeps track of the enthralling process
var/resistanceTally = 0 //Keeps track of the resistance
var/deltaResist //The total resistance added per resist click
@@ -299,7 +300,7 @@
if(owner.client?.prefs.lewdchem)
to_chat(owner, "[pick("It feels so good to listen to [master].", "You can't keep your eyes off [master].", "[master]'s voice is making you feel so sleepy.", "You feel so comfortable with [master]", "[master] is so dominant, it feels right to obey them.")].")
if (2) //partially enthralled
- if(enthrallTally > 200)
+ if(enthrallTally > 200)
phase += 1
mental_capacity -= resistanceTally//leftover resistance per step is taken away from mental_capacity.
enthrallTally = 0
@@ -330,7 +331,7 @@
resistGrowth = 0
to_chat(owner, "The separation from [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.")
REMOVE_TRAIT(owner, TRAIT_PACIFISM, "MKUltra")
- if(prob(2))
+ if(prob(1))
if(owner.client?.prefs.lewdchem)
to_chat(owner, "[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].")
if (4) //mindbroken
@@ -393,7 +394,7 @@
if(prob(5))
to_chat(owner, "You're starting to miss [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")].")
if(prob(5))
- owner.adjustBrainLoss(0.5)
+ owner.adjustBrainLoss(0.1)
to_chat(owner, "[(owner.client?.prefs.lewdchem?"[enthrallGender]":"[master]")] will surely be back soon") //denial
if(36)
var/message = "[(owner.client?.prefs.lewdchem?"I feel empty when [enthrallGender]'s not around..":"I miss [master]'s presence")]"
@@ -401,7 +402,7 @@
if(37 to 65)//barganing
if(prob(10))
to_chat(owner, "They are coming back, right...?")
- owner.adjustBrainLoss(1)
+ owner.adjustBrainLoss(0.5)
if(prob(10))
if(owner.client?.prefs.lewdchem)
to_chat(owner, "I just need to be a good pet for [enthrallGender], they'll surely return if I'm a good pet.")
@@ -421,7 +422,6 @@
to_chat(owner, "You are overwhelmed with anger at the lack of [enthrallGender]'s presence and suddenly lash out!")
else
to_chat(owner, "You are overwhelmed with anger and suddenly lash out!")
- owner.adjustBrainLoss(1)
if(90)
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2")
var/message = "[(owner.client?.prefs.lewdchem?"Where are you [enthrallGender]??!":"I need to find [master]!")]"
@@ -431,8 +431,8 @@
else
to_chat(owner, "You need to find [master] at all costs, you can't hold yourself back anymore!")
if(91 to 100)//depression
- if(prob(20))
- owner.adjustBrainLoss(2.5)
+ if(prob(10))
+ M.gain_trauma_type(BRAIN_TRAUMA_MILD)
owner.stuttering += 35
owner.jitteriness += 35
else if(prob(25))
@@ -442,6 +442,7 @@
var/message = "[(owner.client?.prefs.lewdchem?"I'm all alone, It's so hard to continute without [enthrallGender]...":"I really need to find [master]!!!")]"
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing4", /datum/mood_event/enthrallmissing4, message)
to_chat(owner, "You can hardly find the strength to continue without [(owner.client?.prefs.lewdchem?"your [enthrallGender]":"[master]")].")
+ M.gain_trauma_type(BRAIN_TRAUMA_SEVERE)
if(102 to 140) //depression 2, revengeance
if(prob(20))
owner.Stun(50)
@@ -450,22 +451,31 @@
to_chat(owner, "You're unable to hold back your tears, suddenly sobbing as the desire to see your [enthrallGender] oncemore overwhelms you.")
else
to_chat(owner, "You are overwheled with withdrawl from [master].")
- owner.adjustBrainLoss(4)
+ owner.adjustBrainLoss(1)
owner.stuttering += 35
owner.jitteriness += 35
+ if(prob(10))//2% chance
+ switch(rand(1,5))//Now let's see what hopefully-not-important part of the brain we cut off
+ if(1 to 3)
+ M.gain_trauma_type(BRAIN_TRAUMA_MILD)
+ if(4)
+ M.gain_trauma_type(BRAIN_TRAUMA_SEVERE)
+ if(5)//0.4% chance
+ M.gain_trauma_type(BRAIN_TRAUMA_SPECIAL)
if(prob(5))
deltaResist += 5
if(140 to INFINITY) //acceptance
if(prob(15))
deltaResist += 5
+ owner.adjustBrainLoss(-1)
if(prob(20))
if(owner.client?.prefs.lewdchem)
to_chat(owner, "Maybe you'll be okay without your [enthrallGender].")
else
to_chat(owner, "You feel your mental functions slowly begin to return.")
if(prob(5))
- owner.adjustBrainLoss(2.5)
- M.hallucination += 10
+ owner.adjustBrainLoss(1)
+ M.hallucination += 30
withdrawalTick += 0.5//Enough to leave you with a major brain trauma, but not kill you.
@@ -516,7 +526,7 @@
//customEcho
if(customEcho && withdrawal == FALSE && owner.client?.prefs.lewdchem)
- if(prob(5))
+ if(prob(2))
if(!customSpan) //just in case!
customSpan = "notice"
to_chat(owner, "[customEcho].")
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
index 7006918aa1..1508a5d519 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm
@@ -177,21 +177,19 @@ Creating a chem with a low purity will make you permanently fall in love with so
if(!creatorID)
//This happens when the reaction explodes.
return
+ if(purity < 0.5)//Impure chems don't function as you expect
+ return
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
if(E)
- if(E.enthrallID == M.ckey && creatorName != M.real_name)//If you're enthralled to yourself (from OD) and someone else tries to enthrall you, you become thralled to them instantly.
+ if(E.enthrallID == M.ckey && creatorID != M.ckey)//If you're enthralled to yourself (from OD) and someone else tries to enthrall you, you become thralled to them instantly.
E.enthrallID = creatorID
E.enthrallGender = creatorGender
E.master = get_mob_by_key(creatorID)
to_chat(M, to_chat(M, "Your aldled, plastic, mind bends under the chemical influence of a new [(M.client?.prefs.lewdchem?"master":"leader")]. Your highest priority is now to stay by [creatorName]'s side, following and aiding them at all costs.")) //THIS SHOULD ONLY EVER APPEAR IF YOU MINDBREAK YOURSELF AND THEN GET INJECTED FROM SOMEONE ELSE.
- return
- if(purity < 0.5)//Impure chems don't function as you expect
- return
+ log_game("FERMICHEM: Narcissist [M] ckey: [M.key] been rebound to [creatorName], ID: [creatorID]")
+ return
if((M.ckey == creatorID) && (creatorName == M.real_name)) //same name AND same player - same instance of the player. (should work for clones?)
log_game("FERMICHEM: [M] ckey: [M.key] has been given velvetspeech")
- /*if(M.has_status_effect(STATUS_EFFECT_INLOVE) //Not sure if I need/want this.
- to_chat(M, "You are too captivated by your love to think about anything else")
- return*/
var/obj/item/organ/vocal_cords/Vc = M.getorganslot(ORGAN_SLOT_VOICE)
var/obj/item/organ/vocal_cords/nVc = new /obj/item/organ/vocal_cords/velvet
if(Vc)
@@ -200,8 +198,6 @@ Creating a chem with a low purity will make you permanently fall in love with so
qdel(Vc)
to_chat(M, "You feel your vocal chords tingle as your voice comes out in a more sultry tone.")
else
- if(M.mind.assigned_role == "Captain")
- return
log_game("FERMICHEM: MKUltra: [creatorName], [creatorID], is enthralling [M.name], [M.ckey]")
M.apply_status_effect(/datum/status_effect/chem/enthrall)
log_game("FERMICHEM: [M] ckey: [M.key] has taken MKUltra")
@@ -258,7 +254,8 @@ Creating a chem with a low purity will make you permanently fall in love with so
. = ..()
metabolization_rate = 1//Mostly to manage brain damage and reduce server stress
if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks 100u, then you get the status for someone random (They don't have the vocal chords though, so it's limited.)
- to_chat(M, "You are unable to resist your own charms anymore, and become a full blown narcissist.")
+ if (!M.has_status_effect(/datum/status_effect/chem/enthrall))
+ to_chat(M, "You are unable to resist your own charms anymore, and become a full blown narcissist.")
/*Old way of handling, left in as an option B
var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers
for(var/mob/living/carbon/victim in seen)
@@ -288,7 +285,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
if(M.client?.prefs.lewdchem)
to_chat(M, "Your mind shatters under the volume of the mild altering chem inside of you, breaking all will and thought completely. Instead the only force driving you now is the instinctual desire to obey and follow [creatorName]. Your highest priority is now to stay by their side and protect them at all costs.")
else
- to_chat(M, "The might volume of chemicals in your system overwhelms your mind, and you suddenly agree with what they've been saying. Your highest priority is now to stay by their side and protect them at all costs.")
+ to_chat(M, "The might volume of chemicals in your system overwhelms your mind, and you suddenly agree with what [creatorName] has been saying. Your highest priority is now to stay by their side and protect them at all costs.")
log_game("FERMICHEM: [M] ckey: [M.key] has been mindbroken for [creatorName] ckey: [creatorID]")
M.slurring = 100
M.confused = 100
@@ -298,7 +295,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Thralls mindbroken")
/datum/reagent/fermi/enthrall/overdose_process(mob/living/carbon/M)
- M.adjustBrainLoss(0.2)//should be ~40 in total
+ M.adjustBrainLoss(0.2)//should be ~30 in total
..()
//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.