Progressional fixes

This commit is contained in:
Fermi
2019-05-20 07:44:39 +01:00
parent a6ede9fecc
commit bb4aecbd5f
8 changed files with 301 additions and 179 deletions

View File

@@ -255,7 +255,7 @@
if(the_event.timeout)
addtimer(CALLBACK(src, .proc/clear_event, null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE)
return 0 //Don't have to update the event.
the_event = new type(src, param)//This causes a runtime for some reason, was this me?
the_event = new type(src, param)//This causes a runtime for some reason, was this me? No - there's an event floating around missing a definition.
mood_events[category] = the_event
update_mood()

View File

@@ -2,6 +2,12 @@
for(var/datum/brain_trauma/trauma in get_traumas())
message = trauma.on_say(message)
message = ..(message)
var/obj/item/organ/vocal_cords/Vc = getorganslot(ORGAN_SLOT_VOICE)
if(Vc)
if(Vc.name == "velvet chords" )
velvetspeech(message, src)
var/obj/item/organ/tongue/T = getorganslot(ORGAN_SLOT_TONGUE)
if(!T) //hoooooouaah!
var/regex/tongueless_lower = new("\[gdntke]+", "g")
@@ -45,4 +51,4 @@
return
for(var/T in get_traumas())
var/datum/brain_trauma/trauma = T
message = trauma.on_hear(message, speaker, message_language, raw_message, radio_freq)
message = trauma.on_hear(message, speaker, message_language, raw_message, radio_freq)

View File

@@ -494,6 +494,10 @@ im
//else
// fermiIsReacting = FALSE
// STOP_PROCESSING(SSfastprocess, src)
else if (chem_temp > C.ExplodeTemp)
var/datum/chemical_reaction/fermi/Ferm = selected_reaction
Ferm.FermiExplode(src, my_atom, total_volume, chem_temp, pH)
return 0
else
return 0
@@ -543,7 +547,7 @@ im
return 0//end!
/datum/reagents/process()
var/datum/chemical_reaction/C = fermiReactID
var/datum/chemical_reaction/fermi/C = fermiReactID
var/list/cached_required_reagents = C.required_reagents//update reagents list
var/list/cached_results = C.results//resultant chemical list
@@ -561,8 +565,8 @@ im
targetVol = 0
handle_reactions()
update_total()
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
Ferm.FermiFinish(src, multiplier)
//var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
C.FermiFinish(src, my_atom, multiplier)
//C.on_reaction(src, multiplier, special_react_result)
return
for(var/P in cached_results)
@@ -586,8 +590,8 @@ im
targetVol = 0
handle_reactions()
update_total()
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
Ferm.FermiFinish(src, multiplier)
//var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
C.FermiFinish(src, my_atom, multiplier)
//C.on_reaction(src, multiplier, special_react_result)
return
else
@@ -598,8 +602,8 @@ im
targetVol = 0
handle_reactions()
update_total()
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
Ferm.FermiFinish(src, multiplier)
//var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
C.FermiFinish(src, my_atom, multiplier)
//C.on_reaction(src, multiplier, special_react_result)
return

View File

@@ -616,35 +616,26 @@
/obj/item/organ/vocal_cords/velvet
name = "velvet chords"
desc = "The voice spoken from these just make you want to drift off, sleep and obey."
icon_state = "voice_of_god"
actions_types = list(/datum/action/item_action/organ_action/colossus)
icon_state = "in_love"
//actions_types = list(/datum/action/item_action/organ_action/velvet)
var/next_command = 0
var/cooldown_mod = 1
var/base_multiplier = 1
spans = list("say","yell")
/*
/datum/action/item_action/organ_action/colossus
name = "Voice of God"
var/obj/item/organ/vocal_cords/colossus/cords = null
/datum/action/item_action/organ_action/velvet
name = "Velvet voice"
var/obj/item/organ/vocal_cords/velvet/cords = null
/datum/action/item_action/organ_action/colossus/New()
/datum/action/item_action/organ_action/velvet/New()
..()
cords = target
/datum/action/item_action/organ_action/colossus/IsAvailable()
if(world.time < cords.next_command)
return FALSE
if(!owner)
return FALSE
if(!owner.can_speak())
return FALSE
if(check_flags & AB_CHECK_CONSCIOUS)
if(owner.stat)
return FALSE
/datum/action/item_action/organ_action/velvet/IsAvailable()
return TRUE
/datum/action/item_action/organ_action/colossus/Trigger()
/datum/action/item_action/organ_action/velvet/Trigger()
. = ..()
if(!IsAvailable())
if(world.time < cords.next_command)
@@ -658,16 +649,12 @@
owner.say(".x[command]")
/obj/item/organ/vocal_cords/colossus/can_speak_with()
if(world.time < next_command)
to_chat(owner, "<span class='notice'>You must wait [DisplayTimeText(next_command - world.time)] before Speaking again.</span>")
return FALSE
if(!owner)
return FALSE
if(!owner.can_speak())
to_chat(owner, "<span class='warning'>You are unable to speak!</span>")
return FALSE
return TRUE
*/
/obj/item/organ/vocal_cords/velvet/handle_speech(message)
velvetspeech(message, owner, spans, base_multiplier)
@@ -678,18 +665,20 @@
/obj/item/organ/vocal_cords/velvet/speak_with(message)
velvetspeech(message, owner, spans, base_multiplier)
//next_command = world.time + (cooldown * cooldown_mod)
*/
//////////////////////////////////////
///////////FermiChem//////////////////
//////////////////////////////////////
/proc/velvetspeech(message, mob/living/user, list/span_list, base_multiplier = 1, include_speaker = FALSE, message_admins = TRUE)
//Removed span_list from input arguments. //mob/living/user
/proc/velvetspeech(message, mob/living/user, base_multiplier = 1, include_speaker = FALSE, message_admins = TRUE, debug = TRUE)
message_admins("Velvet speech proc'd on [user]")
var/cooldown = 0
if(!user || !user.can_speak() || user.stat)
return 0 //no cooldown
var/log_message = message
/*
if(!span_list || !span_list.len) //Not too sure what this does, I think it changes your output message depending if you're a cultist or not? I.e. font
if(iscultist(user))
span_list = list("narsiesmall")
@@ -697,8 +686,8 @@
span_list = list("ratvar")
else
span_list = list()
user.say(message, sanitize = TRUE)//Removed spans = span_list, It should just augment normal speech
*/
//user.say(message, sanitize = TRUE)//Removed spans = span_list, It should just augment normal speech//DO NOT ENABLE, RECURSION HELL
//FIND THRALLS
@@ -714,12 +703,15 @@
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.
if (E.cooldown >= 0)//If they're on cooldown you can't give them more commands.
continue
listeners += L
if(debug == TRUE)
for(var/L in listeners)
to_chat(world, "[user] choses, and [L] obeys.")
if(!listeners.len)
cooldown = COOLDOWN_NONE
cooldown = 0
return cooldown
//POWER CALCULATIONS
@@ -785,6 +777,9 @@
if (T.name == "fluffy tongue") //If you sound hillarious, it's hard to take you seriously. This is a way for other players to combat/reduce their effectiveness.
power_multiplier *= 0.75
if(debug == TRUE)
to_chat(world, "[user]'s power is [power_multiplier].")
/* CHECK THIS STUFF IN THE CHEM STATUS INSTEAD.
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
@@ -793,14 +788,14 @@
*/
//Mixables
var/static/regex/enthral_words = regex("relax|obey|love|serve|docile|so easy|ara ara") //enthral_words
var/static/regex/reward_words = regex("good boy|good girl|good pet") //reward_words
var/static/regex/punish_words = regex("bad boy|bad girl|bad pet") ////punish_words
var/static/regex/enthral_words = regex("relax|obey|love|serve|docile|so easy|ara ara") //enthral_words works
var/static/regex/reward_words = regex("good boy|good girl|good pet") //reward_words works
var/static/regex/punish_words = regex("bad boy|bad girl|bad pet") ////punish_words works
//phase 0
var/static/regex/saymyname_words = regex("say my name|who am i|whoami")
var/static/regex/wakeup_words = regex("revert|awaken|snap")
var/static/regex/saymyname_words = regex("say my name|who am i|whoami") //works I think
var/static/regex/wakeup_words = regex("revert|awaken|snap") //works
//phase1
var/static/regex/silence_words = regex("shut up|silence|be silent|ssh|quiet|hush")
var/static/regex/silence_words = regex("shut up|silence|be silent|ssh|quiet|hush") //works
var/static/regex/antiresist_words = regex("unable to resist|give in")//useful if you think your target is resisting a lot
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|awake and forget")
@@ -825,11 +820,10 @@
var/static/regex/hot_words = regex("heat|hot|hell")
var/static/regex/cold_words = regex("cold|cool down|chill|freeze")
var/static/regex/getup_words = regex("get up")
var/static/regex/pacify_words = regex("More and more docile|complaisant|friendly|pacifist")
var/static/regex/pacify_words = regex("more and more docile|complaisant|friendly|pacifist")
var/static/regex/charge_words = regex("charge|oorah|attack")
var/distancelist = list(1.5,1.5,1.3,1.2,1.1,1,0.8,0.6,0.5,0.25)
var/distancelist = list(2,2,1.5,1.3,1.15,1,0.8,0.6,0.5,0.25)
//enthral_words, reward_words, silence_words attract_words punish_words desire_words resist_words forget_words
@@ -881,20 +875,23 @@
//SAY MY NAME
if((findtext(message, saymyname_words)))
for(var/V in listeners)
var/mob/living/L = V
addtimer(CALLBACK(L, /atom/movable/proc/say, "Master"), 5)//When I figure out how to do genedered names put them here
var/mob/living/carbon/C = V
C.remove_trait(TRAIT_MUTE, TRAUMA_TRAIT)
addtimer(CALLBACK(C, /atom/movable/proc/say, "Master"), 5)//When I figure out how to do genedered names put them here
//WAKE UP
else if((findtext(message, wakeup_words)))
for(var/V in listeners)
var/mob/living/L = V
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
L.SetSleeping(0)//Can you hear while asleep?
switch(E.phase)
if(0)
E.phase = 3
E.status = null
to_chat(L, "<span class='warning'>The snapping of your Master's fingers brings you back to your enthralled state, obedient and ready to serve.</b></span>")
L.SetSleeping(0)//Can you hear while asleep?
addtimer(CALLBACK(L, /atom/movable/proc/to_chat, "<span class='warning'>The snapping of your Master's fingers brings you back to your enthralled state, obedient and ready to serve.</b></span>"), 5)
//to_chat(L, )
//tier 1
//SILENCE
@@ -908,6 +905,13 @@
C.silent += ((10 * power_multiplier) * E.phase)
E.cooldown += 3
//SPEAK
else if((findtext(message, silence_words)))
for(var/mob/living/carbon/C in listeners)
var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall)
C.remove_trait(TRAIT_MUTE, TRAUMA_TRAIT)
E.cooldown += 3
//Antiresist
else if((findtext(message, antiresist_words)))
for(var/V in listeners)
@@ -929,7 +933,7 @@
else if((findtext(message, forget_words)))
for(var/mob/living/carbon/C in listeners)
var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall)
C.Sleeping(40)
C.Sleeping(50)
to_chat(C, "<span class='warning'>You wake up, forgetting everything that just happened. You must've dozed off..? How embarassing!</b></span>")
switch(E.phase)
if(1 to 2)
@@ -965,6 +969,7 @@
//teir 2
//ORGASM
else if((findtext(message, orgasm_words)))
for(var/V in listeners)
@@ -1001,8 +1006,8 @@
switch(E.phase)
if(2 to INFINITY)
var/mob/living/M = V
playsound(get_turf(M), pick('sound/effects/meow1.ogg', 'modular_citadel/sound/voice/merowr.ogg', 'modular_citadel/sound/voice/nya.ogg'), 50, 1, -1)
H.emote("me","lets out a nya!")
playsound(get_turf(M), pick('sound/effects/meow1.ogg', 'modular_citadel/sound/voice/nya.ogg'), 50, 1, -1)
H.emote(H,"lets out a nya!")
E.cooldown += 1
//SLEEP
@@ -1028,7 +1033,7 @@
to_chat(H, "<span class='warning'>Before you can even think about it, you quickly remove your clothes in response to your Master's command.</b></span>")
E.cooldown += 10
//WALK
//WALK doesn't work?
else if((findtext(message, walk_words)))
for(var/V in listeners)
var/mob/living/L = V
@@ -1039,7 +1044,7 @@
L.toggle_move_intent()
E.cooldown += 1
//RUN
//RUN doesn't work?
else if((findtext(message, run_words)))
for(var/V in listeners)
var/mob/living/L = V
@@ -1057,7 +1062,7 @@
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
switch(E.phase)
if(3 to INFINITY)//Tier 2 only
L.Knockdown(20 * power_multiplier * E.phase)
L.Knockdown(30 * power_multiplier * E.phase)
E.cooldown += 8
//tier3
@@ -1086,7 +1091,7 @@
if (E.mental_capacity >= 10)
var/trigger = stripped_input(user, "Enter the trigger phrase", MAX_MESSAGE_LEN)
var/trigger2 = stripped_input(user, "Enter the effect.", MAX_MESSAGE_LEN)
if ((findtext(trigger, custom_words_words)))
if ((findtext(trigger2, custom_words_words)))
if (trigger2 == "speak" || trigger2 == "echo")
var/trigger3 = stripped_input(user, "Enter the phrase spoken.", MAX_MESSAGE_LEN)
E.customTriggers[trigger] = list(trigger2, trigger3)
@@ -1108,7 +1113,7 @@
to_chat(H, "<span class='warning'>You need to be next to your pet to give them a new objective!</b></span>")
return
else
user.emote("me", "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'")
user.emote(user, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'")
if (E.mental_capacity >= 150 || message == "objective")
var/datum/objective/brainwashing/objective = stripped_input(user, "Add an objective to give your pet.", MAX_MESSAGE_LEN)
if(!LAZYLEN(objective))

View File

@@ -37,5 +37,5 @@
description = "<span class='nicegreen'>I'm in love!!</span>\n"
/datum/mood_event/MissingLove
mood_change = -10
mood_change = -20
description = "<span class='warning'>I can't keep my crush off my mind, I need to see them again!</span>\n"

View File

@@ -171,42 +171,46 @@
var/mental_capacity //Higher it is, lower the cooldown on commands, capacity reduces with resistance.
//var/mental_cost //Current cost of custom triggers
//var/mindbroken = FALSE //Not sure I use this, replaced with phase 4
var/datum/weakref/redirect_component1 //resistance
var/datum/weakref/redirect_component //resistance
var/datum/weakref/redirect_component2 //say
var/distancelist = list(4,3,2,1.5,1,0.8,0.6,0.4,0.2) //Distance multipliers
var/distancelist = list(2,1.5,1,0.8,0.6,0.5,0.4,0.3,0.2) //Distance multipliers
var/withdrawal = FALSE //withdrawl
var/withdrawalTick = 0 //counts how long withdrawl is going on for
var/list/customTriggers = list() //the list of custom triggers (maybe have to split into two)
var/cooldown = 0
var/cooldownMsg = TRUE
/datum/status_effect/chem/enthrall/on_apply(mob/living/carbon/M)
/datum/status_effect/chem/enthrall/on_apply()
var/mob/living/carbon/M = owner
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in M.reagents.reagent_list
enthrallID = E.creatorID
enthrallGender = E.creatorGender
master = E.creator
master = get_mob_by_key(enthrallID)
if(!E)
message_admins("WARNING: No chem found in thrall!!!!")
if(!master)
message_admins("WARNING: No master! found in thrall!!!!")
if(M.key == enthrallID)
if(M.ckey == enthrallID)
owner.remove_status_effect(src)//This shouldn't 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_component = 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
//Might need to add redirect component for listening too.
var/obj/item/organ/brain/B = M.getorganslot(ORGAN_SLOT_BRAIN) //It's their brain!
mental_capacity = 500 - B.get_brain_damage()
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "enthrall", /datum/mood_event/enthrall)
return ..()
/datum/status_effect/chem/enthrall/tick(mob/living/carbon/M)
message_admins("Enthrall processing for [M]: ")
/datum/status_effect/chem/enthrall/tick()
//. = ..() //loop Please
var/mob/living/carbon/M = owner
//chem calculations
if (owner.reagents.has_reagent("MKUltra"))
if (owner.reagents.has_reagent("enthrall"))
if (phase >= 2)
enthrallTally += phase
else
if (phase < 3)
deltaResist += 5//If you've no chem, then you break out quickly
if (phase < 3 && phase != 0)
deltaResist += 2//If you've no chem, then you break out quickly
if(prob(20))
to_chat(owner, "<span class='notice'><i>Your mind starts to restore some of it's clarity as you feel the effects of the drug wain.</i></span>")
if (mental_capacity <= 500 || phase == 4)
@@ -216,9 +220,9 @@
mental_capacity += 10
//mindshield check
if(M.has_trait(TRAIT_MINDSHIELD))
resistanceTally += 5
if(prob(20))
if(M.has_trait(TRAIT_MINDSHIELD))//If you manage to enrapture a head, wow, GJ.
resistanceTally += 2
if(prob(10))
to_chat(owner, "<span class='notice'><i>You feel lucidity returning to your mind as the mindshield buzzes, attempting to return your brain to normal function.</i></span>")
//phase specific events
@@ -226,42 +230,46 @@
if(-1)//fully removed
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "enthrall")
owner.remove_status_effect(src)
else if(0)// sleeper agent
if(0)// sleeper agent
return
else if(1)//Initial enthrallment
if(1)//Initial enthrallment
if (enthrallTally > 100)
phase += 1
mental_capacity -= resistanceTally//leftover resistance per step is taken away from mental_capacity.
enthrallTally = 0
to_chat(owner, "<span class='notice'><i>Your conciousness slips, as you sink deeper into trance.</i></span>")
to_chat(owner, "<span class='warning'><i>Your conciousness slips, as you sink deeper into trance and servitude.</i></span>")
else if (resistanceTally > 100)
enthrallTally *= 0.5
phase = -1
resistanceTally = 0
to_chat(owner, "<span class='notice'><i>You break free of the influence in your mind, your thoughts suddenly turning lucid!</i></span>")
to_chat(owner, "<span class='warning'><i>You break free of the influence in your mind, your thoughts suddenly turning lucid!</i></span>")
owner.remove_status_effect(src) //If resisted in phase 1, effect is removed.
if(prob(10))
to_chat(owner, "<span class='notice'><i>[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 sexy and dominant, it feels right to obey them.")].</i></span>")
else if (2) //partially enthralled
to_chat(owner, "<span class='notice'><i>[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.")].</i></span>")
if (2) //partially enthralled
if (enthrallTally > 150)
phase += 1
mental_capacity -= resistanceTally//leftover resistance per step is taken away from mental_capacity.
enthrallTally = 0
to_chat(owner, "<span class='notice'><i>Your mind gives, eagerly obeying and serving [master].</i></span>")
to_chat(owner, "<span class='warning'><i>You are now fully enthralled to [master], and eager to follow their commands. However you find that in your intoxicated state you are much less likely to resort to violence, unless it is to defend your [enthrallGender]. Equally you are unable to commit suicide, even if ordered to, as you cannot server your [enthrallGender] in death. </i></span>")//If people start using this as an excuse to be violent I'll just make them all pacifists so it's not OP.
to_chat(owner, "<span class='warning'><i>You are now fully enthralled to [master], and eager to follow their commands. However you find that in your intoxicated state you are much less likely to resort to violence, unless it is to defend your [enthrallGender]. Equally you are unable to commit suicide, even if ordered to, as you cannot serve your [enthrallGender] in death. </i></span>")//If people start using this as an excuse to be violent I'll just make them all pacifists so it's not OP.
else if (resistanceTally > 150)
enthrallTally *= 0.5
phase -= 1
resistanceTally = 0
to_chat(owner, "<span class='notice'><i>You manage to shake some of the entrancement from your addled mind, however you can still feel yourself drawn towards [master].</i></span>")
//owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. Not at the moment,
else if (3)//fully entranced
if(prob(10))
to_chat(owner, "<span class='notice'><i>[pick("It feels so good to listen to [enthrallGender].", "You can't keep your eyes off [enthrallGender].", "[enthrallGender]'s voice is making you feel so sleepy.", "You feel so comfortable with [enthrallGender]", "[enthrallGender] is so dominant, it feels right to obey them.")].</i></span>")
if (3)//fully entranced
if (resistanceTally >= 250 && withdrawalTick >= 150)
enthrallTally = 0
phase -= 1
resistanceTally = 0
to_chat(owner, "<span class='notice'><i>The separation from you [enthrallGender] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.</i></span>")
else if (4) //mindbroken
if(prob(2))
to_chat(owner, "<span class='notice'><i>[pick("I belong to [enthrallGender].", "[enthrallGender] known's whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].</i></span>")
if (4) //mindbroken
if (mental_capacity >= 499 || owner.getBrainLoss() >=20 || !owner.reagents.has_reagent("MKUltra"))
phase = 2
mental_capacity = 500
@@ -283,6 +291,10 @@
M.hallucination = max(0, M.hallucination - 2)
M.stuttering = max(0, M.stuttering - 2)
M.jitteriness = max(0, M.jitteriness - 2)
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing1")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3")
if(9 to INFINITY)//If
withdrawal = TRUE
@@ -290,37 +302,38 @@
if (withdrawal == TRUE)//Your minions are really REALLY needy.
switch(withdrawalTick)//denial
if(20 to 40)//Gives wiggle room, so you're not SUPER needy
if(prob(10))
if(prob(5))
to_chat(owner, "You're starting to miss your [enthrallGender].")
if(prob(10))
if(prob(5))
owner.adjustBrainLoss(0.5)
to_chat(owner, "They'll surely be back soon") //denial
to_chat(owner, "Master will surely be back soon") //denial
if(41)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing1", /datum/mood_event/enthrallmissing1)
if(42 to 65)//barganing
if(prob(10))
if(prob(5))
to_chat(owner, "They are coming back, right...?")
owner.adjustBrainLoss(1)
if(prob(20))
if(prob(5))
to_chat(owner, "I just need to be a good pet for [enthrallGender], they'll surely return if I'm a good pet.")
owner.adjustBrainLoss(-2)
owner.adjustBrainLoss(-1)
if(66)
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing1") //Why does this not work?
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing2", /datum/mood_event/enthrallmissing2)
owner.stuttering += 20
owner.jitteriness += 20
if(67 to 90) //anger
if(prob(30))
if(prob(10))
addtimer(CALLBACK(M, /mob/verb/a_intent_change, INTENT_HARM), 2)
addtimer(CALLBACK(M, /mob/proc/click_random_mob), 2)
to_chat(owner, "You suddenly lash out at the station in anger for it keeping you away from your [enthrallGender].")
owner.adjustBrainLoss(1)
if(90)
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2") //Why does this not work?
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing3", /datum/mood_event/enthrallmissing3)
to_chat(owner, "<span class='warning'><i>You need to find your [enthrallGender] at all costs, you can't hold yourself back anymore.</i></span>")
if(91 to 120)//depression
if(prob(20))
owner.adjustBrainLoss(1)
owner.adjustBrainLoss(2.5)
owner.stuttering += 2
owner.jitteriness += 2
if(prob(25))
@@ -330,65 +343,64 @@
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing4", /datum/mood_event/enthrallmissing4)
to_chat(owner, "<span class='warning'><i>You can hardly find the strength to continue without your [enthrallGender].</i></span>")
if(120 to 140) //depression
if(prob(25))
owner.SetStun(20, 0)
if(prob(15))
owner.Stun(50)
owner.emote("cry")//does this exist?
to_chat(owner, "You're unable to hold back your tears, suddenly sobbing as the desire to see your [enthrallGender] oncemore overwhelms you.")
owner.adjustBrainLoss(2)
owner.adjustBrainLoss(5)
owner.stuttering += 2
owner.jitteriness += 2
if(prob(10))
if(prob(5))
deltaResist += 5
if(140 to INFINITY) //acceptance
if(prob(20))
if(prob(15))
deltaResist += 5
if(prob(20))
to_chat(owner, "Maybe you'll be okay without your [enthrallGender].")
if(prob(10))
owner.adjustBrainLoss(1)
owner.adjustBrainLoss(2)
M.hallucination += 5
withdrawalTick++
withdrawalTick += 0.5
//Status subproc - statuses given to you from your Master
//currently 3 statuses; antiresist -if you press resist, increases your enthrallment instead, HEAL - which slowly heals the pet, CHARGE - which breifly increases speed, PACIFY - makes pet a pacifist.
if (!status == null)
switch(status)
if("Antiresist")
if (statusStrength == 0)
status = null
to_chat(owner, "You feel able to resist oncemore.")
else
statusStrength -= 1
else if("heal")
if (statusStrength == 0)
status = null
to_chat(owner, "You finish licking your wounds.")
else
statusStrength -= 1
owner.heal_overall_damage(1, 1, 0, FALSE, FALSE)
cooldown += 1 //Cooldown doesn't process till status is done
else if("charge")
owner.add_trait(TRAIT_GOTTAGOFAST, "MKUltra")
status = "charged"
to_chat(owner, "Your [enthrallGender]'s order fills you with a burst of speed!")
else if ("charged")
if (statusStrength == 0)
status = null
owner.remove_trait(TRAIT_GOTTAGOFAST, "MKUltra")
owner.Knockdown(30)
to_chat(owner, "Your body gives out as the adrenaline in your system runs out.")
else
statusStrength -= 1
cooldown += 1 //Cooldown doesn't process till status is done
else if ("pacify")
owner.add_trait(TRAIT_PACIFISM, "MKUltra")
if(status = "Antiresist")
if (statusStrength == 0)
status = null
to_chat(owner, "You feel able to resist oncemore.")
else
statusStrength -= 1
else if(status = "heal")
if (statusStrength == 0)
status = null
to_chat(owner, "You finish licking your wounds.")
else
statusStrength -= 1
owner.heal_overall_damage(1, 1, 0, FALSE, FALSE)
cooldown += 1 //Cooldown doesn't process till status is done
else if(status = "charge")
owner.add_trait(TRAIT_GOTTAGOFAST, "MKUltra")
status = "charged"
to_chat(owner, "Your [enthrallGender]'s order fills you with a burst of speed!")
else if (status = "charged")
if (statusStrength == 0)
status = null
owner.remove_trait(TRAIT_GOTTAGOFAST, "MKUltra")
owner.Knockdown(30)
to_chat(owner, "Your body gives out as the adrenaline in your system runs out.")
else
statusStrength -= 1
cooldown += 1 //Cooldown doesn't process till status is done
else if (status = "pacify")
owner.add_trait(TRAIT_PACIFISM, "MKUltra")
status = null
//Truth serum?
//adrenals?
@@ -400,17 +412,24 @@
deltaResist = 0
if (cooldown > 0)
cooldown -= (1 + (mental_capacity/1000 ))
else
to_chat(master, "<span class='notice'><i>Your pet [owner.name] appears to have finished internalising your last command.</i></span>")
..()
cooldownMsg = FALSE
else if (cooldownMsg == FALSE)
to_chat(master, "<span class='notice'><i>Your pet [owner] appears to have finished internalising your last command.</i></span>")
cooldownMsg = TRUE
cooldown = 0
//..()
//Check for proximity of master DONE
//Place triggerreacts here - create a dictionary of triggerword and effect.
//message enthrallID "name appears to have mentally processed their last command."
/datum/status_effect/chem/enthrall/on_remove(mob/living/carbon/M)
qdel(redirect_component1.resolve())
redirect_component1 = null
/datum/status_effect/chem/enthrall/on_remove()
var/mob/living/carbon/M = owner
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "enthrall")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "enthrallpraise")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "enthrallscold")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing1")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3")
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3")
qdel(redirect_component.resolve())
redirect_component = null
//qdel(redirect_component2.resolve())
//redirect_component2 = null
@@ -421,15 +440,17 @@
else
. = ..()
*/
//Doesn't work
/datum/status_effect/chem/enthrall/proc/on_hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
var/mob/living/carbon/C = owner
message_admins("[C] heard something!")
for (var/trigger in customTriggers)
if (trigger == message)//if trigger1 is the message
message_admins("[C] has been triggered with [trigger]!")
//Speak (Forces player to talk)
if (customTriggers[trigger][1] == "speak")//trigger2
C.visible_message("<span class='notice'>Your mouth moves on it's own, before you can even catch it. Though you find yourself fully believing in the validity of what you just said and don't think to question it.</span>")
C.visible_message("<span class='notice'>Your mouth moves on it's own, before you can even catch it. You find yourself fully believing in the validity of what you just said and don't think to question it.</span>")
(C.say(customTriggers[trigger][2]))//trigger3
@@ -477,13 +498,16 @@
/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)
/datum/status_effect/chem/enthrall/proc/owner_resist()
var/mob/living/carbon/M = owner
message_admins("Enthrall processing for [M]: enthrallTally: [enthrallTally], resistanceTally: [resistanceTally]")
message_admins("[M] is trying to resist!")
if (status == "Sleeper" || phase == 0)
return
else if (phase == 4)
to_chat(owner, "<span class='notice'><i>Your mind is too far gone to even entertain the thought of resisting.</i></span>")
return
else if (phase == 3 || withdrawal == FALSE)
else if (phase == 3 && withdrawal == FALSE)
to_chat(owner, "<span class='notice'><i>The presence of your [enthrallGender] fully captures the horizon of your mind, removing any thoughts of resistance.</i></span>")
return
else if (status == "Antiresist")//If ordered to not resist; resisting while ordered to not makes it last longer, and increases the rate in which you are enthralled.
@@ -497,15 +521,18 @@
if (deltaResist != 0)//So you can't spam it, you get one deltaResistance per tick.
deltaResist += 0.1 //Though I commend your spamming efforts.
return
else
deltaResist = 1
if(prob(10))
if(prob(5))
M.emote("me",1,"squints, shaking their head for a moment.")//shows that you're trying to resist sometimes
deltaResist *= 1.5
to_chat(owner, "You attempt to shake the mental cobwebs from your mind!")
//base resistance
if (M.canbearoused)
deltaResist*= ((100 - M.arousalloss/100)/100)//more aroused you are, the weaker resistance you can give
else
deltaResist *= 0.2
deltaResist *= 0.5
//chemical resistance, brain and annaphros are the key to undoing, but the subject has to to be willing to resist.
if (owner.reagents.has_reagent("mannitol"))
deltaResist *= 1.25
@@ -555,16 +582,21 @@
//If master gives you a collar, you get a sense of pride
if(istype(M.wear_neck, /obj/item/clothing/neck/petcollar))
deltaResist *= 0.5
if(M.has_trait(TRAIT_MINDSHIELD))
deltaResist += 1
if(owner.has_trait(TRAIT_CROCRIN_IMMUNE) || !owner.canbearoused)
deltaResist *= 0.75//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.
if (deltaResist>0)//just in case
deltaResist /= phase//later phases require more resistance
message_admins("[M] is trying to resist with a delta of [deltaResist]!")
return
/datum/status_effect/chem/enthrall/proc/owner_say(message) //I can only hope this works
//var/datum/status_effect/chem/enthrall/E = owner.has_status_effect(/datum/status_effect/chem/enthrall)
//var/mob/living/master = E.master
message_admins("[owner] said something")
var/static/regex/owner_words = regex("[master]")
if(findtext(message, owner_words))
message = replacetext(lowertext(message), lowertext(master), "[enthrallGender]")

