Rebalances antistun chems (#18084)

* rebalances antistun chems

* missed some

* oops

* tweaks

* makes adrenals heal shock and heart failure

* typo

* moxian review

* aaaaaa

* I FORGOR

* steel review
This commit is contained in:
Charlie
2022-07-15 11:09:40 -05:00
committed by GitHub
parent acc48358b4
commit 707a92c46d
9 changed files with 229 additions and 137 deletions
+5 -5
View File
@@ -243,12 +243,12 @@
temperature_reagents(M.bodytemperature - 30)
M.absorb_blood()
for(var/thing in addiction_threshold_accumulated)
if(has_reagent(thing))
for(var/datum/reagent/R as anything in addiction_threshold_accumulated)
if(has_reagent(initial(R.id)))
continue // if we have the reagent in our system, then don't deplete the addiction threshold
addiction_threshold_accumulated[thing] -= 0.01 // Otherwise very slowly deplete the buildup
if(addiction_threshold_accumulated[thing] <= 0)
addiction_threshold_accumulated -= thing
addiction_threshold_accumulated[R] -= initial(R.addiction_decay_rate) // Otherwise very slowly deplete the buildup (defaults to 0.01)
if(addiction_threshold_accumulated[R] <= 0)
addiction_threshold_accumulated -= R
// a bitfield filled in by each reagent's `on_mob_life` to find out which states to update
var/update_flags = STATUS_UPDATE_NONE
+4 -2
View File
@@ -32,6 +32,8 @@
var/drink_desc = "You can't really tell what this is."
var/taste_mult = 1 //how easy it is to taste - the more the easier
var/taste_description = "metaphorical salt"
/// how quickly the addiction threshold var decays
var/addiction_decay_rate = 0.01
/datum/reagent/Destroy()
. = ..()
@@ -89,8 +91,8 @@
/datum/reagent/proc/handle_addiction(mob/living/M, consumption_rate)
if(addiction_chance && !is_type_in_list(src, M.reagents.addiction_list))
M.reagents.addiction_threshold_accumulated[id] += consumption_rate
var/current_threshold_accumulated = M.reagents.addiction_threshold_accumulated[id]
M.reagents.addiction_threshold_accumulated[type] += consumption_rate
var/current_threshold_accumulated = M.reagents.addiction_threshold_accumulated[type]
if(addiction_threshold < current_threshold_accumulated && prob(addiction_chance) && prob(addiction_chance_additional))
to_chat(M, "<span class='danger'>You suddenly feel invigorated and guilty...</span>")
@@ -298,11 +298,6 @@
var/update_flags = STATUS_UPDATE_NONE
if(holder.has_reagent("frostoil"))
holder.remove_reagent("frostoil", 5)
if(prob(50))
M.AdjustParalysis(-2 SECONDS)
M.AdjustStunned(-2 SECONDS)
M.AdjustWeakened(-2 SECONDS)
M.AdjustKnockDown(-2 SECONDS)
return ..() | update_flags
/datum/reagent/consumable/drink/coffee/overdose_process(mob/living/M, severity)
+194 -92
View File
@@ -1,3 +1,10 @@
/*
* increases the probability of bad effects from stimulantive chems based on the duration of exposure (in volume)
* at 10 volume the mod is 1
* at 20 volume the mod is 2, and so on
*/
#define DRAWBACK_CHANCE_MODIFIER(duration) 0.1 * duration
/datum/reagent/lithium
name = "Lithium"
id = "lithium"
@@ -85,7 +92,7 @@
/datum/reagent/nicotine
name = "Nicotine"
id = "nicotine"
description = "Slightly reduces stun times. If overdosed it will deal toxin and oxygen damage."
description = "If overdosed it will deal toxin and oxygen damage."
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
overdose_threshold = 35
@@ -100,12 +107,6 @@
var/smoke_message = pick("You feel relaxed.", "You feel calmed.", "You feel less stressed.", "You feel more placid.", "You feel more undivided.")
if(prob(5))
to_chat(M, "<span class='notice'>[smoke_message]</span>")
if(prob(50))
M.AdjustParalysis(-2 SECONDS)
M.AdjustStunned(-2 SECONDS)
M.AdjustWeakened(-2 SECONDS)
M.AdjustKnockDown(-2 SECONDS)
update_flags |= M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
return ..() | update_flags
/datum/reagent/nicotine/overdose_process(mob/living/M, severity)
@@ -151,37 +152,41 @@
update_flags |= M.adjustOxyLoss(20, FALSE)
return list(effect, update_flags)
// basic antistun chem, removes stuns and stamina, mild downsides
/datum/reagent/crank
name = "Crank"
id = "crank"
description = "Reduces stun times by about 200%. If overdosed or addicted it will deal significant Toxin, Brute and Brain damage."
description = "Reduces stun times and improves stamina regeneration. If overdosed or addicted it will deal significant Toxin, Brute and Brain damage."
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
heart_rate_increase = TRUE
overdose_threshold = 20
addiction_chance = 10
addiction_threshold = 5
addiction_decay_rate = 0.2 // half the metabolism rate
taste_description = "bitterness"
/datum/reagent/crank/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
var/recent_consumption = holder.addiction_threshold_accumulated[type]
M.AdjustParalysis(-4 SECONDS)
M.AdjustStunned(-4 SECONDS)
M.AdjustWeakened(-4 SECONDS)
M.AdjustKnockDown(-4 SECONDS)
update_flags |= M.adjustStaminaLoss(-25, FALSE)
if(prob(15))
M.emote(pick("twitch", "twitch_s", "grumble", "laugh"))
if(prob(8))
to_chat(M, "<span class='notice'>You feel great!</span>")
M.reagents.add_reagent("methamphetamine", rand(1,2))
M.emote(pick("laugh", "giggle"))
if(prob(6))
to_chat(M, "<span class='notice'>You feel warm.</span>")
M.bodytemperature += rand(1,10)
if(prob(5 * DRAWBACK_CHANCE_MODIFIER(recent_consumption)))
to_chat(M, "<span class='notice'>You feel warm.</span>") // fever, gets worse with volume
M.bodytemperature += 30 * recent_consumption
M.Confused(2 SECONDS * recent_consumption)
if(prob(4))
to_chat(M, "<span class='notice'>You feel kinda awful!</span>")
update_flags |= M.adjustToxLoss(1, FALSE)
M.LoseBreath(5 SECONDS)
M.AdjustJitter(60 SECONDS)
M.emote(pick("groan", "moan"))
return ..() | update_flags
/datum/reagent/crank/overdose_process(mob/living/M, severity)
@@ -196,24 +201,24 @@
M.emote("scream")
else if(effect <= 4)
M.visible_message("<span class='warning'>[M] is all sweaty!</span>")
M.bodytemperature += rand(5,30)
update_flags |= M.adjustBrainLoss(1, FALSE)
update_flags |= M.adjustToxLoss(1, FALSE)
M.Stun(4 SECONDS, FALSE)
M.bodytemperature += 150
update_flags |= M.adjustBrainLoss(5, FALSE)
update_flags |= M.adjustToxLoss(5, FALSE)
M.Stun(1 SECONDS)
else if(effect <= 7)
M.Jitter(60 SECONDS)
M.emote("grumble")
else if(severity == 2)
if(effect <= 2)
M.visible_message("<span class='warning'>[M] is sweating like a pig!</span>")
M.bodytemperature += rand(20,100)
update_flags |= M.adjustToxLoss(5, FALSE)
M.Stun(6 SECONDS, FALSE)
M.bodytemperature += 200
update_flags |= M.adjustToxLoss(20, FALSE)
M.Stun(2 SECONDS)
else if(effect <= 4)
M.visible_message("<span class='warning'>[M] starts tweaking the hell out!</span>")
M.visible_message("<span class='warning'>[M] starts twitching the hell out!</span>")
M.Jitter(200 SECONDS)
update_flags |= M.adjustToxLoss(2, FALSE)
update_flags |= M.adjustBrainLoss(8, FALSE)
update_flags |= M.adjustBrainLoss(20, FALSE)
M.Weaken(6 SECONDS)
M.AdjustConfused(50 SECONDS)
M.emote("scream")
@@ -226,6 +231,48 @@
M.emote("twitch_s")
return list(effect, update_flags)
// a makeshift stimulant, very fast metabolism rate, not very good
/datum/reagent/pump_up
name = "Pump Up"
id = "pump_up"
description = "An awful smelling mixture which acts as a makeshift stimulant"
reagent_state = SOLID
color = COLOR_HALF_TRANSPARENT_BLACK
taste_description = "poorly mixed coffee"
metabolization_rate = 1
overdose_threshold = 20
addiction_chance = 10
addiction_threshold = 5
/datum/reagent/pump_up/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
update_flags |= M.adjustStaminaLoss(-15) // two cycles to get out of stam crit ~4 seconds
M.AdjustParalysis(-2 SECONDS)
M.AdjustStunned(-2 SECONDS)
M.AdjustWeakened(-2 SECONDS)
M.AdjustKnockDown(-2 SECONDS)
return ..() | update_flags
/datum/reagent/pump_up/overdose_process(mob/living/M, severity)
var/list/overdose_info = ..()
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
switch(severity)
if(1)
if(prob(20))
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.vomit(lost_nutrition = 0, blood = TRUE, stun = FALSE)
M.Weaken(1 SECONDS) // change to knockdown after crawling
else
update_flags |= M.adjustStaminaLoss(10, FALSE)
if(2)
M.Drowsy(10 SECONDS)
M.drop_r_hand()
M.drop_l_hand()
to_chat(M, "<span class='warning'>You can barely keep your eyes open!</span>")
return list(effect, update_flags)
/datum/reagent/krokodil
name = "Krokodil"
id = "krokodil"
@@ -299,39 +346,48 @@
M.bodytemperature -= 70
return list(effect, update_flags)
// makes you faster, increases the duration of stuns, removes a LOT of stamina, makes you skinny, and does brain damage
/datum/reagent/methamphetamine
name = "Methamphetamine"
id = "methamphetamine"
description = "Reduces stun times by about 300%, speeds the user up, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage."
description = "Increases stun times, speeds the user up, and allows the user to quickly recover stamina while dealing a large amount of brain damage and making the user waste away. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage."
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
overdose_threshold = 20
addiction_chance = 10
addiction_threshold = 5
metabolization_rate = 0.6
addiction_decay_rate = 0.1 // very low, to prevent people from abusing the massive speed boost for too long. forces them to take long downtimes to not die from brain damage.
heart_rate_increase = 1
taste_description = "speed"
/// modifier to the stun time of the mob taking the drug
var/tenacity = 1.5
/datum/reagent/methamphetamine/on_mob_add(mob/living/L)
ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id)
if(ishuman(L))
var/mob/living/carbon/human/H = L
H.physiology.stun_mod *= tenacity // takes 1.5 times longer to get up as they are off their head
/datum/reagent/methamphetamine/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
var/recent_consumption = holder.addiction_threshold_accumulated[type]
if(prob(5))
M.emote(pick("twitch_s","blink_r","shiver"))
if(current_cycle >= 25)
M.AdjustJitter(10 SECONDS)
M.AdjustDrowsy(-20 SECONDS)
M.AdjustParalysis(-5 SECONDS)
M.AdjustStunned(-5 SECONDS)
M.AdjustWeakened(-5 SECONDS)
M.AdjustKnockDown(-5 SECONDS)
update_flags |= M.adjustStaminaLoss(-2, FALSE)
M.AdjustJitter(10 SECONDS, bound_upper = 100 SECONDS)
update_flags |= M.adjustStaminaLoss(-40, FALSE)
M.SetSleeping(0)
ADD_TRAIT(M, TRAIT_GOTTAGOFAST, id)
if(prob(50))
update_flags |= M.adjustBrainLoss(1, FALSE)
M.SetDrowsy(0)
if(prob(10 * DRAWBACK_CHANCE_MODIFIER(recent_consumption)))
update_flags |= M.adjustBrainLoss(10, FALSE)
M.adjust_nutrition(-25)
return ..() | update_flags
/datum/reagent/methamphetamine/on_mob_delete(mob/living/M)
REMOVE_TRAIT(M, TRAIT_GOTTAGOFAST, id)
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.physiology.stun_mod /= tenacity
..()
/datum/reagent/methamphetamine/overdose_process(mob/living/M, severity)
@@ -362,6 +418,7 @@
M.emote("laugh")
return list(effect, update_flags)
// makes you next to immune to stuns and stamina, but will demolish all of your organs, and has a tiny chance of permanently reducing your strength
/datum/reagent/bath_salts
name = "Bath Salts"
id = "bath_salts"
@@ -372,32 +429,38 @@
addiction_chance = 15
addiction_threshold = 5
metabolization_rate = 0.6
addiction_decay_rate = 0.2
taste_description = "WAAAAGH"
/// timer until we can start rolling for reducing a mobs strength again.
var/next_remove_strength
var/bonus_damage = 2
/datum/reagent/bath_salts/on_mob_add(mob/living/L)
if(ishuman(L))
var/mob/living/carbon/human/H = L
H.physiology.melee_bonus += bonus_damage // rage mode
/datum/reagent/bath_salts/on_mob_life(mob/living/M)
var/check = rand(0,100)
var/update_flags = STATUS_UPDATE_NONE
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
if(check < 8 && head_organ.h_style != "Very Long Beard")
head_organ.h_style = "Very Long Hair"
head_organ.f_style = "Very Long Beard"
H.update_hair()
H.update_fhair()
H.visible_message("<span class='warning'>[H] has a wild look in [H.p_their()] eyes!</span>")
if(check < 60)
M.SetParalysis(0)
M.SetStunned(0)
M.SetWeakened(0)
M.SetKnockDown(0)
var/recent_consumption = holder.addiction_threshold_accumulated[type]
for(var/obj/item/organ/internal/I in H.internal_organs)
I.receive_damage(0.8, TRUE) //double the rate of mitocholide
if(world.time > next_remove_strength && recent_consumption > 5 && prob(0.1 * DRAWBACK_CHANCE_MODIFIER(recent_consumption))) // tiny chance to make their muscles waste away, cannot happen instantly. I don't want people to get *that* unlucky
H.physiology.melee_bonus--
to_chat(H, "<span class='biggerdanger'>You feel your muscles wasting away!</span>")
next_remove_strength = world.time + 100 SECONDS
M.SetParalysis(0)
M.SetStunned(0)
M.SetWeakened(0)
M.SetKnockDown(0)
M.Druggy(30 SECONDS)
update_flags |= M.setStaminaLoss(0, FALSE)
var/check = rand(0, 100)
if(check < 30)
M.emote(pick("twitch", "twitch_s", "scream", "drool", "grumble", "mumble"))
M.Druggy(30 SECONDS)
if(check < 20)
M.AdjustConfused(20 SECONDS)
if(check < 8)
M.reagents.add_reagent(pick("methamphetamine", "crank", "neurotoxin"), rand(1,5))
M.visible_message("<span class='warning'>[M] scratches at something under [M.p_their()] skin!</span>")
update_flags |= M.adjustBruteLoss(5, FALSE)
else if(check < 16)
@@ -408,14 +471,17 @@
to_chat(M, "<span class='userdanger'>THEY'RE GONNA GET YOU!</span>")
return ..() | update_flags
/datum/reagent/bath_salts/on_mob_delete(mob/living/M)
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.physiology.melee_bonus -= bonus_damage // ragen't mode
/datum/reagent/bath_salts/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
if(method == REAGENT_INGEST)
to_chat(M, "<span class = 'danger'><font face='[pick("Curlz MT", "Comic Sans MS")]' size='[rand(4,6)]'>You feel FUCKED UP!!!!!!</font></span>")
SEND_SOUND(M, sound('sound/effects/singlebeat.ogg'))
M.emote("faint")
M.apply_effect(5, IRRADIATE)
M.EyeBlind(2 SECONDS)
M.adjustToxLoss(5)
M.adjustBrainLoss(10)
else
to_chat(M, "<span class='notice'>You feel a bit more salty than usual.</span>")
@@ -483,6 +549,7 @@
update_flags |= M.adjustToxLoss(1, FALSE)
return ..() | update_flags
//makes you resistant to stuns and stamina damage, heals a small amount of stamina damage, causes a large amount of toxin damage, on removal forces you to throw up blood.
/datum/reagent/aranesp
name = "Aranesp"
id = "aranesp"
@@ -490,24 +557,43 @@
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
taste_description = "bitterness"
addiction_chance = 5
addiction_threshold = 5
addiction_decay_rate = 0.2
/// how much do we edit the stun and stamina mods? lower is more resistance
var/tenacity = 0.7
/datum/reagent/aranesp/on_mob_add(mob/living/L)
if(ishuman(L))
var/mob/living/carbon/human/H = L
H.physiology.stun_mod *= tenacity
H.physiology.stamina_mod *= tenacity
/datum/reagent/aranesp/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
update_flags |= M.adjustStaminaLoss(-40, FALSE)
if(prob(90))
update_flags |= M.adjustToxLoss(1, FALSE)
var/recent_consumption = holder.addiction_threshold_accumulated[type]
// small amount of stam regen, meaning that if you can buy time between hits
// you can take 6 disabler shots (30 base * 0.7 stam mod = 21 stam damage each, 5 shots to 105 which is stamina crit. but you can heal 6 in 3 cycles) before going down
update_flags |= M.adjustStaminaLoss(-2, FALSE)
if(prob(10 * DRAWBACK_CHANCE_MODIFIER(recent_consumption)))
update_flags |= M.adjustToxLoss(4, FALSE)
if(prob(5))
M.emote(pick("twitch", "shake", "tremble","quiver", "twitch_s"))
var/high_message = pick("really buff", "on top of the world","like you're made of steel", "energized", "invigorated", "full of energy")
if(prob(8))
to_chat(M, "<span class='notice'>[high_message]!</span>")
if(prob(5))
to_chat(M, "<span class='danger'>You cannot breathe!</span>")
update_flags |= M.adjustOxyLoss(15, FALSE)
M.Stun(2 SECONDS)
M.AdjustLoseBreath(2 SECONDS)
var/high_message = pick("really buff", "on top of the world","like you're made of steel", "energized", "invigorated", "full of energy")
to_chat(M, "<span class='notice'>You feel [high_message]!</span>")
return ..() | update_flags
/datum/reagent/aranesp/on_mob_delete(mob/living/M)
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.physiology.stun_mod /= tenacity
H.physiology.stamina_mod /= tenacity
H.vomit(blood = TRUE, stun = FALSE) // just a visual, very gritty. don't do drugs kids
H.LoseBreath(10 SECONDS) // procs 5 times, mostly a visual thing. damage could stack to cause a slowdown.
H.Confused(10 SECONDS)
/datum/reagent/thc
name = "Tetrahydrocannabinol"
id = "thc"
@@ -588,13 +674,6 @@
if(current_cycle == 50)
M.SpinAnimation(speed = 4, loops = -1, parallel = FALSE)
M.AdjustDrowsy(-12 SECONDS)
M.AdjustParalysis(-3 SECONDS)
M.AdjustStunned(-3 SECONDS)
M.AdjustWeakened(-3 SECONDS)
M.AdjustKnockDown(-3 SECONDS)
update_flags |= M.adjustStaminaLoss(-1.5, FALSE)
M.SetSleeping(0)
return ..() | update_flags
/datum/reagent/fliptonium/reaction_mob(mob/living/M, method=REAGENT_TOUCH, volume)
@@ -675,30 +754,41 @@
addiction_chance = 10
addiction_threshold = 5
metabolization_rate = 0.6
addiction_decay_rate = 0.1 //very low to force them to take time off of meth
taste_description = "wiper fluid"
var/tenacity = 1.5 // higher is worse
/datum/reagent/lube/ultra/on_mob_add(mob/living/L)
ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id)
if(ishuman(L))
var/mob/living/carbon/human/H = L
H.physiology.stun_mod *= tenacity
/datum/reagent/lube/ultra/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
var/recent_consumption = holder.addiction_threshold_accumulated[type]
M.AdjustJitter(10 SECONDS)
update_flags |= M.adjustStaminaLoss(-40, FALSE)
M.SetSleeping(0)
M.SetDrowsy(0)
if(prob(12 * DRAWBACK_CHANCE_MODIFIER(recent_consumption))) // slightly higher prob than meth due to the no nutrition thing
update_flags |= M.adjustBrainLoss(10, FALSE)
var/high_message = pick("You feel your servos whir!", "You feel like you need to go faster.", "You feel like you were just overclocked!")
if(prob(1))
if(prob(1))
high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!"
if(prob(10))
high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!"
if(prob(5))
to_chat(M, "<span class='notice'>[high_message]</span>")
M.AdjustParalysis(-4 SECONDS)
M.AdjustStunned(-4 SECONDS)
M.AdjustWeakened(-4 SECONDS)
M.AdjustKnockDown(-4 SECONDS)
update_flags |= M.adjustStaminaLoss(-2, FALSE)
ADD_TRAIT(M, TRAIT_GOTTAGOFAST, id)
M.Jitter(6 SECONDS)
update_flags |= M.adjustBrainLoss(0.5, FALSE)
if(prob(5))
M.emote(pick("twitch", "shiver"))
return ..() | update_flags
/datum/reagent/lube/ultra/on_mob_delete(mob/living/M)
REMOVE_TRAIT(M, TRAIT_GOTTAGOFAST, id)
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.physiology.stun_mod /= tenacity
..()
/datum/reagent/lube/ultra/overdose_process(mob/living/M, severity)
@@ -712,12 +802,11 @@
var/obj/item/I = M.get_active_hand()
if(I)
M.drop_item()
if(prob(50))
update_flags |= M.adjustFireLoss(10, FALSE)
update_flags |= M.adjustBrainLoss(pick(0.5, 0.6, 0.7, 0.8, 0.9, 1), FALSE)
update_flags |= M.adjustFireLoss(5, FALSE)
update_flags |= M.adjustBrainLoss(3, FALSE)
return list(effect, update_flags)
//Surge: Krokodil
//Surge: crank
/datum/reagent/surge
name = "Surge"
id = "surge"
@@ -729,18 +818,29 @@
overdose_threshold = 20
addiction_chance = 10
addiction_threshold = 5
addiction_decay_rate = 0.2
taste_description = "silicon"
/datum/reagent/surge/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
var/recent_consumption = holder.addiction_threshold_accumulated[type]
M.Druggy(30 SECONDS)
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
if(prob(1))
if(prob(1))
high_message = "01010100010100100100000101001110010100110100001101000101010011100100010001000101010011100100001101000101."
M.AdjustParalysis(-4 SECONDS)
M.AdjustStunned(-4 SECONDS)
M.AdjustWeakened(-4 SECONDS)
M.AdjustKnockDown(-4 SECONDS)
update_flags |= M.adjustStaminaLoss(-25, FALSE)
if(prob(5))
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
if(prob(10))
high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!"
to_chat(M, "<span class='notice'>[high_message]</span>")
if(prob(5 * DRAWBACK_CHANCE_MODIFIER(recent_consumption)))
to_chat(M, "<span class='notice'>Your circuits overheat!</span>") // synth fever
M.bodytemperature += 30 * recent_consumption
M.Confused(2 SECONDS * recent_consumption)
return ..() | update_flags
/datum/reagent/surge/overdose_process(mob/living/M, severity)
@@ -762,3 +862,5 @@
update_flags |= M.adjustFireLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustBruteLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER, FALSE)
return list(0, update_flags)
#undef DRAWBACK_CHANCE_MODIFIER
@@ -104,11 +104,6 @@
M.AdjustDrowsy(-10 SECONDS)
if(current_cycle >= 90)
M.AdjustJitter(4 SECONDS)
if(prob(50))
M.AdjustParalysis(-2 SECONDS)
M.AdjustStunned(-2 SECONDS)
M.AdjustWeakened(-2 SECONDS)
M.AdjustKnockDown(-2 SECONDS)
if(prob(4))
M.reagents.add_reagent("epinephrine", 1.2)
return ..() | update_flags
@@ -45,7 +45,7 @@
/datum/reagent/medicine/synaptizine
name = "Synaptizine"
id = "synaptizine"
description = "Synaptizine is used to treat neuroleptic shock. Can be used to help remove disabling symptoms such as paralysis."
description = "Synaptizine is used to treat neuroleptic shock. Can be used to help remove disabling symptoms such as confusion."
reagent_state = LIQUID
color = "#FA46FA"
overdose_threshold = 40
@@ -55,10 +55,8 @@
/datum/reagent/medicine/synaptizine/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
M.AdjustDrowsy(-10 SECONDS)
M.AdjustParalysis(-2 SECONDS)
M.AdjustStunned(-2 SECONDS)
M.AdjustWeakened(-2 SECONDS)
M.AdjustKnockDown(-2 SECONDS)
M.AdjustConfused(-10 SECONDS)
M.AdjustDizzy(-10 SECONDS)
M.SetSleeping(0)
if(prob(50))
update_flags |= M.adjustBrainLoss(-1, FALSE)
@@ -529,6 +527,7 @@
harmless = FALSE
taste_description = "stimulation"
//super weak antistun chem, barely any downside
/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
M.AdjustDrowsy(-10 SECONDS)
@@ -693,13 +692,6 @@
/datum/reagent/medicine/epinephrine/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
M.AdjustDrowsy(-10 SECONDS)
if(prob(20))
M.AdjustParalysis(-2 SECONDS)
if(prob(20))
M.AdjustStunned(-2 SECONDS)
if(prob(20))
M.AdjustWeakened(-2 SECONDS)
M.AdjustKnockDown(-2 SECONDS)
if(prob(5))
M.SetSleeping(0)
if(prob(5))
@@ -901,6 +893,7 @@
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
..()
//the highest end antistun chem, removes stun and stamina rapidly.
/datum/reagent/medicine/stimulative_agent
name = "Stimulative Agent"
id = "stimulative_agent"
@@ -911,19 +904,16 @@
harmless = FALSE
can_synth = FALSE
/datum/reagent/medicine/stimulative_agent/on_mob_add(mob/living/L)
ADD_TRAIT(L, TRAIT_GOTTAGOFAST, id)
/datum/reagent/medicine/stimulative_agent/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
ADD_TRAIT(M, TRAIT_GOTTAGOFAST, id)
if(M.health < 50 && M.health > 0)
update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
M.AdjustParalysis(-6 SECONDS)
M.AdjustStunned(-6 SECONDS)
M.AdjustWeakened(-6 SECONDS)
M.AdjustKnockDown(-6 SECONDS)
update_flags |= M.adjustStaminaLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustStaminaLoss(-20*REAGENTS_EFFECT_MULTIPLIER, FALSE)
return ..() | update_flags
/datum/reagent/medicine/stimulative_agent/on_mob_delete(mob/living/M)
@@ -1125,11 +1115,7 @@
/datum/reagent/medicine/degreaser/on_mob_life(mob/living/M)
var/update_flags = STATUS_UPDATE_NONE
if(prob(50)) //Same effects as coffee, to help purge ill effects like paralysis
M.AdjustParalysis(-2 SECONDS)
M.AdjustStunned(-2 SECONDS)
M.AdjustWeakened(-2 SECONDS)
M.AdjustKnockDown(-2 SECONDS)
if(prob(50))
M.AdjustConfused(-10 SECONDS)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
@@ -1223,7 +1209,6 @@
update_flags |= M.adjustOxyLoss(-0.5 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustToxLoss(-0.5 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustCloneLoss(-0.1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustStaminaLoss(-0.5 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustBrainLoss(1 * REAGENTS_EFFECT_MULTIPLIER, FALSE) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that!
else
update_flags |= M.adjustBruteLoss(-5 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
@@ -1231,7 +1216,6 @@
update_flags |= M.adjustOxyLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustToxLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustCloneLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustStaminaLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
M.AdjustJitter(6 SECONDS, 0, 60 SECONDS)
update_flags |= M.adjustBrainLoss(2 * REAGENTS_EFFECT_MULTIPLIER, FALSE) //See above
M.AdjustDruggy(10 SECONDS, 0, 15 SECONDS)
@@ -50,6 +50,14 @@
C.reagents.add_reagent("toxin", 10)
C.reagents.add_reagent("neurotoxin2", 20)
/datum/chemical_reaction/pump_up
name = "pump up"
id = "pump_up"
result = "pump_up"
required_reagents = list("epinephrine" = 1, "coffee" = 2, "nicotine" = 1)
result_amount = 4
mix_message = "The mixture congeals into a black paste"
/datum/chemical_reaction/bath_salts
name = "bath_salts"
id = "bath_salts"