|
|
|
@@ -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
|
|
|
|
|