View File

@@ -24,9 +24,10 @@
//return ..()
//Called when reaction stops. #STOP_PROCESSING
/*
/datum/reagent/fermi/proc/FermiFinish(datum/reagents/holder, multipler) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
return
*/
//Called when added to a beaker without any of the reagent present. #add_reagent
/datum/reagent/fermi/proc/FermiNew(holder) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
return
@@ -34,8 +35,9 @@
//This should process fermichems to find out how pure they are and what effect to do.
//TODO: add this to the main on_mob_add proc, and check if Fermichem = TRUE
/datum/reagent/fermi/on_mob_add(mob/living/carbon/M)
. = ..()
if(!M)
return ..()
return
message_admins("purity of chem is [purity]")
if(src.purity < 0)
CRASH("Purity below 0 for chem: [src.id], Please let Fermis Know!")
@@ -49,14 +51,16 @@
else
//var/pureVol = volume * purity
var/impureVol = volume * (1 - (volume * purity))
message_admins("splitting [src] [volume] into [src.ImpureChem] [impureVol]")
M.reagents.remove_reagent(src, (volume*impureVol), FALSE)
M.reagents.add_reagent(src.ImpureChem, impureVol, FALSE, other_purity = 1)
return
..()
/datum/reagent/fermi/on_merge(mob/living/carbon/M, amount, other_purity)
. = ..()
if(!M)
return ..()
return
message_admins("purity of chem is [purity]")
if(other_purity < 0)
CRASH("Purity below 0 for chem: [src.id], Please let Fermis Know!")
if (other_purity == 1 || src.DoNotSplit == TRUE)
@@ -69,10 +73,10 @@
else
//var/pureVol =
var/impureVol = amount * (1 - (amount * other_purity))
message_admins("splitting [src] [volume] into [src.ImpureChem] [impureVol]")
M.reagents.remove_reagent(src, impureVol, FALSE)
M.reagents.add_reagent(src.ImpureChem, impureVol, FALSE, other_purity = 1)
return
..()
@@ -1053,18 +1057,37 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
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
data// = list("creatorID" = null, "creatorGender" = null, "creatorName" = null)
data = list("creatorID" = null, "creatorGender" = null, "creatorName" = null)
var/creatorID //ckey
var/creatorGender
var/creatorName
var/mob/living/creator
/datum/reagent/fermi/enthrall/test
name = "MKUltraTest"
id = "enthrallTest"
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 = "#2C051A" // rgb: , 0, 255
//ImpureChem = "PEsmaller" //If you make an inpure chem, it stalls growth
//InverseChemVal = 0.25
//InverseChem = "enthrall" //At really impure vols, it just becomes 100% inverse
data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Isabelle Foster")
creatorID = "honkatonkbramblesnatch"//ckey
creatorGender = "Mistress"
creatorName = "Isabelle Foster"
purity = 1
/datum/reagent/fermi/enthrall/test/on_new()
id = "enthrall"
..()
creator = get_mob_by_key(creatorID)
/datum/reagent/fermi/enthrall/on_new(list/data)
message_admins("FermiNew for enthral proc'd")
creatorID = data.["creatorID"]
creatorGender = data.["creatorGender"]
creatorName = data.["creatorName"]
creator = get_mob_by_key(creatorID)
message_admins("name: [creatorName], ID: [creatorID], gender: [creatorGender]")
/*
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in my_atom.reagents.reagent_list
@@ -1077,33 +1100,21 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
creatorID = B.data.["ckey"]
*/
/datum/reagent/fermi/enthrall/FermiFinish(datum/reagents/holder)
message_admins("On finish for enthral proc'd")
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in holder.reagent_list
if (B.data.["gender"] == "female")
E.data.["creatorGender"] = "Mistress"
else
E.data.["creatorGender"] = "Master"
E.data["creatorName"] = B.data.["real_name"]
E.data.["creatorID"] = B.data.["ckey"]
message_admins("name: [E.creatorName], ID: [E.creatorID], gender: [E.creatorGender]")
/datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M)
. = ..()
if(!creatorID)
CRASH("Something went wrong in enthral creation")
message_admins("key: [M.key] vs [creatorID], ")
message_admins("key: [M.ckey] vs [creatorID], ")
if(purity < 0.5)//Impure chems don't function as you expect
return
else if(M.key == creatorID && creatorName == M.real_name) //same name AND same player - same instance of the player. (should work for clones?)
if((M.ckey == creatorID) && (creatorName == M.real_name)) //same name AND same player - same instance of the player. (should work for clones?)
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)
if(Vc)
Vc.Remove(M)
nVc.Insert(M)
qdel(Vc)
to_chat(M, "<span class='notice'><i>You feel your vocal chords tingle as your voice comes out in a more sultry tone.</span>")
creator = M
else
M.apply_status_effect(/datum/status_effect/chem/enthrall)
//var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
@@ -1116,8 +1127,10 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
/datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M)
if (M.ckey == creatorID && creatorName == M.real_name)
return
if(purity < 0.5)//Placeholder for now. I'd like to get this done.
if (M.key == 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.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))
return
var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers
@@ -1139,6 +1152,8 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
return
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
if(!E)
M.reagents.remove_reagent(src.id, 10)
M.apply_status_effect(/datum/status_effect/chem/enthrall)
CRASH("No enthrall status found in [M]!")
E.enthrallTally += 1
M.adjustBrainLoss(0.1)
@@ -1147,12 +1162,15 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
/datum/reagent/fermi/enthrall/overdose_start(mob/living/carbon/M)//I have no idea what happens if you OD yourself honestly.
. = ..()
M.add_trait(TRAIT_PACIFISM, "MKUltra")
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
var/datum/status_effect/chem/enthrall/E
if (!M.has_status_effect(/datum/status_effect/chem/enthrall))
E = M.has_status_effect(/datum/status_effect/chem/enthrall)
M.apply_status_effect(/datum/status_effect/chem/enthrall)
E.enthrallID = creatorID
E.enthrallGender = creatorGender
E.master = creator
else
E = M.has_status_effect(/datum/status_effect/chem/enthrall)
to_chat(M, "<span class='warning'><i>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].</i></span>")
M.slurring = 100
M.confused = 100
@@ -1392,14 +1410,14 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
/datum/reagent/fermi/fermiAcid/on_mob_life(mob/living/carbon/C, method)
var/target = C.get_bodypart(BODY_ZONE_CHEST)
C.adjustFireLoss(1, 0)
var/acidstr = (5-C.reagents.pH)
C.adjustFireLoss(acidstr, 0)
if(method==VAPOR)
if(prob(20))
to_chat(C, "<span class='warning'>You can feel your lungs burning!</b></span>")
var/obj/item/organ/lungs/L = C.getorganslot(ORGAN_SLOT_LUNGS)
L.adjustLungLoss(2)
C.apply_damage(1, BURN, target)
var/acidstr = (5-C.reagents.pH)
L.adjustLungLoss(acidstr)
C.apply_damage(acidstr/2, BURN, target)
C.acid_act(acidstr, volume)
..()
@@ -1418,3 +1436,32 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
var/acidstr = (5-holder.pH)
T.acid_act(acidstr, volume)
..()
/datum/reagent/fermi/fermiTest
name = "Fermis Test Reagent"
id = "fermiTest"
description = "You should be really careful with this...! Also, how did you get this?"
data = "Big bang"
/datum/reagent/fermi/fermiTest/on_new()
var/location = get_turf(holder.my_atom)
if(purity < 0.34 || purity == 1)
var/datum/effect_system/foam_spread/s = new()
s.set_up(volume*2, location, holder)
s.start()
if((purity < 0.67 && purity >= 0.34)|| purity == 1)
var/datum/effect_system/smoke_spread/chem/s = new()
s.set_up(holder, volume*2, location)
s.start()
if(purity >= 0.67)
for (var/datum/reagent/reagent in holder.reagent_list)
if (istype(reagent, /datum/reagent/fermi))
var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id]
Ferm.FermiExplode(src, holder.my_atom, holder, holder.total_volume, holder.chem_temp, holder.pH)
else
var/datum/chemical_reaction/Ferm = GLOB.chemical_reagents_list[reagent.id]
Ferm.on_reaction(holder, reagent.volume)
for(var/mob/M in viewers(8, location))
to_chat(M, "<span class='danger'>The solution reacts dramatically, with a meow!</span>")
playsound(get_turf(M), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1)
holder.clear_reagents()

