[MIRROR] /mob/living/proc/Life(delta_time) (#3509)

* /mob/living/proc/Life(delta_time)

* a

Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
This commit is contained in:
SkyratBot
2021-02-19 16:55:52 +00:00
committed by GitHub
co-authored by TemporalOroboros Gandalf2k15
parent b3802820c1
commit d0dc199815
199 changed files with 2975 additions and 2853 deletions
+5 -6
View File
@@ -591,7 +591,7 @@
* * can_overdose - Allows overdosing
* * liverless - Stops reagents that aren't set as [/datum/reagent/var/self_consuming] from metabolizing
*/
/datum/reagents/proc/metabolize(mob/living/carbon/owner, can_overdose = FALSE, liverless = FALSE)
/datum/reagents/proc/metabolize(mob/living/carbon/owner, delta_time, times_fired, can_overdose = FALSE, liverless = FALSE)
var/list/cached_reagents = reagent_list
if(owner)
expose_temperature(owner.bodytemperature, 0.25)
@@ -602,6 +602,7 @@
if(!owner)
owner = reagent.holder.my_atom
//SKYRAT EDIT ADDITION BEGIN - CUSTOMIZATION
if(ishuman(owner))
var/mob/living/carbon/human/H = owner
@@ -625,11 +626,9 @@
reagent.holder.remove_reagent(reagent.type, reagent.metabolization_rate)
continue
//SKYRAT EDIT ADDITION END
if(!owner)
owner = reagent.holder.my_atom
if(owner && reagent)
if(owner.reagent_check(reagent) != TRUE)
if(owner.reagent_check(reagent, delta_time, times_fired) != TRUE)
if(liverless && !reagent.self_consuming) //need to be metabolized
continue
if(!reagent.metabolizing)
@@ -645,9 +644,9 @@
owner.mind?.add_addiction_points(addiction, reagent.addiction_types[addiction] * REAGENTS_METABOLISM)
if(reagent.overdosed)
need_mob_update += reagent.overdose_process(owner)
need_mob_update += reagent.overdose_process(owner, delta_time, times_fired)
need_mob_update += reagent.on_mob_life(owner)
need_mob_update += reagent.on_mob_life(owner, delta_time, times_fired)
if(owner && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates.
owner.updatehealth()
owner.update_stamina()
+3 -3
View File
@@ -130,11 +130,11 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
return SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_TURF, exposed_turf, reac_volume)
/// Called from [/datum/reagents/proc/metabolize]
/datum/reagent/proc/on_mob_life(mob/living/carbon/M)
/datum/reagent/proc/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
current_cycle++
if(length(reagent_removal_skip_list))
return
holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency * delta_time) //By default it slowly disappears.
/*
Used to run functions before a reagent is transfered. Returning TRUE will block the transfer attempt.
@@ -194,7 +194,7 @@ Primarily used in reagents/reaction_agents
return
/// Called if the reagent has passed the overdose threshold and is set to be triggering overdose effects
/datum/reagent/proc/overdose_process(mob/living/M)
/datum/reagent/proc/overdose_process(mob/living/M, delta_time, times_fired)
return
/// Called when an overdose starts
@@ -40,18 +40,18 @@ All effects don't start immediately, but rather get worse over time; the rate is
addiction_types = list(/datum/addiction/alcohol = 0.05 * boozepwr)
return ..()
/datum/reagent/consumable/ethanol/on_mob_life(mob/living/carbon/C)
/datum/reagent/consumable/ethanol/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
if(C.drunkenness < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER || boozepwr < 0)
var/booze_power = boozepwr
if(HAS_TRAIT(C, TRAIT_ALCOHOL_TOLERANCE)) //we're an accomplished drinker
booze_power *= 0.7
if(HAS_TRAIT(C, TRAIT_LIGHT_DRINKER))
booze_power *= 2
C.drunkenness = max((C.drunkenness + (sqrt(volume) * booze_power * ALCOHOL_RATE)), 0) //Volume, power, and server alcohol rate effect how quickly one gets drunk
C.drunkenness = max((C.drunkenness + (sqrt(volume) * booze_power * ALCOHOL_RATE * REM * delta_time)), 0) //Volume, power, and server alcohol rate effect how quickly one gets drunk
if(boozepwr > 0)
var/obj/item/organ/liver/L = C.getorganslot(ORGAN_SLOT_LIVER)
if (istype(L))
L.applyOrganDamage(((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * L.alcohol_tolerance, 0))/150))
L.applyOrganDamage(((max(sqrt(volume) * (boozepwr ** ALCOHOL_EXPONENT) * L.alcohol_tolerance * delta_time, 0))/150))
return ..()
/datum/reagent/consumable/ethanol/expose_obj(obj/exposed_obj, reac_volume)
@@ -137,7 +137,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/beer/green/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/beer/green/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.color != color)
M.add_atom_colour(color, TEMPORARY_COLOUR_PRIORITY)
return ..()
@@ -157,14 +157,14 @@ All effects don't start immediately, but rather get worse over time; the rate is
ph = 6
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.AdjustSleeping(-40)
/datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness = max(M.dizziness - (5 * REM * delta_time), 0)
M.drowsyness = max(M.drowsyness - (3 * REM * delta_time), 0)
M.AdjustSleeping(-40 * REM * delta_time)
if(!HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE))
M.Jitter(5)
..()
. = 1
. = TRUE
/datum/reagent/consumable/ethanol/whiskey
name = "Whiskey"
@@ -199,8 +199,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
var/hal_amt = 4
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/whiskey/candycorn/on_mob_life(mob/living/carbon/M)
if(prob(10))
/datum/reagent/consumable/ethanol/whiskey/candycorn/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(5, delta_time))
M.hallucination += hal_amt //conscious dreamers can be treasurers to their own currency
..()
@@ -218,10 +218,10 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(0,M.drowsyness-7)
M.AdjustSleeping(-40)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.drowsyness = max(M.drowsyness - (7 * REM * delta_time))
M.AdjustSleeping(-40 * REM * delta_time)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
if(!HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE))
M.Jitter(5)
return ..()
@@ -231,18 +231,18 @@ All effects don't start immediately, but rather get worse over time; the rate is
M.Jitter(20)
M.Stun(15)
/datum/reagent/consumable/ethanol/thirteenloko/overdose_process(mob/living/M)
if(prob(7) && iscarbon(M))
/datum/reagent/consumable/ethanol/thirteenloko/overdose_process(mob/living/M, delta_time, times_fired)
if(DT_PROB(3.5, delta_time) && iscarbon(M))
var/obj/item/I = M.get_active_held_item()
if(I)
M.dropItemToGround(I)
to_chat(M, "<span class='notice'>Your hands jitter and you drop what you were holding!</span>")
M.Jitter(10)
if(prob(7))
if(DT_PROB(3.5, delta_time))
to_chat(M, "<span class='notice'>[pick("You have a really bad headache.", "Your eyes hurt.", "You find it hard to stay still.", "You feel your heart practically beating out of your chest.")]</span>")
if(prob(5) && iscarbon(M))
if(DT_PROB(2.5, delta_time) && iscarbon(M))
var/obj/item/organ/eyes/eyes = M.getorganslot(ORGAN_SLOT_EYES)
if(M.is_blind())
if(istype(eyes))
@@ -256,12 +256,12 @@ All effects don't start immediately, but rather get worse over time; the rate is
eyes.applyOrganDamage(eyes.maxHealth)
M.emote("scream")
if(prob(3) && iscarbon(M))
if(DT_PROB(1.5, delta_time) && iscarbon(M))
M.visible_message("<span class='danger'>[M] starts having a seizure!</span>", "<span class='userdanger'>You have a seizure!</span>")
M.Unconscious(100)
M.Jitter(350)
if(prob(1) && iscarbon(M))
if(DT_PROB(0.5, delta_time) && iscarbon(M))
var/datum/disease/D = new /datum/disease/heart_failure
M.ForceContractDisease(D)
to_chat(M, "<span class='userdanger'>You're pretty sure you just felt your heart stop for a second there..</span>")
@@ -280,8 +280,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
ph = 8.1
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/vodka/on_mob_life(mob/living/carbon/M)
M.radiation = max(M.radiation-2,0)
/datum/reagent/consumable/ethanol/vodka/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.radiation = max(M.radiation - (2 * REM * delta_time),0)
return ..()
/datum/reagent/consumable/ethanol/bilk
@@ -296,10 +296,10 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() && prob(10))
/datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.getBruteLoss() && DT_PROB(5, delta_time))
M.heal_bodypart_damage(brute = 1)
. = 1
. = TRUE
return ..() || .
/datum/reagent/consumable/ethanol/threemileisland
@@ -315,8 +315,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
ph = 3.5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/threemileisland/on_mob_life(mob/living/carbon/M)
M.set_drugginess(50)
/datum/reagent/consumable/ethanol/threemileisland/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.set_drugginess(50 * REM * delta_time)
return ..()
/datum/reagent/consumable/ethanol/gin
@@ -454,8 +454,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
shot_glass_icon_state = "shotglassgreen"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/carbon/M)
if(prob(10) && !HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE))
/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(5, delta_time) && !HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE))
M.hallucination += 4 //Reference to the urban myth
..()
@@ -471,10 +471,10 @@ All effects don't start immediately, but rather get worse over time; the rate is
addiction_types = list(/datum/addiction/alcohol = 5, /datum/addiction/maintenance_drugs = 2)
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/hooch/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/hooch/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_GREYTIDE_METABOLISM))
M.heal_bodypart_damage(brute = 1, burn = 1)
M.heal_bodypart_damage(1 * REM * delta_time, 1 * REM * delta_time)
. = TRUE
return ..() || .
@@ -592,13 +592,13 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A classic mix of rum, cola, and lime. A favorite of revolutionaries everywhere!"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.mind && M.mind.has_antag_datum(/datum/antagonist/rev)) //Cuba Libre, the traditional drink of revolutions! Heals revolutionaries.
M.adjustBruteLoss(-1, 0)
M.adjustFireLoss(-1, 0)
M.adjustToxLoss(-1, 0)
M.adjustOxyLoss(-5, 0)
. = 1
M.adjustBruteLoss(-1 * REM * delta_time, 0)
M.adjustFireLoss(-1 * REM * delta_time, 0)
M.adjustToxLoss(-1 * REM * delta_time, 0)
M.adjustOxyLoss(-5 * REM * delta_time, 0)
. = TRUE
return ..() || .
/datum/reagent/consumable/ethanol/whiskey_cola
@@ -662,11 +662,11 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
if(HAS_TRAIT(liver, TRAIT_ENGINEER_METABOLISM))
// Engineers lose radiation poisoning at a massive rate.
M.radiation = max(M.radiation - 25, 0)
M.radiation = max(M.radiation - (25 * REM * delta_time), 0)
return ..()
/datum/reagent/consumable/ethanol/booger
@@ -692,9 +692,9 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Tomato juice, mixed with Vodka and a li'l bit of lime. Tastes like liquid murder."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/C)
/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
if(C.blood_volume < BLOOD_VOLUME_NORMAL)
C.blood_volume = min(BLOOD_VOLUME_NORMAL, C.blood_volume + 3) //Bloody Mary quickly restores blood loss.
C.blood_volume = min(C.blood_volume + (3 * REM * delta_time), BLOOD_VOLUME_NORMAL) //Bloody Mary quickly restores blood loss.
..()
/datum/reagent/consumable/ethanol/brave_bull
@@ -739,7 +739,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
light_holder = new(M)
light_holder.set_light(3, 0.7, "#FFCC00") //Tequila Sunrise makes you radiate dim light, like a sunrise!
/datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(QDELETED(light_holder))
holder.del_reagent(type) //If we lost our light object somehow, remove the reagent
else if(light_holder.loc != M)
@@ -763,8 +763,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
shot_glass_icon_state = "toxinsspecialglass"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/M)
M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/M, delta_time, times_fired)
M.adjust_bodytemperature(15 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
return ..()
/datum/reagent/consumable/ethanol/beepsky_smash
@@ -773,7 +773,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
color = "#664300" // rgb: 102, 67, 0
boozepwr = 60 //THE FIST OF THE LAW IS STRONG AND HARD
quality = DRINK_GOOD
metabolization_rate = 0.5
metabolization_rate = 1.25 * REAGENTS_METABOLISM
taste_description = "JUSTICE"
glass_icon_state = "beepskysmashglass"
glass_name = "Beepsky Smash"
@@ -793,18 +793,18 @@ All effects don't start immediately, but rather get worse over time; the rate is
M.gain_trauma(B, TRAUMA_RESILIENCE_ABSOLUTE)
..()
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.Jitter(2)
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
// if you don't have a liver, or your liver isn't an officer's liver
if(!liver || !HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
M.adjustStaminaLoss(-10, 0)
if(prob(20))
M.adjustStaminaLoss(-10 * REM * delta_time, 0)
if(DT_PROB(10, delta_time))
new /datum/hallucination/items_other(M)
if(prob(10))
if(DT_PROB(5, delta_time))
new /datum/hallucination/stray_bullet(M)
..()
. = 1
. = TRUE
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_end_metabolize(mob/living/carbon/M)
if(B)
@@ -850,10 +850,10 @@ All effects don't start immediately, but rather get worse over time; the rate is
boozepwr = 50 // will still smash but not as much.
dorf_mode = TRUE
/datum/reagent/consumable/ethanol/manly_dorf/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/manly_dorf/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(dorf_mode)
M.adjustBruteLoss(-2)
M.adjustFireLoss(-2)
M.adjustBruteLoss(-2 * REM * delta_time)
M.adjustFireLoss(-2 * REM * delta_time)
return ..()
/datum/reagent/consumable/ethanol/longislandicedtea
@@ -959,8 +959,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/manhattan_proj/on_mob_life(mob/living/carbon/M)
M.set_drugginess(30)
/datum/reagent/consumable/ethanol/manhattan_proj/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.set_drugginess(30 * REM * delta_time)
return ..()
/datum/reagent/consumable/ethanol/whiskeysoda
@@ -987,8 +987,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "The ultimate refreshment."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(20 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, M.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
return ..()
/datum/reagent/consumable/ethanol/barefoot
@@ -1003,12 +1003,12 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Barefoot and pregnant."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/barefoot/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/barefoot/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(ishuman(M)) //Barefoot causes the imbiber to quickly regenerate brute trauma if they're not wearing shoes.
var/mob/living/carbon/human/H = M
if(!H.shoes)
H.adjustBruteLoss(-3, 0)
. = 1
H.adjustBruteLoss(-3 * REM * delta_time, 0)
. = TRUE
return ..() || .
/datum/reagent/consumable/ethanol/snowwhite
@@ -1109,8 +1109,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A spicy mix of Vodka and Spice. Very hot."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(50 * TEMPERATURE_DAMAGE_COEFFICIENT, 0 ,BODYTEMP_HEAT_DAMAGE_LIMIT) //310.15 is the normal bodytemp.
/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(50 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, BODYTEMP_HEAT_DAMAGE_LIMIT) //310.15 is the normal bodytemp.
return ..()
/datum/reagent/consumable/ethanol/red_mead
@@ -1149,8 +1149,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A beer so frosty, the air around it freezes."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C) //310.15 is the normal bodytemp.
/datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(-20 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, T0C) //310.15 is the normal bodytemp.
return ..()
/datum/reagent/consumable/ethanol/grog
@@ -1237,11 +1237,11 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A stingy drink."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/changelingsting/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/changelingsting/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.mind) //Changeling Sting assists in the recharging of changeling chemicals.
var/datum/antagonist/changeling/changeling = M.mind.has_antag_datum(/datum/antagonist/changeling)
if(changeling)
changeling.chem_charges += metabolization_rate
changeling.chem_charges += metabolization_rate * REM * delta_time
changeling.chem_charges = clamp(changeling.chem_charges, 0, changeling.chem_storage)
return ..()
@@ -1269,8 +1269,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A syndicate bomb."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/carbon/M)
if(prob(5))
/datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(2.5, delta_time))
playsound(get_turf(M), 'sound/effects/explosionfar.ogg', 100, TRUE)
return ..()
@@ -1324,17 +1324,17 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A drink from Clown Heaven."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
if((liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) || ismonkey(M))
M.heal_bodypart_damage(brute = 1, burn = 1)
M.heal_bodypart_damage(1 * REM * delta_time, 1 * REM * delta_time)
. = TRUE
return ..() || .
/datum/reagent/consumable/ethanol/silencer
name = "Silencer"
description = "A drink from Mime Heaven."
nutriment_factor = 1 * REAGENTS_METABOLISM
nutriment_factor = 2 * REAGENTS_METABOLISM
color = "#664300" // rgb: 102, 67, 0
boozepwr = 59 //Proof that clowns are better than mimes right here
quality = DRINK_GOOD
@@ -1344,11 +1344,11 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A drink from Mime Heaven."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(ishuman(M) && M.mind?.miming)
M.silent = max(M.silent, MIMEDRINK_SILENCE_DURATION)
M.heal_bodypart_damage(1,1)
. = 1
M.heal_bodypart_damage(1 * REM * delta_time, 1 * REM * delta_time)
. = TRUE
return ..() || .
/datum/reagent/consumable/ethanol/drunkenblumpkin
@@ -1402,7 +1402,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
for(var/obj/item/stack/ore/O in orange(3, M))
step_towards(O, get_turf(M))
return ..()
@@ -1421,14 +1421,14 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Aromatic beverage served piping hot. According to folk tales it can almost wake the dead."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/hearty_punch/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/hearty_punch/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.health <= 0)
M.adjustBruteLoss(-3, 0)
M.adjustFireLoss(-3, 0)
M.adjustCloneLoss(-5, 0)
M.adjustOxyLoss(-4, 0)
M.adjustToxLoss(-3, 0)
. = 1
M.adjustBruteLoss(-3 * REM * delta_time, 0)
M.adjustFireLoss(-3 * REM * delta_time, 0)
M.adjustCloneLoss(-5 * REM * delta_time, 0)
M.adjustOxyLoss(-4 * REM * delta_time, 0)
M.adjustToxLoss(-3 * REM * delta_time, 0)
. = TRUE
return ..() || .
/datum/reagent/consumable/ethanol/bacchus_blessing //An EXTREMELY powerful drink. Smashed in seconds, dead in minutes.
@@ -1456,22 +1456,22 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/atomicbomb/on_mob_life(mob/living/carbon/M)
M.set_drugginess(50)
/datum/reagent/consumable/ethanol/atomicbomb/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.set_drugginess(50 * REM * delta_time)
if(!HAS_TRAIT(M, TRAIT_ALCOHOL_TOLERANCE))
M.set_confusion(max(M.get_confusion()+2,0))
M.Dizzy(10)
M.set_confusion(max(M.get_confusion() + (2 * REM * delta_time),0))
M.Dizzy(10 * REM * delta_time)
if (!M.slurring)
M.slurring = 1
M.slurring += 3
M.slurring = 1 * REM * delta_time
M.slurring += 3 * REM * delta_time
switch(current_cycle)
if(51 to 200)
M.Sleeping(100)
. = 1
M.Sleeping(100 * REM * delta_time)
. = TRUE
if(201 to INFINITY)
M.AdjustSleeping(40)
M.adjustToxLoss(2, 0)
. = 1
M.AdjustSleeping(40 * REM * delta_time)
M.adjustToxLoss(2 * REM * delta_time, 0)
. = TRUE
..()
/datum/reagent/consumable/ethanol/gargle_blaster
@@ -1486,21 +1486,21 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Like having your brain smashed out by a slice of lemon wrapped around a large gold brick."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/gargle_blaster/on_mob_life(mob/living/carbon/M)
M.dizziness +=1.5
/datum/reagent/consumable/ethanol/gargle_blaster/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness += 1.5 * REM * delta_time
switch(current_cycle)
if(15 to 45)
if(!M.slurring)
M.slurring = 1
M.slurring += 3
M.slurring = 1 * REM * delta_time
M.slurring += 3 * REM * delta_time
if(45 to 55)
if(prob(50))
M.set_confusion(max(M.get_confusion()+3,0))
if(DT_PROB(30, delta_time))
M.set_confusion(max(M.get_confusion() + 3, 0))
if(55 to 200)
M.set_drugginess(55)
M.set_drugginess(55 * REM * delta_time)
if(200 to INFINITY)
M.adjustToxLoss(2, 0)
. = 1
M.adjustToxLoss(2 * REM * delta_time, 0)
. = TRUE
..()
/datum/reagent/consumable/ethanol/neurotoxin
@@ -1519,27 +1519,27 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/neurotoxin/proc/pickt()
return (pick(TRAIT_PARALYSIS_L_ARM,TRAIT_PARALYSIS_R_ARM,TRAIT_PARALYSIS_R_LEG,TRAIT_PARALYSIS_L_LEG))
/datum/reagent/consumable/ethanol/neurotoxin/on_mob_life(mob/living/carbon/M)
M.set_drugginess(50)
M.dizziness +=2
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM, 150)
if(prob(20))
/datum/reagent/consumable/ethanol/neurotoxin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.set_drugginess(50 * REM * delta_time)
M.dizziness += 2 * REM * delta_time
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1 * REM * delta_time, 150)
if(DT_PROB(10, delta_time))
M.adjustStaminaLoss(10)
M.drop_all_held_items()
to_chat(M, "<span class='notice'>You cant feel your hands!</span>")
if(current_cycle > 5)
if(prob(20))
if(DT_PROB(10, delta_time))
var/t = pickt()
ADD_TRAIT(M, t, type)
M.adjustStaminaLoss(10)
if(current_cycle > 30)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REM)
if(current_cycle > 50 && prob(15))
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * REM * delta_time)
if(current_cycle > 50 && DT_PROB(7.5, delta_time))
if(!M.undergoing_cardiac_arrest() && M.can_heartattack())
M.set_heartattack(TRUE)
if(M.stat == CONSCIOUS)
M.visible_message("<span class='userdanger'>[M] clutches at [M.p_their()] chest as if [M.p_their()] heart stopped!</span>")
. = 1
. = TRUE
..()
/datum/reagent/consumable/ethanol/neurotoxin/on_mob_end_metabolize(mob/living/carbon/M)
@@ -1564,36 +1564,36 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A drink enjoyed by people during the 1960's."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if (!M.slurring)
M.slurring = 1
M.slurring = 1 * REM * delta_time
switch(current_cycle)
if(1 to 5)
M.Dizzy(10)
M.set_drugginess(30)
if(prob(10))
M.Dizzy(10 * REM * delta_time)
M.set_drugginess(30 * REM * delta_time)
if(DT_PROB(5, delta_time))
M.emote(pick("twitch","giggle"))
if(5 to 10)
M.Jitter(20)
M.Dizzy(20)
M.set_drugginess(45)
if(prob(20))
M.Jitter(20 * REM * delta_time)
M.Dizzy(20 * REM * delta_time)
M.set_drugginess(45 * REM * delta_time)
if(DT_PROB(10, delta_time))
M.emote(pick("twitch","giggle"))
if (10 to 200)
M.Jitter(40)
M.Dizzy(40)
M.set_drugginess(60)
if(prob(30))
M.Jitter(40 * REM * delta_time)
M.Dizzy(40 * REM * delta_time)
M.set_drugginess(60 * REM * delta_time)
if(DT_PROB(16, delta_time))
M.emote(pick("twitch","giggle"))
if(200 to INFINITY)
M.Jitter(60)
M.Dizzy(60)
M.set_drugginess(75)
if(prob(40))
M.Jitter(60 * REM * delta_time)
M.Dizzy(60 * REM * delta_time)
M.set_drugginess(75 * REM * delta_time)
if(DT_PROB(23, delta_time))
M.emote(pick("twitch","giggle"))
if(prob(30))
if(DT_PROB(16, delta_time))
M.adjustToxLoss(2, 0)
. = 1
. = TRUE
..()
/datum/reagent/consumable/ethanol/eggnog
@@ -1622,9 +1622,9 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A new hit cocktail inspired by THE ARM Breweries will have you shouting Fuu ma'jin in no time!"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/narsour/on_mob_life(mob/living/carbon/M)
M.cultslurring = min(M.cultslurring + 3, 3)
M.stuttering = min(M.stuttering + 3, 3)
/datum/reagent/consumable/ethanol/narsour/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.cultslurring = min(M.cultslurring + (3 * REM * delta_time), 3)
M.stuttering = min(M.stuttering + (3 * REM * delta_time), 3)
..()
/datum/reagent/consumable/ethanol/triple_sec
@@ -1683,15 +1683,13 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "An intimidating and lawful beverage dares you to violate the law and make its day. Still can't drink it on duty, though."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
//Securidrink in line with the Screwdriver for engineers or Nothing for mimes
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
if(istype(get_area(M), /area/security)) // Skyrat edit , it checks for area now - Start
M.heal_bodypart_damage(brute = 1, burn = 1)
M.adjustBruteLoss(-2,0)
. = 1
return ..() // SKYRAT EDIT: End - This line and the above few have only indentation changes.
M.heal_bodypart_damage(1 * REM * delta_time, 1 * REM * delta_time)
M.adjustBruteLoss(-2 * REM * delta_time, 0)
. = TRUE
return ..()
/datum/reagent/consumable/ethanol/quintuple_sec
@@ -1706,16 +1704,16 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Now you are become law, destroyer of clowns."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
//Securidrink in line with the Screwdriver for engineers or Nothing for mimes but STRONG..
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
M.heal_bodypart_damage(brute = 2, burn = 2, stamina = 2)
M.adjustBruteLoss(-5,0)
M.adjustOxyLoss(-5,0)
M.adjustFireLoss(-5,0)
M.adjustToxLoss(-5,0)
. = 1
M.heal_bodypart_damage(2 * REM * delta_time, 2 * REM * delta_time, 2 * REM * delta_time)
M.adjustBruteLoss(-5 * REM * delta_time, 0)
M.adjustOxyLoss(-5 * REM * delta_time, 0)
M.adjustFireLoss(-5 * REM * delta_time, 0)
M.adjustToxLoss(-5 * REM * delta_time, 0)
. = TRUE
return ..()
/datum/reagent/consumable/ethanol/grasshopper
@@ -1749,7 +1747,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
boozepwr = 30
quality = DRINK_FANTASTIC
taste_description = "hot herbal brew with a hint of fruit"
metabolization_rate = 2 * REAGENTS_METABOLISM //0.8u per tick
metabolization_rate = 2 * REAGENTS_METABOLISM //0.4u per second
glass_icon_state = "bastion_bourbon"
glass_name = "Bastion Bourbon"
glass_desc = "If you're feeling low, count on the buttery flavor of our own bastion bourbon."
@@ -1771,13 +1769,13 @@ All effects don't start immediately, but rather get worse over time; the rate is
if(!L.stat && heal_points == 20) //brought us out of softcrit
L.visible_message("<span class='danger'>[L] lurches to [L.p_their()] feet!</span>", "<span class='boldnotice'>Up and at 'em, kid.</span>")
/datum/reagent/consumable/ethanol/bastion_bourbon/on_mob_life(mob/living/L)
/datum/reagent/consumable/ethanol/bastion_bourbon/on_mob_life(mob/living/L, delta_time, times_fired)
if(L.health > 0)
L.adjustBruteLoss(-1)
L.adjustFireLoss(-1)
L.adjustToxLoss(-0.5)
L.adjustOxyLoss(-3)
L.adjustStaminaLoss(-5)
L.adjustBruteLoss(-1 * REM * delta_time)
L.adjustFireLoss(-1 * REM * delta_time)
L.adjustToxLoss(-0.5 * REM * delta_time)
L.adjustOxyLoss(-3 * REM * delta_time)
L.adjustStaminaLoss(-5 * REM * delta_time)
. = TRUE
..()
@@ -1794,8 +1792,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
shot_glass_icon_state = "shotglassgreen"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/squirt_cider/on_mob_life(mob/living/carbon/M)
M.satiety += 5 //for context, vitamins give 30 satiety per tick
/datum/reagent/consumable/ethanol/squirt_cider/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.satiety += 5 * REM * delta_time //for context, vitamins give 15 satiety per second
..()
. = TRUE
@@ -1824,8 +1822,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "If you can't mix a Sugar Rush, you can't tend bar."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/sugar_rush/on_mob_life(mob/living/carbon/M)
M.satiety -= 10 //junky as hell! a whole glass will keep you from being able to eat junk food
/datum/reagent/consumable/ethanol/sugar_rush/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.satiety -= 10 * REM * delta_time //junky as hell! a whole glass will keep you from being able to eat junk food
..()
. = TRUE
@@ -1867,9 +1865,9 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A boozy minty hot cocoa that warms your belly on a cold night."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.apply_status_effect(/datum/status_effect/throat_soothed)
M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
M.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, M.get_body_temp_normal())
..()
/datum/reagent/consumable/ethanol/alexander
@@ -1894,7 +1892,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
to_chat(thehuman, "<span class='notice'>[theshield] appears polished, although you don't recall polishing it.</span>")
return TRUE
/datum/reagent/consumable/ethanol/alexander/on_mob_life(mob/living/L)
/datum/reagent/consumable/ethanol/alexander/on_mob_life(mob/living/L, delta_time, times_fired)
..()
if(mighty_shield && !(mighty_shield in L.contents)) //If you had a shield and lose it, you lose the reagent as well. Otherwise this is just a normal drink.
holder.remove_reagent(type)
@@ -1941,18 +1939,18 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "The only drink that comes with a label reminding you of Nanotrasen's zero-tolerance promiscuity policy."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/between_the_sheets/on_mob_life(mob/living/L)
/datum/reagent/consumable/ethanol/between_the_sheets/on_mob_life(mob/living/L, delta_time, times_fired)
..()
if(L.IsSleeping())
if(L.getBruteLoss() && L.getFireLoss()) //If you are damaged by both types, slightly increased healing but it only heals one. The more the merrier wink wink.
if(prob(50))
L.adjustBruteLoss(-0.25)
L.adjustBruteLoss(-0.25 * REM * delta_time)
else
L.adjustFireLoss(-0.25)
L.adjustFireLoss(-0.25 * REM * delta_time)
else if(L.getBruteLoss()) //If you have only one, it still heals but not as well.
L.adjustBruteLoss(-0.2)
L.adjustBruteLoss(-0.2 * REM * delta_time)
else if(L.getFireLoss())
L.adjustFireLoss(-0.2)
L.adjustFireLoss(-0.2 * REM * delta_time)
/datum/reagent/consumable/ethanol/kamikaze
name = "Kamikaze"
@@ -2000,10 +1998,10 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A glass of pure Fernet. Only an absolute madman would drink this alone." //Hi Kevum
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.nutrition <= NUTRITION_LEVEL_STARVING)
M.adjustToxLoss(1*REM, 0)
M.adjust_nutrition(-5)
M.adjustToxLoss(1 * REM * delta_time, 0)
M.adjust_nutrition(-5 * REM * delta_time)
M.overeatduration = 0
return ..()
@@ -2019,10 +2017,10 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A sawed-off cola bottle filled with Fernet Cola. Nothing better after eating like a lardass."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.nutrition <= NUTRITION_LEVEL_STARVING)
M.adjustToxLoss(0.5*REM, 0)
M.adjust_nutrition(- 3)
M.adjustToxLoss(0.5 * REM * delta_time, 0)
M.adjust_nutrition(-3 * REM * delta_time)
M.overeatduration = 0
return ..()
@@ -2039,8 +2037,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A glass of Fanciulli. It's just Manhattan with Fernet."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/fanciulli/on_mob_life(mob/living/carbon/M)
M.adjust_nutrition(-5)
/datum/reagent/consumable/ethanol/fanciulli/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_nutrition(-5 * REM * delta_time)
M.overeatduration = 0
return ..()
@@ -2064,8 +2062,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C)
/datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(-20 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, T0C)
return ..()
/datum/reagent/consumable/ethanol/branca_menta/on_mob_metabolize(mob/living/M)
@@ -2087,11 +2085,11 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A fizzy cocktail for those looking to start fresh."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/blank_paper/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/blank_paper/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(ishuman(M) && M.mind?.miming)
M.silent = max(M.silent, MIMEDRINK_SILENCE_DURATION)
M.heal_bodypart_damage(1,1)
. = 1
M.heal_bodypart_damage(1 * REM * delta_time, 1 * REM * delta_time)
. = TRUE
return ..()
/datum/reagent/consumable/ethanol/fruit_wine
@@ -2221,12 +2219,12 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "The glass bubbles and froths with an almost magical intensity."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/wizz_fizz/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/wizz_fizz/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
//A healing drink similar to Quadruple Sec, Ling Stings, and Screwdrivers for the Wizznerds; the check is consistent with the changeling sting
if(M?.mind?.has_antag_datum(/datum/antagonist/wizard))
M.heal_bodypart_damage(brute = 1, burn = 1, stamina = 1)
M.adjustOxyLoss(-1,0)
M.adjustToxLoss(-1,0)
M.heal_bodypart_damage(1 * REM * delta_time, 1 * REM * delta_time, 1 * REM * delta_time)
M.adjustOxyLoss(-1 * REM * delta_time, 0)
M.adjustToxLoss(-1 * REM * delta_time, 0)
return ..()
/datum/reagent/consumable/ethanol/bug_spray
@@ -2241,11 +2239,12 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Your eyes begin to water as the sting of alcohol reaches them."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/M)
//Bugs should not drink Bug spray.
/datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
//Bugs should not drink Bug spray.
if(ismoth(M) || isflyperson(M))
M.adjustToxLoss(1,0)
M.adjustToxLoss(1 * REM * delta_time, 0)
return ..()
/datum/reagent/consumable/ethanol/bug_spray/on_mob_metabolize(mob/living/carbon/M)
if(ismoth(M) || isflyperson(M))
@@ -2288,10 +2287,10 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A turbulent cocktail for outlaw hoverbikers."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/turbo/on_mob_life(mob/living/carbon/M)
if(prob(4))
/datum/reagent/consumable/ethanol/turbo/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(2, delta_time))
to_chat(M, "<span class='notice'>[pick("You feel disregard for the rule of law.", "You feel pumped!", "Your head is pounding.", "Your thoughts are racing..")]</span>")
M.adjustStaminaLoss(-M.drunkenness * 0.25)
M.adjustStaminaLoss(-0.25 * M.drunkenness * REM * delta_time)
return ..()
/datum/reagent/consumable/ethanol/old_timer
@@ -2306,24 +2305,22 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "WARNING! May cause premature aging!"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/old_timer/on_mob_life(mob/living/carbon/M)
if(prob(20))
if(ishuman(M))
var/mob/living/carbon/human/N = M
N.age += 1
if(N.age > 70)
N.facial_hair_color = "ccc"
N.hair_color = "ccc"
N.update_hair()
if(N.age > 100)
N.become_nearsighted(type)
if(N.gender == MALE)
N.facial_hairstyle = "Beard (Very Long)"
N.update_hair()
/datum/reagent/consumable/ethanol/old_timer/on_mob_life(mob/living/carbon/human/metabolizer, delta_time, times_fired)
if(DT_PROB(10, delta_time) && istype(metabolizer))
metabolizer.age += 1
if(metabolizer.age > 70)
metabolizer.facial_hair_color = "ccc"
metabolizer.hair_color = "ccc"
metabolizer.update_hair()
if(metabolizer.age > 100)
metabolizer.become_nearsighted(type)
if(metabolizer.gender == MALE)
metabolizer.facial_hairstyle = "Beard (Very Long)"
metabolizer.update_hair()
if(N.age > 969) //Best not let people get older than this or i might incur G-ds wrath
M.visible_message("<span class='notice'>[M] becomes older than any man should be.. and crumbles into dust!</span>")
M.dust(just_ash = FALSE, drop_items = TRUE, force = FALSE)
if(metabolizer.age > 969) //Best not let people get older than this or i might incur G-ds wrath
metabolizer.visible_message("<span class='notice'>[metabolizer] becomes older than any man should be.. and crumbles into dust!</span>")
metabolizer.dust(just_ash = FALSE, drop_items = TRUE, force = FALSE)
return ..()
@@ -2371,11 +2368,11 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "boozy Catholicism in a glass."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.mind?.holy_role)
M.adjustFireLoss(-2.5, 0)
M.jitteriness = max(0, M.jitteriness-1)
M.stuttering = max(0, M.stuttering-1)
M.adjustFireLoss(-2.5 * REM * delta_time, 0)
M.jitteriness = max(M.jitteriness - (1 * REM * delta_time), 0)
M.stuttering = max(M.stuttering - (1 * REM * delta_time), 0)
return ..()
/datum/reagent/consumable/ethanol/blazaam
@@ -2389,13 +2386,14 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "The glass seems to be sliding between realities. Doubles as a Berenstain remover."
var/stored_teleports = 0
/datum/reagent/consumable/ethanol/blazaam/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/blazaam/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.drunkenness > 40)
if(stored_teleports)
do_teleport(M, get_turf(M), rand(1,3), channel = TELEPORT_CHANNEL_WORMHOLE)
stored_teleports--
if(prob(10))
stored_teleports += rand(2,6)
if(DT_PROB(5, delta_time))
stored_teleports += rand(2, 6)
if(prob(70))
M.vomit(vomit_type = VOMIT_PURPLE)
return ..()
@@ -2423,10 +2421,10 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Lavaland in a drink... mug... volcano... thing."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/mauna_loa/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/ethanol/mauna_loa/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
// Heats the user up while the reagent is in the body. Occasionally makes you burst into flames.
M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT)
if (prob(5))
M.adjust_bodytemperature(25 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time)
if (DT_PROB(2.5, delta_time))
M.adjust_fire_stacks(1)
M.IgniteMob()
..()
@@ -2466,8 +2464,8 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "Fermented prison wine made from fruit, sugar, and despair. Security loves to confiscate this, which is the only kind thing Security has ever done."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ethanol/pruno/on_mob_life(mob/living/carbon/M)
M.adjust_disgust(5)
/datum/reagent/consumable/ethanol/pruno/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_disgust(5 * REM * delta_time)
..()
/datum/reagent/consumable/ethanol/ginger_amaretto
@@ -1,7 +1,7 @@
// Category 2 medicines are medicines that have an ill effect regardless of volume/OD to dissuade doping. Mostly used as emergency chemicals OR to convert damage (and heal a bit in the process). The type is used to prompt borgs that the medicine is harmful.
/datum/reagent/medicine/c2
harmful = TRUE
metabolization_rate = 0.2
metabolization_rate = 0.5 * REAGENTS_METABOLISM
/******BRUTE******/
/*Suffix: -bital*/
@@ -17,7 +17,7 @@
var/reaping = FALSE
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/c2/helbital/on_mob_life(mob/living/carbon/M)
/datum/reagent/medicine/c2/helbital/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
. = TRUE
var/death_is_coming = (M.getToxLoss() + M.getOxyLoss() + M.getFireLoss() + M.getBruteLoss())
var/thou_shall_heal = 0
@@ -25,16 +25,16 @@
switch(M.stat)
if(CONSCIOUS) //bad
thou_shall_heal = death_is_coming/50
M.adjustOxyLoss(2, TRUE)
M.adjustOxyLoss(2 * REM * delta_time, TRUE)
if(SOFT_CRIT) //meh convert
thou_shall_heal = round(death_is_coming/47,0.1)
M.adjustOxyLoss(1, TRUE)
M.adjustOxyLoss(1 * REM * delta_time, TRUE)
else //no convert
thou_shall_heal = round(death_is_coming/45,0.1)
thou_shall_heal = round(death_is_coming/45, 0.1)
good_kind_of_healing = TRUE
M.adjustBruteLoss(-thou_shall_heal, FALSE)
M.adjustBruteLoss(-thou_shall_heal * REM * delta_time, FALSE)
if(good_kind_of_healing && !reaping && prob(0.0001)) //janken with the grim reaper!
if(good_kind_of_healing && !reaping && DT_PROB(0.00005, delta_time)) //janken with the grim reaper!
reaping = TRUE
var/list/RockPaperScissors = list("rock" = "paper", "paper" = "scissors", "scissors" = "rock") //choice = loses to
if(M.apply_status_effect(/datum/status_effect/necropolis_curse,CURSE_BLINDING))
@@ -67,7 +67,7 @@
..()
return
/datum/reagent/medicine/c2/helbital/overdose_process(mob/living/carbon/M)
/datum/reagent/medicine/c2/helbital/overdose_process(mob/living/carbon/M, delta_time, times_fired)
if(!helbent)
M.apply_necropolis_curse(CURSE_WASTING | CURSE_BLINDING)
helbent = TRUE
@@ -87,9 +87,9 @@
reagent_state = SOLID
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/c2/libital/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.3*REM)
M.adjustBruteLoss(-3*REM)
/datum/reagent/medicine/c2/libital/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.3 * REM * delta_time)
M.adjustBruteLoss(-3 * REM * delta_time)
..()
return TRUE
@@ -101,8 +101,8 @@
overdose_threshold = 20
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/c2/probital/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(-2.25*REM, FALSE)
/datum/reagent/medicine/c2/probital/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustBruteLoss(-2.25 * REM * delta_time, FALSE)
var/ooo_youaregettingsleepy = 3.5
switch(round(M.getStaminaLoss()))
if(10 to 40)
@@ -111,14 +111,14 @@
ooo_youaregettingsleepy = 2.5
if(61 to 200) //you really can only go to 120
ooo_youaregettingsleepy = 2
M.adjustStaminaLoss(ooo_youaregettingsleepy*REM, FALSE)
M.adjustStaminaLoss(ooo_youaregettingsleepy * REM * delta_time, FALSE)
..()
. = TRUE
/datum/reagent/medicine/c2/probital/overdose_process(mob/living/M)
M.adjustStaminaLoss(3*REM, 0)
/datum/reagent/medicine/c2/probital/overdose_process(mob/living/M, delta_time, times_fired)
M.adjustStaminaLoss(3 * REM * delta_time, 0)
if(M.getStaminaLoss() >= 80)
M.drowsyness++
M.drowsyness += 1 * REM * delta_time
if(M.getStaminaLoss() >= 100)
to_chat(M,"<span class='warning'>You feel more tired than you usually do, perhaps if you rest your eyes for a bit...</span>")
M.adjustStaminaLoss(-100, TRUE)
@@ -146,9 +146,9 @@
var/spammer = 0
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/c2/lenturi/on_mob_life(mob/living/carbon/M)
M.adjustFireLoss(-3 * REM)
M.adjustOrganLoss(ORGAN_SLOT_STOMACH, 0.4 * REM)
/datum/reagent/medicine/c2/lenturi/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustFireLoss(-3 * REM * delta_time)
M.adjustOrganLoss(ORGAN_SLOT_STOMACH, 0.4 * REM * delta_time)
..()
return TRUE
@@ -169,9 +169,9 @@
var/message_cd = 0
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/c2/aiuri/on_mob_life(mob/living/carbon/M)
M.adjustFireLoss(-2*REM)
M.adjustOrganLoss(ORGAN_SLOT_EYES,0.25*REM)
/datum/reagent/medicine/c2/aiuri/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustFireLoss(-2 * REM * delta_time)
M.adjustOrganLoss(ORGAN_SLOT_EYES, 0.25 * REM * delta_time)
..()
return TRUE
@@ -184,17 +184,17 @@
reagent_weight = 0.6
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/c2/hercuri/on_mob_life(mob/living/carbon/M)
/datum/reagent/medicine/c2/hercuri/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.getFireLoss() > 50)
M.adjustFireLoss(-2*REM, FALSE)
M.adjustFireLoss(-2 * REM * delta_time, FALSE)
else
M.adjustFireLoss(-1.25*REM, FALSE)
M.adjust_bodytemperature(rand(-25,-5) * (TEMPERATURE_DAMAGE_COEFFICIENT*REM), 50)
M.adjustFireLoss(-1.25 * REM * delta_time, FALSE)
M.adjust_bodytemperature(rand(-25,-5) * TEMPERATURE_DAMAGE_COEFFICIENT * REM * delta_time, 50)
if(ishuman(M))
var/mob/living/carbon/human/humi = M
humi.adjust_coretemperature(rand(-25,-5) * (TEMPERATURE_DAMAGE_COEFFICIENT*REM), 50)
M.reagents?.chem_temp +=(-10*REM)
M.adjust_fire_stacks(-1)
humi.adjust_coretemperature(rand(-25,-5) * TEMPERATURE_DAMAGE_COEFFICIENT * REM * delta_time, 50)
M.reagents?.chem_temp += (-10 * REM * delta_time)
M.adjust_fire_stacks(-1 * REM * delta_time)
..()
. = TRUE
@@ -208,11 +208,11 @@
if(reac_volume >= metabolization_rate)
exposed_mob.extinguish_mob()
/datum/reagent/medicine/c2/hercuri/overdose_process(mob/living/carbon/M)
M.adjust_bodytemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT*REM,50) //chilly chilly
/datum/reagent/medicine/c2/hercuri/overdose_process(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * delta_time, 50) //chilly chilly
if(ishuman(M))
var/mob/living/carbon/human/humi = M
humi.adjust_coretemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT*REM,50)
humi.adjust_coretemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * delta_time, 50)
..()
@@ -228,19 +228,19 @@
overdose_threshold = 35 // at least 2 full syringes +some, this stuff is nasty if left in for long
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/c2/convermol/on_mob_life(mob/living/carbon/human/M)
var/oxycalc = 2.5*REM*current_cycle
/datum/reagent/medicine/c2/convermol/on_mob_life(mob/living/carbon/human/M, delta_time, times_fired)
var/oxycalc = 2.5 * REM * current_cycle
if(!overdosed)
oxycalc = min(oxycalc,M.getOxyLoss()+0.5) //if NOT overdosing, we lower our toxdamage to only the damage we actually healed with a minimum of 0.1*current_cycle. IE if we only heal 10 oxygen damage but we COULD have healed 20, we will only take toxdamage for the 10. We would take the toxdamage for the extra 10 if we were overdosing.
M.adjustOxyLoss(-oxycalc, 0)
M.adjustToxLoss(oxycalc/CONVERMOL_RATIO, 0)
if(prob(current_cycle) && M.losebreath)
oxycalc = min(oxycalc, M.getOxyLoss() + 0.5) //if NOT overdosing, we lower our toxdamage to only the damage we actually healed with a minimum of 0.1*current_cycle. IE if we only heal 10 oxygen damage but we COULD have healed 20, we will only take toxdamage for the 10. We would take the toxdamage for the extra 10 if we were overdosing.
M.adjustOxyLoss(-oxycalc * delta_time, 0)
M.adjustToxLoss(oxycalc * delta_time / CONVERMOL_RATIO, 0)
if(DT_PROB(current_cycle / 2, delta_time) && M.losebreath)
M.losebreath--
..()
return TRUE
/datum/reagent/medicine/c2/convermol/overdose_process(mob/living/carbon/human/M)
metabolization_rate += 1
/datum/reagent/medicine/c2/convermol/overdose_process(mob/living/carbon/human/M, delta_time, times_fired)
metabolization_rate += 2.5 * REAGENTS_METABOLISM
..()
return TRUE
@@ -250,17 +250,18 @@
name = "Tirimol"
description = "An oxygen deprivation medication that causes fatigue. Prolonged exposure causes the patient to fall asleep once the medicine metabolizes."
color = "#FF6464"
var/drowsycd = 0
/// A cooldown for spacing bursts of stamina damage
COOLDOWN_DECLARE(drowsycd)
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/c2/tirimol/on_mob_life(mob/living/carbon/human/M)
M.adjustOxyLoss(-3)
M.adjustStaminaLoss(2)
if(drowsycd && (world.time > drowsycd))
/datum/reagent/medicine/c2/tirimol/on_mob_life(mob/living/carbon/human/M, delta_time, times_fired)
M.adjustOxyLoss(-3 * REM * delta_time)
M.adjustStaminaLoss(2 * REM * delta_time)
if(drowsycd && COOLDOWN_FINISHED(src, drowsycd))
M.drowsyness += 10
drowsycd = world.time + (45 SECONDS)
COOLDOWN_START(src, drowsycd, 45 SECONDS)
else if(!drowsycd)
drowsycd = world.time + (15 SECONDS)
COOLDOWN_START(src, drowsycd, 15 SECONDS)
..()
return TRUE
@@ -282,32 +283,31 @@
. = ..()
radbonustemp = rand(radbonustemp - 50, radbonustemp + 50) // Basically this means 50K and below will always give the percent heal, and upto 150K could. Calculated once.
/datum/reagent/medicine/c2/seiver/on_mob_life(mob/living/carbon/human/M)
/datum/reagent/medicine/c2/seiver/on_mob_life(mob/living/carbon/human/M, delta_time, times_fired)
var/chemtemp = min(holder.chem_temp, 1000)
chemtemp = chemtemp ? chemtemp : 273 //why do you have null sweaty
var/healypoints = 0 //5 healypoints = 1 heart damage; 5 rads = 1 tox damage healed for the purpose of healypoints
//you're hot
var/toxcalc = min(round((chemtemp-1000)/175+5,0.1),5) //max 5 tox healing a tick
var/toxcalc = min(round(5 + ((chemtemp-1000)/175), 0.1), 5) * REM * delta_time //max 2.5 tox healing per second
if(toxcalc > 0)
M.adjustToxLoss(toxcalc*-1)
M.adjustToxLoss(-toxcalc)
healypoints += toxcalc
//and you're cold
var/radcalc = round((T0C-chemtemp)/6,0.1) //max ~45 rad loss unless you've hit below 0K. if so, wow.
var/radcalc = round((T0C-chemtemp) / 6, 0.1) * REM * delta_time //max ~45 rad loss unless you've hit below 0K. if so, wow.
if(radcalc > 0)
//no cost percent healing if you are SUPER cold (on top of cost healing)
if(chemtemp < radbonustemp*0.1) //if you're super chilly, it takes off 25% of your current rads
M.radiation = round(M.radiation * 0.75)
M.radiation = round(M.radiation * (0.75**(REM * delta_time)))
else if(chemtemp < radbonustemp)//else if you're under the chill-zone, it takes off 10% of your current rads
M.radiation = round(M.radiation * 0.9)
M.radiation = round(M.radiation * (0.90**(REM * delta_time)))
M.radiation -= radcalc
healypoints += (radcalc/5)
healypoints += (radcalc / 5)
//you're yes and... oh no!
healypoints = round(healypoints,0.1)
M.adjustOrganLoss(ORGAN_SLOT_HEART, healypoints/5)
healypoints = round(healypoints, 0.1)
M.adjustOrganLoss(ORGAN_SLOT_HEART, healypoints / 5)
..()
return TRUE
@@ -316,14 +316,15 @@
description = "A chem-purger that becomes more effective the more unique medicines present. Slightly heals toxicity but causes lung damage (mitigatable by unique medicines)."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/c2/multiver/on_mob_life(mob/living/carbon/human/M)
/datum/reagent/medicine/c2/multiver/on_mob_life(mob/living/carbon/human/M, delta_time, times_fired)
var/medibonus = 0 //it will always have itself which makes it REALLY start @ 1
for(var/r in M.reagents.reagent_list)
var/datum/reagent/the_reagent = r
if(istype(the_reagent, /datum/reagent/medicine))
medibonus += 1
M.adjustToxLoss(-0.5 * min(medibonus, 3)) //not great at healing but if you have nothing else it will work
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5) //kills at 40u
M.adjustToxLoss(-0.5 * min(medibonus, 3) * REM * delta_time) //not great at healing but if you have nothing else it will work
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5 * REM * delta_time) //kills at 40u
for(var/r2 in M.reagents.reagent_list)
var/datum/reagent/the_reagent2 = r2
if(the_reagent2 == src)
@@ -331,7 +332,7 @@
var/amount2purge = 3
if(medibonus >= 3 && istype(the_reagent2, /datum/reagent/medicine)) //3 unique meds (2+multiver) will make it not purge medicines
continue
M.reagents.remove_reagent(the_reagent2.type, amount2purge)
M.reagents.remove_reagent(the_reagent2.type, amount2purge * REM * delta_time)
..()
return TRUE
@@ -366,23 +367,23 @@
C.reagents.add_reagent(/datum/reagent/medicine/c2/musiver, conversion_amount)
..()
/datum/reagent/medicine/c2/syriniver/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.8)
M.adjustToxLoss(-1*REM, 0)
/datum/reagent/medicine/c2/syriniver/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.8 * REM * delta_time)
M.adjustToxLoss(-1 * REM * delta_time, 0)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(issyrinormusc(R))
continue
M.reagents.remove_reagent(R.type,0.4)
M.reagents.remove_reagent(R.type, 0.4 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/medicine/c2/syriniver/overdose_process(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5)
M.adjust_disgust(3)
M.reagents.add_reagent(/datum/reagent/medicine/c2/musiver, 0.225 * REM)
/datum/reagent/medicine/c2/syriniver/overdose_process(mob/living/carbon/M, delta_time, times_fired)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5 * REM * delta_time)
M.adjust_disgust(3 * REM * delta_time)
M.reagents.add_reagent(/datum/reagent/medicine/c2/musiver, 0.225 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/medicine/c2/musiver //MUScles
name = "Musiver"
@@ -394,15 +395,15 @@
var/datum/brain_trauma/mild/muscle_weakness/U
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/medicine/c2/musiver/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.1)
M.adjustToxLoss(-1*REM, 0)
/datum/reagent/medicine/c2/musiver/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.1 * REM * delta_time)
M.adjustToxLoss(-1 * REM * delta_time, 0)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(issyrinormusc(R))
continue
M.reagents.remove_reagent(R.type,0.2)
M.reagents.remove_reagent(R.type, 0.2 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/medicine/c2/musiver/overdose_start(mob/living/carbon/M)
U = new()
@@ -414,11 +415,11 @@
QDEL_NULL(U)
return ..()
/datum/reagent/medicine/c2/musiver/overdose_process(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5)
M.adjust_disgust(3)
/datum/reagent/medicine/c2/musiver/overdose_process(mob/living/carbon/M, delta_time, times_fired)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5 * REM * delta_time)
M.adjust_disgust(3 * REM * delta_time)
..()
. = 1
. = TRUE
#undef issyrinormusc
/******COMBOS******/
@@ -479,25 +480,24 @@
ADD_TRAIT(M, TRAIT_NOSOFTCRIT,type)
ADD_TRAIT(M, TRAIT_NOCRITDAMAGE,type)
/datum/reagent/medicine/c2/penthrite/on_mob_life(mob/living/carbon/human/H)
/datum/reagent/medicine/c2/penthrite/on_mob_life(mob/living/carbon/human/H, delta_time, times_fired)
H.adjustStaminaLoss(-25 * REM) //SKYRAT EDIT ADDITION - COMBAT - makes your heart beat faster, fills you with energy. For miners
H.adjustOrganLoss(ORGAN_SLOT_STOMACH,0.25)
H.adjustOrganLoss(ORGAN_SLOT_STOMACH, 0.25 * REM * delta_time)
if(H.health <= HEALTH_THRESHOLD_CRIT && H.health > (H.crit_threshold + HEALTH_THRESHOLD_FULLCRIT*2)) //we cannot save someone below our lowered crit threshold.
H.adjustToxLoss(-2 * REM, 0)
H.adjustBruteLoss(-2 * REM, 0)
H.adjustFireLoss(-2 * REM, 0)
H.adjustOxyLoss(-6 * REM, 0)
H.adjustToxLoss(-2 * REM * delta_time, 0)
H.adjustBruteLoss(-2 * REM * delta_time, 0)
H.adjustFireLoss(-2 * REM * delta_time, 0)
H.adjustOxyLoss(-6 * REM * delta_time, 0)
H.losebreath = 0
H.adjustOrganLoss(ORGAN_SLOT_HEART,max(1,volume/10)) // your heart is barely keeping up!
H.adjustOrganLoss(ORGAN_SLOT_HEART, max(volume/10, 1) * REM * delta_time) // your heart is barely keeping up!
H.Jitter(rand(0,2))
H.Dizzy(rand(0,2))
H.Jitter(rand(0, 2) * REM * delta_time)
H.Dizzy(rand(0, 2) * REM * delta_time)
if(prob(33))
if(DT_PROB(18, delta_time))
to_chat(H,"<span class='danger'>Your body is trying to give up, but your heart is still beating!</span>")
if(H.health <= (H.crit_threshold + HEALTH_THRESHOLD_FULLCRIT*2)) //certain death below this threshold
@@ -515,10 +515,10 @@
REMOVE_TRAIT(M, TRAIT_NOCRITDAMAGE,type)
. = ..()
/datum/reagent/medicine/c2/penthrite/overdose_process(mob/living/carbon/human/H)
/datum/reagent/medicine/c2/penthrite/overdose_process(mob/living/carbon/human/H, delta_time, times_fired)
REMOVE_TRAIT(H, TRAIT_STABLEHEART, type)
H.adjustStaminaLoss(10)
H.adjustOrganLoss(ORGAN_SLOT_HEART,10)
H.adjustStaminaLoss(10 * REM * delta_time)
H.adjustOrganLoss(ORGAN_SLOT_HEART, 10 * REM * delta_time)
H.set_heartattack(TRUE)
@@ -15,10 +15,10 @@
ph = 3.3
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/M)
if(M.getOxyLoss() && prob(30))
/datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.getOxyLoss() && DT_PROB(16, delta_time))
M.adjustOxyLoss(-1, 0)
. = 1
. = TRUE
..()
/datum/reagent/consumable/tomatojuice
@@ -31,10 +31,10 @@
glass_desc = "Are you sure this is tomato juice?"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/carbon/M)
if(M.getFireLoss() && prob(20))
M.heal_bodypart_damage(0,1, 0)
. = 1
/datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.getFireLoss() && DT_PROB(10, delta_time))
M.heal_bodypart_damage(0, 1, 0)
. = TRUE
..()
/datum/reagent/consumable/limejuice
@@ -48,10 +48,10 @@
ph = 2.2
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/M)
if(M.getToxLoss() && prob(20))
M.adjustToxLoss(-1*REM, 0)
. = 1
/datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.getToxLoss() && DT_PROB(10, delta_time))
M.adjustToxLoss(-1, 0)
. = TRUE
..()
/datum/reagent/consumable/carrotjuice
@@ -64,15 +64,17 @@
glass_desc = "It's just like a carrot but without crunching."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/carbon/M)
M.adjust_blurriness(-1)
M.adjust_blindness(-1)
/datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_blurriness(-1 * REM * delta_time)
M.adjust_blindness(-1 * REM * delta_time)
switch(current_cycle)
if(1 to 20)
//nothing
if(21 to INFINITY)
if(prob(current_cycle-10))
if(21 to 110)
if(DT_PROB(100 * (1 - (sqrt(110 - current_cycle) / 10)), delta_time))
M.cure_nearsighted(list(EYE_DAMAGE))
if(110 to INFINITY)
M.cure_nearsighted(list(EYE_DAMAGE))
..()
return
@@ -103,9 +105,9 @@
glass_desc = "Berry juice. Or maybe it's poison. Who cares?"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(1, 0)
. = 1
/datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustToxLoss(1 * REM * delta_time, 0)
. = TRUE
..()
/datum/reagent/consumable/watermelonjuice
@@ -139,10 +141,10 @@
glass_desc = "The raw essence of a banana. HONK."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
if((liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) || ismonkey(M))
M.heal_bodypart_damage(brute = 1, burn = 1)
M.heal_bodypart_damage(1 * REM * delta_time, 1 * REM * delta_time, 0)
. = TRUE
..()
@@ -156,11 +158,11 @@
shot_glass_icon_state = "shotglass"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/nothing/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/nothing/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(ishuman(M) && M.mind?.miming)
M.silent = max(M.silent, MIMEDRINK_SILENCE_DURATION)
M.heal_bodypart_damage(1,1)
. = 1
M.heal_bodypart_damage(1 * REM * delta_time, 1 * REM * delta_time)
. = TRUE
..()
/datum/reagent/consumable/laughter
@@ -171,7 +173,7 @@
taste_description = "laughter"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/laughter/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/laughter/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.emote("laugh")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "chemical_laughter", /datum/mood_event/chemical_laughter)
..()
@@ -184,8 +186,8 @@
taste_description = "laughter"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/superlaughter/on_mob_life(mob/living/carbon/M)
if(prob(30))
/datum/reagent/consumable/superlaughter/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(16, delta_time))
M.visible_message("<span class='danger'>[M] bursts out into a fit of uncontrollable laughter!</span>", "<span class='userdanger'>You burst out in a fit of uncontrollable laughter!</span>")
M.Stun(5)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "chemical_laughter", /datum/mood_event/chemical_superlaughter)
@@ -228,12 +230,12 @@
if(myseed)
myseed.adjust_potency(-chems.get_reagent_amount(type) * 0.5)
/datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() && prob(20))
/datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.getBruteLoss() && DT_PROB(10, delta_time))
M.heal_bodypart_damage(1,0, 0)
. = 1
. = TRUE
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 2)
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 1 * delta_time)
..()
/datum/reagent/consumable/soymilk
@@ -246,10 +248,10 @@
glass_desc = "White and nutritious soy goodness!"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() && prob(20))
M.heal_bodypart_damage(1,0, 0)
. = 1
/datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.getBruteLoss() && DT_PROB(10, delta_time))
M.heal_bodypart_damage(1, 0, 0)
. = TRUE
..()
/datum/reagent/consumable/cream
@@ -262,10 +264,10 @@
glass_desc = "Ewwww..."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/cream/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() && prob(20))
M.heal_bodypart_damage(1,0, 0)
. = 1
/datum/reagent/consumable/cream/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.getBruteLoss() && DT_PROB(10, delta_time))
M.heal_bodypart_damage(1, 0, 0)
. = TRUE
..()
/datum/reagent/consumable/coffee
@@ -280,20 +282,20 @@
glass_desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/coffee/overdose_process(mob/living/M)
M.Jitter(5)
/datum/reagent/consumable/coffee/overdose_process(mob/living/M, delta_time, times_fired)
M.Jitter(5 * REM * delta_time)
..()
/datum/reagent/consumable/coffee/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.AdjustSleeping(-40)
/datum/reagent/consumable/coffee/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness = max(M.dizziness - (5 * REM * delta_time), 0)
M.drowsyness = max(M.drowsyness - (3 * REM * delta_time), 0)
M.AdjustSleeping(-40 * REM * delta_time)
//310.15 is the normal bodytemp.
M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
M.adjust_bodytemperature(25 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, M.get_body_temp_normal())
if(holder.has_reagent(/datum/reagent/consumable/frostoil))
holder.remove_reagent(/datum/reagent/consumable/frostoil, 5)
holder.remove_reagent(/datum/reagent/consumable/frostoil, 5 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/consumable/tea
name = "Tea"
@@ -306,16 +308,16 @@
glass_desc = "Drinking it from here would not seem right."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/tea/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-2)
M.drowsyness = max(0,M.drowsyness-1)
M.jitteriness = max(0,M.jitteriness-3)
M.AdjustSleeping(-20)
if(M.getToxLoss() && prob(20))
/datum/reagent/consumable/tea/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness = max(M.dizziness - (2 * REM * delta_time), 0)
M.drowsyness = max(M.drowsyness - (1 * REM * delta_time), 0)
M.jitteriness = max(M.jitteriness - (3 * REM * delta_time), 0)
M.AdjustSleeping(-20 * REM * delta_time)
if(M.getToxLoss() && DT_PROB(10, delta_time))
M.adjustToxLoss(-1, 0)
M.adjust_bodytemperature(20 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
M.adjust_bodytemperature(20 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, M.get_body_temp_normal())
..()
. = 1
. = TRUE
/datum/reagent/consumable/lemonade
name = "Lemonade"
@@ -333,18 +335,18 @@
description = "Encourages the patient to go golfing."
color = "#FFB766"
quality = DRINK_NICE
nutriment_factor = 2
nutriment_factor = 10 * REAGENTS_METABOLISM
taste_description = "bitter tea"
glass_icon_state = "arnold_palmer"
glass_name = "Arnold Palmer"
glass_desc = "You feel like taking a few golf swings after a few swigs of this."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/carbon/M)
if(prob(5))
/datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(2.5, delta_time))
to_chat(M, "<span class='notice'>[pick("You remember to square your shoulders.","You remember to keep your head down.","You can't decide between squaring your shoulders and keeping your head down.","You remember to relax.","You think about how someday you'll get two strokes off your golf game.")]</span>")
..()
. = 1
. = TRUE
/datum/reagent/consumable/icecoffee
name = "Iced Coffee"
@@ -357,14 +359,14 @@
glass_desc = "A drink to perk you up and refresh you!"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/icecoffee/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.AdjustSleeping(-40)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
M.Jitter(5)
/datum/reagent/consumable/icecoffee/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness = max(M.dizziness - (5 * REM * delta_time), 0)
M.drowsyness = max(M.drowsyness - (3 * REM * delta_time), 0)
M.AdjustSleeping(-40 * REM * delta_time)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
M.Jitter(5 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/consumable/hot_ice_coffee
name = "Hot Ice Coffee"
@@ -377,13 +379,13 @@
glass_desc = "A sharp drink, this can't have come cheap"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/hot_ice_coffee/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.AdjustSleeping(-60)
M.adjust_bodytemperature(-7 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
M.Jitter(5)
M.adjustToxLoss(1*REM, 0)
/datum/reagent/consumable/hot_ice_coffee/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness = max(M.dizziness - (5 * REM * delta_time), 0)
M.drowsyness = max(M.drowsyness - (3 * REM * delta_time), 0)
M.AdjustSleeping(-60 * REM * delta_time)
M.adjust_bodytemperature(-7 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
M.Jitter(5 * REM * delta_time)
M.adjustToxLoss(1 * REM * delta_time, 0)
..()
. = TRUE
@@ -398,15 +400,15 @@
glass_desc = "All natural, antioxidant-rich flavour sensation."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/icetea/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-2)
M.drowsyness = max(0,M.drowsyness-1)
M.AdjustSleeping(-40)
if(M.getToxLoss() && prob(20))
/datum/reagent/consumable/icetea/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness = max(M.dizziness - (2 * REM * delta_time), 0)
M.drowsyness = max(M.drowsyness - (1 * REM * delta_time), 0)
M.AdjustSleeping(-40 * REM * delta_time)
if(M.getToxLoss() && DT_PROB(10, delta_time))
M.adjustToxLoss(-1, 0)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
. = 1
. = TRUE
/datum/reagent/consumable/space_cola
name = "Cola"
@@ -418,9 +420,9 @@
glass_desc = "A glass of refreshing Space Cola."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(0,M.drowsyness-5)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.drowsyness = max(M.drowsyness - (5 * REM * delta_time), 0)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
/datum/reagent/consumable/nuka_cola
@@ -442,15 +444,15 @@
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/nuka_cola)
..()
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M)
M.Jitter(20)
M.set_drugginess(30)
M.dizziness +=1.5
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.Jitter(20 * REM * delta_time)
M.set_drugginess(30 * REM * delta_time)
M.dizziness += 1.5 * REM * delta_time
M.drowsyness = 0
M.AdjustSleeping(-40)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
M.AdjustSleeping(-40 * REM * delta_time)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
. = 1
. = TRUE
/datum/reagent/consumable/grey_bull
name = "Grey Bull"
@@ -471,12 +473,12 @@
REMOVE_TRAIT(L, TRAIT_SHOCKIMMUNE, type)
..()
/datum/reagent/consumable/grey_bull/on_mob_life(mob/living/carbon/M)
M.Jitter(20)
M.dizziness +=1
/datum/reagent/consumable/grey_bull/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.Jitter(20 * REM * delta_time)
M.dizziness += 1 * REM * delta_time
M.drowsyness = 0
M.AdjustSleeping(-40)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
M.AdjustSleeping(-40 * REM * delta_time)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
/datum/reagent/consumable/spacemountainwind
@@ -489,13 +491,13 @@
glass_desc = "Space Mountain Wind. As you know, there are no mountains in space, only wind."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/spacemountainwind/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(0,M.drowsyness-7)
M.AdjustSleeping(-20)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
M.Jitter(5)
/datum/reagent/consumable/spacemountainwind/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.drowsyness = max(M.drowsyness - (7 * REM * delta_time), 0)
M.AdjustSleeping(-20 * REM * delta_time)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
M.Jitter(5 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/consumable/dr_gibb
name = "Dr. Gibb"
@@ -507,9 +509,9 @@
glass_desc = "Dr. Gibb. Not as dangerous as the glass_name might imply."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/carbon/M)
M.drowsyness = max(0,M.drowsyness-6)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.drowsyness = max(M.drowsyness - (6 * REM * delta_time), 0)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
/datum/reagent/consumable/space_up
@@ -523,8 +525,8 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
/datum/reagent/consumable/lemon_lime
@@ -538,8 +540,8 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
@@ -560,9 +562,9 @@
to_chat(exposed_mob, "<span class='nicegreen'>As you imbibe the Pwr Game, your gamer third eye opens... \
You feel as though a great secret of the universe has been made known to you...</span>")
/datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
if(prob(10))
/datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
if(DT_PROB(5, delta_time))
M.mind?.adjust_experience(/datum/skill/gaming, 5)
..()
@@ -576,9 +578,10 @@
glass_desc = "Mmm mm, shambly."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/shamblers/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-8 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/shamblers/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
/datum/reagent/consumable/sodawater
name = "Soda Water"
description = "A can of club soda. Why not make a scotch and soda?"
@@ -598,10 +601,10 @@
mytray.adjustWater(round(chems.get_reagent_amount(type) * 1))
mytray.adjustHealth(round(chems.get_reagent_amount(type) * 0.1))
/datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness = max(M.dizziness - (5 * REM * delta_time), 0)
M.drowsyness = max(M.drowsyness - (3 * REM * delta_time), 0)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
/datum/reagent/consumable/tonic
@@ -614,13 +617,13 @@
glass_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/tonic/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
M.AdjustSleeping(-40)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/tonic/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness = max(M.dizziness - (5 * REM * delta_time), 0)
M.drowsyness = max(M.drowsyness - (3 * REM * delta_time), 0)
M.AdjustSleeping(-40 * REM * delta_time)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
. = 1
. = TRUE
/datum/reagent/consumable/monkey_energy
name = "Monkey Energy"
@@ -633,12 +636,12 @@
glass_desc = "You can unleash the ape, but without the pop of the can?"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/monkey_energy/on_mob_life(mob/living/carbon/M)
M.Jitter(20)
M.dizziness +=1
/datum/reagent/consumable/monkey_energy/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.Jitter(40 * REM * delta_time)
M.dizziness += 1 * REM * delta_time
M.drowsyness = 0
M.AdjustSleeping(-40)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
M.AdjustSleeping(-40 * REM * delta_time)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
/datum/reagent/consumable/monkey_energy/on_mob_metabolize(mob/living/L)
@@ -650,8 +653,8 @@
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/monkey_energy)
..()
/datum/reagent/consumable/monkey_energy/overdose_process(mob/living/M)
if(prob(15))
/datum/reagent/consumable/monkey_energy/overdose_process(mob/living/M, delta_time, times_fired)
if(DT_PROB(7.5, delta_time))
M.say(pick_list_replacements(BOOMER_FILE, "boomer"), forced = /datum/reagent/consumable/monkey_energy)
..()
@@ -666,8 +669,8 @@
glass_desc = "Generally, you're supposed to put something else in there too..."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
/datum/reagent/consumable/soy_latte
@@ -681,16 +684,16 @@
glass_desc = "A nice and refreshing beverage while you're reading."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/soy_latte/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
/datum/reagent/consumable/soy_latte/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness = max(M.dizziness - (5 * REM * delta_time), 0)
M.drowsyness = max(M.drowsyness - (3 *REM * delta_time), 0)
M.SetSleeping(0)
M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
M.Jitter(5)
if(M.getBruteLoss() && prob(20))
M.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, M.get_body_temp_normal())
M.Jitter(5 * REM * delta_time)
if(M.getBruteLoss() && DT_PROB(10, delta_time))
M.heal_bodypart_damage(1,0, 0)
..()
. = 1
. = TRUE
/datum/reagent/consumable/cafe_latte
name = "Cafe Latte"
@@ -703,16 +706,16 @@
glass_desc = "A nice, strong and refreshing beverage while you're reading."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/carbon/M)
M.dizziness = max(0,M.dizziness-5)
M.drowsyness = max(0,M.drowsyness-3)
/datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.dizziness = max(M.dizziness - (5 * REM * delta_time), 0)
M.drowsyness = max(M.drowsyness - (6 * REM * delta_time), 0)
M.SetSleeping(0)
M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
M.Jitter(5)
if(M.getBruteLoss() && prob(20))
M.heal_bodypart_damage(1,0, 0)
M.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, M.get_body_temp_normal())
M.Jitter(5 * REM * delta_time)
if(M.getBruteLoss() && DT_PROB(10, delta_time))
M.heal_bodypart_damage(1, 0, 0)
..()
. = 1
. = TRUE
/datum/reagent/consumable/doctor_delight
name = "The Doctor's Delight"
@@ -725,18 +728,18 @@
glass_desc = "The space doctor's favorite. Guaranteed to restore bodily injury; side effects include cravings and hunger."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(-0.5, 0)
M.adjustFireLoss(-0.5, 0)
M.adjustToxLoss(-0.5, 0)
M.adjustOxyLoss(-0.5, 0)
/datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustBruteLoss(-0.5 * REM * delta_time, 0)
M.adjustFireLoss(-0.5 * REM * delta_time, 0)
M.adjustToxLoss(-0.5 * REM * delta_time, 0)
M.adjustOxyLoss(-0.5 * REM * delta_time, 0)
if(M.nutrition && (M.nutrition - 2 > 0))
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
if(!(HAS_TRAIT(liver, TRAIT_MEDICAL_METABOLISM)))
// Drains the nutrition of the holder. Not medical doctors though, since it's the Doctor's Delight!
M.adjust_nutrition(-2)
M.adjust_nutrition(-2 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/consumable/cherryshake
name = "Cherry Shake"
@@ -820,8 +823,8 @@
glass_desc = "It's grape (soda)!"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
/datum/reagent/consumable/milk/chocolate_milk
@@ -843,16 +846,13 @@
glass_desc = "A favorite winter drink to warm you up."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
..()
/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/M)
if(M.getBruteLoss() && prob(20))
M.heal_bodypart_damage(1,0, 0)
. = 1
/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, 0, M.get_body_temp_normal())
if(M.getBruteLoss() && DT_PROB(10, delta_time))
M.heal_bodypart_damage(1, 0, 0)
. = TRUE
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 2)
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 2 * REM * delta_time)
..()
/datum/reagent/consumable/menthol
@@ -865,7 +865,7 @@
glass_desc = "Tastes naturally minty, and imparts a very mild numbing sensation."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/menthol/on_mob_life(mob/living/L)
/datum/reagent/consumable/menthol/on_mob_life(mob/living/L, delta_time, times_fired)
L.apply_status_effect(/datum/status_effect/throat_soothed)
..()
@@ -914,8 +914,8 @@
glass_desc = "A classic space-American vanilla flavored soft drink."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
/datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
..()
/datum/reagent/consumable/sol_dry
@@ -928,8 +928,8 @@
glass_desc = "A soothing, mellow drink made from ginger."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/sol_dry/on_mob_life(mob/living/carbon/M)
M.adjust_disgust(-5)
/datum/reagent/consumable/sol_dry/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_disgust(-5 * REM * delta_time)
..()
/datum/reagent/consumable/red_queen
@@ -944,15 +944,16 @@
var/current_size = RESIZE_DEFAULT_SIZE
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/red_queen/on_mob_life(mob/living/carbon/H)
if(prob(75))
/datum/reagent/consumable/red_queen/on_mob_life(mob/living/carbon/H, delta_time, times_fired)
if(DT_PROB(50, delta_time))
return ..()
var/newsize = pick(0.5, 0.75, 1, 1.50, 2)
newsize *= RESIZE_DEFAULT_SIZE
H.resize = newsize/current_size
current_size = newsize
H.update_transform()
if(prob(40))
if(DT_PROB(23, delta_time))
H.emote("sneeze")
..()
@@ -992,8 +993,8 @@
glass_desc = "A healthy and refreshing juice."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/M)
if(M.getToxLoss() && prob(30))
/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/M, delta_time, times_fired)
if(M.getToxLoss() && DT_PROB(16, delta_time))
M.adjustToxLoss(-1, 0)
..()
. = TRUE
@@ -1010,12 +1011,12 @@
addiction_types = list(/datum/addiction/opiods = 6)
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/lean/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/lean/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.slurring < 3)
M.slurring+= 2
M.slurring += 2 * REM * delta_time
if(M.druggy < 3)
M.adjust_drugginess(1)
M.adjust_drugginess(1 * REM * delta_time)
if(M.drowsyness < 3)
M.drowsyness++
M.drowsyness += 1 * REM * delta_time
return ..()
@@ -17,13 +17,11 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
addiction_types = list(/datum/addiction/hallucinogens = 10) //4 per 2 seconds
/datum/reagent/drug/space_drugs/on_mob_life(mob/living/carbon/M)
M.set_drugginess(15)
if(isturf(M.loc) && !isspaceturf(M.loc))
if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED))
if(prob(10))
step(M, pick(GLOB.cardinals))
if(prob(7))
/datum/reagent/drug/space_drugs/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.set_drugginess(15 * REM * delta_time)
if(isturf(M.loc) && !isspaceturf(M.loc) && !HAS_TRAIT(M, TRAIT_IMMOBILIZED) && DT_PROB(5, delta_time))
step(M, pick(GLOB.cardinals))
if(DT_PROB(3.5, delta_time))
M.emote(pick("twitch","drool","moan","giggle"))
..()
@@ -31,8 +29,8 @@
to_chat(M, "<span class='userdanger'>You start tripping hard!</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name)
/datum/reagent/drug/space_drugs/overdose_process(mob/living/M)
if(M.hallucination < volume && prob(20))
/datum/reagent/drug/space_drugs/overdose_process(mob/living/M, delta_time, times_fired)
if(M.hallucination < volume && DT_PROB(10, delta_time))
M.hallucination += 5
..()
@@ -55,24 +53,24 @@
mytray.adjustToxic(round(chems.get_reagent_amount(type)))
mytray.adjustPests(-rand(1,2))
/datum/reagent/drug/nicotine/on_mob_life(mob/living/carbon/M)
if(prob(1))
/datum/reagent/drug/nicotine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(0.5, delta_time))
var/smoke_message = pick("You feel relaxed.", "You feel calmed.","You feel alert.","You feel rugged.")
to_chat(M, "<span class='notice'>[smoke_message]</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smoked", /datum/mood_event/smoked, name)
M.AdjustStun(-5)
M.AdjustKnockdown(-5)
M.AdjustUnconscious(-5)
M.AdjustParalyzed(-5)
M.AdjustImmobilized(-5)
M.AdjustStun(-50 * REM * delta_time)
M.AdjustKnockdown(-50 * REM * delta_time)
M.AdjustUnconscious(-50 * REM * delta_time)
M.AdjustParalyzed(-50 * REM * delta_time)
M.AdjustImmobilized(-50 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/drug/nicotine/overdose_process(mob/living/M)
M.adjustToxLoss(0.1*REM, 0)
M.adjustOxyLoss(1.1*REM, 0)
/datum/reagent/drug/nicotine/overdose_process(mob/living/M, delta_time, times_fired)
M.adjustToxLoss(0.1 * REM * delta_time, 0)
M.adjustOxyLoss(1.1 * REM * delta_time, 0)
..()
. = 1
. = TRUE
/datum/reagent/drug/crank
name = "Crank"
@@ -84,18 +82,26 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
addiction_types = list(/datum/addiction/stimulants = 14) //5.6 per 2 seconds
/datum/reagent/drug/crank/on_mob_life(mob/living/carbon/M)
if(prob(5))
/datum/reagent/drug/crank/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(2.5, delta_time))
var/high_message = pick("You feel jittery.", "You feel like you gotta go fast.", "You feel like you need to step it up.")
to_chat(M, "<span class='notice'>[high_message]</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "tweaking", /datum/mood_event/stimulant_medium, name)
M.AdjustStun(-20)
M.AdjustKnockdown(-20)
M.AdjustUnconscious(-20)
M.AdjustImmobilized(-20)
M.AdjustParalyzed(-20)
M.AdjustStun(-20 * REM * delta_time)
M.AdjustKnockdown(-20 * REM * delta_time)
M.AdjustUnconscious(-20 * REM * delta_time)
M.AdjustImmobilized(-20 * REM * delta_time)
M.AdjustParalyzed(-20 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/drug/crank/overdose_process(mob/living/M, delta_time, times_fired)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * REM * delta_time)
M.adjustToxLoss(2 * REM * delta_time, 0)
M.adjustBruteLoss(2 * REM * delta_time, FALSE, FALSE, BODYPART_ORGANIC)
..()
. = TRUE
/datum/reagent/drug/krokodil
name = "Krokodil"
description = "Cools and calms you down. If overdosed it will deal significant Brain and Toxin damage."
@@ -107,9 +113,9 @@
addiction_types = list(/datum/addiction/opiods = 18) //7.2 per 2 seconds
/datum/reagent/drug/krokodil/on_mob_life(mob/living/carbon/M)
/datum/reagent/drug/krokodil/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
if(prob(5))
if(DT_PROB(2.5, delta_time))
to_chat(M, "<span class='notice'>[high_message]</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smacked out", /datum/mood_event/narcotic_heavy, name)
if(current_cycle == 35 && creation_purity <= 0.6)
@@ -119,11 +125,11 @@
M.set_species(/datum/species/krokodil_addict)
..()
/datum/reagent/drug/krokodil/overdose_process(mob/living/M)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25*REM)
M.adjustToxLoss(0.25*REM, 0)
/datum/reagent/drug/krokodil/overdose_process(mob/living/M, delta_time, times_fired)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25 * REM * delta_time)
M.adjustToxLoss(0.25 * REM * delta_time, 0)
..()
. = 1
. = TRUE
@@ -146,37 +152,38 @@
L.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/methamphetamine)
..()
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M)
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.")
if(prob(5))
if(DT_PROB(2.5, delta_time))
to_chat(M, "<span class='notice'>[high_message]</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "tweaking", /datum/mood_event/stimulant_medium, name)
M.AdjustStun(-40)
M.AdjustKnockdown(-40)
M.AdjustUnconscious(-40)
M.AdjustParalyzed(-40)
M.AdjustImmobilized(-40)
M.adjustStaminaLoss(-2, 0)
M.Jitter(2)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(1,4))
if(prob(5))
M.AdjustStun(-40 * REM * delta_time)
M.AdjustKnockdown(-40 * REM * delta_time)
M.AdjustUnconscious(-40 * REM * delta_time)
M.AdjustParalyzed(-40 * REM * delta_time)
M.AdjustImmobilized(-40 * REM * delta_time)
M.adjustStaminaLoss(-2 * REM * delta_time, 0)
M.Jitter(2 * REM * delta_time)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(1, 4) * REM * delta_time)
if(DT_PROB(2.5, delta_time))
M.emote(pick("twitch", "shiver"))
..()
. = 1
. = TRUE
/datum/reagent/drug/methamphetamine/overdose_process(mob/living/M)
/datum/reagent/drug/methamphetamine/overdose_process(mob/living/M, delta_time, times_fired)
if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED) && !ismovable(M.loc))
for(var/i in 1 to 4)
for(var/i in 1 to round(4 * REM * delta_time, 1))
step(M, pick(GLOB.cardinals))
if(prob(20))
if(DT_PROB(10, delta_time))
M.emote("laugh")
if(prob(33))
if(DT_PROB(18, delta_time))
M.visible_message("<span class='danger'>[M]'s hands flip out and flail everywhere!</span>")
M.drop_all_held_items()
..()
M.adjustToxLoss(1, 0)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, pick(0.5, 0.6, 0.7, 0.8, 0.9, 1))
. = 1
M.adjustToxLoss(1 * REM * delta_time, 0)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, (rand(5, 10) / 10) * REM * delta_time)
. = TRUE
/datum/reagent/drug/bath_salts
name = "Bath Salts"
description = "Makes you impervious to stuns and grants a stamina regeneration buff, but you will be a nearly uncontrollable tramp-bearded raving lunatic."
@@ -205,28 +212,28 @@
QDEL_NULL(rage)
..()
/datum/reagent/drug/bath_salts/on_mob_life(mob/living/carbon/M)
/datum/reagent/drug/bath_salts/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.")
if(prob(5))
if(DT_PROB(2.5, delta_time))
to_chat(M, "<span class='notice'>[high_message]</span>")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "salted", /datum/mood_event/stimulant_heavy, name)
M.adjustStaminaLoss(-5, 0)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4)
M.hallucination += 5
M.adjustStaminaLoss(-5 * REM * delta_time, 0)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4 * REM * delta_time)
M.hallucination += 5 * REM * delta_time
if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED) && !ismovable(M.loc))
step(M, pick(GLOB.cardinals))
step(M, pick(GLOB.cardinals))
..()
. = 1
. = TRUE
/datum/reagent/drug/bath_salts/overdose_process(mob/living/M)
M.hallucination += 5
/datum/reagent/drug/bath_salts/overdose_process(mob/living/M, delta_time, times_fired)
M.hallucination += 5 * REM * delta_time
if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED) && !ismovable(M.loc))
for(var/i in 1 to 8)
for(var/i in 1 to round(8 * REM * delta_time, 1))
step(M, pick(GLOB.cardinals))
if(prob(20))
if(DT_PROB(10, delta_time))
M.emote(pick("twitch","drool","moan"))
if(prob(33))
if(DT_PROB(28, delta_time))
M.drop_all_held_items()
..()
@@ -238,17 +245,17 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
addiction_types = list(/datum/addiction/stimulants = 8)
/datum/reagent/drug/aranesp/on_mob_life(mob/living/carbon/M)
/datum/reagent/drug/aranesp/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.")
if(prob(5))
if(DT_PROB(2.5, delta_time))
to_chat(M, "<span class='notice'>[high_message]</span>")
M.adjustStaminaLoss(-18, 0)
M.adjustToxLoss(0.5, 0)
if(prob(50))
M.adjustStaminaLoss(-18 * REM * delta_time, 0)
M.adjustToxLoss(0.5 * REM * delta_time, 0)
if(DT_PROB(30, delta_time))
M.losebreath++
M.adjustOxyLoss(1, 0)
..()
. = 1
. = TRUE
/datum/reagent/drug/happiness
name = "Happiness"
@@ -270,16 +277,16 @@
SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "happiness_drug")
..()
/datum/reagent/drug/happiness/on_mob_life(mob/living/carbon/M)
/datum/reagent/drug/happiness/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.jitteriness = 0
M.set_confusion(0)
M.disgust = 0
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.2)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.2 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/drug/happiness/overdose_process(mob/living/M)
if(prob(30))
/datum/reagent/drug/happiness/overdose_process(mob/living/M, delta_time, times_fired)
if(DT_PROB(16, delta_time))
var/reaction = rand(1,3)
switch(reaction)
if(1)
@@ -291,9 +298,9 @@
if(3)
M.emote("frown")
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "happiness_drug", /datum/mood_event/happiness_drug_bad_od)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/drug/pumpup
name = "Pump-Up"
@@ -313,30 +320,30 @@
REMOVE_TRAIT(L, TRAIT_STUNRESISTANCE, type)
..()
/datum/reagent/drug/pumpup/on_mob_life(mob/living/carbon/M)
M.Jitter(5)
/datum/reagent/drug/pumpup/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.Jitter(5 * REM * delta_time)
if(prob(5))
if(DT_PROB(2.5, delta_time))
to_chat(M, "<span class='notice'>[pick("Go! Go! GO!", "You feel ready...", "You feel invincible...")]</span>")
if(prob(15))
if(DT_PROB(7.5, delta_time))
M.losebreath++
M.adjustToxLoss(2, 0)
..()
. = 1
. = TRUE
/datum/reagent/drug/pumpup/overdose_start(mob/living/M)
to_chat(M, "<span class='userdanger'>You can't stop shaking, your heart beats faster and faster...</span>")
/datum/reagent/drug/pumpup/overdose_process(mob/living/M)
M.Jitter(5)
if(prob(5))
/datum/reagent/drug/pumpup/overdose_process(mob/living/M, delta_time, times_fired)
M.Jitter(5 * REM * delta_time)
if(DT_PROB(2.5, delta_time))
M.drop_all_held_items()
if(prob(15))
if(DT_PROB(7.5, delta_time))
M.emote(pick("twitch","drool"))
if(prob(20))
if(DT_PROB(10, delta_time))
M.losebreath++
M.adjustStaminaLoss(4, 0)
if(prob(15))
if(DT_PROB(7.5, delta_time))
M.adjustToxLoss(2, 0)
..()
@@ -355,22 +362,22 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
addiction_types = list(/datum/addiction/maintenance_drugs = 14)
/datum/reagent/drug/maint/powder/on_mob_life(mob/living/carbon/M)
/datum/reagent/drug/maint/powder/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
. = ..()
M.adjustOrganLoss(ORGAN_SLOT_BRAIN,0.1)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.1 * REM * delta_time)
// 5x if you want to OD, you can potentially go higher, but good luck managing the brain damage.
var/amt = max(1,round(volume/3,0.1))
var/amt = max(round(volume/3, 0.1), 1)
M?.mind?.experience_multiplier_reasons |= type
M?.mind?.experience_multiplier_reasons[type] = amt
M?.mind?.experience_multiplier_reasons[type] = amt * REM * delta_time
/datum/reagent/drug/maint/powder/on_mob_end_metabolize(mob/living/M)
. = ..()
M?.mind?.experience_multiplier_reasons[type] = null
M?.mind?.experience_multiplier_reasons -= type
/datum/reagent/drug/maint/powder/overdose_process(mob/living/M)
/datum/reagent/drug/maint/powder/overdose_process(mob/living/M, delta_time, times_fired)
. = ..()
M.adjustOrganLoss(ORGAN_SLOT_BRAIN,3)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 6 * REM * delta_time)
/datum/reagent/drug/maint/sludge
name = "Maintenance Sludge"
@@ -387,22 +394,22 @@
. = ..()
ADD_TRAIT(L,TRAIT_HARDLY_WOUNDED,type)
/datum/reagent/drug/maint/sludge/on_mob_life(mob/living/carbon/M)
/datum/reagent/drug/maint/sludge/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
. = ..()
M.adjustToxLoss(0.5)
M.adjustToxLoss(0.5 * REM * delta_time)
/datum/reagent/drug/maint/sludge/on_mob_end_metabolize(mob/living/M)
. = ..()
REMOVE_TRAIT(M,TRAIT_HARDLY_WOUNDED,type)
/datum/reagent/drug/maint/sludge/overdose_process(mob/living/M)
/datum/reagent/drug/maint/sludge/overdose_process(mob/living/M, delta_time, times_fired)
. = ..()
if(!iscarbon(M))
return
var/mob/living/carbon/carbie = M
//You will be vomiting so the damage is really for a few ticks before you flush it out of your system
carbie.adjustToxLoss(1)
if(prob(10))
carbie.adjustToxLoss(1 * REM * delta_time)
if(DT_PROB(5, delta_time))
carbie.adjustToxLoss(5)
carbie.vomit()
@@ -415,18 +422,18 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
addiction_types = list(/datum/addiction/maintenance_drugs = 5)
/datum/reagent/drug/maint/tar/on_mob_life(mob/living/carbon/M)
/datum/reagent/drug/maint/tar/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
. = ..()
M.AdjustStun(-10)
M.AdjustKnockdown(-10)
M.AdjustUnconscious(-10)
M.AdjustParalyzed(-10)
M.AdjustImmobilized(-10)
M.adjustOrganLoss(ORGAN_SLOT_LIVER,1.5)
M.AdjustStun(-10 * REM * delta_time)
M.AdjustKnockdown(-10 * REM * delta_time)
M.AdjustUnconscious(-10 * REM * delta_time)
M.AdjustParalyzed(-10 * REM * delta_time)
M.AdjustImmobilized(-10 * REM * delta_time)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5 * REM * delta_time)
/datum/reagent/drug/maint/tar/overdose_process(mob/living/M)
/datum/reagent/drug/maint/tar/overdose_process(mob/living/M, delta_time, times_fired)
. = ..()
M.adjustToxLoss(5)
M.adjustOrganLoss(ORGAN_SLOT_LIVER,3)
M.adjustToxLoss(5 * REM * delta_time)
M.adjustOrganLoss(ORGAN_SLOT_LIVER, 3 * REM * delta_time)
@@ -11,6 +11,7 @@
name = "Consumable"
taste_description = "generic food"
taste_mult = 4
/// How much nutrition this reagent supplies
var/nutriment_factor = 1 * REAGENTS_METABOLISM
var/quality = 0 //affects mood, typically higher for mixed drinks with more complex recipes
impure_chem = /datum/reagent/water
@@ -18,15 +19,15 @@
inverse_chem = /datum/reagent/water
failed_chem = /datum/reagent/consumable/nutriment
/datum/reagent/consumable/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
current_cycle++
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!HAS_TRAIT(H, TRAIT_NOHUNGER))
H.adjust_nutrition(nutriment_factor)
H.adjust_nutrition(nutriment_factor * REM * delta_time)
if(length(reagent_removal_skip_list))
return
holder.remove_reagent(type, metabolization_rate)
holder.remove_reagent(type, metabolization_rate * delta_time)
/datum/reagent/consumable/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)
. = ..()
@@ -64,10 +65,10 @@
if(chems.has_reagent(type, 1))
mytray.adjustHealth(round(chems.get_reagent_amount(type) * 0.2))
/datum/reagent/consumable/nutriment/on_mob_life(mob/living/carbon/M)
if(prob(50))
/datum/reagent/consumable/nutriment/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(30, delta_time))
M.heal_bodypart_damage(brute = brute_heal, burn = burn_heal)
. = 1
. = TRUE
..()
/datum/reagent/consumable/nutriment/on_new(list/supplied_data)
@@ -116,9 +117,9 @@
brute_heal = 1
burn_heal = 1
/datum/reagent/consumable/nutriment/vitamin/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/nutriment/vitamin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.satiety < 600)
M.satiety += 30
M.satiety += 30 * REM * delta_time
. = ..()
/// The basic resource of vat growing.
@@ -212,12 +213,12 @@
/datum/reagent/consumable/sugar/overdose_start(mob/living/M)
to_chat(M, "<span class='userdanger'>You go into hyperglycaemic shock! Lay off the twinkies!</span>")
M.AdjustSleeping(600)
. = 1
. = TRUE
/datum/reagent/consumable/sugar/overdose_process(mob/living/M)
M.AdjustSleeping(40)
/datum/reagent/consumable/sugar/overdose_process(mob/living/M, delta_time, times_fired)
M.AdjustSleeping(40 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/consumable/virus_food
name = "Virus Food"
@@ -258,28 +259,28 @@
taste_mult = 1.5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/capsaicin/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/capsaicin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/heating = 0
switch(current_cycle)
if(1 to 15)
heating = 5 * TEMPERATURE_DAMAGE_COEFFICIENT
heating = 5
if(holder.has_reagent(/datum/reagent/cryostylane))
holder.remove_reagent(/datum/reagent/cryostylane, 5)
holder.remove_reagent(/datum/reagent/cryostylane, 5 * REM * delta_time)
if(isslime(M))
heating = rand(5,20)
heating = rand(5, 20)
if(15 to 25)
heating = 10 * TEMPERATURE_DAMAGE_COEFFICIENT
heating = 10
if(isslime(M))
heating = rand(10,20)
heating = rand(10, 20)
if(25 to 35)
heating = 15 * TEMPERATURE_DAMAGE_COEFFICIENT
heating = 15
if(isslime(M))
heating = rand(15,20)
heating = rand(15, 20)
if(35 to INFINITY)
heating = 20 * TEMPERATURE_DAMAGE_COEFFICIENT
heating = 20
if(isslime(M))
heating = rand(20,25)
M.adjust_bodytemperature(heating)
heating = rand(20, 25)
M.adjust_bodytemperature(heating * TEMPERATURE_DAMAGE_COEFFICIENT * REM * delta_time)
..()
/datum/reagent/consumable/frostoil
@@ -290,32 +291,32 @@
ph = 13 //HMM! I wonder
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/frostoil/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/frostoil/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/cooling = 0
switch(current_cycle)
if(1 to 15)
cooling = -10 * TEMPERATURE_DAMAGE_COEFFICIENT
cooling = -10
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5)
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5 * REM * delta_time)
if(isslime(M))
cooling = -rand(5,20)
cooling = -rand(5, 20)
if(15 to 25)
cooling = -20 * TEMPERATURE_DAMAGE_COEFFICIENT
cooling = -20
if(isslime(M))
cooling = -rand(10,20)
cooling = -rand(10, 20)
if(25 to 35)
cooling = -30 * TEMPERATURE_DAMAGE_COEFFICIENT
cooling = -30
if(prob(1))
M.emote("shiver")
if(isslime(M))
cooling = -rand(15,20)
cooling = -rand(15, 20)
if(35 to INFINITY)
cooling = -40 * TEMPERATURE_DAMAGE_COEFFICIENT
cooling = -40
if(prob(5))
M.emote("shiver")
if(isslime(M))
cooling = -rand(20,25)
M.adjust_bodytemperature(cooling, 50)
cooling = -rand(20, 25)
M.adjust_bodytemperature(cooling * TEMPERATURE_DAMAGE_COEFFICIENT * REM * delta_time, 50)
..()
/datum/reagent/consumable/frostoil/expose_turf(turf/exposed_turf, reac_volume)
@@ -372,9 +373,9 @@
if(prob(5))
victim.vomit()
/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(!holder.has_reagent(/datum/reagent/consumable/milk))
if(prob(10))
if(DT_PROB(5, delta_time))
M.visible_message("<span class='warning'>[M] [pick("dry heaves!","coughs!","splutters!")]</span>")
..()
@@ -421,26 +422,26 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
addiction_types = list(/datum/addiction/hallucinogens = 12)
/datum/reagent/drug/mushroomhallucinogen/on_mob_life(mob/living/carbon/M)
/datum/reagent/drug/mushroomhallucinogen/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(!M.slurring)
M.slurring = 1
M.slurring = 1 * REM * delta_time
switch(current_cycle)
if(1 to 5)
M.Dizzy(5)
M.set_drugginess(30)
if(prob(10))
M.Dizzy(5 * REM * delta_time)
M.set_drugginess(30 * REM * delta_time)
if(DT_PROB(5, delta_time))
M.emote(pick("twitch","giggle"))
if(5 to 10)
M.Jitter(10)
M.Dizzy(10)
M.set_drugginess(35)
if(prob(20))
M.Jitter(10 * REM * delta_time)
M.Dizzy(10 * REM * delta_time)
M.set_drugginess(35 * REM * delta_time)
if(DT_PROB(10, delta_time))
M.emote(pick("twitch","giggle"))
if (10 to INFINITY)
M.Jitter(20)
M.Dizzy(20)
M.set_drugginess(40)
if(prob(30))
M.Jitter(20 * REM * delta_time)
M.Dizzy(20 * REM * delta_time)
M.set_drugginess(40 * REM * delta_time)
if(DT_PROB(16, delta_time))
M.emote(pick("twitch","giggle"))
..()
@@ -452,18 +453,18 @@
metabolization_rate = 0.15 * REAGENTS_METABOLISM
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/garlic/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/garlic/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(isvampire(M)) //incapacitating but not lethal. Unfortunately, vampires cannot vomit.
if(prob(min(25,current_cycle)))
if(DT_PROB(min(current_cycle/2, 12.5), delta_time))
to_chat(M, "<span class='danger'>You can't get the scent of garlic out of your nose! You can barely think...</span>")
M.Paralyze(10)
M.Jitter(10)
else
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_CULINARY_METABOLISM))
if(prob(20)) //stays in the system much longer than sprinkles/banana juice, so heals slower to partially compensate
if(DT_PROB(10, delta_time)) //stays in the system much longer than sprinkles/banana juice, so heals slower to partially compensate
M.heal_bodypart_damage(brute = 1, burn = 1)
. = 1
. = TRUE
..()
/datum/reagent/consumable/sprinkles
@@ -473,11 +474,11 @@
taste_description = "childhood whimsy"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
M.heal_bodypart_damage(brute = 1, burn = 1)
. = 1
M.heal_bodypart_damage(1 * REM * delta_time, 1 * REM * delta_time, 0)
. = TRUE
..()
/datum/reagent/consumable/cornoil
@@ -532,8 +533,8 @@
taste_description = "your imprisonment"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/carbon/M)
M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal())
/datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * delta_time, 0, M.get_body_temp_normal())
..()
/datum/reagent/consumable/hell_ramen
@@ -544,8 +545,8 @@
taste_description = "wet and cheap noodles on fire"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/hell_ramen/on_mob_life(mob/living/carbon/target_mob)
target_mob.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT)
/datum/reagent/consumable/hell_ramen/on_mob_life(mob/living/carbon/target_mob, delta_time, times_fired)
target_mob.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * delta_time)
..()
/datum/reagent/consumable/flour
@@ -619,8 +620,8 @@
taste_description = "sweet slime"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/carbon/M)
holder.add_reagent(/datum/reagent/consumable/sugar, 3)
/datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
holder.add_reagent(/datum/reagent/consumable/sugar, 3 * REM * delta_time)
..()
/datum/reagent/consumable/honey
@@ -642,13 +643,13 @@
mytray.adjustWeeds(rand(1,2))
mytray.adjustPests(rand(1,2))
/datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M)
holder.add_reagent(/datum/reagent/consumable/sugar,3)
if(prob(55))
M.adjustBruteLoss(-1*REM, 0)
M.adjustFireLoss(-1*REM, 0)
M.adjustOxyLoss(-1*REM, 0)
M.adjustToxLoss(-1*REM, 0)
/datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
holder.add_reagent(/datum/reagent/consumable/sugar, 3 * REM * delta_time)
if(DT_PROB(33, delta_time))
M.adjustBruteLoss(-1, 0)
M.adjustFireLoss(-1, 0)
M.adjustOxyLoss(-1, 0)
M.adjustToxLoss(-1, 0)
..()
/datum/reagent/consumable/honey/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)
@@ -696,11 +697,11 @@
exposed_mob.blind_eyes(2)
exposed_mob.blur_eyes(5)
/datum/reagent/consumable/tearjuice/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/tearjuice/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
..()
if(M.eye_blurry) //Don't worsen vision if it was otherwise fine
M.blur_eyes(4)
if(prob(10))
M.blur_eyes(4 * REM * delta_time)
if(DT_PROB(5, delta_time))
to_chat(M, "<span class='warning'>Your eyes sting!</span>")
M.blind_eyes(2)
@@ -713,9 +714,9 @@
color = "#664330" // rgb: 102, 67, 48
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/nutriment/stabilized/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/nutriment/stabilized/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.nutrition > NUTRITION_LEVEL_FULL - 25)
M.adjust_nutrition(-3*nutriment_factor)
M.adjust_nutrition(-3 * REM * nutriment_factor * delta_time)
..()
////Lavaland Flora Reagents////
@@ -729,11 +730,11 @@
ph = 12
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/entpoly/on_mob_life(mob/living/carbon/M)
/datum/reagent/consumable/entpoly/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(current_cycle >= 10)
M.Unconscious(40, 0)
. = 1
if(prob(20))
M.Unconscious(40 * REM * delta_time, FALSE)
. = TRUE
if(DT_PROB(10, delta_time))
M.losebreath += 4
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REM, 150)
M.adjustToxLoss(3*REM,0)
@@ -786,10 +787,10 @@
ph = 10.4
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/vitfro/on_mob_life(mob/living/carbon/M)
if(prob(80))
M.adjustBruteLoss(-1*REM, 0)
M.adjustFireLoss(-1*REM, 0)
/datum/reagent/consumable/vitfro/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(55, delta_time))
M.adjustBruteLoss(-1, 0)
M.adjustFireLoss(-1, 0)
. = TRUE
..()
@@ -821,8 +822,8 @@
if(istype(stomach))
stomach.adjust_charge(reac_volume * REM * 20)
/datum/reagent/consumable/liquidelectricity/on_mob_life(mob/living/carbon/M)
if(prob(25) && !isethereal(M)) //lmao at the newbs who eat energy bars
/datum/reagent/consumable/liquidelectricity/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(13, delta_time) && !isethereal(M)) //lmao at the newbs who eat energy bars
M.electrocute_act(rand(10,15), "Liquid Electricity in their body", 1, SHOCK_NOGLOVES) //the shock is coming from inside the house
playsound(M, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
return ..()
@@ -839,11 +840,11 @@
overdose_threshold = 17
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/astrotame/overdose_process(mob/living/carbon/M)
/datum/reagent/consumable/astrotame/overdose_process(mob/living/carbon/M, delta_time, times_fired)
if(M.disgust < 80)
M.adjust_disgust(10)
M.adjust_disgust(10 * REM * delta_time)
..()
. = 1
. = TRUE
/datum/reagent/consumable/secretsauce
name = "Secret Sauce"
@@ -886,8 +887,8 @@
overdose_threshold = 15
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/char/overdose_process(mob/living/M)
if(prob(25))
/datum/reagent/consumable/char/overdose_process(mob/living/M, delta_time, times_fired)
if(DT_PROB(13, delta_time))
M.say(pick_list_replacements(BOOMER_FILE, "boomer"), forced = /datum/reagent/consumable/char)
..()
return
@@ -11,12 +11,12 @@
ph = 3
overdose_threshold = 0 //So that they're shown as a problem (?)
/datum/reagent/impurity/on_mob_life(mob/living/carbon/C)
/datum/reagent/impurity/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
var/obj/item/organ/liver/L = C.getorganslot(ORGAN_SLOT_LIVER)
if(!L)//Though, lets be safe
C.adjustToxLoss(1, FALSE)//Incase of no liver!
C.adjustToxLoss(1 * REM * delta_time, FALSE)//Incase of no liver!
return ..()
C.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.5*REM)
C.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.5 * REM * delta_time)
return ..()
/datum/reagent/impurity/toxic
@@ -24,8 +24,8 @@
description = "Toxic chemical isomers made from impure reactions. Causes toxin damage"
ph = 2
/datum/reagent/impurity/toxic/on_mob_life(mob/living/carbon/C)
C.adjustToxLoss(1, FALSE)
/datum/reagent/impurity/toxic/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
C.adjustToxLoss(1 * REM * delta_time, FALSE)
return ..()
//technically not a impure chem, but it's here because it can only be made with a failed impure reaction
File diff suppressed because it is too large Load Diff
@@ -2,7 +2,7 @@
data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null,"quirks"=null)
name = "Blood"
color = "#C80000" // rgb: 200, 0, 0
metabolization_rate = 5 //fast rate so it disappears fast.
metabolization_rate = 12.5 * REAGENTS_METABOLISM //fast rate so it disappears fast.
taste_description = "iron"
taste_mult = 1.3
glass_icon_state = "glass_red"
@@ -201,10 +201,10 @@
if(methods & TOUCH)
exposed_mob.extinguish_mob() // extinguish removes all fire stacks
/datum/reagent/water/on_mob_life(mob/living/carbon/M)
/datum/reagent/water/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
. = ..()
if(M.blood_volume)
M.blood_volume += 0.1 // water is good for you!
M.blood_volume += 0.1 * REM * delta_time // water is good for you!
///For weird backwards situations where water manages to get added to trays nutrients, as opposed to being snowflaked away like usual.
/datum/reagent/water/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray)
@@ -237,38 +237,39 @@
if(iscultist(exposed_mob))
to_chat(exposed_mob, "<span class='userdanger'>A vile holiness begins to spread its shining tendrils through your mind, purging the Geometer of Blood's influence!</span>")
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M)
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.blood_volume)
M.blood_volume += 0.1 // water is good for you!
M.blood_volume += 0.1 * REM * delta_time // water is good for you!
if(!data)
data = list("misc" = 1)
data["misc"]++
M.jitteriness = min(M.jitteriness+4,10)
data = list("misc" = 0)
data["misc"] += delta_time SECONDS * REM
M.jitteriness = min(M.jitteriness + (2 * delta_time), 10)
if(iscultist(M))
for(var/datum/action/innate/cult/blood_magic/BM in M.actions)
to_chat(M, "<span class='cultlarge'>Your blood rites falter as holy water scours your body!</span>")
for(var/datum/action/innate/cult/blood_spell/BS in BM.spells)
qdel(BS)
if(data["misc"] >= 25) // 10 units, 45 seconds @ metabolism 0.4 units & tick rate 1.8 sec
if(data["misc"] >= (25 SECONDS)) // 10 units
if(!M.stuttering)
M.stuttering = 1
M.stuttering = min(M.stuttering+4, 10)
M.stuttering = min(M.stuttering + (2 * delta_time), 10)
M.Dizzy(5)
if(iscultist(M) && prob(20))
if(iscultist(M) && DT_PROB(10, delta_time))
M.say(pick("Av'te Nar'Sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","R'ge Na'sie","Diabo us Vo'iscum","Eld' Mon Nobis"), forced = "holy water")
if(prob(10))
M.visible_message("<span class='danger'>[M] starts having a seizure!</span>", "<span class='userdanger'>You have a seizure!</span>")
M.Unconscious(120)
M.Unconscious(12 SECONDS)
to_chat(M, "<span class='cultlarge'>[pick("Your blood is your bond - you are nothing without it", "Do not forget your place", \
"All that power, and you still fail?", "If you cannot scour this poison, I shall scour your meager life!")].</span>")
if(data["misc"] >= 60) // 30 units, 135 seconds
if(data["misc"] >= (1 MINUTES)) // 24 units
if(iscultist(M))
SSticker.mode.remove_cultist(M.mind, FALSE, TRUE)
M.jitteriness = 0
M.stuttering = 0
holder.remove_reagent(type, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better??
return
holder.remove_reagent(type, 0.4) //fixed consumption to prevent balancing going out of whack
holder.remove_reagent(type, 1 * REAGENTS_METABOLISM * delta_time) //fixed consumption to prevent balancing going out of whack
/datum/reagent/water/holywater/expose_turf(turf/exposed_turf, reac_volume)
. = ..()
@@ -330,28 +331,28 @@
name = "Unholy Water"
description = "Something that shouldn't exist on this plane of existence."
taste_description = "suffering"
metabolization_rate = 2.5 * REAGENTS_METABOLISM //1u/tick
metabolization_rate = 2.5 * REAGENTS_METABOLISM //0.5u/second
penetrates_skin = TOUCH|VAPOR
ph = 6.5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/fuel/unholywater/on_mob_life(mob/living/carbon/M)
/datum/reagent/fuel/unholywater/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(iscultist(M))
M.drowsyness = max(M.drowsyness-5, 0)
M.AdjustAllImmobility(-40)
M.adjustStaminaLoss(-10, 0)
M.adjustToxLoss(-2, 0)
M.adjustOxyLoss(-2, 0)
M.adjustBruteLoss(-2, 0)
M.adjustFireLoss(-2, 0)
M.drowsyness = max(M.drowsyness - (5* REM * delta_time), 0)
M.AdjustAllImmobility(-40 *REM* REM * delta_time)
M.adjustStaminaLoss(-10 * REM * delta_time, 0)
M.adjustToxLoss(-2 * REM * delta_time, 0)
M.adjustOxyLoss(-2 * REM * delta_time, 0)
M.adjustBruteLoss(-2 * REM * delta_time, 0)
M.adjustFireLoss(-2 * REM * delta_time, 0)
if(ishuman(M) && M.blood_volume < BLOOD_VOLUME_NORMAL)
M.blood_volume += 3
M.blood_volume += 3 * REM * delta_time
else // Will deal about 90 damage when 50 units are thrown
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150)
M.adjustToxLoss(2, 0)
M.adjustFireLoss(2, 0)
M.adjustOxyLoss(2, 0)
M.adjustBruteLoss(2, 0)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3 * REM * delta_time, 150)
M.adjustToxLoss(1 * REM * delta_time, 0)
M.adjustFireLoss(1 * REM * delta_time, 0)
M.adjustOxyLoss(1 * REM * delta_time, 0)
M.adjustBruteLoss(1 * REM * delta_time, 0)
..()
/datum/reagent/hellwater //if someone has this in their system they've really pissed off an eldrich god
@@ -361,13 +362,13 @@
ph = 0.1
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/hellwater/on_mob_life(mob/living/carbon/M)
M.set_fire_stacks(min(5, M.fire_stacks + 3))
/datum/reagent/hellwater/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.set_fire_stacks(min(M.fire_stacks + (1.5 * delta_time), 5))
M.IgniteMob() //Only problem with igniting people is currently the commonly available fire suits make you immune to being on fire
M.adjustToxLoss(1, 0)
M.adjustFireLoss(1, 0) //Hence the other damages... ain't I a bastard?
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 150)
holder.remove_reagent(type, 1)
M.adjustToxLoss(0.5*delta_time, 0)
M.adjustFireLoss(0.5*delta_time, 0) //Hence the other damages... ain't I a bastard?
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2.5*delta_time, 150)
holder.remove_reagent(type, 0.5*delta_time)
/datum/reagent/medicine/omnizine/godblood
name = "Godblood"
@@ -470,7 +471,7 @@
to_chat(exposed_mob, "<span class='notice'>That tasted horrible.</span>")
/datum/reagent/spraytan/overdose_process(mob/living/M)
/datum/reagent/spraytan/overdose_process(mob/living/M, delta_time, times_fired)
metabolization_rate = 1 * REAGENTS_METABOLISM
if(ishuman(M))
@@ -487,12 +488,12 @@
else if(MUTCOLORS in N.dna.species.species_traits) //Aliens with custom colors simply get turned orange
N.dna.features["mcolor"] = "f80"
N.regenerate_icons()
if(prob(7))
if(DT_PROB(3.5, delta_time))
if(N.w_uniform)
M.visible_message(pick("<b>[M]</b>'s collar pops up without warning.</span>", "<b>[M]</b> flexes [M.p_their()] arms."))
else
M.visible_message("<b>[M]</b> flexes [M.p_their()] arms.")
if(prob(10))
if(DT_PROB(5, delta_time))
M.say(pick("Shit was SO cash.", "You are everything bad in the world.", "What sports do you play, other than 'jack off to naked drawn Japanese people?'", "Don???t be a stranger. Just hit me with your best shot.", "My name is John and I hate every single one of you."), forced = /datum/reagent/spraytan)
..()
return
@@ -505,7 +506,7 @@
name = "Stable Mutation Toxin"
description = "A humanizing toxin."
color = "#5EFF3B" //RGB: 94, 255, 59
metabolization_rate = 0.2 //metabolizes to prevent micro-dosage
metabolization_rate = 0.5 * REAGENTS_METABOLISM //metabolizes to prevent micro-dosage
taste_description = "slime"
var/race = /datum/species/human
var/list/mutationtexts = list( "You don't feel very well." = MUT_MSG_IMMEDIATE,
@@ -515,14 +516,14 @@
"You feel as though you're about to change at any moment!" = MUT_MSG_ABOUT2TURN)
var/cycles_to_turn = 20 //the current_cycle threshold / iterations needed before one can transform
/datum/reagent/mutationtoxin/on_mob_life(mob/living/carbon/human/H)
/datum/reagent/mutationtoxin/on_mob_life(mob/living/carbon/human/H, delta_time, times_fired)
. = TRUE
if(!istype(H))
return
if(!(H.dna?.species) || !(H.mob_biotypes & MOB_ORGANIC))
return
if(prob(10))
if(DT_PROB(5, delta_time))
var/list/pick_ur_fav = list()
var/filter = NONE
if(current_cycle <= (cycles_to_turn*0.3))
@@ -600,7 +601,7 @@
taste_description = "grandma's gelatin"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/mutationtoxin/jelly/on_mob_life(mob/living/carbon/human/H)
/datum/reagent/mutationtoxin/jelly/on_mob_life(mob/living/carbon/human/H, delta_time, times_fired)
if(isjellyperson(H))
to_chat(H, "<span class='warning'>Your jelly shifts and morphs, turning you into another subspecies!</span>")
var/species_type = pick(subtypesof(/datum/species/jelly))
@@ -695,7 +696,7 @@
taste_description = "slime"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/mulligan/on_mob_life(mob/living/carbon/human/H)
/datum/reagent/mulligan/on_mob_life(mob/living/carbon/human/H, delta_time, times_fired)
..()
if (!istype(H))
return
@@ -736,9 +737,9 @@
ph = 10
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/serotrotium/on_mob_life(mob/living/carbon/M)
/datum/reagent/serotrotium/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(ishuman(M))
if(prob(7))
if(DT_PROB(3.5, delta_time))
M.emote(pick("twitch","drool","moan","gasp"))
..()
@@ -816,12 +817,12 @@
taste_mult = 0 // apparently tasteless.
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/mercury/on_mob_life(mob/living/carbon/M)
/datum/reagent/mercury/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(!HAS_TRAIT(src, TRAIT_IMMOBILIZED) && !isspaceturf(M.loc))
step(M, pick(GLOB.cardinals))
if(prob(5))
if(DT_PROB(3.5, delta_time))
M.emote(pick("twitch","drool","moan"))
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5*delta_time)
..()
/datum/reagent/sulfur
@@ -872,9 +873,9 @@
// White Phosphorous + water -> phosphoric acid. That's not a good thing really.
/datum/reagent/chlorine/on_mob_life(mob/living/carbon/M)
M.take_bodypart_damage(1*REM, 0, 0, 0)
. = 1
/datum/reagent/chlorine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.take_bodypart_damage(0.5*REM*delta_time, 0, 0, 0)
. = TRUE
..()
/datum/reagent/fluorine
@@ -895,9 +896,9 @@
mytray.adjustWater(-round(chems.get_reagent_amount(src.type) * 0.5))
mytray.adjustWeeds(-rand(1,4))
/datum/reagent/fluorine/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(1*REM, 0)
. = 1
/datum/reagent/fluorine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustToxLoss(0.5*REM*delta_time, 0)
. = TRUE
..()
/datum/reagent/sodium
@@ -935,10 +936,10 @@
ph = 11.3
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/lithium/on_mob_life(mob/living/carbon/M)
/datum/reagent/lithium/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(!HAS_TRAIT(M, TRAIT_IMMOBILIZED) && !isspaceturf(M.loc))
step(M, pick(GLOB.cardinals))
if(prob(5))
if(DT_PROB(2.5, delta_time))
M.emote(pick("twitch","drool","moan"))
..()
@@ -977,9 +978,9 @@
color = "#606060" //pure iron? let's make it violet of course
ph = 6
/datum/reagent/iron/on_mob_life(mob/living/carbon/C)
/datum/reagent/iron/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
if(C.blood_volume < BLOOD_VOLUME_NORMAL)
C.blood_volume += 0.5
C.blood_volume += 0.25 * delta_time
..()
/datum/reagent/gold
@@ -1006,13 +1007,13 @@
reagent_state = SOLID
color = "#5E9964" //this used to be silver, but liquid uranium can still be green and it's more easily noticeable as uranium like this so why bother?
taste_description = "the inside of a reactor"
var/irradiation_level = 1
var/irradiation_level = 0.5*REM
ph = 4
material = /datum/material/uranium
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/uranium/on_mob_life(mob/living/carbon/M)
M.apply_effect(irradiation_level/M.metabolism_efficiency,EFFECT_IRRADIATE,0)
/datum/reagent/uranium/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.apply_effect(irradiation_level*delta_time/M.metabolism_efficiency, EFFECT_IRRADIATE,0)
..()
/datum/reagent/uranium/expose_turf(turf/exposed_turf, reac_volume)
@@ -1040,7 +1041,7 @@
reagent_state = SOLID
color = "#00CC00" // ditto
taste_description = "the colour blue and regret"
irradiation_level = 2*REM
irradiation_level = 1*REM
material = null
ph = 10
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -1066,8 +1067,8 @@
if(methods & (TOUCH|VAPOR))
do_teleport(exposed_mob, get_turf(exposed_mob), (reac_volume / 5), asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) //4 tiles per crystal
/datum/reagent/bluespace/on_mob_life(mob/living/carbon/M)
if(current_cycle > 10 && prob(15))
/datum/reagent/bluespace/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(current_cycle > 10 && DT_PROB(7.5, delta_time))
to_chat(M, "<span class='warning'>You feel unstable...</span>")
M.Jitter(2)
current_cycle = 1
@@ -1113,8 +1114,8 @@
if(methods & (TOUCH|VAPOR))
exposed_mob.adjust_fire_stacks(reac_volume / 10)
/datum/reagent/fuel/on_mob_life(mob/living/carbon/M)
M.adjustToxLoss(1, 0)
/datum/reagent/fuel/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustToxLoss(0.5*delta_time, 0)
..()
return TRUE
@@ -1162,10 +1163,10 @@
ph = 2
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/space_cleaner/ez_clean/on_mob_life(mob/living/carbon/M)
M.adjustBruteLoss(3.33)
M.adjustFireLoss(3.33)
M.adjustToxLoss(3.33)
/datum/reagent/space_cleaner/ez_clean/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustBruteLoss(1.665*delta_time)
M.adjustFireLoss(1.665*delta_time)
M.adjustToxLoss(1.665*delta_time)
..()
/datum/reagent/space_cleaner/ez_clean/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)
@@ -1183,7 +1184,7 @@
ph = 11.9
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/cryptobiolin/on_mob_life(mob/living/carbon/M)
/datum/reagent/cryptobiolin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.Dizzy(1)
M.set_confusion(clamp(M.get_confusion(), 1, 20))
..()
@@ -1197,13 +1198,13 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
addiction_types = list(/datum/addiction/opiods = 10)
/datum/reagent/impedrezene/on_mob_life(mob/living/carbon/M)
M.jitteriness = max(M.jitteriness-5,0)
if(prob(80))
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REM)
if(prob(50))
/datum/reagent/impedrezene/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.jitteriness = max(M.jitteriness - (2.5*delta_time),0)
if(DT_PROB(55, delta_time))
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2)
if(DT_PROB(30, delta_time))
M.drowsyness = max(M.drowsyness, 3)
if(prob(10))
if(DT_PROB(5, delta_time))
M.emote("drool")
..()
@@ -1355,12 +1356,12 @@
if(methods & VAPOR)
exposed_mob.drowsyness += max(round(reac_volume, 1), 2)
/datum/reagent/nitrous_oxide/on_mob_life(mob/living/carbon/M)
M.drowsyness += 2
/datum/reagent/nitrous_oxide/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.drowsyness += 2 * REM * delta_time
if(ishuman(M))
var/mob/living/carbon/human/H = M
H.blood_volume = max(H.blood_volume - 10, 0)
if(prob(20))
H.blood_volume = max(H.blood_volume - (10 * REM * delta_time), 0)
if(DT_PROB(10, delta_time))
M.losebreath += 2
M.set_confusion(min(M.get_confusion() + 2, 5))
..()
@@ -1386,9 +1387,9 @@
REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type)
..()
/datum/reagent/stimulum/on_mob_life(mob/living/carbon/M)
M.adjustStaminaLoss(-2*REM, 0)
M.adjustToxLoss(current_cycle*0.1*REM, 0) // 1 toxin damage per cycle at cycle 10
/datum/reagent/stimulum/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustStaminaLoss(-2 * REM * delta_time, 0)
M.adjustToxLoss(0.1 * current_cycle * REM * delta_time, 0) // 1 toxin damage per cycle at cycle 10
..()
/datum/reagent/nitryl
@@ -1462,11 +1463,11 @@
L.SetSleeping(10)
return ..()
/datum/reagent/healium/on_mob_life(mob/living/L)
/datum/reagent/healium/on_mob_life(mob/living/L, delta_time, times_fired)
. = ..()
L.adjustFireLoss(-2, FALSE)
L.adjustToxLoss(-5, FALSE)
L.adjustBruteLoss(-2, FALSE)
L.adjustFireLoss(-2 * REM * delta_time, FALSE)
L.adjustToxLoss(-5 * REM * delta_time, FALSE)
L.adjustBruteLoss(-2 * REM * delta_time, FALSE)
/datum/reagent/halon
name = "Halon"
@@ -1628,17 +1629,17 @@
taste_description = "plant food"
ph = 3
/datum/reagent/plantnutriment/on_mob_life(mob/living/carbon/M)
if(prob(tox_prob))
M.adjustToxLoss(1*REM, 0)
. = 1
/datum/reagent/plantnutriment/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(tox_prob, delta_time))
M.adjustToxLoss(1, 0)
. = TRUE
..()
/datum/reagent/plantnutriment/eznutriment
name = "E-Z-Nutrient"
description = "Contains electrolytes. It's what plants crave."
color = "#376400" // RBG: 50, 100, 0
tox_prob = 10
tox_prob = 5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/plantnutriment/eznutriment/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray)
@@ -1652,7 +1653,7 @@
name = "Left 4 Zed"
description = "Unstable nutriment that makes plants mutate more often than usual."
color = "#1A1E4D" // RBG: 26, 30, 77
tox_prob = 25
tox_prob = 13
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/plantnutriment/left4zednutriment/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray)
@@ -1665,7 +1666,7 @@
name = "Robust Harvest"
description = "Very potent nutriment that slows plants from mutating."
color = "#9D9D00" // RBG: 157, 157, 0
tox_prob = 15
tox_prob = 8
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/plantnutriment/robustharvestnutriment/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray)
@@ -1679,7 +1680,7 @@
name = "Enduro Grow"
description = "A specialized nutriment, which decreases product quantity and potency, but strengthens the plants endurance."
color = "#a06fa7" // RBG: 160, 111, 167
tox_prob = 15
tox_prob = 8
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/plantnutriment/endurogrow/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray)
@@ -1693,7 +1694,7 @@
name = "Liquid Earthquake"
description = "A specialized nutriment, which increases the plant's production speed, as well as it's susceptibility to weeds."
color = "#912e00" // RBG: 145, 46, 0
tox_prob = 25
tox_prob = 13
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/plantnutriment/liquidearthquake/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray)
@@ -1726,8 +1727,8 @@
ph = 1.5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/stable_plasma/on_mob_life(mob/living/carbon/C)
C.adjustPlasma(10)
/datum/reagent/stable_plasma/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
C.adjustPlasma(10 * REM * delta_time)
..()
/datum/reagent/iodine
@@ -1814,20 +1815,20 @@
name = "Royal Carpet?"
description = "For those that break the game and need to make an issue report."
/datum/reagent/carpet/royal/on_mob_life(mob/living/carbon/M)
/datum/reagent/carpet/royal/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
. = ..()
var/obj/item/organ/liver/liver = M.getorganslot(ORGAN_SLOT_LIVER)
if(liver)
// Heads of staff and the captain have a "royal metabolism"
if(HAS_TRAIT(liver, TRAIT_ROYAL_METABOLISM))
if(prob(10))
if(DT_PROB(5, delta_time))
to_chat(M, "You feel like royalty.")
if(prob(5))
if(DT_PROB(2.5, delta_time))
M.say(pick("Peasants..","This carpet is worth more than your contracts!","I could fire you at any time..."), forced = "royal carpet")
// The quartermaster, as a semi-head, has a "pretender royal" metabolism
else if(HAS_TRAIT(liver, TRAIT_PRETENDER_ROYAL_METABOLISM))
if(prob(15))
if(DT_PROB(8, delta_time))
to_chat(M, "You feel like an impostor...")
/datum/reagent/carpet/royal/black
@@ -1938,7 +1939,7 @@
/datum/reagent/colorful_reagent/proc/UpdateColor()
color = pick(random_color_list)
/datum/reagent/colorful_reagent/on_mob_life(mob/living/carbon/M)
/datum/reagent/colorful_reagent/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(can_colour_mobs)
M.add_atom_colour(pick(random_color_list), WASHABLE_COLOUR_PRIORITY)
return ..()
@@ -2151,8 +2152,8 @@
ph = 3
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/carbon/M)
if(prob(2))
/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(1, delta_time))
M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz..."), forced = "royal bee jelly")
..()
@@ -2185,7 +2186,7 @@
color = "#00f041"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/magillitis/on_mob_life(mob/living/carbon/M)
/datum/reagent/magillitis/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
..()
if((ishuman(M)) && current_cycle >= 10)
M.gorillize()
@@ -2198,7 +2199,7 @@
taste_description = "bitterness" // apparently what viagra tastes like
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/growthserum/on_mob_life(mob/living/carbon/H)
/datum/reagent/growthserum/on_mob_life(mob/living/carbon/H, delta_time, times_fired)
var/newsize = current_size
switch(volume)
if(0 to 19)
@@ -2299,11 +2300,11 @@
..()
REMOVE_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type)
/datum/reagent/bz_metabolites/on_mob_life(mob/living/L)
/datum/reagent/bz_metabolites/on_mob_life(mob/living/L, delta_time, times_fired)
if(L.mind)
var/datum/antagonist/changeling/changeling = L.mind.has_antag_datum(/datum/antagonist/changeling)
if(changeling)
changeling.chem_charges = max(changeling.chem_charges-2, 0)
changeling.chem_charges = max(changeling.chem_charges - (2 * REM * delta_time), 0)
return ..()
/datum/reagent/pax/peaceborg
@@ -2319,12 +2320,12 @@
taste_description = "dizziness"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/peaceborg/confuse/on_mob_life(mob/living/carbon/M)
/datum/reagent/peaceborg/confuse/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.get_confusion() < 6)
M.set_confusion(clamp(M.get_confusion() + 3, 0, 5))
M.set_confusion(clamp(M.get_confusion() + (3 * REM * delta_time), 0, 5))
if(M.dizziness < 6)
M.dizziness = clamp(M.dizziness + 3, 0, 5)
if(prob(20))
M.dizziness = clamp(M.dizziness + (3 * REM * delta_time), 0, 5)
if(DT_PROB(10, delta_time))
to_chat(M, "You feel confused and disoriented.")
..()
@@ -2335,11 +2336,11 @@
taste_description = "tiredness"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/peaceborg/tire/on_mob_life(mob/living/carbon/M)
/datum/reagent/peaceborg/tire/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/healthcomp = (100 - M.health) //DOES NOT ACCOUNT FOR ADMINBUS THINGS THAT MAKE YOU HAVE MORE THAN 200/210 HEALTH, OR SOMETHING OTHER THAN A HUMAN PROCESSING THIS.
if(M.getStaminaLoss() < (45 - healthcomp)) //At 50 health you would have 200 - 150 health meaning 50 compensation. 60 - 50 = 10, so would only do 10-19 stamina.)
M.adjustStaminaLoss(10)
if(prob(30))
M.adjustStaminaLoss(10 * REM * delta_time)
if(DT_PROB(16, delta_time))
to_chat(M, "You should sit down and take a rest...")
..()
@@ -2382,9 +2383,9 @@
#define YUCK_PUKE_CYCLES 3 // every X cycle is a puke
#define YUCK_PUKES_TO_STUN 3 // hit this amount of pukes in a row to start stunning
/datum/reagent/yuck/on_mob_life(mob/living/carbon/C)
/datum/reagent/yuck/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
if(!yuck_cycle)
if(prob(8))
if(DT_PROB(4, delta_time))
var/dread = pick("Something is moving in your stomach...", \
"A wet growl echoes from your stomach...", \
"For a moment you feel like your surroundings are moving, but it's your stomach...")
@@ -2518,7 +2519,7 @@
description = "For when you need to push on a little more. Do NOT allow near plants."
reagent_state = LIQUID
color = "#D2FFFA"
metabolization_rate = 0.75 * REAGENTS_METABOLISM // 5u (WOUND_DETERMINATION_CRITICAL) will last for ~17 ticks
metabolization_rate = 0.75 * REAGENTS_METABOLISM // 5u (WOUND_DETERMINATION_CRITICAL) will last for ~34 seconds
self_consuming = TRUE
/// Whether we've had at least WOUND_DETERMINATION_SEVERE (2.5u) of determination at any given time. No damage slowdown immunity or indication we're having a second wind if it's just a single moderate wound
var/significant = FALSE
@@ -2533,7 +2534,7 @@
M.remove_status_effect(STATUS_EFFECT_DETERMINED)
..()
/datum/reagent/determination/on_mob_life(mob/living/carbon/M)
/datum/reagent/determination/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(!significant && volume >= WOUND_DETERMINATION_SEVERE)
significant = TRUE
M.apply_status_effect(STATUS_EFFECT_DETERMINED) // in addition to the slight healing, limping cooldowns are divided by 4 during the combat high
@@ -2544,8 +2545,8 @@
var/datum/wound/W = thing
var/obj/item/bodypart/wounded_part = W.limb
if(wounded_part)
wounded_part.heal_damage(0.25, 0.25)
M.adjustStaminaLoss(-0.25*REM) // the more wounds, the more stamina regen
wounded_part.heal_damage(0.25 * REM * delta_time, 0.25 * REM * delta_time)
M.adjustStaminaLoss(-0.25 * REM * delta_time) // the more wounds, the more stamina regen
..()
/datum/reagent/eldritch //unholy water, but for eldritch cultists. why couldn't they have both just used the same reagent? who knows. maybe nar'sie is considered to be too "mainstream" of a god to worship in the cultist community.
@@ -2553,25 +2554,25 @@
description = "A strange liquid that defies the laws of physics. It re-energizes and heals those who can see beyond this fragile reality, but is incredibly harmful to the closed-minded. It metabolizes very quickly."
taste_description = "Ag'hsj'saje'sh"
color = "#1f8016"
metabolization_rate = 2.5 * REAGENTS_METABOLISM //1u/tick
metabolization_rate = 2.5 * REAGENTS_METABOLISM //0.5u/second
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/eldritch/on_mob_life(mob/living/carbon/M)
/datum/reagent/eldritch/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(IS_HERETIC(M))
M.drowsyness = max(M.drowsyness-5, 0)
M.AdjustAllImmobility(-40)
M.adjustStaminaLoss(-10, FALSE)
M.adjustToxLoss(-2, FALSE)
M.adjustOxyLoss(-2, FALSE)
M.adjustBruteLoss(-2, FALSE)
M.adjustFireLoss(-2, FALSE)
M.drowsyness = max(M.drowsyness - (5 * REM * delta_time), 0)
M.AdjustAllImmobility(-40 * REM * delta_time)
M.adjustStaminaLoss(-10 * REM * delta_time, FALSE)
M.adjustToxLoss(-2 * REM * delta_time, FALSE)
M.adjustOxyLoss(-2 * REM * delta_time, FALSE)
M.adjustBruteLoss(-2 * REM * delta_time, FALSE)
M.adjustFireLoss(-2 * REM * delta_time, FALSE)
if(ishuman(M) && M.blood_volume < BLOOD_VOLUME_NORMAL)
M.blood_volume += 3
M.blood_volume += 3 * REM * delta_time
else
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150)
M.adjustToxLoss(2, FALSE)
M.adjustFireLoss(2, FALSE)
M.adjustOxyLoss(2, FALSE)
M.adjustBruteLoss(2, FALSE)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3 * REM * delta_time, 150)
M.adjustToxLoss(2 * REM * delta_time, FALSE)
M.adjustFireLoss(2 * REM * delta_time, FALSE)
M.adjustOxyLoss(2 * REM * delta_time, FALSE)
M.adjustBruteLoss(2 * REM * delta_time, FALSE)
..()
@@ -12,8 +12,8 @@
if(reac_volume >= 1)
exposed_turf.AddComponent(/datum/component/thermite, reac_volume)
/datum/reagent/thermite/on_mob_life(mob/living/carbon/M)
M.adjustFireLoss(1, 0)
/datum/reagent/thermite/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustFireLoss(1 * REM * delta_time, 0)
..()
return TRUE
@@ -43,15 +43,14 @@
description = "Makes a temporary 3x3 fireball when it comes into existence, so be careful when mixing. ClF3 applied to a surface burns things that wouldn't otherwise burn, sometimes through the very floors of the station and exposing it to the vacuum of space."
reagent_state = LIQUID
color = "#FFC8C8"
metabolization_rate = 4
metabolization_rate = 10 * REAGENTS_METABOLISM
taste_description = "burning"
penetrates_skin = NONE
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/clf3/on_mob_life(mob/living/carbon/M)
M.adjust_fire_stacks(2)
var/burndmg = max(0.3*M.fire_stacks, 0.3)
M.adjustFireLoss(burndmg, 0)
/datum/reagent/clf3/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_fire_stacks(2 * REM * delta_time)
M.adjustFireLoss(0.3 * max(M.fire_stacks, 1) * REM * delta_time, 0)
..()
return TRUE
@@ -100,18 +99,18 @@
description = "Explodes. Violently."
reagent_state = LIQUID
color = "#000000"
metabolization_rate = 0.05
metabolization_rate = 0.125 * REAGENTS_METABOLISM
taste_description = "salt"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/gunpowder/on_mob_life(mob/living/carbon/M)
/datum/reagent/gunpowder/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
. = TRUE
..()
if(!isplasmaman(M))
return
M.set_drugginess(15)
M.set_drugginess(15 * REM * delta_time)
if(M.hallucination < volume)
M.hallucination += 5
M.hallucination += 5 * REM * delta_time
/datum/reagent/gunpowder/on_ex_act()
var/location = get_turf(holder.my_atom)
@@ -176,10 +175,9 @@
exposed_mob.adjustFireLoss(burndmg, 0)
exposed_mob.IgniteMob()
/datum/reagent/phlogiston/on_mob_life(mob/living/carbon/exposed_mob)
exposed_mob.adjust_fire_stacks(1)
var/burndmg = max(0.3*exposed_mob.fire_stacks, 0.3)
exposed_mob.adjustFireLoss(burndmg, 0)
/datum/reagent/phlogiston/on_mob_life(mob/living/carbon/metabolizer, delta_time, times_fired)
metabolizer.adjust_fire_stacks(1 * REM * delta_time)
metabolizer.adjustFireLoss(0.3 * max(metabolizer.fire_stacks, 0.15) * REM * delta_time, 0)
..()
return TRUE
@@ -202,8 +200,8 @@
mytray.adjustToxic(round(chems.get_reagent_amount(type) * 7))
mytray.adjustWeeds(-rand(5,9)) //At least give them a small reward if they bother.
/datum/reagent/napalm/on_mob_life(mob/living/carbon/M)
M.adjust_fire_stacks(1)
/datum/reagent/napalm/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_fire_stacks(1 * REM * delta_time)
..()
/datum/reagent/napalm/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)
@@ -221,13 +219,13 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube
/datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M, delta_time, times_fired) //TODO: code freezing into an ice cube
if(M.reagents.has_reagent(/datum/reagent/oxygen))
M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5)
M.adjust_bodytemperature(-15)
M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5 * REM * delta_time)
M.adjust_bodytemperature(-15 * REM * delta_time)
if(ishuman(M))
var/mob/living/carbon/human/humi = M
humi.adjust_coretemperature(-15)
humi.adjust_coretemperature(-15 * REM * delta_time)
..()
/datum/reagent/cryostylane/expose_turf(turf/exposed_turf, reac_volume)
@@ -246,13 +244,13 @@
self_consuming = TRUE
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M)
/datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(holder.has_reagent(/datum/reagent/oxygen))
holder.remove_reagent(/datum/reagent/oxygen, 0.5)
M.adjust_bodytemperature(15)
holder.remove_reagent(/datum/reagent/oxygen, 0.5 * REM * delta_time)
M.adjust_bodytemperature(15 * REM * delta_time)
if(ishuman(M))
var/mob/living/carbon/human/humi = M
humi.adjust_coretemperature(15)
humi.adjust_coretemperature(15 * REM * delta_time)
..()
/datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective.
@@ -266,11 +264,11 @@
var/shock_timer = 0
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/teslium/on_mob_life(mob/living/carbon/M)
/datum/reagent/teslium/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
shock_timer++
if(shock_timer >= rand(5,30)) //Random shocks are wildly unpredictable
if(shock_timer >= rand(5, 30)) //Random shocks are wildly unpredictable
shock_timer = 0
M.electrocute_act(rand(5,20), "Teslium in their body", 1, SHOCK_NOGLOVES) //SHOCK_NOGLOVES because it's caused from INSIDE of you
M.electrocute_act(rand(5, 20), "Teslium in their body", 1, SHOCK_NOGLOVES) //SHOCK_NOGLOVES because it's caused from INSIDE of you
playsound(M, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
..()
@@ -294,15 +292,15 @@
taste_description = "jelly"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/carbon/M)
/datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(isjellyperson(M))
shock_timer = 0 //immune to shocks
M.AdjustAllImmobility(-40)
M.adjustStaminaLoss(-2, 0)
M.AdjustAllImmobility(-40 *REM * delta_time)
M.adjustStaminaLoss(-2 * REM * delta_time, 0)
if(isluminescent(M))
var/mob/living/carbon/human/H = M
var/datum/species/jelly/luminescent/L = H.dna.species
L.extract_cooldown = max(0, L.extract_cooldown - 20)
L.extract_cooldown = max(L.extract_cooldown - (20 * REM * delta_time), 0)
..()
/datum/reagent/firefighting_foam
@@ -18,9 +18,9 @@
if(chems.has_reagent(type, 1))
mytray.adjustToxic(round(chems.get_reagent_amount(type) * 2))
/datum/reagent/toxin/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(toxpwr)
M.adjustToxLoss(toxpwr*REM, 0)
M.adjustToxLoss(toxpwr * REM * delta_time, 0)
. = TRUE
..()
@@ -56,8 +56,8 @@
exposed_mob.updateappearance()
exposed_mob.domutcheck()
/datum/reagent/toxin/mutagen/on_mob_life(mob/living/carbon/C)
C.apply_effect(5,EFFECT_IRRADIATE,0)
/datum/reagent/toxin/mutagen/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
C.apply_effect(5 * REM * delta_time, EFFECT_IRRADIATE, 0)
return ..()
/datum/reagent/toxin/mutagen/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user)
@@ -88,10 +88,10 @@
UnregisterSignal(holder, COMSIG_REAGENTS_TEMP_CHANGE)
return ..()
/datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C)
/datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
if(holder.has_reagent(/datum/reagent/medicine/epinephrine))
holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2*REM)
C.adjustPlasma(20)
holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2 * REM * delta_time)
C.adjustPlasma(20 * REM * delta_time)
return ..()
/// Handles plasma boiling.
@@ -131,14 +131,14 @@
material = /datum/material/hot_ice
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/hot_ice/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/hot_ice/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(holder.has_reagent(/datum/reagent/medicine/epinephrine))
holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2*REM)
M.adjustPlasma(20)
M.adjust_bodytemperature(-7 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2 * REM * delta_time)
M.adjustPlasma(20 * REM * delta_time)
M.adjust_bodytemperature(-7 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * delta_time, M.get_body_temp_normal())
if(ishuman(M))
var/mob/living/carbon/human/humi = M
humi.adjust_coretemperature(-7 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal())
humi.adjust_coretemperature(-7 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * delta_time, M.get_body_temp_normal())
return ..()
/datum/reagent/toxin/lexorin
@@ -150,16 +150,16 @@
ph = 1.2
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/lexorin/on_mob_life(mob/living/carbon/C)
/datum/reagent/toxin/lexorin/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
. = TRUE
if(HAS_TRAIT(C, TRAIT_NOBREATH))
. = FALSE
if(.)
C.adjustOxyLoss(5, 0)
C.losebreath += 2
if(prob(20))
C.adjustOxyLoss(5 * REM * delta_time, 0)
C.losebreath += 2 * REM * delta_time
if(DT_PROB(10, delta_time))
C.emote("gasp")
..()
@@ -173,14 +173,14 @@
ph = 10
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/slimejelly/on_mob_life(mob/living/carbon/M)
if(prob(10))
/datum/reagent/toxin/slimejelly/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(5, delta_time))
to_chat(M, "<span class='danger'>Your insides are burning!</span>")
M.adjustToxLoss(rand(20,60)*REM, 0)
. = 1
else if(prob(40))
M.heal_bodypart_damage(5*REM)
. = 1
M.adjustToxLoss(rand(20, 60), 0)
. = TRUE
else if(DT_PROB(23, delta_time))
M.heal_bodypart_damage(5)
. = TRUE
..()
/datum/reagent/toxin/minttoxin
@@ -192,7 +192,7 @@
ph = 8
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/minttoxin/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/minttoxin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(HAS_TRAIT(M, TRAIT_FAT))
M.inflate_gib()
return ..()
@@ -202,12 +202,12 @@
description = "A deadly neurotoxin produced by the dreaded spess carp."
silent_toxin = TRUE
color = "#003333" // rgb: 0, 51, 51
toxpwr = 2
toxpwr = 1
taste_description = "fish"
ph = 12
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/carpotoxin/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/carpotoxin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
. = ..()
for(var/i in M.all_scars)
qdel(i)
@@ -243,17 +243,17 @@
if(istype(zombiepowder))
zombiepowder.fakedeath_active = TRUE
/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/M)
/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/M, delta_time, times_fired)
..()
if(fakedeath_active)
return TRUE
switch(current_cycle)
if(1 to 5)
M.add_confusion(1)
M.drowsyness += 1
M.slurring += 3
M.add_confusion(1 * REM * delta_time)
M.drowsyness += 1 * REM * delta_time
M.slurring += 3 * REM * delta_time
if(5 to 8)
M.adjustStaminaLoss(40, 0)
M.adjustStaminaLoss(40 * REM * delta_time, 0)
if(9 to INFINITY)
fakedeath_active = TRUE
M.fakedeath(type)
@@ -276,10 +276,10 @@
REMOVE_TRAIT(L, TRAIT_FAKEDEATH, type)
..()
/datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/M)
M.adjustOxyLoss(1*REM, 0)
/datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustOxyLoss(1 * REM * delta_time, 0)
..()
. = 1
. = TRUE
/datum/reagent/toxin/mindbreaker
name = "Mindbreaker Toxin"
@@ -291,8 +291,8 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
addiction_types = list(/datum/addiction/hallucinogens = 18) //7.2 per 2 seconds
/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/M)
M.hallucination += 5
/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.hallucination += 5 * REM * delta_time
return ..()
/datum/reagent/toxin/plantbgone
@@ -392,10 +392,10 @@
ph = 11
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/spore/on_mob_life(mob/living/carbon/C)
/datum/reagent/toxin/spore/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
C.damageoverlaytemp = 60
C.update_damage_hud()
C.blur_eyes(3)
C.blur_eyes(3 * REM * delta_time)
return ..()
/datum/reagent/toxin/spore_burning
@@ -407,8 +407,8 @@
ph = 13
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/spore_burning/on_mob_life(mob/living/carbon/M)
M.adjust_fire_stacks(2)
/datum/reagent/toxin/spore_burning/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjust_fire_stacks(2 * REM * delta_time)
M.IgniteMob()
return ..()
@@ -423,18 +423,18 @@
ph = 11
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/chloralhydrate/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/chloralhydrate/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
switch(current_cycle)
if(1 to 10)
M.add_confusion(2)
M.drowsyness += 2
M.add_confusion(2 * REM * delta_time)
M.drowsyness += 2 * REM * delta_time
if(10 to 50)
M.Sleeping(40)
. = 1
M.Sleeping(40 * REM * delta_time)
. = TRUE
if(51 to INFINITY)
M.Sleeping(40)
M.adjustToxLoss((current_cycle - 50)*REM, 0)
. = 1
M.Sleeping(40 * REM * delta_time)
M.adjustToxLoss(1 * (current_cycle - 50) * REM * delta_time, 0)
. = TRUE
..()
/datum/reagent/toxin/fakebeer //disguised as normal beer for use by emagged brobots
@@ -449,13 +449,13 @@
ph = 2
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/fakebeer/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/fakebeer/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
switch(current_cycle)
if(1 to 50)
M.Sleeping(40)
M.Sleeping(40 * REM * delta_time)
if(51 to INFINITY)
M.Sleeping(40)
M.adjustToxLoss((current_cycle - 50)*REM, 0)
M.Sleeping(40 * REM * delta_time)
M.adjustToxLoss(1 * (current_cycle - 50) * REM * delta_time, 0)
return ..()
/datum/reagent/toxin/coffeepowder
@@ -487,8 +487,8 @@
ph = 12.2
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/mutetoxin/on_mob_life(mob/living/carbon/M)
M.silent = max(M.silent, 3)
/datum/reagent/toxin/mutetoxin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.silent = max(M.silent, 3 * REM * delta_time)
..()
/datum/reagent/toxin/staminatoxin
@@ -496,15 +496,15 @@
description = "A nonlethal poison that causes extreme fatigue and weakness in its victim."
silent_toxin = TRUE
color = "#6E2828"
data = 13
data = 15
toxpwr = 0
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/staminatoxin/on_mob_life(mob/living/carbon/M)
M.adjustStaminaLoss(REM * data, 0)
/datum/reagent/toxin/staminatoxin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustStaminaLoss(data * REM * delta_time, 0)
data = max(data - 1, 3)
..()
. = 1
. = TRUE
/datum/reagent/toxin/polonium
name = "Polonium"
@@ -515,8 +515,8 @@
toxpwr = 0
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/polonium/on_mob_life(mob/living/carbon/M)
M.radiation += 4
/datum/reagent/toxin/polonium/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.radiation += 4 * REM * delta_time
..()
/datum/reagent/toxin/histamine
@@ -530,8 +530,8 @@
toxpwr = 0
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/histamine/on_mob_life(mob/living/carbon/M)
if(prob(50))
/datum/reagent/toxin/histamine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(30, delta_time))
switch(pick(1, 2, 3, 4))
if(1)
to_chat(M, "<span class='danger'>You can barely see!</span>")
@@ -544,15 +544,15 @@
if(prob(75))
to_chat(M, "<span class='danger'>You scratch at an itch.</span>")
M.adjustBruteLoss(2*REM, 0)
. = 1
. = TRUE
..()
/datum/reagent/toxin/histamine/overdose_process(mob/living/M)
M.adjustOxyLoss(2*REM, 0)
M.adjustBruteLoss(2*REM, FALSE, FALSE, BODYPART_ORGANIC)
M.adjustToxLoss(2*REM, 0)
/datum/reagent/toxin/histamine/overdose_process(mob/living/M, delta_time, times_fired)
M.adjustOxyLoss(2 * REM * delta_time, FALSE)
M.adjustBruteLoss(2 * REM * delta_time, FALSE, FALSE, BODYPART_ORGANIC)
M.adjustToxLoss(2 * REM * delta_time, FALSE)
..()
. = 1
. = TRUE
/datum/reagent/toxin/formaldehyde
name = "Formaldehyde"
@@ -564,8 +564,8 @@
toxpwr = 1
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/M)
if(prob(5))
/datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(2.5, delta_time))
holder.add_reagent(/datum/reagent/toxin/histamine, pick(5,15))
holder.remove_reagent(/datum/reagent/toxin/formaldehyde, 1.2)
else
@@ -580,12 +580,12 @@
toxpwr = 0
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/venom/on_mob_life(mob/living/carbon/M)
toxpwr = 0.2*volume
M.adjustBruteLoss((0.3*volume)*REM, 0)
. = 1
if(prob(15))
holder.add_reagent(/datum/reagent/toxin/histamine, pick(5,10))
/datum/reagent/toxin/venom/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
toxpwr = 0.1 * volume
M.adjustBruteLoss((0.3 * volume) * REM * delta_time, 0)
. = TRUE
if(DT_PROB(8, delta_time))
holder.add_reagent(/datum/reagent/toxin/histamine, pick(5, 10))
holder.remove_reagent(/datum/reagent/toxin/venom, 1.1)
else
..()
@@ -600,14 +600,14 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
addiction_types = list(/datum/addiction/opiods = 25)
/datum/reagent/toxin/fentanyl/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3*REM, 150)
/datum/reagent/toxin/fentanyl/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3 * REM * delta_time, 150)
if(M.toxloss <= 60)
M.adjustToxLoss(1*REM, 0)
M.adjustToxLoss(1 * REM * delta_time, 0)
if(current_cycle >= 4)
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "smacked out", /datum/mood_event/narcotic_heavy, name)
if(current_cycle >= 18)
M.Sleeping(40)
M.Sleeping(40 * REM * delta_time)
..()
return TRUE
@@ -620,10 +620,10 @@
toxpwr = 1.25
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/cyanide/on_mob_life(mob/living/carbon/M)
if(prob(5))
/datum/reagent/toxin/cyanide/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(2.5, delta_time))
M.losebreath += 1
if(prob(8))
if(DT_PROB(4, delta_time))
to_chat(M, "<span class='danger'>You feel horrendously weak!</span>")
M.Stun(40)
M.adjustToxLoss(2*REM, 0)
@@ -650,20 +650,20 @@
penetrates_skin = TOUCH|VAPOR
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M)
if(prob(15))
/datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(8, delta_time))
to_chat(M, "<span class='danger'>You scratch at your head.</span>")
M.adjustBruteLoss(0.2*REM, 0)
. = 1
if(prob(15))
. = TRUE
if(DT_PROB(8, delta_time))
to_chat(M, "<span class='danger'>You scratch at your leg.</span>")
M.adjustBruteLoss(0.2*REM, 0)
. = 1
if(prob(15))
. = TRUE
if(DT_PROB(8, delta_time))
to_chat(M, "<span class='danger'>You scratch at your arm.</span>")
M.adjustBruteLoss(0.2*REM, 0)
. = 1
if(prob(3))
. = TRUE
if(DT_PROB(1.5, delta_time))
holder.add_reagent(/datum/reagent/toxin/histamine,rand(1,3))
holder.remove_reagent(/datum/reagent/toxin/itching_powder,1.2)
return
@@ -679,8 +679,8 @@
toxpwr = 2.5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/initropidril/on_mob_life(mob/living/carbon/C)
if(prob(25))
/datum/reagent/toxin/initropidril/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
if(DT_PROB(13, delta_time))
var/picked_option = rand(1,3)
switch(picked_option)
if(1)
@@ -712,11 +712,11 @@
taste_mult = 0 // undetectable, I guess?
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/pancuronium/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/pancuronium/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(current_cycle >= 10)
M.Stun(40)
M.Stun(40 * REM * delta_time)
. = TRUE
if(prob(20))
if(DT_PROB(10, delta_time))
M.losebreath += 4
..()
@@ -738,10 +738,10 @@
. = ..()
REMOVE_TRAIT(L, TRAIT_ANTICONVULSANT, name)
/datum/reagent/toxin/sodium_thiopental/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/sodium_thiopental/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(current_cycle >= 10)
M.Sleeping(40)
M.adjustStaminaLoss(10*REM, 0)
M.Sleeping(40 * REM * delta_time)
M.adjustStaminaLoss(10 * REM * delta_time, 0)
..()
return TRUE
@@ -755,9 +755,9 @@
toxpwr = 0.5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/sulfonal/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/sulfonal/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(current_cycle >= 22)
M.Sleeping(40)
M.Sleeping(40 * REM * delta_time)
return ..()
/datum/reagent/toxin/amanitin
@@ -787,10 +787,10 @@
toxpwr = 0
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/lipolicide/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/lipolicide/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.nutrition <= NUTRITION_LEVEL_STARVING)
M.adjustToxLoss(1*REM, 0)
M.adjust_nutrition(-3) // making the chef more valuable, one meme trap at a time
M.adjustToxLoss(1 * REM * delta_time, 0)
M.adjust_nutrition(-3 * REM * delta_time) // making the chef more valuable, one meme trap at a time
M.overeatduration = 0
return ..()
@@ -803,8 +803,8 @@
toxpwr = 1.75
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/coniine/on_mob_life(mob/living/carbon/M)
M.losebreath += 5
/datum/reagent/toxin/coniine/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.losebreath += 5 * REM * delta_time
return ..()
/datum/reagent/toxin/spewium
@@ -818,17 +818,17 @@
taste_description = "vomit"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/spewium/on_mob_life(mob/living/carbon/C)
/datum/reagent/toxin/spewium/on_mob_life(mob/living/carbon/C, delta_time, times_fired)
.=..()
if(current_cycle >=11 && prob(min(50,current_cycle)))
if(current_cycle >= 11 && DT_PROB(min(30, current_cycle), delta_time))
C.vomit(10, prob(10), prob(50), rand(0,4), TRUE)
for(var/datum/reagent/toxin/R in C.reagents.reagent_list)
if(R != src)
C.reagents.remove_reagent(R.type,1)
/datum/reagent/toxin/spewium/overdose_process(mob/living/carbon/C)
/datum/reagent/toxin/spewium/overdose_process(mob/living/carbon/C, delta_time, times_fired)
. = ..()
if(current_cycle >=33 && prob(15))
if(current_cycle >= 33 && DT_PROB(7.5, delta_time))
C.spew_organ()
C.vomit(0, TRUE, TRUE, 4)
to_chat(C, "<span class='userdanger'>You feel something lumpy come up as you vomit.</span>")
@@ -842,11 +842,11 @@
toxpwr = 1
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/curare/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/curare/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(current_cycle >= 11)
M.Paralyze(60)
M.adjustOxyLoss(1*REM, 0)
. = 1
M.Paralyze(60 * REM * delta_time)
M.adjustOxyLoss(0.5*REM*delta_time, 0)
. = TRUE
..()
/datum/reagent/toxin/heparin //Based on a real-life anticoagulant. I'm not a doctor, so this won't be realistic.
@@ -878,9 +878,9 @@
taste_description = "spinning"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/rotatium/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/rotatium/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(M.hud_used)
if(current_cycle >= 20 && current_cycle%20 == 0)
if(current_cycle >= 20 && (current_cycle % 20) == 0)
var/atom/movable/plane_master_controller/pm_controller = M.hud_used.plane_master_controllers[PLANE_MASTERS_GAME]
var/rotation = min(round(current_cycle/20), 89) // By this point the player is probably puking and quitting anyway
@@ -905,12 +905,12 @@
toxpwr = 0.15
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/anacea/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/anacea/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
var/remove_amt = 5
if(holder.has_reagent(/datum/reagent/medicine/calomel) || holder.has_reagent(/datum/reagent/medicine/pen_acid))
remove_amt = 0.5
for(var/datum/reagent/medicine/R in M.reagents.reagent_list)
M.reagents.remove_reagent(R.type,remove_amt)
M.reagents.remove_reagent(R.type, remove_amt * REM * delta_time)
return ..()
//ACID
@@ -979,9 +979,9 @@
mytray.adjustToxic(round(chems.get_reagent_amount(type) * 3))
mytray.adjustWeeds(-rand(1,4))
/datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/carbon/M)
M.adjustFireLoss(current_cycle/15, 0)
. = 1
/datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustFireLoss((current_cycle/15) * REM * delta_time, 0)
. = TRUE
..()
/datum/reagent/toxin/acid/nitracid
@@ -993,8 +993,8 @@
ph = 3.3
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/acid/nitracid/on_mob_life(mob/living/carbon/M)
M.adjustFireLoss(volume/10, FALSE) //here you go nervar
/datum/reagent/toxin/acid/nitracid/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustFireLoss((volume/10) * REM * delta_time, FALSE) //here you go nervar
. = TRUE
..()
@@ -1009,13 +1009,13 @@
var/delay = 30
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/delayed/on_mob_life(mob/living/carbon/M)
/datum/reagent/toxin/delayed/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
if(current_cycle > delay)
holder.remove_reagent(type, actual_metaboliztion_rate * M.metabolism_efficiency)
M.adjustToxLoss(actual_toxpwr*REM, 0)
if(prob(10))
holder.remove_reagent(type, actual_metaboliztion_rate * M.metabolism_efficiency * delta_time)
M.adjustToxLoss(actual_toxpwr * REM * delta_time, 0)
if(DT_PROB(5, delta_time))
M.Paralyze(20)
. = 1
. = TRUE
..()
/datum/reagent/toxin/mimesbane
@@ -1047,9 +1047,9 @@
M.say("oof ouch my bones", forced = /datum/reagent/toxin/bonehurtingjuice)
return ..()
/datum/reagent/toxin/bonehurtingjuice/on_mob_life(mob/living/carbon/M)
M.adjustStaminaLoss(7.5, 0)
if(prob(20))
/datum/reagent/toxin/bonehurtingjuice/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustStaminaLoss(7.5 * REM * delta_time, 0)
if(DT_PROB(10, delta_time))
switch(rand(1, 3))
if(1)
M.say(pick("oof.", "ouch.", "my bones.", "oof ouch.", "oof ouch my bones."), forced = /datum/reagent/toxin/bonehurtingjuice)
@@ -1059,8 +1059,8 @@
to_chat(M, "<span class='warning'>Your bones hurt!</span>")
return ..()
/datum/reagent/toxin/bonehurtingjuice/overdose_process(mob/living/carbon/M)
if(prob(4) && iscarbon(M)) //big oof
/datum/reagent/toxin/bonehurtingjuice/overdose_process(mob/living/carbon/M, delta_time, times_fired)
if(DT_PROB(2, delta_time) && iscarbon(M)) //big oof
var/selected_part = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) //God help you if the same limb gets picked twice quickly.
var/obj/item/bodypart/bp = M.get_bodypart(selected_part)
if(bp)
@@ -1083,13 +1083,13 @@
taste_description = "tannin"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/bungotoxin/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_HEART, 3)
/datum/reagent/toxin/bungotoxin/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustOrganLoss(ORGAN_SLOT_HEART, 3 * REM * delta_time)
M.set_confusion(M.dizziness) //add a tertiary effect here if this is isn't an effective poison.
if(current_cycle >= 12 && prob(8))
if(current_cycle >= 12 && DT_PROB(4, delta_time))
var/tox_message = pick("You feel your heart spasm in your chest.", "You feel faint.","You feel you need to catch your breath.","You feel a prickle of pain in your chest.")
to_chat(M, "<span class='notice'>[tox_message]</span>")
. = 1
. = TRUE
..()
/datum/reagent/toxin/leadacetate
@@ -1102,10 +1102,10 @@
taste_description = "sugary sweetness"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/toxin/leadacetate/on_mob_life(mob/living/carbon/M)
M.adjustOrganLoss(ORGAN_SLOT_EARS,1)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN,1)
if(prob(1))
/datum/reagent/toxin/leadacetate/on_mob_life(mob/living/carbon/M, delta_time, times_fired)
M.adjustOrganLoss(ORGAN_SLOT_EARS, 1 * REM * delta_time)
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1 * REM * delta_time)
if(DT_PROB(0.5, delta_time))
to_chat(M, "<span class='notice'>Ah, what was that? You thought you heard something...</span>")
M.add_confusion(5)
return ..()
@@ -44,7 +44,7 @@
to_chat(victim_mind.current, "<span class='notice'>You feel like you've gotten over your need for drugs.</span>")
LAZYREMOVE(victim_mind.active_addictions, type)
/datum/addiction/proc/process_addiction(mob/living/carbon/affected_carbon, delta_time = 2)
/datum/addiction/proc/process_addiction(mob/living/carbon/affected_carbon, delta_time, times_fired)
var/current_addiction_cycle = LAZYACCESS(affected_carbon.mind.active_addictions, type) //If this is null, we're not addicted
var/on_drug_of_this_addiction = FALSE
for(var/datum/reagent/possible_drug as anything in affected_carbon.reagents.reagent_list) //Go through the drugs in our system