why do I even bother
This commit is contained in:
@@ -172,7 +172,8 @@
|
||||
//var/mental_cost //Current cost of custom triggers
|
||||
//var/mindbroken = FALSE //Not sure I use this, replaced with phase 4
|
||||
var/datum/weakref/redirect_component //resistance
|
||||
var/datum/weakref/redirect_component2 //say
|
||||
//var/datum/weakref/redirect_component2 //say
|
||||
//var/datum/weakref/redirect_component3 //hear
|
||||
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
|
||||
@@ -194,6 +195,9 @@
|
||||
owner.remove_status_effect(src)//This shouldn't happen, but just in case
|
||||
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
|
||||
//redirect_component3 = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_HEAR = CALLBACK(src, .proc/owner_hear)))) //Do resistance calc if resist is pressed
|
||||
RegisterSignal(owner, COMSIG_GLOB_LIVING_SAY_SPECIAL, .proc/owner_say)
|
||||
RegisterSignal(owner, COMSIG_MOVABLE_HEAR, .proc/owner_hear)
|
||||
//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()
|
||||
@@ -221,7 +225,7 @@
|
||||
|
||||
//mindshield check
|
||||
if(M.has_trait(TRAIT_MINDSHIELD))//If you manage to enrapture a head, wow, GJ.
|
||||
resistanceTally += 2
|
||||
resistanceTally += 5
|
||||
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>")
|
||||
|
||||
@@ -236,23 +240,26 @@
|
||||
if (enthrallTally > 100)
|
||||
phase += 1
|
||||
mental_capacity -= resistanceTally//leftover resistance per step is taken away from mental_capacity.
|
||||
resistanceTally /= 2
|
||||
enthrallTally = 0
|
||||
to_chat(owner, "<span class='warning'><i>Your conciousness slips, as you sink deeper into trance and servitude.</i></span>")
|
||||
to_chat(owner, "<span class='hypnophrase'><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='warning'><i>You break free of the influence in your mind, your thoughts suddenly turning lucid!</i></span>")
|
||||
to_chat(owner, "<span class='big redtext'><i>You're now free of [master]'s influence, and fully independant oncemore.'</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 dominant, it feels right to obey them.")].</i></span>")
|
||||
to_chat(owner, "<span class='small hypnophrase'><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
|
||||
resistanceTally /= 2
|
||||
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 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.
|
||||
to_chat(owner, "<span class='big nicegreen'><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
|
||||
@@ -260,15 +267,15 @@
|
||||
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,
|
||||
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>")
|
||||
to_chat(owner, "<span class='hypnophrase'><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)
|
||||
if (resistanceTally >= 200 && 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>")
|
||||
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(prob(3))
|
||||
to_chat(owner, "<span class='hypnophrase'><i>[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.")].</i></span>")
|
||||
if (4) //mindbroken
|
||||
if (mental_capacity >= 499 || owner.getBrainLoss() >=20 || !owner.reagents.has_reagent("MKUltra"))
|
||||
phase = 2
|
||||
@@ -284,7 +291,8 @@
|
||||
//distance calculations
|
||||
switch(get_dist(master, owner))
|
||||
if(0 to 8)//If the enchanter is within range, increase enthrallTally, remove withdrawal subproc and undo withdrawal effects.
|
||||
enthrallTally += distancelist[get_dist(master, owner)+1]
|
||||
if(phase <= 2)
|
||||
enthrallTally += distancelist[get_dist(master, owner)+1]
|
||||
withdrawal = FALSE
|
||||
if(withdrawalTick > 0)
|
||||
withdrawalTick -= 2
|
||||
@@ -301,31 +309,31 @@
|
||||
//Withdrawal subproc:
|
||||
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(10 to 35)//Gives wiggle room, so you're not SUPER needy
|
||||
if(prob(5))
|
||||
to_chat(owner, "You're starting to miss your [enthrallGender].")
|
||||
to_chat(owner, "<span class='notice'><i>You're starting to miss your [enthrallGender].</i></span>")
|
||||
if(prob(5))
|
||||
owner.adjustBrainLoss(0.5)
|
||||
to_chat(owner, "Master will surely be back soon") //denial
|
||||
if(41)
|
||||
to_chat(owner, "<i>Master will surely be back soon</i>") //denial
|
||||
if(36)
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing1", /datum/mood_event/enthrallmissing1)
|
||||
if(42 to 65)//barganing
|
||||
if(prob(5))
|
||||
to_chat(owner, "They are coming back, right...?")
|
||||
if(37 to 65)//barganing
|
||||
if(prob(10))
|
||||
to_chat(owner, "<i>They are coming back, right...?</i>")
|
||||
owner.adjustBrainLoss(1)
|
||||
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.")
|
||||
if(prob(10))
|
||||
to_chat(owner, "<i>I just need to be a good pet for [enthrallGender], they'll surely return if I'm a good pet.</i>")
|
||||
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
|
||||
owner.stuttering += 200
|
||||
owner.jitteriness += 200
|
||||
if(67 to 90) //anger
|
||||
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].")
|
||||
to_chat(owner, "<span class='warning'>You are overwhelmed with anger at the lack of [enthrallGender]'s presence and suddenly lash out!</span>")
|
||||
owner.adjustBrainLoss(1)
|
||||
if(90)
|
||||
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2") //Why does this not work?
|
||||
@@ -334,10 +342,10 @@
|
||||
if(91 to 120)//depression
|
||||
if(prob(20))
|
||||
owner.adjustBrainLoss(2.5)
|
||||
owner.stuttering += 2
|
||||
owner.jitteriness += 2
|
||||
owner.stuttering += 20
|
||||
owner.jitteriness += 20
|
||||
if(prob(25))
|
||||
M.hallucination += 2
|
||||
M.hallucination += 20
|
||||
if(121)
|
||||
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing3")
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "EnthMissing4", /datum/mood_event/enthrallmissing4)
|
||||
@@ -348,34 +356,34 @@
|
||||
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(5)
|
||||
owner.stuttering += 2
|
||||
owner.jitteriness += 2
|
||||
owner.stuttering += 20
|
||||
owner.jitteriness += 20
|
||||
if(prob(5))
|
||||
deltaResist += 5
|
||||
if(140 to INFINITY) //acceptance
|
||||
if(prob(15))
|
||||
deltaResist += 5
|
||||
if(prob(20))
|
||||
to_chat(owner, "Maybe you'll be okay without your [enthrallGender].")
|
||||
to_chat(owner, "<i><span class='small green'>Maybe you'll be okay without your [enthrallGender].</i></span>")
|
||||
if(prob(10))
|
||||
owner.adjustBrainLoss(2)
|
||||
M.hallucination += 5
|
||||
M.hallucination += 50
|
||||
|
||||
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)
|
||||
if (status)
|
||||
|
||||
if(status = "Antiresist")
|
||||
if (statusStrength == 0)
|
||||
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)
|
||||
else if(status == "heal")
|
||||
if (statusStrength < 0)
|
||||
status = null
|
||||
to_chat(owner, "You finish licking your wounds.")
|
||||
else
|
||||
@@ -383,13 +391,13 @@
|
||||
owner.heal_overall_damage(1, 1, 0, FALSE, FALSE)
|
||||
cooldown += 1 //Cooldown doesn't process till status is done
|
||||
|
||||
else if(status = "charge")
|
||||
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)
|
||||
else if (status == "charged")
|
||||
if (statusStrength < 0)
|
||||
status = null
|
||||
owner.remove_trait(TRAIT_GOTTAGOFAST, "MKUltra")
|
||||
owner.Knockdown(30)
|
||||
@@ -398,7 +406,7 @@
|
||||
statusStrength -= 1
|
||||
cooldown += 1 //Cooldown doesn't process till status is done
|
||||
|
||||
else if (status = "pacify")
|
||||
else if (status == "pacify")
|
||||
owner.add_trait(TRAIT_PACIFISM, "MKUltra")
|
||||
status = null
|
||||
|
||||
@@ -432,6 +440,10 @@
|
||||
redirect_component = null
|
||||
//qdel(redirect_component2.resolve())
|
||||
//redirect_component2 = null
|
||||
UnregisterSignal(owner, COMSIG_MOVABLE_HEAR)
|
||||
UnregisterSignal(owner, COMSIG_GLOB_LIVING_SAY_SPECIAL)
|
||||
//qdel(redirect_component3.resolve())
|
||||
//redirect_component3 = 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)
|
||||
@@ -441,34 +453,37 @@
|
||||
. = ..()
|
||||
*/
|
||||
//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)
|
||||
|
||||
/datum/status_effect/chem/enthrall/proc/owner_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!")
|
||||
//message_admins("[C] heard something!")
|
||||
for (var/trigger in customTriggers)
|
||||
if (trigger == message)//if trigger1 is the message
|
||||
//cached_trigger = lowertext(trigger)
|
||||
message_admins("[C] heard something: [message] vs [trigger] vs [raw_message]")
|
||||
if ("[trigger]" == raw_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. You find yourself fully believing in the validity of what you just said and don't think to question it.</span>")
|
||||
if (lowertext(customTriggers[trigger][1]) == "speak")//trigger2
|
||||
to_chat(C, "<span class='notice'><i>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.</i></span>")
|
||||
(C.say(customTriggers[trigger][2]))//trigger3
|
||||
|
||||
|
||||
//Echo (repeats message!)
|
||||
else if (customTriggers[trigger][1] == "echo")//trigger2
|
||||
(to_chat(owner, customTriggers[trigger][2]))//trigger3
|
||||
else if (lowertext(customTriggers[trigger][1]) == "echo")//trigger2
|
||||
(to_chat(owner, "<span class='hypnophrase'><i>[customTriggers[trigger][2]]</i></span>"))//trigger3
|
||||
|
||||
//Shocking truth!
|
||||
else if (customTriggers[trigger] == "shock")
|
||||
else if (lowertext(customTriggers[trigger]) == "shock")
|
||||
if (C.canbearoused)
|
||||
C.electrocute_act(10, src, 1, FALSE, FALSE, FALSE, TRUE)//I've no idea how strong this is
|
||||
C.adjustArousalLoss(5)
|
||||
to_chat(owner, "<span class='notice'><i>Your muscles seize up, then start spasming wildy!</i></span>")
|
||||
to_chat(owner, "<span class='warning'><i>Your muscles seize up, then start spasming wildy!</i></span>")
|
||||
else
|
||||
C.electrocute_act(15, src, 1, FALSE, FALSE, FALSE, TRUE)//To make up for the lack of effect
|
||||
|
||||
//wah intensifies
|
||||
else if (customTriggers[trigger][1] == "cum")//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
else if (lowertext(customTriggers[trigger]) == "cum")//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
if (C.canbearoused)
|
||||
if (C.getArousalLoss() > 80)
|
||||
C.mob_climax(forced_climax=TRUE)
|
||||
@@ -478,17 +493,22 @@
|
||||
C.throw_at(get_step_towards(speaker,C), 3, 1) //cut this if it's too hard to get working
|
||||
|
||||
//kneel (knockdown)
|
||||
else if (customTriggers[trigger][1] == "kneel")//as close to kneeling as you can get, I suppose.
|
||||
else if (lowertext(customTriggers[trigger]) == "kneel")//as close to kneeling as you can get, I suppose.
|
||||
C.Knockdown(20)
|
||||
|
||||
//strip (some) clothes
|
||||
else if (customTriggers[trigger][1] == "strip")//This wasn't meant to just be a lewd thing oops
|
||||
else if (customTriggers[trigger] == "strip")//This wasn't meant to just be a lewd thing oops
|
||||
var/mob/living/carbon/human/o = owner
|
||||
var/items = o.get_contents()
|
||||
for(var/obj/item/W in items)
|
||||
if(W == o.w_uniform || W == o.wear_suit)
|
||||
o.dropItemToGround(W, TRUE)
|
||||
C.visible_message("<span class='notice'>You feel compelled to strip your clothes.</span>")
|
||||
C.visible_message("<span class='notice'><i>You feel compelled to strip your clothes.</i></span>")
|
||||
|
||||
//trance
|
||||
else if (customTriggers[trigger] == "trance")
|
||||
var/mob/living/carbon/human/o = owner
|
||||
o.apply_status_effect(/datum/status_effect/trance, 200, TRUE)
|
||||
|
||||
//add more fun stuff!
|
||||
|
||||
@@ -505,14 +525,14 @@
|
||||
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>")
|
||||
to_chat(owner, "<span class='hypnophrase'><i>Your mind is too far gone to even entertain the thought of resisting.</i></span>")
|
||||
return
|
||||
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>")
|
||||
to_chat(owner, "<span class='hypnophrase'><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.
|
||||
if (statusStrength > 0)
|
||||
to_chat(owner, "<span class='notice'><i>The order from your [enthrallGender] to give in is conflicting with your attempt to resist, drawing you deeper into trance.</i></span>")
|
||||
to_chat(owner, "<span class='warning'><i>The order from your [enthrallGender] to give in is conflicting with your attempt to resist, drawing you deeper into trance.</i></span>")
|
||||
statusStrength += 1
|
||||
enthrallTally += 1
|
||||
return
|
||||
@@ -593,7 +613,8 @@
|
||||
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
|
||||
/datum/status_effect/chem/enthrall/proc/owner_say(mob/speaker, 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")
|
||||
|
||||
@@ -273,7 +273,7 @@
|
||||
//H.update_body()
|
||||
|
||||
/datum/species/proc/handle_genitals(mob/living/carbon/human/H)
|
||||
message_admins("attempting to update sprite")
|
||||
//message_admins("attempting to update sprite")
|
||||
if(!H)//no args
|
||||
CRASH("H = null")
|
||||
if(!LAZYLEN(H.internal_organs))//if they have no organs, we're done
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
var/statuscheck = FALSE
|
||||
var/prev_size = 6
|
||||
|
||||
/obj/item/organ/genital/penis/Initialize()
|
||||
. = ..()
|
||||
prev_size = length
|
||||
cached_length = length
|
||||
|
||||
/obj/item/organ/genital/penis/update_size()
|
||||
var/mob/living/carbon/human/o = owner
|
||||
@@ -33,32 +37,32 @@
|
||||
length = cached_length
|
||||
size = 1
|
||||
if(statuscheck == TRUE)
|
||||
message_admins("Attempting to remove.")
|
||||
//message_admins("Attempting to remove.")
|
||||
o.remove_status_effect(/datum/status_effect/chem/PElarger)
|
||||
statuscheck = FALSE
|
||||
if(5 to 8) //If modest size
|
||||
length = cached_length
|
||||
size = 2
|
||||
if(statuscheck == TRUE)
|
||||
message_admins("Attempting to remove.")
|
||||
//message_admins("Attempting to remove.")
|
||||
o.remove_status_effect(/datum/status_effect/chem/PElarger)
|
||||
statuscheck = FALSE
|
||||
if(9 to INFINITY) //If massive
|
||||
length = cached_length
|
||||
size = 3 //no new sprites for anything larger yet
|
||||
if(statuscheck == FALSE)
|
||||
message_admins("Attempting to apply.")
|
||||
//message_admins("Attempting to apply.")
|
||||
o.remove_status_effect(/datum/status_effect/chem/PElarger)
|
||||
statuscheck = TRUE
|
||||
if(15 to INFINITY)
|
||||
length = cached_length
|
||||
size = 3 //no new sprites for anything larger yet
|
||||
if(statuscheck == FALSE)
|
||||
message_admins("Attempting to apply.")
|
||||
//message_admins("Attempting to apply.")
|
||||
o.apply_status_effect(/datum/status_effect/chem/PElarger)
|
||||
statuscheck = TRUE
|
||||
message_admins("Pinas size: [size], [cached_length], [o]")
|
||||
message_admins("2. size vs prev_size")
|
||||
//message_admins("Pinas size: [size], [cached_length], [o]")
|
||||
//message_admins("2. size vs prev_size")
|
||||
if (round(length) > round(prev_size))
|
||||
to_chat(o, "<span class='warning'>Your [pick("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "weenie", "tadger", "schlong", "thirsty ferret", "baloney pony", "schlanger")] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [uppertext(length)] inch penis.</b></span>")
|
||||
else if (round(length) < round(prev_size))
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
id = "fermi" //It's meeee
|
||||
taste_description = "If affection had a taste, this would be it."
|
||||
var/ImpureChem = "toxin" // What chemical is metabolised with an inpure reaction
|
||||
var/InverseChemVal = 0 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
|
||||
var/InverseChem = "Initropidril" // What chem is metabolised when purity is below InverseChemVal, this shouldn't be made, but if it does, well, I guess I'll know about it.
|
||||
var/InverseChemVal = 0.25 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
|
||||
var/InverseChem = "toxin" // What chem is metabolised when purity is below InverseChemVal, this shouldn't be made, but if it does, well, I guess I'll know about it.
|
||||
var/DoNotSplit = FALSE // If impurity is handled within the main chem itself
|
||||
|
||||
///datum/reagent/fermi/on_mob_life(mob/living/carbon/M)
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
//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)
|
||||
/datum/reagent/fermi/on_mob_add(mob/living/carbon/M, amount)
|
||||
. = ..()
|
||||
if(!M)
|
||||
return
|
||||
@@ -44,15 +44,15 @@
|
||||
if (src.purity == 1 || src.DoNotSplit == TRUE)
|
||||
return
|
||||
else if (src.InverseChemVal > src.purity)
|
||||
M.reagents.remove_reagent(src, volume, FALSE)
|
||||
M.reagents.add_reagent(src.InverseChem, volume, FALSE, other_purity = 1)
|
||||
M.reagents.remove_reagent(src.id, amount, FALSE)
|
||||
M.reagents.add_reagent(src.InverseChem, amount, FALSE, other_purity = 1)
|
||||
message_admins("all convered to [src.InverseChem]")
|
||||
return
|
||||
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)
|
||||
//var/pureVol = amount * purity
|
||||
var/impureVol = amount * (1 - purity)
|
||||
message_admins("splitting [src.id] [amount] into [src.ImpureChem] [impureVol]")
|
||||
M.reagents.remove_reagent(src.id, (impureVol), FALSE)
|
||||
M.reagents.add_reagent(src.ImpureChem, impureVol, FALSE, other_purity = 1)
|
||||
return
|
||||
|
||||
@@ -66,15 +66,15 @@
|
||||
if (other_purity == 1 || src.DoNotSplit == TRUE)
|
||||
return
|
||||
else if (src.InverseChemVal > other_purity)
|
||||
M.reagents.remove_reagent(src, amount, FALSE)
|
||||
M.reagents.remove_reagent(src.id, amount, FALSE)
|
||||
M.reagents.add_reagent(src.InverseChem, amount, FALSE, other_purity = 1)
|
||||
message_admins("all convered to [src.InverseChem]")
|
||||
return
|
||||
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)
|
||||
var/impureVol = amount * (1 - other_purity)
|
||||
message_admins("splitting [src] [amount] into [src.ImpureChem] [impureVol]")
|
||||
M.reagents.remove_reagent(src.id, impureVol, FALSE)
|
||||
M.reagents.add_reagent(src.ImpureChem, impureVol, FALSE, other_purity = 1)
|
||||
return
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
taste_description = "wiggly cosmic dust."
|
||||
color = "#5020H4" // rgb: 50, 20, 255
|
||||
overdose_threshold = 15
|
||||
addiction_threshold = 20
|
||||
addiction_threshold = 15
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
addiction_stage2_end = 30
|
||||
addiction_stage3_end = 40
|
||||
@@ -525,7 +525,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
var/startHunger
|
||||
|
||||
/datum/reagent/fermi/SDZF/on_mob_life(mob/living/carbon/M) //If you're bad at fermichem, turns your clone into a zombie instead.
|
||||
message_admins("SGZF ingested")
|
||||
//message_admins("SGZF ingested")
|
||||
switch(current_cycle)//Pretends to be normal
|
||||
if(20)
|
||||
to_chat(M, "<span class='notice'>You feel the synethic cells rest uncomfortably within your body as they start to pulse and grow rapidly.</span>")
|
||||
@@ -577,7 +577,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
to_chat(M, "<span class='warning'>A large glob of the tumour suddenly splits itself from your body. You feel grossed out and slimey...</span>")
|
||||
if(87 to INFINITY)//purges chemical fast, producing a "slime" for each one. Said slime is weak to fire. TODO: turn tumour slime into real variant.
|
||||
M.adjustToxLoss(1, 0)
|
||||
message_admins("Growth nucleation occuring (SDGF), step [current_cycle] of 20")
|
||||
//message_admins("Growth nucleation occuring (SDGF), step [current_cycle] of 20")
|
||||
..()
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -821,6 +821,7 @@ Buginess level: works as intended - except teleport makes sparks for some reason
|
||||
var/mob/living/simple_animal/hostile/retaliate/ghost/G = null
|
||||
var/antiGenetics = 255
|
||||
var/sleepytime = 0
|
||||
InverseChemVal = 0.25
|
||||
//var/Svol = volume
|
||||
|
||||
/datum/reagent/fermi/astral/on_mob_life(mob/living/M) // Gives you the ability to astral project for a moment!
|
||||
@@ -1215,10 +1216,10 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "MissingLove", /datum/mood_event/MissingLove)
|
||||
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "InLove")
|
||||
if(prob(10))
|
||||
owner.Stun(10)
|
||||
owner.emote("whimper")//does this exist?
|
||||
to_chat(owner, "You're overcome with a desire to see [love].")
|
||||
owner.adjustBrainLoss(5)
|
||||
M.Stun(10)
|
||||
M.emote("whimper")//does this exist?
|
||||
to_chat(M, "You're overcome with a desire to see [love].")
|
||||
M.adjustBrainLoss(5)
|
||||
..()
|
||||
|
||||
/datum/reagent/fermi/enthrallExplo/on_mob_delete(mob/living/carbon/M)
|
||||
@@ -1446,9 +1447,36 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
name = "Fermis Test Reagent"
|
||||
id = "fermiTest"
|
||||
description = "You should be really careful with this...! Also, how did you get this?"
|
||||
data = "Big bang"
|
||||
data = list("Big bang" = 1, "please work" = 2)
|
||||
|
||||
/datum/reagent/fermi/fermiTest/on_new()
|
||||
..()
|
||||
message_admins("FermiTest addition!")
|
||||
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()
|
||||
|
||||
/datum/reagent/fermi/fermiTest/on_merge()
|
||||
..()
|
||||
message_admins("FermiTest addition!")
|
||||
var/location = get_turf(holder.my_atom)
|
||||
if(purity < 0.34 || purity == 1)
|
||||
var/datum/effect_system/foam_spread/s = new()
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
//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???
|
||||
/datum/chemical_reaction/fermi/proc/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH, Exploding = FALSE) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
|
||||
//var/Svol = volume
|
||||
if (Exploding == TRUE)
|
||||
return
|
||||
@@ -19,13 +19,13 @@
|
||||
var/ImpureTot = 0
|
||||
var/pHmod = 1
|
||||
var/turf/T = get_turf(my_atom)
|
||||
if(temp>600)//if hot, start a fire
|
||||
if(temp>500)//if hot, start a fire
|
||||
switch(temp)
|
||||
if (601 to 800)
|
||||
if (500 to 750)
|
||||
for(var/turf/turf in range(1,T))
|
||||
new /obj/effect/hotspot(turf)
|
||||
//volume /= 3
|
||||
if (801 to 1100)
|
||||
if (751 to 1100)
|
||||
for(var/turf/turf in range(2,T))
|
||||
new /obj/effect/hotspot(turf)
|
||||
//volume /= 4
|
||||
@@ -48,8 +48,8 @@
|
||||
pHmod = 1.5
|
||||
for (var/datum/reagent/reagent in my_atom.reagents.reagent_list)
|
||||
if (istype(reagent, /datum/reagent/fermi))
|
||||
var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id]
|
||||
Ferm.FermiExplode(src, my_atom, holder, volume, temp, pH, Exploding = TRUE)
|
||||
//var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id]
|
||||
//Ferm.FermiExplode(src, my_atom, volume, temp, pH, Exploding = TRUE)
|
||||
continue //Don't allow fermichems into the mix (fermi explosions are handled elsewhere and it's a huge pain)
|
||||
R.add_reagent(reagent, reagent.volume)
|
||||
if (reagent.purity < 0.6)
|
||||
@@ -64,7 +64,7 @@
|
||||
my_atom.reagents.clear_reagents()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/fermi/eigenstate
|
||||
/datum/chemical_reaction/fermi/eigenstate//done
|
||||
name = "Eigenstasium"
|
||||
id = "eigenstate"
|
||||
results = list("eigenstate" = 1)
|
||||
@@ -81,7 +81,7 @@
|
||||
CurveSharpT = 4 // How sharp the temperature exponential curve is (to the power of value)
|
||||
CurveSharppH = 2 // How sharp the pH exponential curve is (to the power of value)
|
||||
ThermicConstant = -2.5 //Temperature change per 1u produced
|
||||
HIonRelease = 0.01 //pH change per 1u reaction
|
||||
HIonRelease = 0.08 //pH change per 1u reaction
|
||||
RateUpLim = 5 //Optimal/max rate possible if all conditions are perfect
|
||||
FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics
|
||||
FermiExplode = FALSE //If the chemical explodes in a special way
|
||||
@@ -98,8 +98,8 @@
|
||||
name = "Synthetic-derived growth factor"
|
||||
id = "SDGF"
|
||||
results = list("SDGF" = 3)
|
||||
required_reagents = list("plasma" = 1, "stable_plasma" = 1, "sugar" = 1)
|
||||
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
|
||||
//required_reagents = list("plasma" = 1, "stable_plasma" = 1, "sugar" = 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
|
||||
OptimalTempMax = 500 // Upper end for above
|
||||
@@ -117,17 +117,17 @@
|
||||
FermiExplode = TRUE // If the chemical explodes in a special way
|
||||
PurityMin = 0.25
|
||||
|
||||
/datum/chemical_reaction/fermi/SDGF/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)//Spawns an angery teratoma!! Spooky..! be careful!! TODO: Add teratoma slime subspecies
|
||||
var/turf/T = get_turf(holder)
|
||||
/datum/chemical_reaction/fermi/SDGF/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//Spawns an angery teratoma!! Spooky..! be careful!! TODO: Add teratoma slime subspecies
|
||||
var/turf/T = get_turf(my_atom)
|
||||
var/mob/living/simple_animal/slime/S = new(T,"grey")//should work, in theory
|
||||
S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)//I dunno how slimes work cause fire is burny
|
||||
S.name = "Living teratoma"
|
||||
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()
|
||||
my_atom.reagents.clear_reagents()
|
||||
|
||||
/datum/chemical_reaction/fermi/BElarger
|
||||
/datum/chemical_reaction/fermi/BElarger //done
|
||||
name = "Sucubus milk"
|
||||
id = "BElarger"
|
||||
results = list("BElarger" = 6)
|
||||
@@ -136,29 +136,29 @@
|
||||
OptimalTempMin = 200
|
||||
OptimalTempMax = 800
|
||||
ExplodeTemp = 900
|
||||
OptimalpHMin = 5
|
||||
OptimalpHMax = 10
|
||||
OptimalpHMin = 8
|
||||
OptimalpHMax = 12
|
||||
ReactpHLim = 3
|
||||
CatalystFact = 0
|
||||
CurveSharpT = 2
|
||||
CurveSharppH = 2
|
||||
ThermicConstant = 1
|
||||
HIonRelease = 0.1
|
||||
RateUpLim = 10
|
||||
HIonRelease = 0.5
|
||||
RateUpLim = 5
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.1
|
||||
|
||||
/datum/chemical_reaction/fermi/BElarger/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
|
||||
/datum/chemical_reaction/fermi/BElarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
|
||||
//var/obj/item/organ/genital/breasts/B =
|
||||
new /obj/item/organ/genital/breasts(get_turf(holder))
|
||||
var/list/seen = viewers(5, get_turf(holder))
|
||||
new /obj/item/organ/genital/breasts(get_turf(my_atom))
|
||||
var/list/seen = viewers(8, get_turf(my_atom))
|
||||
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()
|
||||
my_atom.reagents.clear_reagents()
|
||||
..()
|
||||
|
||||
/datum/chemical_reaction/fermi/PElarger //Vars needed
|
||||
/datum/chemical_reaction/fermi/PElarger //done
|
||||
name = "Incubus draft"
|
||||
id = "PElarger"
|
||||
results = list("PElarger" = 3)
|
||||
@@ -168,53 +168,52 @@
|
||||
OptimalTempMin = 200
|
||||
OptimalTempMax = 800
|
||||
ExplodeTemp = 900
|
||||
OptimalpHMin = 5
|
||||
OptimalpHMax = 10
|
||||
OptimalpHMin = 2
|
||||
OptimalpHMax = 6
|
||||
ReactpHLim = 3
|
||||
CatalystFact = 0
|
||||
CurveSharpT = 2
|
||||
CurveSharppH = 2
|
||||
ThermicConstant = 1
|
||||
HIonRelease = 0.1
|
||||
RateUpLim = 10
|
||||
HIonRelease = -0.5
|
||||
RateUpLim = 5
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.1
|
||||
|
||||
/datum/chemical_reaction/fermi/PElarger/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
|
||||
/datum/chemical_reaction/fermi/PElarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
|
||||
//var/obj/item/organ/genital/penis/nP =
|
||||
new /obj/item/organ/genital/penis(get_turf(holder))
|
||||
var/list/seen = viewers(5, get_turf(holder))
|
||||
new /obj/item/organ/genital/penis(get_turf(my_atom))
|
||||
var/list/seen = viewers(8, get_turf(my_atom))
|
||||
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()
|
||||
my_atom.reagents.clear_reagents()
|
||||
..()
|
||||
|
||||
/datum/chemical_reaction/fermi/astral //Vars needed
|
||||
/datum/chemical_reaction/fermi/astral //done
|
||||
name = "Astrogen"
|
||||
id = "astral"
|
||||
results = list("astral" = 3)
|
||||
required_reagents = list("eigenstasium" = 1, "plasma" = 1, "synaptizine" = 1, "aluminium" = 5)
|
||||
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
|
||||
//FermiChem vars:
|
||||
OptimalTempMin = 200
|
||||
OptimalTempMax = 800
|
||||
ExplodeTemp = 900
|
||||
OptimalpHMin = 5
|
||||
OptimalpHMax = 10
|
||||
ReactpHLim = 3
|
||||
OptimalpHMin = 12
|
||||
OptimalpHMax = 13
|
||||
ReactpHLim = 2
|
||||
CatalystFact = 0
|
||||
CurveSharpT = 2
|
||||
CurveSharpT = 4
|
||||
CurveSharppH = 2
|
||||
ThermicConstant = 1
|
||||
HIonRelease = 0.1
|
||||
ThermicConstant = 10
|
||||
HIonRelease = 0.5
|
||||
RateUpLim = 10
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.25
|
||||
PurityMin = 0.25 // explode purity!
|
||||
|
||||
|
||||
/datum/chemical_reaction/fermi/enthrall //Vars needed
|
||||
/datum/chemical_reaction/fermi/enthrall//done
|
||||
name = "MKUltra"
|
||||
id = "enthrall"
|
||||
results = list("enthrall" = 3)
|
||||
@@ -275,21 +274,21 @@
|
||||
//var/enthrallID = B.get_blood_data()
|
||||
*/
|
||||
|
||||
/datum/chemical_reaction/fermi/enthrall/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
|
||||
var/turf/T = get_turf(holder)
|
||||
/datum/chemical_reaction/fermi/enthrall/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
|
||||
var/turf/T = get_turf(my_atom)
|
||||
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()
|
||||
holder.clear_reagents()
|
||||
my_atom.reagents.clear_reagents()
|
||||
//..() //Please don't kill everyone too.
|
||||
|
||||
/datum/chemical_reaction/fermi/hatmium
|
||||
/datum/chemical_reaction/fermi/hatmium // done
|
||||
name = "Hat growth serum"
|
||||
id = "hatmium"
|
||||
results = list("hatmium" = 5)
|
||||
required_reagents = list("whiskey" = 1, "nutriment" = 3, "cooking_oil" = 2, "iron" = 1, "blackpepper" = 3)
|
||||
required_reagents = list("whiskey" = 1, "nutriment" = 3, "cooking_oil" = 2, "iron" = 1)
|
||||
//mix_message = ""
|
||||
//FermiChem vars:
|
||||
OptimalTempMin = 500
|
||||
@@ -301,27 +300,27 @@
|
||||
//CatalystFact = 0 //To do 1
|
||||
CurveSharpT = 4
|
||||
CurveSharppH = 0.5
|
||||
ThermicConstant = -2.5
|
||||
HIonRelease = 0.01
|
||||
ThermicConstant = -2
|
||||
HIonRelease = -0.05
|
||||
RateUpLim = 5
|
||||
FermiChem = TRUE
|
||||
//FermiExplode = FALSE
|
||||
//PurityMin = 0.15
|
||||
|
||||
/datum/chemical_reaction/fermi/hatmium/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
|
||||
var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(holder.my_atom))
|
||||
/datum/chemical_reaction/fermi/hatmium/FermiExplode(src, var/atom/my_atom, volume, temp, pH)
|
||||
var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(my_atom))
|
||||
hat.animate_atom_living()
|
||||
var/list/seen = viewers(5, get_turf(holder.my_atom))
|
||||
var/list/seen = viewers(8, get_turf(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()
|
||||
my_atom.reagents.clear_reagents()
|
||||
..()
|
||||
|
||||
/datum/chemical_reaction/fermi/furranium //low temp and medium pH
|
||||
/datum/chemical_reaction/fermi/furranium //low temp and medium pH - done
|
||||
name = "Furranium"
|
||||
id = "furranium"
|
||||
results = list("furranium" = 5)
|
||||
required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 1, "salglu_solution" = 1)
|
||||
required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 2, "salglu_solution" = 1)
|
||||
//mix_message = ""
|
||||
//FermiChem vars:
|
||||
OptimalTempMin = 350
|
||||
@@ -341,7 +340,7 @@
|
||||
//PurityMin = 0.15
|
||||
|
||||
//Nano-b-gone
|
||||
/datum/chemical_reaction/fermi/naninte_b_gone
|
||||
/datum/chemical_reaction/fermi/naninte_b_gone//done
|
||||
name = "Naninte bain"
|
||||
id = "naninte_b_gone"
|
||||
results = list("naninte_b_gone" = 5)
|
||||
@@ -357,9 +356,9 @@
|
||||
//CatalystFact = 0 //To do 1
|
||||
CurveSharpT = 4
|
||||
CurveSharppH = 2
|
||||
ThermicConstant = -2.5
|
||||
ThermicConstant = 1
|
||||
HIonRelease = 0.01
|
||||
RateUpLim = 5
|
||||
RateUpLim = 100
|
||||
FermiChem = TRUE
|
||||
//FermiExplode = FALSE
|
||||
//PurityMin = 0.15
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
item_flags = NODROP //Tips their hat!
|
||||
|
||||
/*
|
||||
/obj/item/clothing/head/hattip/equipped(mob/living/carbon/human/user, slot)
|
||||
C = user //grumble grumble loc
|
||||
*/
|
||||
|
||||
/obj/item/clothing/head/hattip/attack_hand(mob/user)
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
@@ -19,10 +24,23 @@
|
||||
user.emote("me",1,"admires such a spiffy hat.",TRUE)
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/head/hattip/speechModification(message)
|
||||
/obj/item/clothing/head/hattip/speechModification(message, /mob/living/carbon/C)
|
||||
..()
|
||||
var/mob/living/carbon/C = get_wearer()//user
|
||||
//if(istype(C, /mob/living/carbon/C))
|
||||
var/obj/item/organ/tongue/T = C.getorganslot(ORGAN_SLOT_TONGUE)
|
||||
if (T.name == "fluffy tongue")
|
||||
if(prob(0.01))
|
||||
message += "\" and tips their hat. \"swpy's sappin' my swentwy uwu!!"
|
||||
return message
|
||||
message += "\" and tips their hat. \"[pick("weehaw!", "bwoy howdy.", "dawn tuutin'.", "weww don't that beat aww.", "whoooowee, wouwd ya wook at that!", "whoooowee! makin' bwacon!", "cweam gwavy!", "yippekeeyah-heeyapeeah-kwayoh!", "mwove 'em uut!", "gwiddy up!")]"
|
||||
return message
|
||||
if(prob(0.01))
|
||||
message += "\" and tips their hat. \"Spy's sappin' my Sentry!"
|
||||
return message
|
||||
message += "\" and tips their hat. \"[pick("Yeehaw!", "Boy howdy.", "Darn tootin'.", "Well don't that beat all.", "Whoooowee, would ya look at that!", "Whoooowee! Makin' bacon!", "Cream Gravy!", "Yippekeeyah-heeyapeeah-kayoh!", "Move 'em out!", "Giddy up!")]"
|
||||
return message
|
||||
|
||||
|
||||
/obj/item/clothing/head/hattip/proc/get_wearer()
|
||||
return loc
|
||||
|
||||
Reference in New Issue
Block a user