View File

@@ -4,12 +4,18 @@
/datum/chemical_reaction/fermi/proc/FermiCreate(holder) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
return
//Called when reaction STOP_PROCESSING
/datum/chemical_reaction/fermi/proc/FermiFinish(datum/reagents/holder, multipler) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
return
//Called when temperature is above a certain threshold
//....Is this too much?
/datum/chemical_reaction/fermi/proc/FermiExplode(src, var/atom/my_atom, datum/reagents/holder, volume, temp, pH, Reaction, Exploding = FALSE) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
//var/Svol = volume
if (Exploding == TRUE)
return
if(!pH)//Dunno how things got here without a pH.
pH = 7
var/ImpureTot = 0
var/pHmod = 1
var/turf/T = get_turf(my_atom)
@@ -119,6 +125,7 @@
S.real_name = "Living teratoma"//horrifying!!
S.rabid = 1//Make them an angery boi, grr grr
to_chat("<span class='warning'>The cells clump up into a horrifying tumour!</span>")
holder.clear_reagents()
/datum/chemical_reaction/fermi/BElarger
name = "Sucubus milk"
@@ -148,6 +155,7 @@
var/list/seen = viewers(5, get_turf(holder))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The reaction suddenly condenses, creating a pair of breasts!</b></span>")//OwO
holder.clear_reagents()
..()
/datum/chemical_reaction/fermi/PElarger //Vars needed
@@ -179,6 +187,7 @@
var/list/seen = viewers(5, get_turf(holder))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The reaction suddenly condenses, creating a penis!</b></span>")//OwO
holder.clear_reagents()
..()
/datum/chemical_reaction/fermi/astral //Vars needed
@@ -230,6 +239,24 @@
FermiExplode = TRUE
PurityMin = 0.15
/datum/chemical_reaction/fermi/enthrall/FermiFinish(datum/reagents/holder, var/atom/my_atom)
message_admins("On finish for enthral proc'd")
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in my_atom.reagents.reagent_list
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in my_atom.reagents.reagent_list
if (B.data.["gender"] == "female")
E.data.["creatorGender"] = "Mistress"
E.creatorGender = "Mistress"
else
E.data.["creatorGender"] = "Master"
E.creatorGender = "Master"
E.data["creatorName"] = B.data.["real_name"]
E.creatorName = B.data.["real_name"]
E.data.["creatorID"] = B.data.["ckey"]
E.creatorID = B.data.["ckey"]
message_admins("name: [E.creatorName], ID: [E.creatorID], gender: [E.creatorGender]")
//Apprently works..?Negative
/*
/datum/chemical_reaction/fermi/enthrall/on_reaction(datum/reagents/holder)
@@ -248,14 +275,14 @@
//var/enthrallID = B.get_blood_data()
*/
/datum/chemical_reaction/fermi/enthrall/FermiExplode(src, var/atom/my_atom, volume, temp, pH, Reaction)
var/turf/T = get_turf(my_atom)
var/datum/reagents/R = new/datum/reagents(350)
/datum/chemical_reaction/fermi/enthrall/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
var/turf/T = get_turf(holder)
var/datum/reagents/R = new/datum/reagents(1000)
var/datum/effect_system/smoke_spread/chem/s = new()
R.add_reagent("enthrallExplo", volume)
s.set_up(R, volume, T)
s.start()
my_atom.reagents.clear_reagents()
holder.clear_reagents()
//..() //Please don't kill everyone too.
/datum/chemical_reaction/fermi/hatmium
@@ -287,6 +314,7 @@
var/list/seen = viewers(5, get_turf(holder.my_atom))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The makes an off sounding pop, as a hat suddenly climbs out of the beaker!</b></span>")
holder.clear_reagents()
..()
/datum/chemical_reaction/fermi/furranium //low temp and medium pH