diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm
index 3338fc1cda..8bcccbb02a 100644
--- a/code/__DEFINES/components.dm
+++ b/code/__DEFINES/components.dm
@@ -137,6 +137,9 @@
#define COMSIG_LIVING_EXTINGUISHED "living_extinguished" //from base of mob/living/ExtinguishMob() (/mob/living)
#define COMSIG_LIVING_ELECTROCUTE_ACT "living_electrocute_act" //from base of mob/living/electrocute_act(): (shock_damage)
#define COMSIG_LIVING_MINOR_SHOCK "living_minor_shock" //sent by stuff like stunbatons and tasers: ()
+#define COMSIG_LIVING_SAY "say" //mob/living/say() - return COMSIG_I_FORGET_WHAT_TO_CALL_IT to interrupt before message sent.
+ #define COMPONENT_NO_SAY 1 // Here I am pretending to know what I'm doing.
+
// /mob/living/carbon signals
#define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity))
@@ -145,6 +148,7 @@
#define COMSIG_OBJ_DECONSTRUCT "obj_deconstruct" //from base of obj/deconstruct(): (disassembled)
#define COMSIG_OBJ_SETANCHORED "obj_setanchored" //called in /obj/structure/setAnchored(): (value)
+
// /obj/item signals
#define COMSIG_ITEM_ATTACK "item_attack" //from base of obj/item/attack(): (/mob/living/target, /mob/living/user)
#define COMSIG_ITEM_ATTACK_SELF "item_attack_self" //from base of obj/item/attack_self(): (/mob)
diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm
index 3e202acf41..5437f4ee17 100644
--- a/code/modules/surgery/organs/tongue.dm
+++ b/code/modules/surgery/organs/tongue.dm
@@ -216,8 +216,6 @@
message = replacetext(message, "l", "w")
message = replacetext(message, "r", "w")
if(prob(20))
- message += " OwO"
- else if(prob(30))
- message += " uwu"
+ message += pick(" OwO", " uwu")
message = lowertext(message)
return message
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 60734aafc6..8b45e3e4cf 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -613,7 +613,7 @@
return cooldown
//////////////////////////////////////
-///////ENTHRAL SILVER TONGUE//////////
+///////ENTHRAL VELVET CHORDS//////////
//////////////////////////////////////
//Heavily modified voice of god code
@@ -674,8 +674,8 @@
*/
/obj/item/organ/vocal_cords/velvet/handle_speech(message)
- var/cooldown = velvetspeec(hmessage, owner, spans, base_multiplier)
- return //voice of god speaks for us
+ var/cooldown = velvetspeech(message, owner, spans, base_multiplier)
+ return //velvetspeech should handle speech
@@ -718,7 +718,7 @@
if(istype(H.neck, /obj/item/clothing/neck/petcollar))
power_multiplier *= 1.5 //Collaring players makes them more docile and accepting of their place as a pet
if(H.has_trait(TRAIT_CROCRIN_IMMUNE) || !M.canbearoused)
- power_multiplier *= 1.5//Immune/asexual players are immune to the arousal based multiplier, this is to offset that so they can still be affected.
+ power_multiplier *= 1.5//Immune/asexual players are immune to the arousal based multiplier, this is to offset that so they can still be affected. Their unfamiliarty with desire makes it more on them.
listeners += L
if(!listeners.len)
@@ -739,7 +739,7 @@
if(user.mind.assigned_role == "Mime")
power_multiplier *= 0.5
- //Cultists are closer to their gods and are more better at indoctrinating
+ //Cultists are closer to their gods and are better at indoctrinating
if(iscultist(user))
power_multiplier *= 2
else if (is_servant_of_ratvar(user))
@@ -778,7 +778,7 @@
if(specific_listeners.len)
listeners = specific_listeners
- //power_multiplier *= (1 + (1/specific_listeners.len)) //Put this is if it becomes OP
+ //power_multiplier *= (1 + (1/specific_listeners.len)) //Put this is if it becomes OP, power is judged internally on a thrall, so shouldn't be nessicary.
message = copytext(message, 0, 1)+copytext(message, 1 + length(found_string), length(message) + 1)
//phase 1
@@ -789,8 +789,11 @@
var/static/regex/punish_words = regex("bad boy|bad girl|bad pet")
var/static/regex/desire_words = regex("good boy|good girl|good pet")
var/static/regex/resist_words = regex("resist|snap out of it|fight")//useful if two enthrallers are fighting
- var/static/regex/forget_words = regex("forget|muddled|")
+ var/static/regex/forget_words = regex("forget|muddled")
//phase 2
+ var/static/regex/orgasm_words = regex("cum|orgasm|climax|squirt|heyo") //CITADEL CHANGE
+ var/static/regex/awoo_words = regex("howl|awoo|bark")
+ var/static/regex/nya_words = regex("nya|meow|mewl")
var/static/regex/stun_words = regex("stop|wait|stand still|hold on|halt")
var/static/regex/knockdown_words = regex("drop|fall|trip|knockdown")
var/static/regex/sleep_words = regex("sleep|slumber|rest")
@@ -808,7 +811,7 @@
var/static/regex/whoareyou_words = regex("who are you|say your name|state your name|identify")
var/static/regex/saymyname_words = regex("say my name|who am i|whoami")
var/static/regex/knockknock_words = regex("knock knock")
- var/static/regex/statelaws_words = regex("state laws|state your laws")
+ //var/static/regex/statelaws_words = regex("state laws|state your laws")
var/static/regex/move_words = regex("move|walk")
var/static/regex/left_words = regex("left|west|port")
var/static/regex/right_words = regex("right|east|starboard")
@@ -831,23 +834,19 @@
var/static/regex/salute_words = regex("salute")
var/static/regex/deathgasp_words = regex("play dead")
var/static/regex/clap_words = regex("clap|applaud")
- var/static/regex/honk_words = regex("ho+nk") //hooooooonk
- var/static/regex/multispin_words = regex("like a record baby|right round")
- var/static/regex/orgasm_words = regex("cum|orgasm|climax|squirt|heyo") //CITADEL CHANGE
- var/static/regex/dab_words = regex("dab|mood") //CITADEL CHANGE
- var/static/regex/snap_words = regex("snap") //CITADEL CHANGE
+ //var/static/regex/honk_words = regex("ho+nk") //hooooooonk
+ //var/static/regex/multispin_words = regex("like a record baby|right round")
+
+ //var/static/regex/dab_words = regex("dab|mood") //CITADEL CHANGE
+ //var/static/regex/snap_words = regex("snap") //CITADEL CHANGE
//var/static/regex/bwoink_words = regex("what the fuck are you doing|bwoink|hey you got a moment?") //CITADEL CHANGE
var/distancelist = list(1.5,1.5,1.3,1.2,1.1,1,0.8,0.6,0.5,0.25)
- var/static/regex/reward_words = regex("good boy|good girl|good pet")
- var/static/regex/silence_words = regex("silence|be silent|ssh|quiet|hush")
- var/static/regex/attract_words = regex("come here|come to me|get over here|attract")
- var/static/regex/punish_words = regex("bad boy|bad girl|bad pet")
- var/static/regex/resist_words = regex("resist|snap out of it|come to your senses")//useful if two enthrallers are fighting
- var/static/regex/forget_words = regex("forget|muddled|")
//enthral_words, reward_words, silence_words attract_words punish_words desire_words resist_words forget_words
+
+ //Tier 1
//ENTHRAL
if(findtext(message, enthral_words))
for(var/V in listeners)
@@ -859,7 +858,7 @@
E.enthralTally += (power_multiplier*((message.len/200) + 1) //encourage players to say more than one word.
else
E.enthralTally += power_multiplier*1.25
- cooldown = COOLDOWN_VTHRAL
+ cooldown = 100
//REWARD
if(findtext(message, reward_words))
@@ -893,26 +892,70 @@
else if((findtext(message, silence_words)))
cooldown = COOLDOWN_VSTUN
for(var/mob/living/carbon/C in listeners)
- var/datum/status_effect/chem/enthral/E = L.has_status_effect(/datum/status_effect/chem/enthral)
+ var/datum/status_effect/chem/enthral/C = C.has_status_effect(/datum/status_effect/chem/enthral)
+ power_multiplier *= distancelist[get_dist(user, V)+1]
if L.phase == 3 //If target is fully enthralled,
C.add_trait(TRAIT_MUTE, TRAUMA_TRAIT)
else
- C.silent += ((10 * power_multiplier) * E.phase
+ C.silent += ((10 * power_multiplier) * E.phase)
//RESIST
else if((findtext(message, silence_words)))
cooldown = COOLDOWN_VSTUN
for(var/mob/living/carbon/C in listeners)
var/datum/status_effect/chem/enthral/E = L.has_status_effect(/datum/status_effect/chem/enthral)
+ power_multiplier *= distancelist[get_dist(user, V)+1]
E.deltaResist += (power_multiplier)
- //FORGET
+ //FORGET (A way to cancel the process)
else if((findtext(message, silence_words)))
cooldown = COOLDOWN_VSTUN
for(var/mob/living/carbon/C in listeners)
var/datum/status_effect/chem/enthral/E = L.has_status_effect(/datum/status_effect/chem/enthral)
- E.deltaResist += (power_multiplier)
+ C.Sleeping(40)
+ to_chat(C, "You wake up, forgetting everything that just happened. You must've dozed off..? How embarassing!")
+ E.phase = 0
+ //ATTRACT
+ else if((findtext(message, attract_words)))
+ cooldown = COOLDOWN_DAMAGE
+ for(var/V in listeners)
+ var/mob/living/L = V
+ L.throw_at(get_step_towards(user,L), 3 * power_multiplier, 1 * power_multiplier)
+
+ //teir 2
+
+ //ORGASM
+ else if((findtext(message, orgasm_words)))
+ cooldown = COOLDOWN_MEME
+ for(var/V in listeners)
+ var/mob/living/carbon/human/H = V
+ var/datum/status_effect/chem/enthral/E = L.has_status_effect(/datum/status_effect/chem/enthral)
+ if(H.canbearoused && H.has_dna()) // probably a redundant check but for good measure
+ H.mob_climax(forced_climax=TRUE)
+ H.setArousalLoss(H.min_arousal)
+ L.resistance = 0 //makes resistance 0, but resets arousal, resistance buildup is faster unaroused (massively so).
+
+ //awoo
+ else if((findtext(message, awoo_words)))
+ cooldown = 0
+ for(var/V in listeners)
+ var/mob/living/M = V
+ M.say("*awoo")
+
+ //Nya
+ else if((findtext(message, nya_words)))
+ cooldown = 0
+ for(var/V in listeners)
+ var/mob/living/M = V
+ playsound(get_turf(H), pick('sound/effects/meow1.ogg', 'modular_citadel/sound/voice/merowr.ogg', 'modular_citadel/sound/voice/nya.ogg'), , 50, 1, -1)
+ M.emote("me","lets out a nya!")
+
+ //SLEEP
+ else if((findtext(message, sleep_words)))
+ cooldown = COOLDOWN_STUN
+ for(var/mob/living/carbon/C in listeners)
+ C.Sleeping(40 * power_multiplier)
var/i = 0
//STUN
@@ -930,11 +973,7 @@
var/mob/living/L = V
L.Knockdown(60 * power_multiplier)
- //SLEEP
- else if((findtext(message, sleep_words)))
- cooldown = COOLDOWN_STUN
- for(var/mob/living/carbon/C in listeners)
- C.Sleeping(40 * power_multiplier)
+
//VOMIT
else if((findtext(message, vomit_words)))
@@ -1006,12 +1045,7 @@
var/throwtarget = get_edge_target_turf(user, get_dir(user, get_step_away(L, user)))
L.throw_at(throwtarget, 3 * power_multiplier, 1 * power_multiplier)
- //ATTRACT
- else if((findtext(message, attract_words)))
- cooldown = COOLDOWN_DAMAGE
- for(var/V in listeners)
- var/mob/living/L = V
- L.throw_at(get_step_towards(user,L), 3 * power_multiplier, 1 * power_multiplier)
+
//WHO ARE YOU?
else if((findtext(message, whoareyou_words)))
@@ -1171,24 +1205,6 @@
addtimer(CALLBACK(L, /mob/living/.proc/emote, "dance"), 5 * i)
i++
- //JUMP
- else if((findtext(message, jump_words)))
- cooldown = COOLDOWN_MEME
- for(var/V in listeners)
- var/mob/living/L = V
- if(prob(25))
- addtimer(CALLBACK(L, /atom/movable/proc/say, "HOW HIGH?!!"), 5 * i)
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "jump"), 5 * i)
- i++
-
- //SALUTE
- else if((findtext(message, salute_words)))
- cooldown = COOLDOWN_MEME
- for(var/V in listeners)
- var/mob/living/L = V
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "salute"), 5 * i)
- i++
-
//PLAY DEAD
else if((findtext(message, deathgasp_words)))
cooldown = COOLDOWN_MEME
@@ -1197,14 +1213,6 @@
addtimer(CALLBACK(L, /mob/living/.proc/emote, "deathgasp"), 5 * i)
i++
- //PLEASE CLAP
- else if((findtext(message, clap_words)))
- cooldown = COOLDOWN_MEME
- for(var/V in listeners)
- var/mob/living/L = V
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "clap"), 5 * i)
- i++
-
//HONK
else if((findtext(message, honk_words)))
cooldown = COOLDOWN_MEME
@@ -1221,34 +1229,6 @@
var/mob/living/L = V
L.SpinAnimation(speed = 10, loops = 5)
- //CITADEL CHANGES
- //ORGASM
- else if((findtext(message, orgasm_words)))
- cooldown = COOLDOWN_MEME
- for(var/V in listeners)
- var/mob/living/carbon/human/H = V
- if(H.canbearoused && H.has_dna()) // probably a redundant check but for good measure
- H.mob_climax(forced_climax=TRUE)
-
- //DAB
- else if((findtext(message, dab_words)))
- cooldown = COOLDOWN_DAMAGE
- for(var/V in listeners)
- var/mob/living/M = V
- M.say("*dab")
-
- //SNAP
- else if((findtext(message, snap_words)))
- cooldown = COOLDOWN_MEME
- for(var/V in listeners)
- var/mob/living/M = V
- M.say("*snap")
-
- //BWOINK
- else if((findtext(message, bwoink_words)))
- cooldown = COOLDOWN_MEME
- addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, get_turf(user), 'sound/effects/adminhelp.ogg', 300, 1), 25)
- //END CITADEL CHANGES
else
cooldown = COOLDOWN_NONE
diff --git a/modular_citadel/code/datums/mood_events/chem_events.dm b/modular_citadel/code/datums/mood_events/chem_events.dm
index 78a4c28375..7f55607832 100644
--- a/modular_citadel/code/datums/mood_events/chem_events.dm
+++ b/modular_citadel/code/datums/mood_events/chem_events.dm
@@ -3,19 +3,27 @@
description = "Where the hell am I? Is this an alternative dimension ?\n"
/datum/mood_event/enthrall
- mood_change = 2
- description = "I am a good pet for master.\n"
+ mood_change = 5
+ description = "I am a good pet for Master.\n"
/datum/mood_event/enthrallpraise
- mood_change = 5
+ mood_change = 10
description = "Master praised me!!\n"
- timeout = 1200
+ timeout = 400
/datum/mood_event/enthrallscold
- mood_change = -5
- description = "I have let master down.\n"//aaa I'm not kinky enough for this
- timeout = 1200
+ mood_change = -10
+ description = "I have let Master down.\n"//aaa I'm not kinky enough for this
+ timeout = 400
/datum/mood_event/enthrallmissing1
mood_change = -5
- description = "\n"
+ description = "I miss Master's presence.\n"
+
+/datum/mood_event/enthrallmissing2
+ mood_change = -10
+ description = "I really miss Masters presence.\n"
+
+/datum/mood_event/enthrallmissing3
+ mood_change = -25
+ description = "Where are you Master??!\n"
diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm
index 724ab291f2..9d68233ca5 100644
--- a/modular_citadel/code/datums/status_effects/chems.dm
+++ b/modular_citadel/code/datums/status_effects/chems.dm
@@ -1,7 +1,14 @@
/datum/status_effect/chem/SGDF
id = "SGDF"
var/mob/living/fermi_Clone
+ alert_type = null
+/*
+/obj/screen/alert/status_effect/SDGF
+ name = "SDGF"
+ desc = "You've cloned yourself! How cute."
+ icon_state = "SDGF"
+*/
/datum/status_effect/chem/SGDF/on_apply()
message_admins("SGDF status appied")
@@ -36,6 +43,7 @@
/datum/status_effect/chem/BElarger
id = "BElarger"
+ alert_type = null
//var/list/items = list()
//var/items = o.get_contents()
@@ -100,6 +108,7 @@
/datum/status_effect/chem/PElarger
id = "PElarger"
+ alert_type = null
/datum/status_effect/chem/PElarger/on_apply(mob/living/carbon/human/H)//Removes clothes, they're too small to contain you. You belong to space now.
message_admins("PElarge started!")
@@ -152,37 +161,134 @@
/datum/status_effect/chem/enthrall
id = "enthrall"
+ alert_type = null
var/mob/living/E //E for enchanter
//var/mob/living/V = list() //V for victims
var/enthrallTally = 10
var/resistanceTally = 0
var/deltaResist
var/deltaEnthrall
- var/phase = 1 //1: initial, 2: 2nd stage - more commands, 3rd: fully enthralled
- var/command
- var/enthralID
+ var/phase = 1 //-1: resisted state, due to be removed.0: sleeper agent, no effects unless triggered 1: initial, 2: 2nd stage - more commands, 3rd: fully enthralled, 4th Mindbroken
+ var/status = null
+ var/statusStrength = 0
+ var/enthrallID
+ var/mindbroken = FALSE
+ var/datum/weakref/redirect_component1
+ var/datum/weakref/redirect_component2
/datum/status_effect/chem/enthrall/on_apply(mob/living/carbon/M)
- if(M.ID == )
+ if(M.ID == enthralID)
+ owner.remove_status_effect(src)//This should'nt happen, but just in case
+ redirect_component1 = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist)))) //Do resistance calc if resist is pressed#
+ redirect_component2 = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_SAY = CALLBACK(src, .proc/owner_say)))) //Do resistance calc if resist is pressed
/datum/status_effect/chem/enthrall/tick(mob/living/carbon/M)
- redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist)))) //Do resistance calc if resist is pressed
+ if(M.has_trait(TRAIT_MINDSHIELD))
+ resistanceTally += 5
+ if(prob(20))
+ to_chat(owner, "You feel your lucidity returning as the mindshield fights")
+
switch(phase)
- if(0)
+ if(-1)//fully removed
+ owner.remove_status_effect(src)
+ if(0)// sleeper agent
return
- if(1)
+ if(1)//Initial enthrallment
+ if (enthrallTally > 100)
+ phase += 1
+ return
+ if (resistanceTally > 100)
+
+ if resist
+/datum/status_effect/chem/enthrall/on_remove(mob/living/carbon/M)
+ qdel(redirect_component1.resolve())
+ redirect_component1 = null
+ qdel(redirect_component2.resolve())
+ redirect_component2 = null
+/*
+/datum/status_effect/chem/enthrall/mob/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
+ if(enthralID.name in message || enthralID.first_name in message)
+ return
+ else
+ . = ..()
+*/
+
+/datum/status_effect/chem/enthrall/proc/owner_withdrawal(mob/living/carbon/M)
+ //3 stages, each getting worse
/datum/status_effect/chem/enthrall/proc/owner_resist(mob/living/carbon/M)
+ if(prob(10))
+ M.emote("me",1,"squints, shaking their head for a moment.")//shows that you're trying to resist sometimes
to_chat(owner, "You attempt to shake the mental cobwebs from your mind!")
+ //base resistance
if (M.canbearoused)
- resistance *= ((100 - M.arousalloss/100)/100)
+ deltaResist*= ((100 - M.arousalloss/100)/100)//more aroused you are, the weaker resistance you can give
else
- resistance *= 0.2
+ deltaResist *= 0.2
+ //chemical resistance, brain and annaphros are the key to undoing, but the subject has to to be willing to resist.
+ if (user.has_reagent("mannitol"))
+ deltaResist *= 1.25
+ if (user.has_reagent("neurine"))
+ deltaResist *= 1.5
+ if (!H.has_trait(TRAIT_CROCRIN_IMMUNE) && M.canbearoused)
+ if (user.has_reagent("anaphro"))
+ deltaResist *= 1.5
+ if (user.has_reagent("anaphro+"))
+ deltaResist *= 2
+ if (user.has_reagent("aphro"))
+ deltaResist *= 0.75
+ if (user.has_reagent("aphro+"))
+ deltaResist *= 0.5
+ //Antag resistance
+ //cultists are already brainwashed by their god
+ if(iscultist(owner))
+ deltaResist *= 2
+ else if (is_servant_of_ratvar(user))
+ deltaResist *= 2
+ //antags should be able to resist, so they can do their other objectives. This chem does frustrate them, but they've all the tools to break free when an oportunity presents itself.
+ else if (owner.mind.assigned_role in GLOB.antagonists)
+ deltaResist *= 1.8
+
+ //role resistance
+ //Chaplains are already brainwashed by their god
+ if(owner.mind.assigned_role == "Chaplain")
+ deltaResist *= 1.5
+ //Command staff has authority,
+ if(owner.mind.assigned_role in GLOB.command_positions)
+ deltaResist *= 1.4
+ //if(owner.first_name == "skylar"); power_multiplier *= 0.8 //for skylar //I'm kidding
+ //Chemists should be familiar with drug effects
+ if(owner.mind.assigned_role == "Chemist")
+ deltaResist *= 1.3
+
+ //Happiness resistance
+ //Your Thralls are like pets, you need to keep them happy.
+ if(owner.nutrition < 250)
+ deltaResist += (250-owner.nutrition)/100
+ if(owner.health < 120)//Harming your thrall will make them rebel harder.
+ deltaResist *= ((120-owner.health)/100)+1
+ //Add cold/hot, oxygen, sanity, happiness? (happiness might be moot, since the mood effects are so strong)
+ //Mental health could play a role too in the other direction
+
+ //If master gives you a collar, you get a sense of pride
+ if(istype(owner.neck, /obj/item/clothing/neck/petcollar))
+ deltaResist *= 0.8
+
+/datum/status_effect/chem/enthrall/proc/owner_say(mob/living/carbon/M) //I can only hope this works
+ var/static/regex/owner_words = regex("[enthralID.real_name]|[enthralID.first_name()]")
+ if(findtext(message, enthral_words))
+ if(enthralID.gender == FEMALE)
+ message = replacetext(message, enthralID.real_name, "Mistress")
+ message = replacetext(message, enthralID.first_name(, "Mistress")
+ else
+ message = replacetext(message, enthralID.real_name, "Master")
+ message = replacetext(message, enthralID.first_name(, "Master")
+ return message
/*
/datum/status_effect/chem/OwO
id = "OwO"
diff --git a/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm b/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm
index 80ae690ada..6dcfa20b95 100644
--- a/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm
+++ b/modular_citadel/code/modules/clothing/fermichemclothe/fermiclothes.dm
@@ -1,8 +1,8 @@
//Fermiclothes!
//Clothes made from FermiChem
-/obj/item/clothing/head/hattip //Actually the M1 Helmet
- name = "flak helmet"
+/obj/item/clothing/head/hattip //I wonder if anyone else has played cryptworlds
+ name = "Sythetic hat"
con = 'icons/obj/clothing/hats.dmi'
icon_state = "top_hat"
desc = "A sythesized hat, you can't seem to take it off. And tips their hat."
diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
index c89a88af0b..ae71736d24 100644
--- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm
@@ -724,27 +724,27 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
qdel(M) //Approx 60minutes till death from initial addiction
..()
-/datum/reagent/fermi/enthral
- name = "Need a name"
+/datum/reagent/fermi/enthrall
+ name = "MKUltra"
id = "enthral"
description = "Need a description."
color = "#A080H4" // rgb: , 0, 255
taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses"
metabolization_rate = 0
- overdose_threshold = 20
- addiction_threshold = 30
- addiction_stage1_end = 9999//Should never end.
+ //overdose_threshold = 20
+ //addiction_threshold = 30
+ //addiction_stage1_end = 9999//Should never end.
var/creatorID //add here
-/datum/reagent/fermi/enthral/on_mob_life(mob/living/carbon/M)
+/datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M)
if(!creatorID)
CRASH("Something went wrong in enthral creation")
else if(M.ID == creatorID)
- var/obj/item/organ/tongue/T = M.getorganslot(ORGAN_SLOT_TONGUE)
- var/obj/item/organ/tongue/nT = new /obj/item/organ/tongue/silver
- T.Remove(M)
- nT.Insert(M)
- qdel(T)
+ 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
+ Vc.Remove(M)
+ nVc.Insert(M)
+ qdel(Vc)
else
//Requires player to be within vicinity of creator
diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
index 23ad696d46..e6b23f6e67 100644
--- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
+++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm
@@ -107,6 +107,7 @@
id = "enthral"
results = list("enthral" = 3)
required_reagents = list("plasma" = 1, "stable_plasma" = 1, "sugar" = 1)
+ required_catalysts = list("blood" = 1)
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
//FermiChem vars:
OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions