mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
Replaces micro dosing with volumetric dosing (#94621)
## About The Pull Request To understand the PR we should first define what is micro dosing & volumetric dosing - **Micro dosing:** The reagent effects are **independent** of the volume of reagent metabolized and are constant every tick, so the effect you get from metabolizing 0.01u of a reagent is the same as metabolizing 1u of a reagent - **Volumetric dosing:** The reagent effects are **dependent** on the volume of reagent metabolized per tick, so the effect you get from metabolizing 0.01u is much lower compared to metabolizing 1u of a reagent which is much higher This PR replaces **micro dosing** with **volumetric dosing** so if you increase metabolization rates and absorb more reagents you get higher effects from that reagent & vice versa for lower metabolization rates. With that lets ask the core questions **How does this affect present reagent values?** _This PR scales all reagent effects such that even if it has a lower metabolization rate the value is the same as before but will still scale with reagent volumes & mob metabolization levels_ Under normal circumstances most reagents metabolize at 0.4u of reagent per tick so as long as this value isn't changed by cybernetic body parts or other reagents you will get the same values as before and won't notice anything different in normal gameplay. However, if you do get enhanced body parts like a cybernetic liver/stomach or use reagents with metabolization rates different from 0.4u you will now get more/less affects depending on how much reagent is consumed. Here is an example Consider Syriniver this is how the formulae look like. ```dm adjust_tox_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) ``` as long as 0.4u of it is metabolized every tick you get 2 tox loss healing which is the same as before. However, this time if you metabolize 0.01u of the reagent you get only 0.1 tox loss healing. If you metabolize 1u reagent per tick, then you get 5 tox loss healing **What about cigarettes?** Unaffected. The amount of reagents injected into a mob per tick **does not** affect the rate at which it is metabolized. Even if you have like 10u of cigarette reagents within you, if you are metabolizing just 0.4u of it every tick then nothing changes ## Why It's Good For The Game - Volumetric dosing is realistic. If you metabolize more reagent you should be getting more benefits and lesser volumes should yield lesser affects - Microdosing is an exploit that should have been patched a long of time ago because it encourages people to put in minimal effort to produce just 0.01u of reagent to get maximum affects. This coupled with slower metabolization rates leads to unbalanced higher reagent effects for longer periods of time. - This PR address the core issue in #93991 which is heal all patches. Plumbing was gutted in an unnatural way by making the plumbing iv drip/output gate/pill press behave essentially as mini reaction chambers by filtering just 5 reagents. With this heal all patches are nerfed based on the number & now volume of reagents you can put in a patch, so its concern is addressed. If this does get merged, we can hopefully revert it and make plumbing great and behave like large factories again <img width="914" height="230" alt="Screenshot (532)" src="https://github.com/user-attachments/assets/96467fad-b32f-409a-a1e8-2a92b8ff6565" /> ## Changelog 🆑 fix: probability reagent affects scale correctly balance: reagent affects now scale with the volume of reagent metabolized meaning lower metabolization rates (from like cybernetic organs) yield lower effects & higher rates yield higher effects /🆑
This commit is contained in:
@@ -103,30 +103,28 @@
|
||||
return FALSE
|
||||
|
||||
var/need_mob_update = FALSE
|
||||
if(!reagent.metabolizing)
|
||||
reagent.metabolizing = TRUE
|
||||
reagent.on_mob_metabolize(owner)
|
||||
|
||||
var/metabolized_volume = reagent.compute_metabolization(owner, seconds_per_tick)
|
||||
var/metabolization_ratio = REM * metabolized_volume
|
||||
if(can_overdose && !HAS_TRAIT(owner, TRAIT_OVERDOSEIMMUNE))
|
||||
if(reagent.overdose_threshold && reagent.volume >= reagent.overdose_threshold && !reagent.overdosed)
|
||||
reagent.overdosed = TRUE
|
||||
need_mob_update += reagent.overdose_start(owner)
|
||||
need_mob_update += reagent.overdose_start(owner, metabolization_ratio)
|
||||
owner.log_message("has started overdosing on [reagent.name] at [reagent.volume] units.", LOG_GAME)
|
||||
|
||||
for(var/addiction in reagent.addiction_types)
|
||||
owner.mind?.add_addiction_points(addiction, reagent.addiction_types[addiction] * REAGENTS_METABOLISM)
|
||||
|
||||
if(reagent.overdosed)
|
||||
need_mob_update += reagent.overdose_process(owner, seconds_per_tick)
|
||||
need_mob_update += reagent.overdose_process(owner, seconds_per_tick, metabolization_ratio)
|
||||
|
||||
reagent.current_cycle++
|
||||
need_mob_update += reagent.on_mob_life(owner, seconds_per_tick)
|
||||
need_mob_update += reagent.on_mob_life(owner, seconds_per_tick, metabolization_ratio)
|
||||
|
||||
if(dead && !QDELETED(owner) && !QDELETED(reagent))
|
||||
need_mob_update += reagent.on_mob_dead(owner, seconds_per_tick)
|
||||
need_mob_update += reagent.on_mob_dead(owner, seconds_per_tick, metabolization_ratio)
|
||||
|
||||
if(!QDELETED(owner) && !QDELETED(reagent) && !(tick_return & COMSIG_MOB_STOP_REAGENT_METABOLISM))
|
||||
reagent.metabolize_reagent(owner, seconds_per_tick)
|
||||
reagent.metabolize_reagent(owner, seconds_per_tick, metabolized_volume)
|
||||
|
||||
return need_mob_update
|
||||
|
||||
|
||||
@@ -148,6 +148,22 @@
|
||||
/datum/reagent/proc/burn(datum/reagents/holder)
|
||||
return
|
||||
|
||||
|
||||
///Called to begin metabolization and return the volume of reagent to metabolize
|
||||
/datum/reagent/proc/compute_metabolization(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
var/metabolizing_out = metabolization_rate * seconds_per_tick
|
||||
if(!(chemical_flags & REAGENT_UNAFFECTED_BY_METABOLISM))
|
||||
if(chemical_flags & REAGENT_REVERSE_METABOLISM)
|
||||
metabolizing_out /= affected_mob.metabolism_efficiency
|
||||
else
|
||||
metabolizing_out *= affected_mob.metabolism_efficiency
|
||||
|
||||
if(!metabolizing)
|
||||
metabolizing = TRUE
|
||||
on_mob_metabolize(affected_mob)
|
||||
|
||||
return min(metabolizing_out, volume)
|
||||
|
||||
/**
|
||||
* Ticks on mob Life() for as long as the reagent remains in the mob's reagents.
|
||||
*
|
||||
@@ -163,23 +179,15 @@
|
||||
* * times_fired - the number of times the owner's Life() tick has been called aka The number of times SSmobs has fired
|
||||
*
|
||||
*/
|
||||
/datum/reagent/proc/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/proc/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
|
||||
///Metabolizes a portion of the reagent after on_mob_life() is called
|
||||
/datum/reagent/proc/metabolize_reagent(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/proc/metabolize_reagent(mob/living/carbon/affected_mob, seconds_per_tick, metabolized_volume)
|
||||
if(isnull(holder))
|
||||
return
|
||||
|
||||
var/metabolizing_out = metabolization_rate * seconds_per_tick
|
||||
if(!(chemical_flags & REAGENT_UNAFFECTED_BY_METABOLISM))
|
||||
if(chemical_flags & REAGENT_REVERSE_METABOLISM)
|
||||
metabolizing_out /= affected_mob.metabolism_efficiency
|
||||
else
|
||||
metabolizing_out *= affected_mob.metabolism_efficiency
|
||||
|
||||
holder.remove_reagent(type, metabolizing_out)
|
||||
|
||||
volume -= metabolized_volume
|
||||
holder.update_total()
|
||||
|
||||
/// Called in burns.dm *if* the reagent has the REAGENT_AFFECTS_WOUNDS process flag
|
||||
/datum/reagent/proc/on_burn_wound_processing(datum/wound/burn/flesh/burn_wound)
|
||||
@@ -217,7 +225,7 @@
|
||||
affected_mob.add_traits(metabolized_traits, "metabolize:[type]")
|
||||
|
||||
/// Called when this reagent stops being metabolized by a liver
|
||||
/datum/reagent/proc/on_mob_end_metabolize(mob/living/affected_mob)
|
||||
/datum/reagent/proc/on_mob_end_metabolize(mob/living/affected_mob, metabolization_ratio)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
REMOVE_TRAITS_IN(affected_mob, "metabolize:[type]")
|
||||
|
||||
@@ -245,11 +253,11 @@
|
||||
SEND_SIGNAL(src, COMSIG_REAGENT_ON_MERGE, mix_data, amount)
|
||||
|
||||
/// Called if the reagent has passed the overdose threshold and is set to be triggering overdose effects. Returning UPDATE_MOB_HEALTH will cause updatehealth() to be called on the holder mob by /datum/reagents/proc/metabolize.
|
||||
/datum/reagent/proc/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/proc/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
return
|
||||
|
||||
/// Called when an overdose starts. Returning UPDATE_MOB_HEALTH will cause updatehealth() to be called on the holder mob by /datum/reagents/proc/metabolize.
|
||||
/datum/reagent/proc/overdose_start(mob/living/affected_mob)
|
||||
/datum/reagent/proc/overdose_start(mob/living/affected_mob, metabolization_ratio)
|
||||
to_chat(affected_mob, span_userdanger("You feel like you took too much of [name]!"))
|
||||
affected_mob.add_mood_event("[type]_overdose", /datum/mood_event/overdose, name)
|
||||
return
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/reagent/freon
|
||||
name = "Freon"
|
||||
description = "A powerful heat absorbent."
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because nitrium/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM // Because nitrium/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
|
||||
color = "90560B"
|
||||
taste_description = "burning"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
@@ -17,7 +17,7 @@
|
||||
/datum/reagent/halon
|
||||
name = "Halon"
|
||||
description = "A fire suppression gas that removes oxygen and cools down the area"
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
color = "90560B"
|
||||
taste_description = "minty"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
@@ -34,7 +34,7 @@
|
||||
/datum/reagent/healium
|
||||
name = "Healium"
|
||||
description = "A powerful sleeping agent with healing properties"
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
color = "90560B"
|
||||
taste_description = "rubbery"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
@@ -43,33 +43,33 @@
|
||||
. = ..()
|
||||
breather.SetSleeping(1 SECONDS)
|
||||
|
||||
/datum/reagent/healium/on_mob_life(mob/living/breather, seconds_per_tick)
|
||||
/datum/reagent/healium/on_mob_life(mob/living/breather, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
breather.SetSleeping(30 SECONDS)
|
||||
var/need_mob_update
|
||||
need_mob_update = breather.adjust_fire_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += breather.adjust_tox_loss(-5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += breather.adjust_brute_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = breather.adjust_fire_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += breather.adjust_tox_loss(-5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += breather.adjust_brute_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/hypernoblium
|
||||
name = "Hyper-Noblium"
|
||||
description = "A suppressive gas that stops gas reactions on those who inhale it."
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because nitrium/freon/hyper-nob are handled through gas breathing, metabolism must be lower for breathcode to keep up
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM // Because nitrium/freon/hyper-nob are handled through gas breathing, metabolism must be lower for breathcode to keep up
|
||||
color = "90560B"
|
||||
taste_description = "searingly cold"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/hypernoblium/on_mob_life(mob/living/carbon/breather, seconds_per_tick)
|
||||
/datum/reagent/hypernoblium/on_mob_life(mob/living/carbon/breather, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(isplasmaman(breather))
|
||||
breather.set_timed_status_effect(10 SECONDS * REM * seconds_per_tick, /datum/status_effect/hypernob_protection)
|
||||
breather.set_timed_status_effect(10 SECONDS * metabolization_ratio * seconds_per_tick, /datum/status_effect/hypernob_protection)
|
||||
|
||||
/datum/reagent/nitrium_high_metabolization
|
||||
name = "Nitrosyl plasmide"
|
||||
description = "A highly reactive byproduct that stops you from sleeping, while dealing increasing toxin damage over time."
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because nitrium/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM // Because nitrium/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
|
||||
color = "E1A116"
|
||||
taste_description = "sourness"
|
||||
ph = 1.8
|
||||
@@ -77,18 +77,18 @@
|
||||
addiction_types = list(/datum/addiction/stimulants = 14)
|
||||
metabolized_traits = list(TRAIT_SLEEPIMMUNE)
|
||||
|
||||
/datum/reagent/nitrium_high_metabolization/on_mob_life(mob/living/carbon/breather, seconds_per_tick)
|
||||
/datum/reagent/nitrium_high_metabolization/on_mob_life(mob/living/carbon/breather, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = breather.adjust_stamina_loss(-4 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += breather.adjust_tox_loss(0.1 * (current_cycle-1) * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) // 1 toxin damage per cycle at cycle 10
|
||||
need_mob_update = breather.adjust_stamina_loss(-4 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += breather.adjust_tox_loss(0.1 * (current_cycle-1) * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) // 1 toxin damage per cycle at cycle 10
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/nitrium_low_metabolization
|
||||
name = "Nitrium"
|
||||
description = "A highly reactive gas that makes you feel faster."
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5 // Because nitrium/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM // Because nitrium/freon/hypernoblium are handled through gas breathing, metabolism must be lower for breathcode to keep up
|
||||
color = "90560B"
|
||||
taste_description = "burning"
|
||||
ph = 2
|
||||
@@ -105,12 +105,12 @@
|
||||
/datum/reagent/pluoxium
|
||||
name = "Pluoxium"
|
||||
description = "A gas that is eight times more efficient than O2 at lung diffusion with organ healing properties on sleeping patients."
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
color = COLOR_GRAY
|
||||
taste_description = "irradiated air"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/pluoxium/on_mob_life(mob/living/carbon/breather, seconds_per_tick)
|
||||
/datum/reagent/pluoxium/on_mob_life(mob/living/carbon/breather, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!HAS_TRAIT(breather, TRAIT_KNOCKEDOUT))
|
||||
return
|
||||
@@ -119,25 +119,25 @@
|
||||
if(!organ_being_healed.damage)
|
||||
continue
|
||||
|
||||
if(organ_being_healed.apply_organ_damage(-0.5 * REM * seconds_per_tick, required_organ_flag = ORGAN_ORGANIC))
|
||||
if(organ_being_healed.apply_organ_damage(-0.5 * metabolization_ratio * seconds_per_tick, required_organ_flag = ORGAN_ORGANIC))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/zauker
|
||||
name = "Zauker"
|
||||
description = "An unstable gas that is toxic to all living beings."
|
||||
metabolization_rate = REAGENTS_METABOLISM * 0.5
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
color = "90560B"
|
||||
taste_description = "bitter"
|
||||
chemical_flags = REAGENT_NO_RANDOM_RECIPE
|
||||
affected_biotype = MOB_ORGANIC | MOB_MINERAL | MOB_PLANT // "toxic to all living beings"
|
||||
affected_respiration_type = ALL
|
||||
|
||||
/datum/reagent/zauker/on_mob_life(mob/living/breather, seconds_per_tick)
|
||||
/datum/reagent/zauker/on_mob_life(mob/living/breather, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = breather.adjust_brute_loss(6 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += breather.adjust_oxy_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += breather.adjust_fire_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += breather.adjust_tox_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = breather.adjust_brute_loss(6 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += breather.adjust_oxy_loss(1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += breather.adjust_fire_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += breather.adjust_tox_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
var/reaping = FALSE
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/medicine/c2/helbital/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/helbital/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/death_is_coming = (affected_mob.get_tox_loss() + affected_mob.get_oxy_loss() + affected_mob.get_fire_loss() + affected_mob.get_brute_loss())*normalise_creation_purity()
|
||||
var/thou_shall_heal = 0
|
||||
@@ -33,15 +33,15 @@
|
||||
switch(affected_mob.stat)
|
||||
if(CONSCIOUS) //bad
|
||||
thou_shall_heal = max(death_is_coming/20, 3)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(2 * REM * seconds_per_tick, TRUE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(2 * metabolization_ratio * seconds_per_tick, TRUE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
if(SOFT_CRIT) //meh convert
|
||||
thou_shall_heal = round(death_is_coming/13,0.1)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(1 * REM * seconds_per_tick, TRUE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(1 * metabolization_ratio * seconds_per_tick, TRUE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
good_kind_of_healing = TRUE
|
||||
else //no convert
|
||||
thou_shall_heal = round(death_is_coming/10, 0.1)
|
||||
good_kind_of_healing = TRUE
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-thou_shall_heal * REM * seconds_per_tick, FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-1 * thou_shall_heal * metabolization_ratio * seconds_per_tick, FALSE, required_bodytype = affected_bodytype)
|
||||
if(need_mob_update)
|
||||
. = UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
holder.del_reagent(type)
|
||||
return
|
||||
|
||||
/datum/reagent/medicine/c2/helbital/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/helbital/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!helbent)
|
||||
affected_mob.apply_necropolis_curse(CURSE_WASTING | CURSE_BLINDING)
|
||||
@@ -107,11 +107,11 @@
|
||||
inverse_chem = /datum/reagent/inverse/libitoil
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/medicine/c2/libital/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/libital/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.3 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-3 * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.3 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-3 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -125,10 +125,10 @@
|
||||
inverse_chem = /datum/reagent/medicine/metafactor //Seems thematically intact
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/medicine/c2/probital/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/probital/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-3 * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-3 * metabolization_ratio * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
var/ooo_youaregettingsleepy = 3.5
|
||||
switch(round(affected_mob.get_stamina_loss()))
|
||||
if(10 to 40)
|
||||
@@ -137,16 +137,16 @@
|
||||
ooo_youaregettingsleepy = 2.5
|
||||
if(61 to 200) //you really can only go to 120
|
||||
ooo_youaregettingsleepy = 2
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(ooo_youaregettingsleepy * REM * seconds_per_tick, updating_stamina = FALSE)
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(1 * ooo_youaregettingsleepy * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/medicine/c2/probital/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/probital/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(3 * REM * seconds_per_tick, updating_stamina = FALSE)
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(3 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
if(affected_mob.get_stamina_loss() >= 80)
|
||||
affected_mob.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.get_stamina_loss() >= 100)
|
||||
to_chat(affected_mob,span_warning("You feel more tired than you usually do, perhaps if you rest your eyes for a bit..."))
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(-100, updating_stamina = FALSE) // Don't add the biotype parameter here as it results in infinite sleep and chat spam.
|
||||
@@ -170,17 +170,15 @@
|
||||
description = "Used to treat burns. Applies stomach damage when it leaves your system."
|
||||
color = "#6171FF"
|
||||
ph = 4.7
|
||||
var/resetting_probability = 0 //What are these for?? Can I remove them?
|
||||
var/spammer = 0
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
inverse_chem_val = 0.4
|
||||
inverse_chem = /datum/reagent/inverse/lentslurri
|
||||
|
||||
/datum/reagent/medicine/c2/lenturi/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/lenturi/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-3.75 * REM * normalise_creation_purity() * seconds_per_tick, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_STOMACH, 0.4 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-3.75 * metabolization_ratio * normalise_creation_purity() * seconds_per_tick, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_STOMACH, 0.4 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -189,17 +187,15 @@
|
||||
description = "Used to treat burns. Does minor eye damage."
|
||||
color = "#8C93FF"
|
||||
ph = 4
|
||||
var/resetting_probability = 0 //same with this? Old legacy vars that should be removed?
|
||||
var/message_cd = 0
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
inverse_chem_val = 0.35
|
||||
inverse_chem = /datum/reagent/inverse/aiuri
|
||||
|
||||
/datum/reagent/medicine/c2/aiuri/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/aiuri/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-2 * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_EYES, 0.25 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-2 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_EYES, 0.25 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -214,19 +210,19 @@
|
||||
inverse_chem_val = 0.3
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/medicine/c2/hercuri/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/hercuri/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
if(affected_mob.get_fire_loss() > 50)
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-3 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-3 * metabolization_ratio * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
else
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-2.25 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
affected_mob.adjust_bodytemperature(rand(-25,-5) * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, 50)
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-2.25 * metabolization_ratio * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
affected_mob.adjust_bodytemperature(rand(-25,-5) * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, 50)
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/humi = affected_mob
|
||||
humi.adjust_coretemperature(rand(-25,-5) * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, 50)
|
||||
affected_mob.reagents?.chem_temp += (-10 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_fire_stacks(-1 * REM * seconds_per_tick)
|
||||
humi.adjust_coretemperature(1 * rand(-25,-5) * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, 50)
|
||||
affected_mob.reagents?.chem_temp += (-10 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_fire_stacks(-1 * metabolization_ratio * seconds_per_tick)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -240,12 +236,12 @@
|
||||
if(reac_volume >= metabolization_rate)
|
||||
exposed_mob.extinguish_mob()
|
||||
|
||||
/datum/reagent/medicine/c2/hercuri/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/hercuri/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, 50) //chilly chilly
|
||||
affected_mob.adjust_bodytemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, 50) //chilly chilly
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/humi = affected_mob
|
||||
humi.adjust_coretemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, 50)
|
||||
humi.adjust_coretemperature(-10 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, 50)
|
||||
|
||||
|
||||
/******OXY******/
|
||||
@@ -262,21 +258,21 @@
|
||||
inverse_chem = /datum/reagent/inverse/healing/convermol
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/medicine/c2/convermol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/convermol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/oxycalc = 2.5 * REM * (current_cycle-1)
|
||||
var/oxycalc = 2.5 * metabolization_ratio * (current_cycle-1)
|
||||
if(!overdosed)
|
||||
oxycalc = min(oxycalc, affected_mob.get_oxy_loss() + 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.
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_oxy_loss(-oxycalc * seconds_per_tick * normalise_creation_purity(), FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(oxycalc * seconds_per_tick / CONVERMOL_RATIO, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = affected_mob.adjust_oxy_loss(-2 * oxycalc * normalise_creation_purity() * metabolization_ratio * seconds_per_tick , FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(2 * oxycalc * metabolization_ratio * seconds_per_tick / CONVERMOL_RATIO, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(SPT_PROB((current_cycle-1) / 2, seconds_per_tick) && affected_mob.losebreath)
|
||||
affected_mob.losebreath--
|
||||
need_mob_update = TRUE
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/medicine/c2/convermol/overdose_process(mob/living/carbon/human/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/convermol/overdose_process(mob/living/carbon/human/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
metabolization_rate += 2.5 * REAGENTS_METABOLISM
|
||||
|
||||
@@ -294,11 +290,11 @@
|
||||
/// A cooldown for spacing bursts of stamina damage
|
||||
COOLDOWN_DECLARE(drowsycd)
|
||||
|
||||
/datum/reagent/medicine/c2/tirimol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/tirimol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_oxy_loss(-4.5 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(2 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = affected_mob.adjust_oxy_loss(-4.5 * metabolization_ratio * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(2 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
if(drowsycd && COOLDOWN_FINISHED(src, drowsycd))
|
||||
affected_mob.adjust_drowsiness(20 SECONDS)
|
||||
COOLDOWN_START(src, drowsycd, 45 SECONDS)
|
||||
@@ -330,21 +326,21 @@
|
||||
. = ..()
|
||||
rads_heal_threshold = rand(rads_heal_threshold - 50, rads_heal_threshold + 50) // Basically this means 50K and below will always give the radiation heal, and upto 150K could. Calculated once.
|
||||
|
||||
/datum/reagent/medicine/c2/seiver/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/seiver/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/chemtemp = min(holder.chem_temp, 1000)
|
||||
chemtemp = chemtemp ? chemtemp : T0C //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(5 + ((chemtemp-1000)/175), 0.1), 5) * REM * seconds_per_tick * normalise_creation_purity() //max 2.5 tox healing per second
|
||||
var/toxcalc = min(1 * round(5 + ((chemtemp-1000)/175), 0.1), 5) * metabolization_ratio * seconds_per_tick * normalise_creation_purity() //max 2.5 tox healing per second
|
||||
var/need_mob_update
|
||||
if(toxcalc > 0)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-toxcalc, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
healypoints += toxcalc
|
||||
|
||||
//and you're cold
|
||||
var/radcalc = round((T0C-chemtemp) / 6, 0.1) * REM * seconds_per_tick //max ~45 rad loss unless you've hit below 0K. if so, wow.
|
||||
var/radcalc = 1 * round((T0C-chemtemp) / 6, 0.1) * metabolization_ratio * seconds_per_tick //max ~45 rad loss unless you've hit below 0K. if so, wow.
|
||||
if(radcalc > 0 && HAS_TRAIT(affected_mob, TRAIT_IRRADIATED))
|
||||
radcalc *= normalise_creation_purity()
|
||||
// extra rad healing if you are SUPER cold
|
||||
@@ -368,7 +364,7 @@
|
||||
ph = 9.2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/medicine/c2/multiver/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/multiver/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/medibonus = 0 //it will always have itself which makes it REALLY start @ 1
|
||||
for(var/r in affected_mob.reagents.reagent_list)
|
||||
@@ -378,15 +374,15 @@
|
||||
if(creation_purity >= 1) //Perfectly pure multivers gives a bonus of 2!
|
||||
medibonus += 1
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-0.5 * min(medibonus, 3 * normalise_creation_purity()) * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) //not great at healing but if you have nothing else it will work
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_LUNGS, 0.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags) //kills at 40u
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-0.5 * min(medibonus, 6 * normalise_creation_purity()) * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) //not great at healing but if you have nothing else it will work
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_LUNGS, 0.5 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags) //kills at 40u
|
||||
if(!holder.has_reagent(/datum/reagent/toxin/anacea))
|
||||
for(var/datum/reagent/second_reagent as anything in affected_mob.reagents.reagent_list)
|
||||
if(second_reagent == src)
|
||||
continue
|
||||
if(medibonus >= 3 && istype(second_reagent, /datum/reagent/medicine)) //3 unique meds (2+multiver) | (1 + pure multiver) will make it not purge medicines
|
||||
continue
|
||||
affected_mob.reagents.remove_reagent(second_reagent.type, 3 * second_reagent.purge_multiplier * REM * seconds_per_tick)
|
||||
affected_mob.reagents.remove_reagent(second_reagent.type, 3 * second_reagent.purge_multiplier * metabolization_ratio * seconds_per_tick)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -403,8 +399,8 @@
|
||||
metabolization_rate = 0.75 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 6
|
||||
ph = 8.6
|
||||
var/conversion_amount
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
var/conversion_amount
|
||||
|
||||
/datum/reagent/medicine/c2/syriniver/expose_mob(mob/living/carbon/exposed_mob, methods, trans_volume, show_message, touch_protection)
|
||||
. = ..()
|
||||
@@ -422,25 +418,26 @@
|
||||
mob_reagents.remove_reagent(/datum/reagent/medicine/c2/syriniver, conversion_amount)
|
||||
mob_reagents.add_reagent(/datum/reagent/medicine/c2/musiver, conversion_amount)
|
||||
|
||||
/datum/reagent/medicine/c2/syriniver/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/syriniver/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.8 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.54 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-1.34 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
for(var/datum/reagent/R in affected_mob.reagents.reagent_list)
|
||||
if(issyrinormusc(R))
|
||||
continue
|
||||
affected_mob.reagents.remove_reagent(R.type, 0.4 * REM * seconds_per_tick)
|
||||
R.volume -= 0.27 * metabolization_ratio * seconds_per_tick
|
||||
affected_mob.reagents.update_total()
|
||||
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/medicine/c2/syriniver/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/syriniver/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 1.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 1 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
affected_mob.adjust_disgust(3 * REM * seconds_per_tick)
|
||||
affected_mob.reagents.add_reagent(/datum/reagent/medicine/c2/musiver, 0.225 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_disgust(2 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.reagents.add_reagent(/datum/reagent/medicine/c2/musiver, 0.15 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/medicine/c2/musiver //MUScles
|
||||
name = "Musiver"
|
||||
@@ -452,19 +449,19 @@
|
||||
var/datum/brain_trauma/mild/muscle_weakness/trauma
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/medicine/c2/musiver/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/musiver/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.1 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-1.5 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.2 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-3 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
for(var/datum/reagent/reagent as anything in affected_mob.reagents.reagent_list)
|
||||
if(issyrinormusc(reagent))
|
||||
continue
|
||||
affected_mob.reagents.remove_reagent(reagent.type, 0.2 * reagent.purge_multiplier * REM * seconds_per_tick)
|
||||
affected_mob.reagents.remove_reagent(reagent.type, 0.4 * reagent.purge_multiplier * metabolization_ratio * seconds_per_tick)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/medicine/c2/musiver/overdose_start(mob/living/carbon/affected_mob)
|
||||
/datum/reagent/medicine/c2/musiver/overdose_start(mob/living/carbon/affected_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
trauma = new()
|
||||
affected_mob.gain_trauma(trauma, TRAUMA_RESILIENCE_ABSOLUTE)
|
||||
@@ -474,11 +471,11 @@
|
||||
if(trauma)
|
||||
QDEL_NULL(trauma)
|
||||
|
||||
/datum/reagent/medicine/c2/musiver/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/musiver/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 1.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 3 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
affected_mob.adjust_disgust(3 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_disgust(6 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
#undef issyrinormusc
|
||||
/******COMBOS******/
|
||||
@@ -594,23 +591,23 @@
|
||||
send_alert(user)
|
||||
user.add_traits(subject_traits, type)
|
||||
|
||||
/datum/reagent/medicine/c2/penthrite/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/penthrite/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_STOMACH, 0.25 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_STOMACH, 0.25 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
if(affected_mob.health <= HEALTH_THRESHOLD_CRIT && affected_mob.health > (affected_mob.crit_threshold + HEALTH_THRESHOLD_FULLCRIT * (2 * normalise_creation_purity()))) //we cannot save someone below our lowered crit threshold.
|
||||
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(-6 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(-6 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
|
||||
affected_mob.losebreath = 0
|
||||
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, max(volume/10, 1) * REM * seconds_per_tick, required_organ_flag = affected_organ_flags) // your heart is barely keeping up!
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, 1 * max(volume/10, 1) * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags) // your heart is barely keeping up!
|
||||
|
||||
affected_mob.set_jitter_if_lower(rand(0 SECONDS, 4 SECONDS) * REM * seconds_per_tick)
|
||||
affected_mob.set_dizzy_if_lower(rand(0 SECONDS, 4 SECONDS) * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(1 * rand(0 SECONDS, 4 SECONDS) * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.set_dizzy_if_lower(1 * rand(0 SECONDS, 4 SECONDS) * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
if(SPT_PROB(18, seconds_per_tick))
|
||||
to_chat(affected_mob,span_danger("Your body is trying to give up, but your heart is still beating!"))
|
||||
@@ -631,12 +628,12 @@
|
||||
remove_alert(affected_mob)
|
||||
affected_mob.remove_traits(subject_traits, type)
|
||||
|
||||
/datum/reagent/medicine/c2/penthrite/overdose_process(mob/living/carbon/human/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/medicine/c2/penthrite/overdose_process(mob/living/carbon/human/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
REMOVE_TRAIT(affected_mob, TRAIT_STABLEHEART, type)
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, 10 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(10 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, 10 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += affected_mob.set_heartattack(TRUE)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
LAZYSET(addiction_types, /datum/addiction/alcohol, 0.05 * boozepwr)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(drinker.get_drunk_amount() < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER || boozepwr < 0)
|
||||
var/booze_power = boozepwr
|
||||
@@ -74,7 +74,7 @@
|
||||
booze_power *= (total_alcohol_volume / combined_dilute_volume)
|
||||
|
||||
// Volume, power, and server alcohol rate effect how quickly one gets drunk
|
||||
drinker.adjust_drunk_effect(sqrt(volume) * booze_power * ALCOHOL_RATE * REM * seconds_per_tick)
|
||||
drinker.adjust_drunk_effect(1 * sqrt(volume) * booze_power * ALCOHOL_RATE * metabolization_ratio * seconds_per_tick)
|
||||
if(boozepwr > 0)
|
||||
var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
var/heavy_drinker_multiplier = (HAS_TRAIT(drinker, TRAIT_HEAVY_DRINKER) ? 0.5 : 1)
|
||||
@@ -146,7 +146,7 @@
|
||||
ph = 6
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/beer/green/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/beer/green/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(drinker.color != color)
|
||||
drinker.add_atom_colour(color, TEMPORARY_COLOUR_PRIORITY)
|
||||
@@ -155,9 +155,9 @@
|
||||
. = ..()
|
||||
drinker.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY, color)
|
||||
|
||||
/datum/reagent/consumable/ethanol/beer/green/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/beer/green/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
metabolization_rate = 1 * REAGENTS_METABOLISM
|
||||
metabolization_rate = REAGENTS_METABOLISM
|
||||
|
||||
if(!ishuman(affected_mob))
|
||||
return
|
||||
@@ -178,11 +178,11 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.set_dizzy_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
|
||||
drinker.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(10 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.adjust_drowsiness(-6 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.AdjustSleeping(-4 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(!HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
|
||||
drinker.set_jitter_if_lower(10 SECONDS)
|
||||
|
||||
@@ -210,10 +210,10 @@
|
||||
taste_description = "pancake syrup"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/whiskey/candycorn/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/whiskey/candycorn/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
drinker.adjust_hallucinations(4 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_hallucinations(4 SECONDS * metabolization_ratio)
|
||||
|
||||
/datum/reagent/consumable/ethanol/thirteenloko
|
||||
name = "Thirteen Loko"
|
||||
@@ -227,21 +227,21 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_drowsiness(-14 SECONDS * REM * seconds_per_tick)
|
||||
drinker.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, drinker.get_body_temp_normal())
|
||||
drinker.adjust_drowsiness(-14 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.AdjustSleeping(-4 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.adjust_bodytemperature(-5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, drinker.get_body_temp_normal())
|
||||
if(!HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
|
||||
drinker.set_jitter_if_lower(10 SECONDS)
|
||||
|
||||
/datum/reagent/consumable/ethanol/thirteenloko/overdose_start(mob/living/drinker)
|
||||
/datum/reagent/consumable/ethanol/thirteenloko/overdose_start(mob/living/drinker, metabolization_ratio)
|
||||
. = ..()
|
||||
to_chat(drinker, span_userdanger("Your entire body violently jitters as you start to feel queasy. You really shouldn't have drank all of that [name]!"))
|
||||
drinker.set_jitter_if_lower(40 SECONDS)
|
||||
drinker.Stun(1.5 SECONDS)
|
||||
|
||||
/datum/reagent/consumable/ethanol/thirteenloko/overdose_process(mob/living/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/thirteenloko/overdose_process(mob/living/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(3.5, seconds_per_tick) && iscarbon(drinker))
|
||||
var/obj/item/held_item = drinker.get_active_held_item()
|
||||
@@ -261,7 +261,7 @@
|
||||
eyes.forceMove(get_turf(drinker))
|
||||
to_chat(drinker, span_userdanger("You double over in pain as you feel your eyeballs liquify in your head!"))
|
||||
drinker.emote("scream")
|
||||
if(drinker.adjust_brute_loss(15 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
if(drinker.adjust_brute_loss(15 * metabolization_ratio, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
else
|
||||
to_chat(drinker, span_userdanger("You scream in terror as you go blind!"))
|
||||
@@ -299,10 +299,10 @@
|
||||
taste_description = "desperation and lactate"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(drinker.get_brute_loss() && SPT_PROB(5, seconds_per_tick))
|
||||
if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
if(drinker.heal_bodypart_damage(brute = 1 * metabolization_ratio, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/threemileisland
|
||||
@@ -315,9 +315,9 @@
|
||||
ph = 3.5
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/threemileisland/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/threemileisland/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.set_drugginess(100 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_drugginess(100 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/ethanol/gin
|
||||
name = "Gin"
|
||||
@@ -451,10 +451,10 @@
|
||||
taste_description = "death and licorice"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(5, seconds_per_tick) && !HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
|
||||
drinker.adjust_hallucinations(8 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_hallucinations(8 SECONDS * metabolization_ratio)
|
||||
|
||||
/datum/reagent/consumable/ethanol/hooch
|
||||
name = "Hooch"
|
||||
@@ -551,14 +551,14 @@
|
||||
taste_description = "a refreshing marriage of citrus and rum"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/carbon/cubano, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/carbon/cubano, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
if(cubano.mind && cubano.mind.has_antag_datum(/datum/antagonist/rev)) //Cuba Libre, the traditional drink of revolutions! Heals revolutionaries.
|
||||
need_mob_update = cubano.adjust_brute_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += cubano.adjust_fire_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += cubano.adjust_tox_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += cubano.adjust_oxy_loss(-5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update = cubano.adjust_brute_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += cubano.adjust_fire_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += cubano.adjust_tox_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += cubano.adjust_oxy_loss(-5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -639,13 +639,13 @@
|
||||
drink.tool_behaviour = initial(drink.tool_behaviour)
|
||||
drink.usesound = initial(drink.usesound)
|
||||
|
||||
/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(HAS_TRAIT(liver, TRAIT_ENGINEER_METABOLISM))
|
||||
ADD_TRAIT(drinker, TRAIT_HALT_RADIATION_EFFECTS, "[type]")
|
||||
if (HAS_TRAIT(drinker, TRAIT_IRRADIATED))
|
||||
if(drinker.adjust_tox_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(drinker.adjust_tox_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/screwdrivercocktail/on_mob_end_metabolize(mob/living/drinker)
|
||||
@@ -669,9 +669,9 @@
|
||||
taste_description = "tomatoes with a hint of lime and liquid murder"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_blood_volume((0.25 + round(2 * drinker.get_drunk_amount() / 40, 0.1)) * REM * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL) // Bloody Mary restores blood loss based on how drunk you are
|
||||
drinker.adjust_blood_volume((0.25 + round(2 * drinker.get_drunk_amount() / 40, 0.1)) * metabolization_ratio * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL) // Bloody Mary restores blood loss based on how drunk you are
|
||||
|
||||
/datum/reagent/consumable/ethanol/brave_bull
|
||||
name = "Brave Bull"
|
||||
@@ -715,7 +715,7 @@
|
||||
light_holder = new(drinker)
|
||||
light_holder.set_light(3, 0.7, COLOR_TANGERINE_YELLOW) //Tequila Sunrise makes you radiate dim light, like a sunrise!
|
||||
|
||||
/datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
if(QDELETED(light_holder))
|
||||
holder.del_reagent(type) //If we lost our light object somehow, remove the reagent
|
||||
else if(light_holder.loc != drinker)
|
||||
@@ -736,9 +736,9 @@
|
||||
taste_description = "spicy toxins"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_bodytemperature(15 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, drinker.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
|
||||
drinker.adjust_bodytemperature(15 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, drinker.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
|
||||
|
||||
/datum/reagent/consumable/ethanol/beepsky_smash
|
||||
name = "Beepsky Smash"
|
||||
@@ -756,20 +756,20 @@
|
||||
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_metabolize(mob/living/carbon/drinker)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
|
||||
metabolization_rate = 0.8
|
||||
metabolization_rate = 4 * REAGENTS_METABOLISM
|
||||
// if you don't have a liver, or your liver isn't an officer's liver
|
||||
var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(!liver || !HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
|
||||
beepsky_hallucination = new()
|
||||
drinker.gain_trauma(beepsky_hallucination, TRAUMA_RESILIENCE_ABSOLUTE)
|
||||
|
||||
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.set_jitter_if_lower(4 SECONDS)
|
||||
var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
// if you have a liver and that liver is an officer's liver
|
||||
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
|
||||
if(drinker.adjust_stamina_loss(-10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype))
|
||||
if(drinker.adjust_stamina_loss(-4 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
drinker.cause_hallucination(get_random_valid_hallucination_subtype(/datum/hallucination/nearby_fake_item), name)
|
||||
@@ -781,7 +781,7 @@
|
||||
if(beepsky_hallucination)
|
||||
QDEL_NULL(beepsky_hallucination)
|
||||
|
||||
/datum/reagent/consumable/ethanol/beepsky_smash/overdose_start(mob/living/carbon/drinker)
|
||||
/datum/reagent/consumable/ethanol/beepsky_smash/overdose_start(mob/living/carbon/drinker, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
// if you don't have a liver, or your liver isn't an officer's liver
|
||||
@@ -816,12 +816,12 @@
|
||||
boozepwr = 50 // will still smash but not as much.
|
||||
dorf_mode = TRUE
|
||||
|
||||
/datum/reagent/consumable/ethanol/manly_dorf/on_mob_life(mob/living/carbon/dwarf, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/manly_dorf/on_mob_life(mob/living/carbon/dwarf, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(dorf_mode)
|
||||
var/need_mob_update
|
||||
need_mob_update = dwarf.adjust_brute_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += dwarf.adjust_fire_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = dwarf.adjust_brute_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += dwarf.adjust_fire_loss(-2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -904,9 +904,9 @@
|
||||
taste_description = "death, the destroyer of worlds"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/manhattan_proj/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/manhattan_proj/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.set_drugginess(1 MINUTES * REM * seconds_per_tick)
|
||||
drinker.set_drugginess(1 MINUTES * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/ethanol/whiskeysoda
|
||||
name = "Whiskey Soda"
|
||||
@@ -926,9 +926,9 @@
|
||||
taste_description = "Jack Frost's piss"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_bodytemperature(20 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, drinker.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
|
||||
drinker.adjust_bodytemperature(20 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, drinker.get_body_temp_normal() + 20) //310.15 is the normal bodytemp.
|
||||
|
||||
/datum/reagent/consumable/ethanol/barefoot
|
||||
name = "Barefoot"
|
||||
@@ -939,12 +939,12 @@
|
||||
taste_description = "creamy berries"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/barefoot/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/barefoot/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(ishuman(drinker)) //Barefoot causes the imbiber to quickly regenerate brute trauma if they're not wearing shoes.
|
||||
var/mob/living/carbon/human/unshoed = drinker
|
||||
if(!unshoed.shoes)
|
||||
if(unshoed.adjust_brute_loss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
if(unshoed.adjust_brute_loss(-3 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/snowwhite
|
||||
@@ -1079,7 +1079,7 @@
|
||||
. = ..()
|
||||
drinker.remove_filter("singulo_rays")
|
||||
|
||||
/datum/reagent/consumable/ethanol/singulo/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/singulo/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
// 20u = 1x1, 45u = 2x2, 80u = 3x3
|
||||
@@ -1106,9 +1106,9 @@
|
||||
taste_description = "hot and spice"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_bodytemperature(50 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, BODYTEMP_HEAT_DAMAGE_LIMIT) //310.15 is the normal bodytemp.
|
||||
drinker.adjust_bodytemperature(50 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, BODYTEMP_HEAT_DAMAGE_LIMIT) //310.15 is the normal bodytemp.
|
||||
|
||||
/datum/reagent/consumable/ethanol/red_mead
|
||||
name = "Red Mead"
|
||||
@@ -1137,9 +1137,9 @@
|
||||
taste_description = "refreshingly cold"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_bodytemperature(-20 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, T0C) //310.15 is the normal bodytemp.
|
||||
drinker.adjust_bodytemperature(-20 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, T0C) //310.15 is the normal bodytemp.
|
||||
|
||||
/datum/reagent/consumable/ethanol/grog
|
||||
name = "Grog"
|
||||
@@ -1206,10 +1206,10 @@
|
||||
taste_description = "your brain coming out your nose"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/changelingsting/on_mob_life(mob/living/carbon/target, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/changelingsting/on_mob_life(mob/living/carbon/target, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/datum/antagonist/changeling/changeling = IS_CHANGELING(target)
|
||||
changeling?.adjust_chemicals(metabolization_rate * REM * seconds_per_tick)
|
||||
changeling?.adjust_chemicals(metabolization_rate * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/ethanol/irishcarbomb
|
||||
name = "Irish Car Bomb"
|
||||
@@ -1229,7 +1229,7 @@
|
||||
taste_description = "purified antagonism"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/syndicatebomb/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
playsound(get_turf(drinker), 'sound/effects/explosion/explosionfar.ogg', 100, TRUE)
|
||||
@@ -1272,11 +1272,12 @@
|
||||
taste_description = "a bad joke"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/bananahonk/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if((liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) || is_simian(drinker))
|
||||
if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
var/heal = 1 * metabolization_ratio * seconds_per_tick
|
||||
if(drinker.heal_bodypart_damage(brute = heal, burn = heal, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/silencer
|
||||
@@ -1289,11 +1290,12 @@
|
||||
taste_description = "a pencil eraser"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/silencer/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(ishuman(drinker) && HAS_MIND_TRAIT(drinker, TRAIT_MIMING))
|
||||
drinker.set_silence_if_lower(MIMEDRINK_SILENCE_DURATION)
|
||||
if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
var/heal = 1 * metabolization_ratio * seconds_per_tick
|
||||
if(drinker.heal_bodypart_damage(brute = heal, burn = heal, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/drunkenblumpkin
|
||||
@@ -1333,7 +1335,7 @@
|
||||
taste_description = "charged metal" // the same as teslium, honk honk.
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/fetching_fizz/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/turf/drinker_turf = get_turf(drinker)
|
||||
for(var/obj/item/stack/ore/ore in orange(3, drinker))
|
||||
@@ -1350,14 +1352,14 @@
|
||||
taste_description = "bravado in the face of disaster"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/hearty_punch/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/hearty_punch/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(drinker.health <= 0)
|
||||
var/need_mob_update
|
||||
need_mob_update = drinker.adjust_brute_loss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += drinker.adjust_fire_loss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += drinker.adjust_oxy_loss(-4 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += drinker.adjust_tox_loss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = drinker.adjust_brute_loss(-3.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += drinker.adjust_fire_loss(-3.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += drinker.adjust_oxy_loss(-5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += drinker.adjust_tox_loss(-3.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -1379,19 +1381,19 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
glass_price = DRINK_PRICE_HIGH
|
||||
|
||||
/datum/reagent/consumable/ethanol/atomicbomb/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/atomicbomb/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.set_drugginess(100 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_drugginess(100 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(!HAS_TRAIT(drinker, TRAIT_ALCOHOL_TOLERANCE))
|
||||
drinker.adjust_confusion(2 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(20 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_slurring(6 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_confusion(2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(20 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.adjust_slurring(6 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
switch(current_cycle)
|
||||
if(52 to 201)
|
||||
drinker.Sleeping(100 * REM * seconds_per_tick)
|
||||
drinker.Sleeping(100 * metabolization_ratio * seconds_per_tick)
|
||||
if(202 to INFINITY)
|
||||
drinker.AdjustSleeping(4 SECONDS * REM * seconds_per_tick)
|
||||
if(drinker.adjust_tox_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
drinker.AdjustSleeping(4 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(drinker.adjust_tox_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/gargle_blaster
|
||||
@@ -1403,19 +1405,19 @@
|
||||
taste_description = "your brains smashed out by a lemon wrapped around a gold brick"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/gargle_blaster/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/gargle_blaster/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_dizzy(3 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_dizzy(3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
switch(current_cycle)
|
||||
if(16 to 46)
|
||||
drinker.adjust_slurring(3 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_slurring(3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(46 to 56)
|
||||
if(SPT_PROB(30, seconds_per_tick))
|
||||
drinker.adjust_confusion(3 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_confusion(3 SECONDS * metabolization_ratio)
|
||||
if(56 to 201)
|
||||
drinker.set_drugginess(110 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_drugginess(110 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(201 to INFINITY)
|
||||
if(drinker.adjust_tox_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(drinker.adjust_tox_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/neurotoxin
|
||||
@@ -1425,29 +1427,29 @@
|
||||
boozepwr = 50
|
||||
quality = DRINK_VERYGOOD
|
||||
taste_description = "a numbing sensation"
|
||||
metabolization_rate = 1 * REAGENTS_METABOLISM
|
||||
metabolization_rate = REAGENTS_METABOLISM
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/neurotoxin/proc/pick_paralyzed_limb()
|
||||
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/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/neurotoxin/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.set_drugginess(100 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_dizzy(4 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_drugginess(50 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.adjust_dizzy(2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
var/need_mob_update
|
||||
need_mob_update = drinker.adjust_organ_loss(ORGAN_SLOT_BRAIN, 1 * REM * seconds_per_tick, 150, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = drinker.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5 * metabolization_ratio * seconds_per_tick, 150, required_organ_flag = affected_organ_flags)
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
need_mob_update += drinker.adjust_stamina_loss(10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += drinker.adjust_stamina_loss(5 * metabolization_ratio, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
drinker.drop_all_held_items()
|
||||
to_chat(drinker, span_notice("You cant feel your hands!"))
|
||||
if(current_cycle > 6)
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
var/paralyzed_limb = pick_paralyzed_limb()
|
||||
ADD_TRAIT(drinker, paralyzed_limb, type)
|
||||
need_mob_update += drinker.adjust_stamina_loss(10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += drinker.adjust_stamina_loss(5 * metabolization_ratio, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
if(current_cycle > 31)
|
||||
need_mob_update += drinker.adjust_organ_loss(ORGAN_SLOT_BRAIN, 2 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += drinker.adjust_organ_loss(ORGAN_SLOT_BRAIN, 1 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
if(current_cycle > 51 && SPT_PROB(7.5, seconds_per_tick))
|
||||
if(!drinker.undergoing_cardiac_arrest() && drinker.can_heartattack())
|
||||
drinker.set_heartattack(TRUE)
|
||||
@@ -1475,36 +1477,36 @@
|
||||
taste_description = "giving peace a chance"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.set_slurring_if_lower(1 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_slurring_if_lower(2.5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
switch(current_cycle)
|
||||
if(2 to 6)
|
||||
drinker.set_dizzy_if_lower(20 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_drugginess(1 MINUTES * REM * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(50 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.set_drugginess(150 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
drinker.emote(pick("twitch","giggle"))
|
||||
if(6 to 11)
|
||||
drinker.set_jitter_if_lower(40 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(40 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_drugginess(1.5 MINUTES * REM * seconds_per_tick)
|
||||
drinker.set_jitter_if_lower(100 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(100 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.set_drugginess(225 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
drinker.emote(pick("twitch","giggle"))
|
||||
if (11 to 201)
|
||||
drinker.set_jitter_if_lower(80 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(80 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_drugginess(2 MINUTES * REM * seconds_per_tick)
|
||||
drinker.set_jitter_if_lower(200 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(200 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.set_drugginess(5 MINUTES * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(16, seconds_per_tick))
|
||||
drinker.emote(pick("twitch","giggle"))
|
||||
if(201 to INFINITY)
|
||||
drinker.set_jitter_if_lower(120 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(120 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_drugginess(2.5 MINUTES * REM * seconds_per_tick)
|
||||
drinker.set_jitter_if_lower(300 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(300 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.set_drugginess(6.25 MINUTES * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(23, seconds_per_tick))
|
||||
drinker.emote(pick("twitch","giggle"))
|
||||
if(SPT_PROB(16, seconds_per_tick))
|
||||
if(drinker.adjust_tox_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(drinker.adjust_tox_loss(5 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/eggnog
|
||||
@@ -1536,10 +1538,10 @@
|
||||
taste_description = "bloody"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/narsour/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/narsour/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_timed_status_effect(6 SECONDS * REM * seconds_per_tick, /datum/status_effect/speech/slurring/cult, max_duration = 6 SECONDS)
|
||||
drinker.adjust_stutter_up_to(6 SECONDS * REM * seconds_per_tick, 6 SECONDS)
|
||||
drinker.adjust_timed_status_effect(6 SECONDS * metabolization_ratio * seconds_per_tick, /datum/status_effect/speech/slurring/cult, max_duration = 6 SECONDS)
|
||||
drinker.adjust_stutter_up_to(6 SECONDS * metabolization_ratio * seconds_per_tick, 6 SECONDS)
|
||||
|
||||
/datum/reagent/consumable/ethanol/triple_sec
|
||||
name = "Triple Sec"
|
||||
@@ -1582,12 +1584,13 @@
|
||||
taste_description = "an invigorating bitter freshness which suffuses your being; no enemy of the station will go unrobusted this day"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/quadruple_sec/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
//Securidrink in line with the Screwdriver for engineers or Nothing for mimes
|
||||
var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
|
||||
if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
var/heal = 1 * metabolization_ratio * seconds_per_tick
|
||||
if(drinker.heal_bodypart_damage(brute = heal, burn = heal, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/quintuple_sec
|
||||
@@ -1599,14 +1602,14 @@
|
||||
taste_description = "THE LAW"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/quintuple_sec/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
//Securidrink in line with the Screwdriver for engineers or Nothing for mimes but STRONG..
|
||||
var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
|
||||
var/need_mob_update
|
||||
need_mob_update = drinker.heal_bodypart_damage(2 * REM * seconds_per_tick, 2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += drinker.adjust_stamina_loss(-5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = drinker.heal_bodypart_damage(2 * metabolization_ratio * seconds_per_tick, 1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += drinker.adjust_stamina_loss(-5 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -1659,15 +1662,15 @@
|
||||
if(!drinker.stat && heal_points == 20) //brought us out of softcrit
|
||||
drinker.visible_message(span_danger("[drinker] lurches to [drinker.p_their()] feet!"), span_boldnotice("Up and at 'em, kid."))
|
||||
|
||||
/datum/reagent/consumable/ethanol/bastion_bourbon/on_mob_life(mob/living/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/bastion_bourbon/on_mob_life(mob/living/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(drinker.health > 0)
|
||||
var/need_mob_update
|
||||
need_mob_update = drinker.adjust_brute_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += drinker.adjust_fire_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += drinker.adjust_tox_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += drinker.adjust_oxy_loss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += drinker.adjust_stamina_loss(-5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = drinker.adjust_brute_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += drinker.adjust_fire_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += drinker.adjust_tox_loss(-0.125 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += drinker.adjust_oxy_loss(-0.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += drinker.adjust_stamina_loss(-1.25 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -1680,9 +1683,9 @@
|
||||
nutriment_factor = 2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/squirt_cider/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/squirt_cider/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.satiety += 5 * REM * seconds_per_tick //for context, vitamins give 15 satiety per second
|
||||
drinker.satiety += 5 * metabolization_ratio * seconds_per_tick //for context, vitamins give 15 satiety per second
|
||||
|
||||
/datum/reagent/consumable/ethanol/fringe_weaver
|
||||
name = "Fringe Weaver"
|
||||
@@ -1703,9 +1706,9 @@
|
||||
nutriment_factor = 2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/sugar_rush/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/sugar_rush/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.satiety -= 10 * REM * seconds_per_tick //junky as hell! a whole glass will keep you from being able to eat junk food
|
||||
drinker.satiety -= 10 * metabolization_ratio * seconds_per_tick //junky as hell! a whole glass will keep you from being able to eat junk food
|
||||
|
||||
/datum/reagent/consumable/ethanol/crevice_spike
|
||||
name = "Crevice Spike"
|
||||
@@ -1738,10 +1741,10 @@
|
||||
quality = DRINK_GOOD
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.apply_status_effect(/datum/status_effect/throat_soothed)
|
||||
drinker.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, drinker.get_body_temp_normal())
|
||||
drinker.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, 0, drinker.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/ethanol/alexander
|
||||
name = "Alexander"
|
||||
@@ -1763,7 +1766,7 @@
|
||||
to_chat(the_human, span_notice("[the_shield] appears polished, although you don't recall polishing it."))
|
||||
break
|
||||
|
||||
/datum/reagent/consumable/ethanol/alexander/on_mob_life(mob/living/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/alexander/on_mob_life(mob/living/drinker, seconds_per_tick, metabolization_ratio)
|
||||
var/obj/item/shield/the_shield = mighty_shield?.resolve()
|
||||
if(the_shield && !(the_shield in drinker.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, volume)
|
||||
@@ -1807,7 +1810,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
glass_price = DRINK_PRICE_MEDIUM
|
||||
|
||||
/datum/reagent/consumable/ethanol/between_the_sheets/on_mob_life(mob/living/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/between_the_sheets/on_mob_life(mob/living/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/is_between_the_sheets = FALSE
|
||||
for(var/obj/item/bedsheet/bedsheet in range(drinker.loc, 0))
|
||||
@@ -1822,13 +1825,13 @@
|
||||
var/need_mob_update
|
||||
if(drinker.get_brute_loss() && drinker.get_fire_loss()) //If you are damaged by both types, slightly increased healing but it only heals one. The more the merrier wink wink.
|
||||
if(prob(50))
|
||||
need_mob_update = drinker.adjust_brute_loss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = drinker.adjust_brute_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
else
|
||||
need_mob_update = drinker.adjust_fire_loss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = drinker.adjust_fire_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
else if(drinker.get_brute_loss()) //If you have only one, it still heals but not as well.
|
||||
need_mob_update = drinker.adjust_brute_loss(-0.2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = drinker.adjust_brute_loss(-0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
else if(drinker.get_fire_loss())
|
||||
need_mob_update = drinker.adjust_fire_loss(-0.2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = drinker.adjust_fire_loss(-0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -1868,12 +1871,12 @@
|
||||
taste_description = "utter bitterness"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(drinker.nutrition <= NUTRITION_LEVEL_STARVING)
|
||||
if(drinker.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(drinker.adjust_tox_loss(1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
drinker.adjust_nutrition(-5 * REM * seconds_per_tick)
|
||||
drinker.adjust_nutrition(-5 * metabolization_ratio * seconds_per_tick)
|
||||
drinker.overeatduration = 0
|
||||
|
||||
/datum/reagent/consumable/ethanol/fernet_cola
|
||||
@@ -1885,12 +1888,12 @@
|
||||
taste_description = "sweet relief"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(drinker.nutrition <= NUTRITION_LEVEL_STARVING)
|
||||
if(drinker.adjust_tox_loss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(drinker.adjust_tox_loss(0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
drinker.adjust_nutrition(-3 * REM * seconds_per_tick)
|
||||
drinker.adjust_nutrition(-3 * metabolization_ratio * seconds_per_tick)
|
||||
drinker.overeatduration = 0
|
||||
|
||||
/datum/reagent/consumable/ethanol/fanciulli
|
||||
@@ -1903,9 +1906,9 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
glass_price = DRINK_PRICE_HIGH
|
||||
|
||||
/datum/reagent/consumable/ethanol/fanciulli/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/fanciulli/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_nutrition(-5 * REM * seconds_per_tick)
|
||||
drinker.adjust_nutrition(-5 * metabolization_ratio * seconds_per_tick)
|
||||
drinker.overeatduration = 0
|
||||
|
||||
/datum/reagent/consumable/ethanol/fanciulli/on_mob_metabolize(mob/living/drinker)
|
||||
@@ -1923,9 +1926,9 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
glass_price = DRINK_PRICE_MEDIUM
|
||||
|
||||
/datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/branca_menta/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_bodytemperature(-20 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, T0C)
|
||||
drinker.adjust_bodytemperature(-20 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, T0C)
|
||||
|
||||
/datum/reagent/consumable/ethanol/branca_menta/on_mob_metabolize(mob/living/drinker)
|
||||
. = ..()
|
||||
@@ -1942,11 +1945,12 @@
|
||||
taste_description = "bubbling possibility"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/blank_paper/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/blank_paper/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(ishuman(drinker) && HAS_MIND_TRAIT(drinker, TRAIT_MIMING))
|
||||
drinker.set_silence_if_lower(MIMEDRINK_SILENCE_DURATION)
|
||||
if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
var/heal = 1 * metabolization_ratio * seconds_per_tick
|
||||
if(drinker.heal_bodypart_damage(brute = heal, burn = heal, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/fruit_wine
|
||||
@@ -1956,9 +1960,9 @@
|
||||
boozepwr = 35
|
||||
quality = DRINK_GOOD
|
||||
taste_description = "bad coding"
|
||||
ph = 4
|
||||
var/list/names = list("null fruit" = 1) //Names of the fruits used. Associative list where name is key, value is the percentage of that fruit.
|
||||
var/list/tastes = list("bad coding" = 1) //List of tastes. See above.
|
||||
ph = 4
|
||||
|
||||
/datum/reagent/consumable/ethanol/fruit_wine/on_new(list/data)
|
||||
if(!data)
|
||||
@@ -2073,15 +2077,15 @@
|
||||
taste_description = "friendship! It is magic, after all"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/wizz_fizz/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/wizz_fizz/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
//A healing drink similar to Quadruple Sec, Ling Stings, and Screwdrivers for the Wizznerds; the check is consistent with the changeling sting
|
||||
if(drinker?.mind?.has_antag_datum(/datum/antagonist/wizard))
|
||||
var/need_mob_update
|
||||
need_mob_update = drinker.heal_bodypart_damage(1 * REM * seconds_per_tick, 1 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_oxy_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += drinker.adjust_tox_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += drinker.adjust_stamina_loss(-5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = drinker.heal_bodypart_damage(1 * metabolization_ratio * seconds_per_tick, 1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_oxy_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += drinker.adjust_tox_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += drinker.adjust_stamina_loss(-5 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -2099,10 +2103,10 @@
|
||||
. = ..()
|
||||
AddElement(/datum/element/bugkiller_reagent)
|
||||
|
||||
/datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
// Does some damage to bug biotypes
|
||||
if(drinker.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(drinker.adjust_tox_loss(1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
// Random chance of causing a screm if we did some damage
|
||||
if(SPT_PROB(2, seconds_per_tick))
|
||||
@@ -2134,11 +2138,11 @@
|
||||
taste_description = "the outlaw spirit"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/turbo/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/turbo/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(2, seconds_per_tick))
|
||||
to_chat(drinker, span_notice("[pick("You feel disregard for the rule of law.", "You feel pumped!", "Your head is pounding.", "Your thoughts are racing..")]"))
|
||||
if(drinker.adjust_stamina_loss(-0.5 * drinker.get_drunk_amount() * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype))
|
||||
if(drinker.adjust_stamina_loss(-0.5 * drinker.get_drunk_amount() * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/old_timer
|
||||
@@ -2150,7 +2154,7 @@
|
||||
taste_description = "simpler times"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/old_timer/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/old_timer/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(10, seconds_per_tick) && ishuman(drinker))
|
||||
var/mob/living/carbon/human/metabolizer = drinker
|
||||
@@ -2195,13 +2199,13 @@
|
||||
taste_description = "dried plums and malt"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(drinker.mind?.holy_role)
|
||||
if(drinker.adjust_fire_loss(-2.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
if(drinker.adjust_fire_loss(-2.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
drinker.adjust_jitter(-2 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_stutter(-2 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_jitter(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
drinker.adjust_stutter(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/ethanol/blazaam
|
||||
name = "Blazaam"
|
||||
@@ -2211,7 +2215,7 @@
|
||||
taste_description = "alternate realities"
|
||||
var/stored_teleports = 0
|
||||
|
||||
/datum/reagent/consumable/ethanol/blazaam/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/blazaam/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(drinker.get_drunk_amount() > 40)
|
||||
if(stored_teleports)
|
||||
@@ -2239,12 +2243,12 @@
|
||||
taste_description = "fiery, with an aftertaste of burnt flesh"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/mauna_loa/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/mauna_loa/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
// Heats the user up while the reagent is in the body. Occasionally makes you burst into flames.
|
||||
drinker.adjust_bodytemperature(25 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick)
|
||||
drinker.adjust_bodytemperature(25 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick)
|
||||
if (SPT_PROB(2.5, seconds_per_tick))
|
||||
drinker.adjust_fire_stacks(1 * REM * seconds_per_tick)
|
||||
drinker.adjust_fire_stacks(1 * metabolization_ratio)
|
||||
drinker.ignite_mob()
|
||||
|
||||
/datum/reagent/consumable/ethanol/painkiller
|
||||
@@ -2273,7 +2277,7 @@
|
||||
quality = DRINK_NICE
|
||||
taste_description = "a horrible emulsion of pineapple and olive oil"
|
||||
|
||||
/datum/reagent/consumable/ethanol/pina_olivada/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/pina_olivada/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(8, seconds_per_tick))
|
||||
drinker.manual_emote(pick("coughs up some oil", "swallows the lump in [drinker.p_their()] throat", "gags", "chokes up a bit"))
|
||||
@@ -2295,9 +2299,9 @@
|
||||
taste_description = "your tastebuds being individually shanked"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/pruno/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/pruno/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_disgust(5 * REM * seconds_per_tick)
|
||||
drinker.adjust_disgust(5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/ethanol/ginger_amaretto
|
||||
name = "Ginger Amaretto"
|
||||
@@ -2336,10 +2340,10 @@
|
||||
taste_description = "sweet nectar"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/kortara/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/kortara/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(drinker.get_brute_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 0, updating_health = FALSE))
|
||||
if(drinker.heal_bodypart_damage(brute = 1 * metabolization_ratio, burn = 0, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/sea_breeze
|
||||
@@ -2351,7 +2355,7 @@
|
||||
taste_description = "mint choc chip"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/sea_breeze/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/sea_breeze/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.apply_status_effect(/datum/status_effect/throat_soothed)
|
||||
|
||||
@@ -2373,7 +2377,7 @@
|
||||
taste_description = "sorrow"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/drunken_espatier/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/drunken_espatier/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.add_mood_event("numb", /datum/mood_event/narcotic_medium, name) //comfortably numb
|
||||
|
||||
@@ -2395,13 +2399,13 @@
|
||||
nutriment_factor = 3
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/protein_blend/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/protein_blend/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
drinker.adjust_nutrition(2 * REM * seconds_per_tick)
|
||||
drinker.adjust_nutrition(2 * metabolization_ratio * seconds_per_tick)
|
||||
if(!islizard(drinker))
|
||||
drinker.adjust_disgust(5 * REM * seconds_per_tick)
|
||||
drinker.adjust_disgust(5 * metabolization_ratio * seconds_per_tick)
|
||||
else
|
||||
drinker.adjust_disgust(2 * REM * seconds_per_tick)
|
||||
drinker.adjust_disgust(2 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/ethanol/mushi_kombucha
|
||||
name = "Mushi Kombucha"
|
||||
@@ -2421,7 +2425,7 @@
|
||||
taste_description = "victory"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/triumphal_arch/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/triumphal_arch/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(islizard(drinker))
|
||||
drinker.add_mood_event("triumph", /datum/mood_event/memories_of_home, name)
|
||||
@@ -2580,10 +2584,10 @@
|
||||
var/hal_amt = 4
|
||||
var/hal_cap = 24
|
||||
|
||||
/datum/reagent/consumable/ethanol/helianthus/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/helianthus/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
drinker.adjust_hallucinations_up_to(4 SECONDS * REM * seconds_per_tick, 48 SECONDS)
|
||||
drinker.adjust_hallucinations_up_to(4 SECONDS * metabolization_ratio, 48 SECONDS)
|
||||
|
||||
/datum/reagent/consumable/ethanol/plumwine
|
||||
name = "Plum wine"
|
||||
@@ -2615,9 +2619,9 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
glass_price = DRINK_PRICE_MEDIUM
|
||||
|
||||
/datum/reagent/consumable/ethanol/gin_garden/on_mob_life(mob/living/carbon/doll, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/gin_garden/on_mob_life(mob/living/carbon/doll, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
doll.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, doll.get_body_temp_normal())
|
||||
doll.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, doll.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/ethanol/wine_voltaic
|
||||
name = "Voltaic Yellow Wine"
|
||||
@@ -2978,11 +2982,11 @@
|
||||
taste_description = "ginger-flavored recuperation"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/suffering_bastard/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/suffering_bastard/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.apply_status_effect(/datum/status_effect/headache_soothed) //prevents headaches
|
||||
affected_mob.adjust_disgust(-5 * REM * seconds_per_tick) //removes disgust, same with sol dry
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, -0.5 * REM * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags)) //heals brain damage very slowly, about 12 damage per 5u
|
||||
affected_mob.adjust_disgust(-5 * metabolization_ratio * seconds_per_tick) //removes disgust, same with sol dry
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, -0.5 * metabolization_ratio * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags)) //heals brain damage very slowly, about 12 damage per 5u
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/ethanol/blue_blazer
|
||||
@@ -2994,9 +2998,9 @@
|
||||
taste_description = "scorched sweet whiskey"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/blue_blazer/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/blue_blazer/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(25 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/ethanol/hot_toddy
|
||||
name = "Hot Toddy"
|
||||
@@ -3008,9 +3012,9 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
glass_price = DRINK_PRICE_MEDIUM
|
||||
|
||||
/datum/reagent/consumable/ethanol/hot_toddy/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/hot_toddy/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(25 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/ethanol/tizirian_sour
|
||||
name = "Tizirian Sour"
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
default_container = /obj/item/reagent_containers/cup/glass/bottle/juice/orangejuice
|
||||
|
||||
/datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.get_oxy_loss() && SPT_PROB(16, seconds_per_tick))
|
||||
if(affected_mob.adjust_oxy_loss(-1 * REM * seconds_per_tick, FALSE, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type))
|
||||
if(affected_mob.adjust_oxy_loss(-0.5 * metabolization_ratio, FALSE, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/tomatojuice
|
||||
@@ -21,10 +21,10 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
default_container = /obj/item/reagent_containers/cup/glass/bottle/juice/tomatojuice
|
||||
|
||||
/datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.get_fire_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 0, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 0, burn = 0.5 * metabolization_ratio, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/limejuice
|
||||
@@ -36,10 +36,10 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
default_container = /obj/item/reagent_containers/cup/glass/bottle/juice/limejuice
|
||||
|
||||
/datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.get_tox_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
if(affected_mob.adjust_tox_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(-0.5 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/carrotjuice
|
||||
@@ -49,17 +49,17 @@
|
||||
taste_description = "carrots"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/carrotjuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_eye_blur(-2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_temp_blindness(-2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_eye_blur(-1 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_temp_blindness(-1 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
var/need_mob_update
|
||||
switch(current_cycle)
|
||||
if(21 to 110)
|
||||
if(SPT_PROB(100 * (1 - (sqrt(110 - current_cycle) / 10)), seconds_per_tick))
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_EYES, -2 * REM * seconds_per_tick)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_EYES, -1 * metabolization_ratio)
|
||||
if(110 to INFINITY)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_EYES, -2 * REM * seconds_per_tick)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_EYES, -1 * metabolization_ratio * seconds_per_tick)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -84,9 +84,9 @@
|
||||
taste_description = "berries"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/watermelonjuice
|
||||
@@ -111,11 +111,11 @@
|
||||
taste_description = "banana"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if((liver && HAS_TRAIT(liver, TRAIT_COMEDY_METABOLISM)) || is_simian(affected_mob))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 0.5 * metabolization_ratio * seconds_per_tick, burn = 0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/nothing
|
||||
@@ -128,11 +128,11 @@
|
||||
required_drink_type = /datum/reagent/consumable/nothing
|
||||
icon_state = "shotglass"
|
||||
|
||||
/datum/reagent/consumable/nothing/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/nothing/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(ishuman(drinker) && HAS_MIND_TRAIT(drinker, TRAIT_MIMING))
|
||||
drinker.set_silence_if_lower(MIMEDRINK_SILENCE_DURATION)
|
||||
if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
if(drinker.heal_bodypart_damage(brute = 0.5 * metabolization_ratio * seconds_per_tick, burn = 0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/laughter
|
||||
@@ -143,7 +143,7 @@
|
||||
taste_description = "laughter"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/laughter/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/laughter/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tic, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.emote("laugh")
|
||||
affected_mob.add_mood_event("chemical_laughter", /datum/mood_event/chemical_laughter)
|
||||
@@ -156,7 +156,7 @@
|
||||
taste_description = "laughter"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/superlaughter/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/superlaughter/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(16, seconds_per_tick))
|
||||
affected_mob.visible_message(span_danger("[affected_mob] bursts out into a fit of uncontrollable laughter!"), span_userdanger("You burst out in a fit of uncontrollable laughter!"))
|
||||
@@ -179,11 +179,11 @@
|
||||
taste_description = "vinegar brine"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/pickle/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/pickle/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if((liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM)))
|
||||
if(affected_mob.adjust_tox_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(-0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/grapejuice
|
||||
@@ -218,9 +218,9 @@
|
||||
return
|
||||
myseed.adjust_potency(-round(volume * 0.5))
|
||||
|
||||
/datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
if(affected_mob.get_brute_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 0, updating_health = FALSE))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 0.5 * metabolization_ratio, burn = 0, updating_health = FALSE))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
|
||||
holder.remove_reagent(/datum/reagent/consumable/capsaicin, seconds_per_tick)
|
||||
@@ -240,7 +240,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
default_container = /obj/item/reagent_containers/condiment/soymilk
|
||||
|
||||
/datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.get_brute_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
if(affected_mob.heal_bodypart_damage(1, 0))
|
||||
@@ -254,7 +254,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
default_container = /obj/item/reagent_containers/cup/glass/bottle/juice/cream
|
||||
|
||||
/datum/reagent/consumable/cream/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/cream/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(10, seconds_per_tick) && affected_mob.heal_bodypart_damage(1, 0))
|
||||
return UPDATE_MOB_HEALTH
|
||||
@@ -270,19 +270,19 @@
|
||||
glass_price = DRINK_PRICE_STOCK
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/coffee/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/coffee/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/coffee/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/coffee/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(-5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
//310.15 is the normal bodytemp.
|
||||
affected_mob.adjust_bodytemperature(25 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(12.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
if(holder.has_reagent(/datum/reagent/consumable/frostoil))
|
||||
holder.remove_reagent(/datum/reagent/consumable/frostoil, 5 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/consumable/frostoil, 2.5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/tea
|
||||
name = "Tea"
|
||||
@@ -295,16 +295,16 @@
|
||||
default_container = /obj/item/reagent_containers/cup/glass/mug/tea
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/tea/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/tea/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_dizzy(-4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_jitter(-6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-1 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_jitter(-3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-1 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.get_tox_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
if(affected_mob.adjust_tox_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(-0.5 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
affected_mob.adjust_bodytemperature(20 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(10 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
|
||||
var/to_chatted = FALSE
|
||||
for(var/datum/wound/iter_wound as anything in affected_mob.all_wounds)
|
||||
@@ -354,7 +354,7 @@
|
||||
taste_description = "bitter tea"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/tea/arnold_palmer/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_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.")]"))
|
||||
@@ -369,16 +369,16 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/icecoffee/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/icecoffee/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/icecoffee/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/icecoffee/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_dizzy(-5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-2.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/hot_ice_coffee
|
||||
name = "Hot Ice Coffee"
|
||||
@@ -390,17 +390,17 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/hot_ice_coffee/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/hot_ice_coffee/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/hot_ice_coffee/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/hot_ice_coffee/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-7 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
if(affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
affected_mob.adjust_dizzy(-5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-3.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
if(affected_mob.adjust_tox_loss(0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/icetea
|
||||
@@ -412,15 +412,15 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/icetea/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/icetea/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_dizzy(-4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-1 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.get_tox_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
if(affected_mob.adjust_tox_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(-0.5 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(-2.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/space_cola
|
||||
name = "Cola"
|
||||
@@ -429,10 +429,10 @@
|
||||
taste_description = "cola"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/space_cola/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_drowsiness(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_drowsiness(-5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-2.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/roy_rogers
|
||||
name = "Roy Rogers"
|
||||
@@ -442,10 +442,10 @@
|
||||
taste_description = "fruity overlysweet cola"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/roy_rogers/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(12 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
/datum/reagent/consumable/roy_rogers/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
affected_mob.set_jitter_if_lower(6 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-2.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/nuka_cola
|
||||
@@ -464,14 +464,14 @@
|
||||
. = ..()
|
||||
affected_mob.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/nuka_cola)
|
||||
|
||||
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(40 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_drugginess(1 MINUTES * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(3 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(20 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.set_drugginess(30 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(1.5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.remove_status_effect(/datum/status_effect/drowsiness)
|
||||
affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.AdjustSleeping(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-2.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
if (SSradiation.can_irradiate_basic(affected_mob))
|
||||
affected_mob.AddComponent(/datum/component/irradiated)
|
||||
|
||||
@@ -495,18 +495,18 @@
|
||||
affected_mob.adjust_stamina_loss(min(80, current_cycle * 3), required_biotype = affected_biotype)
|
||||
affected_mob.adjust_drowsiness((current_cycle-1) * 2 SECONDS)
|
||||
|
||||
/datum/reagent/consumable/rootbeer/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/rootbeer/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(current_cycle > 3 && !effect_enabled) // takes a few seconds for the bonus to kick in to prevent microdosing
|
||||
to_chat(affected_mob, span_notice("You feel your trigger finger getting itchy..."))
|
||||
ADD_TRAIT(affected_mob, TRAIT_DOUBLE_TAP, type)
|
||||
effect_enabled = TRUE
|
||||
|
||||
affected_mob.set_jitter_if_lower(4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(1 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(prob(50))
|
||||
affected_mob.adjust_dizzy(2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(0.5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(current_cycle > 10)
|
||||
affected_mob.adjust_dizzy(3 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(0.75 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/grey_bull
|
||||
name = "Grey Bull"
|
||||
@@ -524,13 +524,13 @@
|
||||
affected_atom.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high)
|
||||
metabolization_rate *= 0.8
|
||||
|
||||
/datum/reagent/consumable/grey_bull/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/grey_bull/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(40 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(20 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(1 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.remove_status_effect(/datum/status_effect/drowsiness)
|
||||
affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.AdjustSleeping(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-2.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/spacemountainwind
|
||||
name = "SM Wind"
|
||||
@@ -540,12 +540,12 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/spacemountainwind/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/spacemountainwind/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_drowsiness(-14 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-7 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-1 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-2.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.set_jitter_if_lower(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/dr_gibb
|
||||
name = "Dr. Gibb"
|
||||
@@ -554,10 +554,10 @@
|
||||
taste_description = "cherry soda" // FALSE ADVERTISING
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/dr_gibb/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_drowsiness(-12 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_drowsiness(-6 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-2.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/space_up
|
||||
name = "Space-Up"
|
||||
@@ -566,9 +566,9 @@
|
||||
taste_description = "cherry soda"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/space_up/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(-4 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/lemon_lime
|
||||
name = "Lemon Lime"
|
||||
@@ -577,9 +577,9 @@
|
||||
taste_description = "tangy lime and lemon soda"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/lemon_lime/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(-4 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/pwr_game
|
||||
name = "Pwr Game"
|
||||
@@ -595,9 +595,9 @@
|
||||
to_chat(exposed_mob, span_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..."))
|
||||
|
||||
/datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/pwr_game/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(-4 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
affected_mob.mind?.adjust_experience(/datum/skill/gaming, 5)
|
||||
|
||||
@@ -608,9 +608,9 @@
|
||||
taste_description = "carbonated metallic soda"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/shamblers/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/shamblers/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(-4 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/sodawater
|
||||
name = "Soda Water"
|
||||
@@ -625,11 +625,11 @@
|
||||
mytray.adjust_waterlevel(round(volume))
|
||||
mytray.adjust_plant_health(round(volume * 0.1))
|
||||
|
||||
/datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/sodawater/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_dizzy(-5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-2.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/tonic
|
||||
name = "Tonic Water"
|
||||
@@ -638,12 +638,12 @@
|
||||
taste_description = "tart and fresh"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/tonic/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/tonic/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_dizzy(-5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-2.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/wellcheers
|
||||
name = "Wellcheers"
|
||||
@@ -652,17 +652,17 @@
|
||||
taste_description = "grapes and the fresh open sea"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/wellcheers/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/wellcheers/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_drowsiness(3 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(1.5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
var/need_mob_update
|
||||
switch(affected_mob.mob_mood.sanity_level)
|
||||
if (SANITY_LEVEL_GREAT to SANITY_LEVEL_NEUTRAL)
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-1.5 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-0.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
if (SANITY_LEVEL_DISTURBED to SANITY_LEVEL_UNSTABLE)
|
||||
affected_mob.add_mood_event("wellcheers", /datum/mood_event/wellcheers)
|
||||
if (SANITY_LEVEL_CRAZY to SANITY_LEVEL_INSANE)
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(3 * REM * seconds_per_tick, updating_stamina = FALSE)
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(1.5 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -675,13 +675,13 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/monkey_energy/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/monkey_energy/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(80 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(40 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(1 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.remove_status_effect(/datum/status_effect/drowsiness)
|
||||
affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.AdjustSleeping(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-2.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/monkey_energy/on_mob_metabolize(mob/living/affected_mob)
|
||||
. = ..()
|
||||
@@ -692,7 +692,7 @@
|
||||
. = ..()
|
||||
affected_mob.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/monkey_energy)
|
||||
|
||||
/datum/reagent/consumable/monkey_energy/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/monkey_energy/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(7.5, seconds_per_tick))
|
||||
affected_mob.say(pick_list_replacements(BOOMER_FILE, "boomer"), forced = /datum/reagent/consumable/monkey_energy)
|
||||
@@ -705,9 +705,9 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
default_container = /obj/item/reagent_containers/cup/glass/ice
|
||||
|
||||
/datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/ice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, FALSE, affected_mob.get_body_temp_normal()))
|
||||
if(affected_mob.adjust_bodytemperature(-2.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, FALSE, affected_mob.get_body_temp_normal()))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/soy_latte
|
||||
@@ -721,19 +721,19 @@
|
||||
glass_price = DRINK_PRICE_EASY
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/soy_latte/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/soy_latte/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/soy_latte/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/soy_latte/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(-5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.SetSleeping(0)
|
||||
affected_mob.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(2.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
if(affected_mob.get_brute_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
need_mob_update += affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 0, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.heal_bodypart_damage(brute = 0.5 * metabolization_ratio, burn = 0, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -748,19 +748,19 @@
|
||||
glass_price = DRINK_PRICE_EASY
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/cafe_latte/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/cafe_latte/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/cafe_latte/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-12 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(-5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-6 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.SetSleeping(0)
|
||||
affected_mob.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(2.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
if(affected_mob.get_brute_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
need_mob_update += affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 0, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.heal_bodypart_damage(brute = 0.5 * metabolization_ratio, burn = 0, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -772,18 +772,18 @@
|
||||
taste_description = "homely fruit"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
if(affected_mob.nutrition && (affected_mob.nutrition - 2 > 0))
|
||||
var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(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!
|
||||
affected_mob.adjust_nutrition(-2 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_nutrition(-1 * metabolization_ratio * seconds_per_tick)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -795,9 +795,9 @@
|
||||
taste_description = "sweet tangy fruit"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/cinderella/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/cinderella/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_disgust(-5 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_disgust(-2.5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/cherryshake
|
||||
name = "Cherry Shake"
|
||||
@@ -879,19 +879,19 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/pumpkin_latte/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/pumpkin_latte/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/pumpkin_latte/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/pumpkin_latte/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(-5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.SetSleeping(0)
|
||||
affected_mob.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(2.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
if(affected_mob.get_brute_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
need_mob_update += affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 0, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.heal_bodypart_damage(brute = 0.5 * metabolization_ratio, burn = 0, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -933,9 +933,9 @@
|
||||
taste_description = "grape soda"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/grape_soda/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(-2.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/milk/chocolate_milk
|
||||
name = "Chocolate Milk"
|
||||
@@ -953,13 +953,13 @@
|
||||
taste_description = "creamy chocolate"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
affected_mob.adjust_bodytemperature(2.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
if(affected_mob.get_brute_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 0, updating_health = FALSE))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 0.5 * metabolization_ratio, burn = 0, updating_health = FALSE))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
|
||||
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 2 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 1 * metabolization_ratio * seconds_per_tick)
|
||||
return ..() || .
|
||||
|
||||
/datum/reagent/consumable/italian_coco
|
||||
@@ -971,9 +971,9 @@
|
||||
taste_description = "thick creamy chocolate"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/italian_coco/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/italian_coco/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(2.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/menthol
|
||||
name = "Menthol"
|
||||
@@ -983,7 +983,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
default_container = /obj/item/reagent_containers/cup/glass/bottle/juice/menthol
|
||||
|
||||
/datum/reagent/consumable/menthol/on_mob_life(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/menthol/on_mob_life(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.apply_status_effect(/datum/status_effect/throat_soothed)
|
||||
|
||||
@@ -999,10 +999,10 @@
|
||||
if(IS_REVOLUTIONARY(drinker))
|
||||
to_chat(drinker, span_warning("Antioxidants are weakening your radical spirit!"))
|
||||
|
||||
/datum/reagent/consumable/grenadine/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/grenadine/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(IS_REVOLUTIONARY(drinker))
|
||||
drinker.set_dizzy_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
drinker.set_dizzy_if_lower(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(drinker.get_stamina_loss() < 80)
|
||||
drinker.adjust_stamina_loss(12, required_biotype = affected_biotype) //The pomegranate stops free radicals! Har har.
|
||||
|
||||
@@ -1036,9 +1036,9 @@
|
||||
taste_description = "fizzy vanilla"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/cream_soda/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(-2.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/sol_dry
|
||||
name = "Sol Dry"
|
||||
@@ -1048,9 +1048,9 @@
|
||||
taste_description = "sweet ginger spice"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/sol_dry/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/sol_dry/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_disgust(-5 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_disgust(-2.5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/shirley_temple
|
||||
name = "Shirley Temple"
|
||||
@@ -1060,8 +1060,8 @@
|
||||
taste_description = "sweet cherry syrup and ginger spice"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/shirley_temple/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
affected_mob.adjust_disgust(-3 * REM * seconds_per_tick)
|
||||
/datum/reagent/consumable/shirley_temple/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
affected_mob.adjust_disgust(-1.5 * metabolization_ratio * seconds_per_tick)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/red_queen
|
||||
@@ -1073,7 +1073,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
var/current_size = RESIZE_DEFAULT_SIZE
|
||||
|
||||
/datum/reagent/consumable/red_queen/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/red_queen/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(50, seconds_per_tick))
|
||||
return
|
||||
@@ -1111,10 +1111,10 @@
|
||||
taste_description = "vegetable"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.get_tox_loss() && SPT_PROB(16, seconds_per_tick))
|
||||
if(affected_mob.adjust_tox_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(-0.5 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/agua_fresca
|
||||
@@ -1125,11 +1125,11 @@
|
||||
taste_description = "cool refreshing watermelon"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/agua_fresca/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/agua_fresca/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(-4 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
if(affected_mob.get_tox_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
if(affected_mob.adjust_tox_loss(-0.5, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(-0.25 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/mushroom_tea
|
||||
@@ -1140,10 +1140,10 @@
|
||||
taste_description = "mushrooms"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/mushroom_tea/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/mushroom_tea/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(islizard(affected_mob))
|
||||
if(affected_mob.adjust_oxy_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type))
|
||||
if(affected_mob.adjust_oxy_loss(-0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
//Moth Stuff
|
||||
@@ -1227,11 +1227,11 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
glass_price = DRINK_PRICE_HIGH
|
||||
|
||||
/datum/reagent/consumable/cucumberlemonade/on_mob_life(mob/living/carbon/doll, seconds_per_tick)
|
||||
/datum/reagent/consumable/cucumberlemonade/on_mob_life(mob/living/carbon/doll, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
doll.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, doll.get_body_temp_normal())
|
||||
doll.adjust_bodytemperature(-4 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, doll.get_body_temp_normal())
|
||||
if(doll.get_tox_loss() && SPT_PROB(10, seconds_per_tick))
|
||||
if(doll.adjust_tox_loss(-0.5, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(doll.adjust_tox_loss(-0.25 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/mississippi_queen
|
||||
@@ -1241,16 +1241,16 @@
|
||||
taste_description = "sludge seeping down your throat"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/mississippi_queen/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/consumable/mississippi_queen/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
switch(current_cycle)
|
||||
if(11 to 21)
|
||||
drinker.adjust_dizzy(4 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_dizzy(2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(21 to 31)
|
||||
if(SPT_PROB(15, seconds_per_tick))
|
||||
drinker.adjust_confusion(4 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_confusion(2 SECONDS * metabolization_ratio)
|
||||
if(31 to 201)
|
||||
drinker.adjust_hallucinations(60 SECONDS * REM * seconds_per_tick)
|
||||
drinker.adjust_hallucinations(30 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/t_letter
|
||||
name = "T"
|
||||
@@ -1260,15 +1260,15 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/consumable/t_letter/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/t_letter/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!HAS_MIND_TRAIT(affected_mob, TRAIT_MIMING))
|
||||
return
|
||||
affected_mob.set_silence_if_lower(MIMEDRINK_SILENCE_DURATION)
|
||||
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.AdjustSleeping(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.get_tox_loss() && SPT_PROB(25, seconds_per_tick))
|
||||
if(affected_mob.adjust_tox_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(-1 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/hakka_mate
|
||||
@@ -1319,7 +1319,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
quality = DRINK_VERYGOOD
|
||||
|
||||
/datum/reagent/consumable/fruit_punch/on_mob_life(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/fruit_punch/on_mob_life(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
var/found_valid_cooler = FALSE
|
||||
@@ -1333,14 +1333,14 @@
|
||||
if(found_valid_cooler)
|
||||
affected_mob.clear_alert("punch_bad")
|
||||
affected_mob.throw_alert("punch_good", /atom/movable/screen/alert/fruit_punch_good)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-0.6 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-0.6 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-0.6 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-0.3 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-0.3 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-0.3 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
affected_mob.remove_movespeed_modifier(/datum/movespeed_modifier/punch_punishment)
|
||||
else
|
||||
affected_mob.clear_alert("punch_good")
|
||||
affected_mob.throw_alert("punch_bad", /atom/movable/screen/alert/fruit_punch_bad)
|
||||
need_mob_update = affected_mob.apply_damage(1.5 * REM * seconds_per_tick, TOX)
|
||||
need_mob_update = affected_mob.apply_damage(0.75 * metabolization_ratio * seconds_per_tick, TOX)
|
||||
affected_mob.add_movespeed_modifier(/datum/movespeed_modifier/punch_punishment)
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
affected_mob.Knockdown(3 SECONDS, 6 SECONDS) //Gives daze effect. Using the cooler is a commitment and if you get jumped during it or have to run away to fight something, you should be vulnerable.
|
||||
@@ -1378,9 +1378,9 @@
|
||||
taste_description = "mild aromatics"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/ethanol/bitters_soda/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/ethanol/bitters_soda/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_disgust(-5 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_disgust(-2.5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/lean
|
||||
name = "Lean"
|
||||
@@ -1390,16 +1390,16 @@
|
||||
taste_description = "purple and a hint of opioid."
|
||||
addiction_types = list(/datum/addiction/opioids = 6)
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolization_rate = 0.2 * REM
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/lean/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/lean/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_jitter(2.5 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_stutter(2.25 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drugginess(2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_jitter(2.5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_stutter(2.25 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drugginess(2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(15, seconds_per_tick))
|
||||
affected_mob.emote(pick("taunt","twitch","shiver","laugh","moan","blush","stare"))
|
||||
if(current_cycle > 16 && SPT_PROB(3.5, seconds_per_tick))
|
||||
affected_mob.adjust_dizzy(15 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(7.5 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_dizzy(15 SECONDS * metabolization_ratio)
|
||||
affected_mob.adjust_drowsiness(6.5 SECONDS * metabolization_ratio)
|
||||
affected_mob.emote("drool")
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Drug"
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
taste_description = "bitterness"
|
||||
var/trippy = TRUE //Does this drug make you trip?
|
||||
var/trippy = TRUE
|
||||
|
||||
/datum/reagent/drug/on_mob_end_metabolize(mob/living/affected_mob)
|
||||
. = ..()
|
||||
@@ -18,20 +18,20 @@
|
||||
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/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/space_drugs/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_drugginess(30 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_drugginess(30 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(isturf(affected_mob.loc) && !isspaceturf(affected_mob.loc) && !HAS_TRAIT(affected_mob, TRAIT_IMMOBILIZED) && SPT_PROB(5, seconds_per_tick))
|
||||
step(affected_mob, pick(GLOB.cardinals))
|
||||
if(SPT_PROB(3.5, seconds_per_tick))
|
||||
affected_mob.emote(pick("twitch","drool","moan","giggle"))
|
||||
|
||||
/datum/reagent/drug/space_drugs/overdose_start(mob/living/affected_mob)
|
||||
/datum/reagent/drug/space_drugs/overdose_start(mob/living/affected_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
to_chat(affected_mob, span_userdanger("You start tripping hard!"))
|
||||
affected_mob.add_mood_event("[type]_overdose", /datum/mood_event/overdose, name)
|
||||
|
||||
/datum/reagent/drug/space_drugs/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/space_drugs/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/hallucination_duration_in_seconds = (affected_mob.get_timed_status_effect_duration(/datum/status_effect/hallucination) / 10)
|
||||
if(hallucination_duration_in_seconds < volume && SPT_PROB(10, seconds_per_tick))
|
||||
@@ -46,7 +46,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolization_rate = 0.125 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/drug/cannabis/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/cannabis/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.apply_status_effect(/datum/status_effect/stoned)
|
||||
if(SPT_PROB(1, seconds_per_tick))
|
||||
@@ -54,7 +54,7 @@
|
||||
to_chat(affected_mob, span_notice("[smoke_message]"))
|
||||
if(SPT_PROB(2, seconds_per_tick))
|
||||
affected_mob.emote(pick("smile","laugh","giggle"))
|
||||
affected_mob.adjust_nutrition(-0.15 * REM * seconds_per_tick) //munchies
|
||||
affected_mob.adjust_nutrition(-0.6 * metabolization_ratio * seconds_per_tick) //munchies
|
||||
if(SPT_PROB(4, seconds_per_tick) && affected_mob.body_position == LYING_DOWN && !affected_mob.IsSleeping()) //chance to fall asleep if lying down
|
||||
to_chat(affected_mob, span_warning("You doze off..."))
|
||||
affected_mob.Sleeping(10 SECONDS)
|
||||
@@ -79,22 +79,22 @@
|
||||
mytray.adjust_toxic(round(volume))
|
||||
mytray.adjust_pestlevel(-rand(1, 2))
|
||||
|
||||
/datum/reagent/drug/nicotine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/nicotine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(0.5, seconds_per_tick))
|
||||
var/smoke_message = pick("You feel relaxed.", "You feel calmed.","You feel alert.","You feel rugged.")
|
||||
to_chat(affected_mob, span_notice("[smoke_message]"))
|
||||
affected_mob.add_mood_event("smoked", /datum/mood_event/smoked)
|
||||
affected_mob.remove_status_effect(/datum/status_effect/jitter)
|
||||
affected_mob.AdjustAllImmobility(-50 * REM * seconds_per_tick)
|
||||
affected_mob.AdjustAllImmobility(-200 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/nicotine/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/nicotine/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_tox_loss(0.1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(1.1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(0.4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(4.4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
inverse_chem = /datum/reagent/inverse/krokodil
|
||||
addiction_types = list(/datum/addiction/opioids = 18) //7.2 per 2 seconds
|
||||
|
||||
/datum/reagent/drug/krokodil/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/krokodil/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
@@ -125,11 +125,11 @@
|
||||
if(affected_mob.adjust_brute_loss(50 * REM, updating_health = FALSE, required_bodytype = affected_bodytype)) // holy shit your skin just FELL THE FUCK OFF
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/krokodil/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/krokodil/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.25 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(0.25 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.25 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -168,26 +168,26 @@
|
||||
. = ..()
|
||||
affected_mob.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/methamphetamine)
|
||||
|
||||
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.", "You understand now.")
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_notice("[high_message]"))
|
||||
affected_mob.add_mood_event("tweaking", /datum/mood_event/stimulant_medium)
|
||||
affected_mob.AdjustAllImmobility(-40 * REM * seconds_per_tick)
|
||||
affected_mob.AdjustAllImmobility(-26.67 * metabolization_ratio * seconds_per_tick)
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(-5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
affected_mob.set_jitter_if_lower(4 SECONDS * REM * seconds_per_tick)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, rand(1, 4) * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(-3.34 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
affected_mob.set_jitter_if_lower(2.67 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.67 * rand(1, 4) * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
if(need_mob_update)
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
affected_mob.emote(pick("twitch", "shiver"))
|
||||
|
||||
/datum/reagent/drug/methamphetamine/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/methamphetamine/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!HAS_TRAIT(affected_mob, TRAIT_IMMOBILIZED) && !ismovable(affected_mob.loc))
|
||||
for(var/i in 1 to round(4 * REM * seconds_per_tick, 1))
|
||||
for(var/i in 1 to round(2.67 * metabolization_ratio * seconds_per_tick, 1))
|
||||
step(affected_mob, pick(GLOB.cardinals))
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
affected_mob.emote("laugh")
|
||||
@@ -195,8 +195,8 @@
|
||||
affected_mob.visible_message(span_danger("[affected_mob]'s hands flip out and flail everywhere!"))
|
||||
affected_mob.drop_all_held_items()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, (rand(5, 10) / 10) * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(0.67 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.67 * (rand(5, 10) / 10) * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -226,27 +226,27 @@
|
||||
if(rage)
|
||||
QDEL_NULL(rage)
|
||||
|
||||
/datum/reagent/drug/bath_salts/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/bath_salts/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.")
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_notice("[high_message]"))
|
||||
affected_mob.add_mood_event("salted", /datum/mood_event/stimulant_heavy)
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(-6 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 4 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
affected_mob.adjust_hallucinations(10 SECONDS * REM * seconds_per_tick)
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(-6 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 4 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
affected_mob.adjust_hallucinations(10 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(need_mob_update)
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(!HAS_TRAIT(affected_mob, TRAIT_IMMOBILIZED) && !ismovable(affected_mob.loc))
|
||||
step(affected_mob, pick(GLOB.cardinals))
|
||||
step(affected_mob, pick(GLOB.cardinals))
|
||||
|
||||
/datum/reagent/drug/bath_salts/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/bath_salts/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_hallucinations(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_hallucinations(10 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(!HAS_TRAIT(affected_mob, TRAIT_IMMOBILIZED) && !ismovable(affected_mob.loc))
|
||||
for(var/i in 1 to round(8 * REM * seconds_per_tick, 1))
|
||||
for(var/i in 1 to round(8 * metabolization_ratio * seconds_per_tick, 1))
|
||||
step(affected_mob, pick(GLOB.cardinals))
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
affected_mob.emote(pick("twitch","drool","moan"))
|
||||
@@ -263,14 +263,14 @@
|
||||
addiction_types = list(/datum/addiction/stimulants = 8)
|
||||
metabolized_traits = list(TRAIT_STIMULATED)
|
||||
|
||||
/datum/reagent/drug/aranesp/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/aranesp/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/high_message = pick("You feel amped up.", "You feel ready.", "You feel like you can push it to the limit.")
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_notice("[high_message]"))
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(-18 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(-18 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(SPT_PROB(30, seconds_per_tick))
|
||||
affected_mob.losebreath++
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(1, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
@@ -297,15 +297,15 @@
|
||||
. = ..()
|
||||
affected_mob.clear_mood_event("happiness_drug")
|
||||
|
||||
/datum/reagent/drug/happiness/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/happiness/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.remove_status_effect(/datum/status_effect/jitter)
|
||||
affected_mob.remove_status_effect(/datum/status_effect/confusion)
|
||||
affected_mob.disgust = 0
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.2 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.2 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/happiness/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/happiness/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(16, seconds_per_tick))
|
||||
var/reaction = rand(1,3)
|
||||
@@ -319,7 +319,7 @@
|
||||
if(3)
|
||||
affected_mob.emote("frown")
|
||||
affected_mob.add_mood_event("happiness_drug", /datum/mood_event/happiness_drug_bad_od)
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/pumpup
|
||||
@@ -339,9 +339,9 @@
|
||||
affected_mob.add_mood_event("maintenance_fun", /datum/mood_event/maintenance_high)
|
||||
metabolization_rate *= 0.8
|
||||
|
||||
/datum/reagent/drug/pumpup/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/pumpup/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(2.5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_notice("[pick("Go! Go! GO!", "You feel ready...", "You feel invincible...")]"))
|
||||
@@ -350,13 +350,13 @@
|
||||
affected_mob.adjust_tox_loss(2, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/pumpup/overdose_start(mob/living/affected_mob)
|
||||
/datum/reagent/drug/pumpup/overdose_start(mob/living/affected_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
to_chat(affected_mob, span_userdanger("You can't stop shaking, your heart beats faster and faster..."))
|
||||
|
||||
/datum/reagent/drug/pumpup/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/pumpup/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(2.5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
var/need_mob_update
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
affected_mob.drop_all_held_items()
|
||||
@@ -395,22 +395,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/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/maint/powder/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.1 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.1 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
// 5x if you want to OD, you can potentially go higher, but good luck managing the brain damage.
|
||||
var/amt = max(round(volume/3, 0.1), 1)
|
||||
affected_mob?.mind?.experience_multiplier_reasons |= type
|
||||
affected_mob?.mind?.experience_multiplier_reasons[type] = amt * REM * seconds_per_tick
|
||||
affected_mob?.mind?.experience_multiplier_reasons[type] = 1 * amt * metabolization_ratio * seconds_per_tick
|
||||
|
||||
/datum/reagent/drug/maint/powder/on_mob_end_metabolize(mob/living/affected_mob)
|
||||
. = ..()
|
||||
affected_mob?.mind?.experience_multiplier_reasons[type] = null
|
||||
affected_mob?.mind?.experience_multiplier_reasons -= type
|
||||
|
||||
/datum/reagent/drug/maint/powder/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/maint/powder/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 6 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 6 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/maint/sludge
|
||||
@@ -423,21 +423,21 @@
|
||||
addiction_types = list(/datum/addiction/maintenance_drugs = 8)
|
||||
metabolized_traits = list(TRAIT_HARDLY_WOUNDED, TRAIT_ANALGESIA)
|
||||
|
||||
/datum/reagent/drug/maint/sludge/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/maint/sludge/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_tox_loss(0.5 * REM * seconds_per_tick, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(0.125 * metabolization_ratio * seconds_per_tick, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/maint/sludge/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/maint/sludge/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!iscarbon(affected_mob))
|
||||
return
|
||||
var/mob/living/carbon/carbie = affected_mob
|
||||
//You will be vomiting so the damage is really for a few ticks before you flush it out of your system
|
||||
var/need_mob_update
|
||||
need_mob_update = carbie.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = carbie.adjust_tox_loss(0.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
need_mob_update += carbie.adjust_tox_loss(5, required_biotype = affected_biotype, updating_health = FALSE)
|
||||
need_mob_update += carbie.adjust_tox_loss(2.5 * metabolization_ratio, required_biotype = affected_biotype, updating_health = FALSE)
|
||||
carbie.vomit(VOMIT_CATEGORY_DEFAULT)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
@@ -450,17 +450,17 @@
|
||||
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/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/maint/tar/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.AdjustAllImmobility(-10 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 1.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
affected_mob.AdjustAllImmobility(-10 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 1.5 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/maint/tar/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/maint/tar/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_update
|
||||
need_update = affected_mob.adjust_tox_loss(5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 3 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_update = affected_mob.adjust_tox_loss(5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 3 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
if(need_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -475,20 +475,20 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
addiction_types = list(/datum/addiction/hallucinogens = 12)
|
||||
|
||||
/datum/reagent/drug/mushroomhallucinogen/on_mob_life(mob/living/carbon/psychonaut, seconds_per_tick)
|
||||
/datum/reagent/drug/mushroomhallucinogen/on_mob_life(mob/living/carbon/psychonaut, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
psychonaut.set_slurring_if_lower(1 SECONDS * REM * seconds_per_tick)
|
||||
psychonaut.set_slurring_if_lower(2.5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
switch(current_cycle)
|
||||
if(2 to 6)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
psychonaut.emote(pick("twitch","giggle"))
|
||||
if(6 to 11)
|
||||
psychonaut.set_jitter_if_lower(20 SECONDS * REM * seconds_per_tick)
|
||||
psychonaut.set_jitter_if_lower(50 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
psychonaut.emote(pick("twitch","giggle"))
|
||||
if (11 to INFINITY)
|
||||
psychonaut.set_jitter_if_lower(40 SECONDS * REM * seconds_per_tick)
|
||||
psychonaut.set_jitter_if_lower(100 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(16, seconds_per_tick))
|
||||
psychonaut.emote(pick("twitch","giggle"))
|
||||
|
||||
@@ -539,7 +539,7 @@
|
||||
game_plane_master_controller.remove_filter("rainbow")
|
||||
game_plane_master_controller.remove_filter("psilocybin_wave")
|
||||
|
||||
/datum/reagent/drug/mushroomhallucinogen/overdose_process(mob/living/psychonaut, seconds_per_tick)
|
||||
/datum/reagent/drug/mushroomhallucinogen/overdose_process(mob/living/psychonaut, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
psychonaut.emote(pick("twitch","drool","moan"))
|
||||
@@ -611,18 +611,18 @@
|
||||
game_plane_master_controller.remove_filter("blastoff_wave")
|
||||
dancer.sound_environment_override = NONE
|
||||
|
||||
/datum/reagent/drug/blastoff/on_mob_life(mob/living/carbon/dancer, seconds_per_tick)
|
||||
/datum/reagent/drug/blastoff/on_mob_life(mob/living/carbon/dancer, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(dancer.adjust_organ_loss(ORGAN_SLOT_LUNGS, 0.3 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(dancer.adjust_organ_loss(ORGAN_SLOT_LUNGS, 0.3 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
dancer.AdjustKnockdown(-20)
|
||||
|
||||
if(SPT_PROB(BLASTOFF_DANCE_MOVE_CHANCE_PER_UNIT * volume, seconds_per_tick))
|
||||
dancer.emote("flip")
|
||||
|
||||
/datum/reagent/drug/blastoff/overdose_process(mob/living/dancer, seconds_per_tick)
|
||||
/datum/reagent/drug/blastoff/overdose_process(mob/living/dancer, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(dancer.adjust_organ_loss(ORGAN_SLOT_LUNGS, 0.3 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(dancer.adjust_organ_loss(ORGAN_SLOT_LUNGS, 0.3 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
|
||||
if(SPT_PROB(BLASTOFF_DANCE_MOVE_CHANCE_PER_UNIT * volume, seconds_per_tick))
|
||||
@@ -678,14 +678,13 @@
|
||||
taste_description = "metallic bitterness"
|
||||
color = "#638b9b"
|
||||
overdose_threshold = 25
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
ph = 10
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
addiction_types = list(/datum/addiction/maintenance_drugs = 20)
|
||||
|
||||
/datum/reagent/drug/saturnx/on_mob_life(mob/living/carbon/invisible_man, seconds_per_tick)
|
||||
/datum/reagent/drug/saturnx/on_mob_life(mob/living/carbon/invisible_man, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(invisible_man.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.3 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(invisible_man.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.3 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/saturnx/on_mob_metabolize(mob/living/invisible_man)
|
||||
@@ -755,13 +754,13 @@
|
||||
game_plane_master_controller.remove_filter("saturnx_filter")
|
||||
game_plane_master_controller.remove_filter("saturnx_blur")
|
||||
|
||||
/datum/reagent/drug/saturnx/overdose_process(mob/living/invisible_man, seconds_per_tick)
|
||||
/datum/reagent/drug/saturnx/overdose_process(mob/living/invisible_man, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(7.5, seconds_per_tick))
|
||||
invisible_man.emote("giggle")
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
invisible_man.emote("laugh")
|
||||
if(invisible_man.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.4 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(invisible_man.adjust_organ_loss(ORGAN_SLOT_LIVER, METABOLIZE_FREE_CONSTANT(0.2) * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/saturnx/stable
|
||||
@@ -836,18 +835,18 @@ If you have at over 25u in your body you restore more than 20 stamina per cycle,
|
||||
stamina_heal_per_unit = 6
|
||||
druggo.adjust_stamina_loss(-stamina_heal_per_unit * trans_volume)
|
||||
|
||||
/datum/reagent/drug/kronkaine/on_mob_life(mob/living/carbon/kronkaine_fiend, seconds_per_tick)
|
||||
/datum/reagent/drug/kronkaine/on_mob_life(mob/living/carbon/kronkaine_fiend, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
kronkaine_fiend.add_mood_event("tweaking", /datum/mood_event/stimulant_medium)
|
||||
if(kronkaine_fiend.adjust_organ_loss(ORGAN_SLOT_HEART, (0.1 + 0.04 * volume) * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(kronkaine_fiend.adjust_organ_loss(ORGAN_SLOT_HEART, 0.67 * (0.1 + 0.04 * volume) * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
need_mob_update = UPDATE_MOB_HEALTH
|
||||
if(kronkaine_fiend.get_organ_loss(ORGAN_SLOT_HEART) >= 75 && prob(15))
|
||||
to_chat(kronkaine_fiend, span_userdanger("You feel like your heart is about to explode!"))
|
||||
playsound(kronkaine_fiend, 'sound/effects/singlebeat.ogg', 200, TRUE)
|
||||
kronkaine_fiend.set_jitter_if_lower(20 SECONDS * REM * seconds_per_tick)
|
||||
kronkaine_fiend.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick)
|
||||
kronkaine_fiend.adjust_drowsiness(-10 SECONDS * REM * seconds_per_tick)
|
||||
kronkaine_fiend.set_jitter_if_lower(13.34 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
kronkaine_fiend.AdjustSleeping(-1.34 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
kronkaine_fiend.adjust_drowsiness(-6.67 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
/* Do not try to cheese the overdose threshhold with purging chems to become stamina immune, if you purge and take stamina damage you will be punished!
|
||||
|
||||
The reason why I choose to add the adrenal crisis anti-cheese mechanic is because the main combat benefit is so front loaded, you could easily negate all the risk and downsides by mixing it with a small amount of a purger like haloperidol.
|
||||
@@ -860,19 +859,19 @@ If you have at over 25u in your body you restore more than 20 stamina per cycle,
|
||||
kronkaine_fiend.visible_message(span_bolddanger("[kronkaine_fiend.name] suddenly tenses up, it looks like the shock is causing their body to shut down!"), span_userdanger("The sudden shock in combination with the cocktail of drugs and purgatives in your body makes your adrenal system go haywire. Uh oh!"))
|
||||
kronkaine_fiend.ForceContractDisease(new /datum/disease/adrenal_crisis(), FALSE, TRUE) //We punish players for purging, since unchecked purging would allow players to reap the stamina healing benefits without any drawbacks. This also has the benefit of making haloperidol a counter, like it is supposed to be.
|
||||
break
|
||||
need_mob_update = kronkaine_fiend.adjust_stamina_loss(-0.8 * volume * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = kronkaine_fiend.adjust_stamina_loss(-0.54 * volume * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/drug/kronkaine/overdose_process(mob/living/kronkaine_fiend, seconds_per_tick)
|
||||
/datum/reagent/drug/kronkaine/overdose_process(mob/living/kronkaine_fiend, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(kronkaine_fiend.adjust_organ_loss(ORGAN_SLOT_HEART, 0.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(kronkaine_fiend.adjust_organ_loss(ORGAN_SLOT_HEART, 0.34 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
kronkaine_fiend.set_jitter_if_lower(20 SECONDS * REM * seconds_per_tick)
|
||||
kronkaine_fiend.set_jitter_if_lower(13.34 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
to_chat(kronkaine_fiend, span_danger(pick("Your heart is racing!", "Your ears are ringing!", "You sweat like a pig!", "You clench your jaw and grind your teeth.", "You feel prickles of pain in your chest.")))
|
||||
|
||||
/datum/reagent/drug/kronkaine/overdose_start(mob/living/affected_mob)
|
||||
/datum/reagent/drug/kronkaine/overdose_start(mob/living/affected_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
SEND_SOUND(affected_mob, sound('sound/effects/health/fastbeat.ogg', repeat = TRUE, channel = CHANNEL_HEARTBEAT, volume = 90))
|
||||
|
||||
@@ -884,7 +883,7 @@ If you have at over 25u in your body you restore more than 20 stamina per cycle,
|
||||
ph = 4
|
||||
chemical_flags = NONE
|
||||
|
||||
/datum/reagent/drug/kronkaine/gore/overdose_start(mob/living/gored)
|
||||
/datum/reagent/drug/kronkaine/gore/overdose_start(mob/living/gored, metabolization_ratio)
|
||||
. = ..()
|
||||
gored.visible_message(
|
||||
span_danger("[gored] explodes in a shower of gore!"),
|
||||
@@ -907,13 +906,13 @@ If you have at over 25u in your body you restore more than 20 stamina per cycle,
|
||||
/// Track the active hallucination we're giving out so we don't replace it by accident
|
||||
VAR_PRIVATE/datum/weakref/active_hallucination_weakref
|
||||
|
||||
/datum/reagent/drug/syndol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/drug/syndol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(isnull(liver) || !(liver.organ_flags & affected_organ_flags))
|
||||
return
|
||||
// non-trivial but not immediately dangerous liver damage
|
||||
liver.apply_organ_damage(0.5 * REM * seconds_per_tick)
|
||||
liver.apply_organ_damage(0.5 * metabolization_ratio * seconds_per_tick)
|
||||
// anti-hallucinogens can counteract the effects
|
||||
if(HAS_TRAIT(affected_mob, TRAIT_HALLUCINATION_IMMUNE) || affected_mob.reagents.has_reagent(/datum/reagent/medicine/haloperidol, amount = 3, needs_metabolizing = TRUE))
|
||||
QDEL_NULL(active_hallucination_weakref)
|
||||
@@ -933,13 +932,13 @@ If you have at over 25u in your body you restore more than 20 stamina per cycle,
|
||||
active_hallucination_weakref = WEAKREF(affected_mob.cause_hallucination(greatest_fear, name, duration = 5 MINUTES, skip_nearby = !overdosed))
|
||||
else
|
||||
// if they're just some random schmuck, give them random hallucinations
|
||||
affected_mob.adjust_hallucinations_up_to(4 SECONDS * REM * seconds_per_tick, 30 SECONDS)
|
||||
affected_mob.adjust_hallucinations_up_to(4 SECONDS * metabolization_ratio * seconds_per_tick, 30 SECONDS)
|
||||
|
||||
/datum/reagent/drug/syndol/on_mob_end_metabolize(mob/living/affected_mob)
|
||||
. = ..()
|
||||
affected_mob.adjust_hallucinations(-16 SECONDS)
|
||||
QDEL_NULL(active_hallucination_weakref)
|
||||
|
||||
/datum/reagent/drug/syndol/overdose_start(mob/living/affected_mob)
|
||||
/datum/reagent/drug/syndol/overdose_start(mob/living/affected_mob, metabolization_ratio)
|
||||
// no message, just refresh the hallucination
|
||||
QDEL_NULL(active_hallucination_weakref)
|
||||
|
||||
@@ -23,13 +23,13 @@
|
||||
// All food reagents function at a fixed rate
|
||||
chemical_flags |= REAGENT_UNAFFECTED_BY_METABOLISM
|
||||
|
||||
/datum/reagent/consumable/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!ishuman(affected_mob) || HAS_TRAIT(affected_mob, TRAIT_NOHUNGER))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/affected_human = affected_mob
|
||||
affected_human.adjust_nutrition(get_nutriment_factor(affected_mob) * REM * seconds_per_tick)
|
||||
affected_human.adjust_nutrition(0.5 * get_nutriment_factor(affected_mob) * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)
|
||||
. = ..()
|
||||
@@ -74,10 +74,11 @@
|
||||
/datum/reagent/consumable/nutriment/on_hydroponics_apply(obj/machinery/hydroponics/mytray, mob/user)
|
||||
mytray.adjust_plant_health(round(volume * 0.2))
|
||||
|
||||
/datum/reagent/consumable/nutriment/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/nutriment/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(30, seconds_per_tick))
|
||||
if(affected_mob.heal_bodypart_damage(brute = brute_heal * REM * seconds_per_tick, burn = burn_heal * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC))
|
||||
var/heal = 0.5 * brute_heal * metabolization_ratio
|
||||
if(affected_mob.heal_bodypart_damage(brute = heal, burn = heal, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/nutriment/on_new(list/supplied_data)
|
||||
@@ -131,10 +132,10 @@
|
||||
brute_heal = 1
|
||||
burn_heal = 1
|
||||
|
||||
/datum/reagent/consumable/nutriment/vitamin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/nutriment/vitamin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.satiety < MAX_SATIETY)
|
||||
affected_mob.satiety += 30 * REM * seconds_per_tick
|
||||
affected_mob.satiety += 15 * metabolization_ratio * seconds_per_tick
|
||||
|
||||
/// The basic resource of vat growing.
|
||||
/datum/reagent/consumable/nutriment/protein
|
||||
@@ -258,7 +259,7 @@
|
||||
///Amount of satiety that will be drained when the cloth_fibers is fully metabolized
|
||||
var/delayed_satiety_drain = 2 * CLOTHING_NUTRITION_GAIN
|
||||
|
||||
/datum/reagent/consumable/nutriment/cloth_fibers/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/nutriment/cloth_fibers/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.satiety < MAX_SATIETY)
|
||||
affected_mob.adjust_nutrition(CLOTHING_NUTRITION_GAIN)
|
||||
@@ -306,14 +307,14 @@
|
||||
mytray.adjust_weedlevel(rand(1, 2))
|
||||
mytray.adjust_pestlevel(rand(1, 2))
|
||||
|
||||
/datum/reagent/consumable/sugar/overdose_start(mob/living/affected_mob)
|
||||
/datum/reagent/consumable/sugar/overdose_start(mob/living/affected_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
to_chat(affected_mob, span_userdanger("You go into hyperglycemic shock! Lay off the twinkies!"))
|
||||
affected_mob.AdjustSleeping(20 SECONDS)
|
||||
|
||||
/datum/reagent/consumable/sugar/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/sugar/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_drowsiness_up_to((5 SECONDS * REM * seconds_per_tick), 60 SECONDS)
|
||||
affected_mob.adjust_drowsiness_up_to((0.5 SECONDS * metabolization_ratio * seconds_per_tick), 60 SECONDS)
|
||||
|
||||
/datum/reagent/consumable/sugar/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)
|
||||
. = ..()
|
||||
@@ -358,21 +359,21 @@
|
||||
taste_mult = 1.5
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/capsaicin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/capsaicin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/heating = 0
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
heating = 5
|
||||
if(holder.has_reagent(/datum/reagent/cryostylane))
|
||||
holder.remove_reagent(/datum/reagent/cryostylane, 5 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/cryostylane, 2.5 * metabolization_ratio * seconds_per_tick)
|
||||
if(15 to 25)
|
||||
heating = 10
|
||||
if(25 to 35)
|
||||
heating = 15
|
||||
if(35 to INFINITY)
|
||||
heating = 20
|
||||
affected_mob.adjust_bodytemperature(heating * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(0.5 * TEMPERATURE_DAMAGE_COEFFICIENT * heating * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/frostoil
|
||||
name = "Frost Oil"
|
||||
@@ -385,14 +386,14 @@
|
||||
specific_heat = 40
|
||||
default_container = /obj/item/reagent_containers/cup/bottle/frostoil
|
||||
|
||||
/datum/reagent/consumable/frostoil/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/frostoil/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/cooling = 0
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
cooling = -10
|
||||
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
|
||||
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 2.5 * metabolization_ratio * seconds_per_tick)
|
||||
if(15 to 25)
|
||||
cooling = -20
|
||||
if(25 to 35)
|
||||
@@ -403,7 +404,7 @@
|
||||
cooling = -40
|
||||
if(prob(5))
|
||||
affected_mob.emote("shiver")
|
||||
affected_mob.adjust_bodytemperature(cooling * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, 50)
|
||||
affected_mob.adjust_bodytemperature(0.5 * TEMPERATURE_DAMAGE_COEFFICIENT * cooling * metabolization_ratio * seconds_per_tick, 50)
|
||||
|
||||
/datum/reagent/consumable/frostoil/expose_turf(turf/exposed_turf, reac_volume)
|
||||
. = ..()
|
||||
@@ -461,7 +462,7 @@
|
||||
victim.vomit(VOMIT_CATEGORY_DEFAULT)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!holder.has_reagent(/datum/reagent/consumable/milk))
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
@@ -542,7 +543,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
added_traits = list(TRAIT_GARLIC_BREATH)
|
||||
|
||||
/datum/reagent/consumable/garlic/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/garlic/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(isvampire(affected_mob)) //incapacitating but not lethal. Unfortunately, vampires cannot vomit.
|
||||
if(SPT_PROB(min((current_cycle-1)/2, 12.5), seconds_per_tick))
|
||||
@@ -556,7 +557,7 @@
|
||||
var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(liver && HAS_TRAIT(liver, TRAIT_CULINARY_METABOLISM))
|
||||
if(SPT_PROB(10, seconds_per_tick)) //stays in the system much longer than sprinkles/banana juice, so heals slower to partially compensate
|
||||
if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 3.34 * metabolization_ratio, burn = 3.34 * metabolization_ratio, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/tearjuice
|
||||
@@ -586,11 +587,11 @@
|
||||
taste_description = "childhood whimsy"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(liver && HAS_TRAIT(liver, TRAIT_LAW_ENFORCEMENT_METABOLISM))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
if(affected_mob.heal_bodypart_damage(brute = 0.5 * metabolization_ratio * seconds_per_tick, burn = 0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/consumable/enzyme
|
||||
@@ -626,9 +627,9 @@
|
||||
taste_description = "your imprisonment"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
affected_mob.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/consumable/hell_ramen
|
||||
name = "Hell Ramen"
|
||||
@@ -638,9 +639,9 @@
|
||||
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/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/hell_ramen/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_bodytemperature(10 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/flour
|
||||
name = "Flour"
|
||||
@@ -793,16 +794,15 @@
|
||||
taste_description = "sweet slime"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
holder.add_reagent(/datum/reagent/consumable/sugar, 3 * REM * seconds_per_tick)
|
||||
holder.add_reagent(/datum/reagent/consumable/sugar, 0.5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/honey
|
||||
name = "Honey"
|
||||
description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties."
|
||||
color = "#d3a308"
|
||||
nutriment_factor = 15
|
||||
metabolization_rate = 1 * REAGENTS_METABOLISM
|
||||
taste_description = "sweetness"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
default_container = /obj/item/reagent_containers/condiment/honey
|
||||
@@ -816,15 +816,16 @@
|
||||
mytray.adjust_weedlevel(rand(1, 2))
|
||||
mytray.adjust_pestlevel(rand(1, 2))
|
||||
|
||||
/datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
holder.add_reagent(/datum/reagent/consumable/sugar, 3 * REM * seconds_per_tick)
|
||||
holder.add_reagent(/datum/reagent/consumable/sugar, 1.5 * metabolization_ratio * seconds_per_tick)
|
||||
var/need_mob_update
|
||||
if(SPT_PROB(33, seconds_per_tick))
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-1, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-1, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(-1, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-1, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
var/health = -0.5 * metabolization_ratio
|
||||
need_mob_update = affected_mob.adjust_brute_loss(health, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(health, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(health, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(health, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -861,7 +862,7 @@
|
||||
metabolized_traits = list(TRAIT_GLUTTON)
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/moltobeso/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/moltobeso/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
for(var/datum/reagent/consumable/food in affected_mob.reagents.reagent_list)
|
||||
if(food == src)
|
||||
@@ -869,7 +870,7 @@
|
||||
var/food_factor = food.get_nutriment_factor(affected_mob)
|
||||
if(food_factor <= 0)
|
||||
continue
|
||||
affected_mob.adjust_nutrition(food_factor * REM * seconds_per_tick)
|
||||
affected_mob.adjust_nutrition(20 * food_factor * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/eggrot
|
||||
name = "Rotten Eggyolk"
|
||||
@@ -885,10 +886,10 @@
|
||||
color = "#664330" // rgb: 102, 67, 48
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/nutriment/stabilized/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/nutriment/stabilized/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.nutrition > NUTRITION_LEVEL_FULL - 25)
|
||||
affected_mob.adjust_nutrition(-3 * REM * get_nutriment_factor(affected_mob) * seconds_per_tick)
|
||||
affected_mob.adjust_nutrition(-1.5 * metabolization_ratio * get_nutriment_factor(affected_mob) * seconds_per_tick)
|
||||
|
||||
////Lavaland Flora Reagents////
|
||||
|
||||
@@ -901,16 +902,16 @@
|
||||
ph = 12
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/entpoly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/entpoly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
if(current_cycle > 10)
|
||||
affected_mob.Unconscious(40 * REM * seconds_per_tick, FALSE)
|
||||
affected_mob.Unconscious(20 * metabolization_ratio * seconds_per_tick, FALSE)
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
affected_mob.losebreath += 4
|
||||
affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 2*REM, 150, affected_biotype)
|
||||
affected_mob.adjust_tox_loss(3*REM, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
affected_mob.adjust_stamina_loss(10*REM, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 1 * metabolization_ratio, 150, affected_biotype)
|
||||
affected_mob.adjust_tox_loss(1.5 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
affected_mob.adjust_stamina_loss(5 * metabolization_ratio, updating_stamina = FALSE, required_biotype = affected_biotype)
|
||||
affected_mob.set_eye_blur_if_lower(10 SECONDS)
|
||||
need_mob_update = TRUE
|
||||
if(need_mob_update)
|
||||
@@ -950,12 +951,12 @@
|
||||
ph = 10.4
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/vitfro/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/vitfro/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
if(SPT_PROB(55, seconds_per_tick))
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-0.5 * metabolization_ratio, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-0.5 * metabolization_ratio, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -980,7 +981,7 @@
|
||||
if(istype(stomach))
|
||||
stomach.adjust_charge(reac_volume * 30 * ETHEREAL_DISCHARGE_RATE)
|
||||
|
||||
/datum/reagent/consumable/liquidelectricity/enriched/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/liquidelectricity/enriched/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(isethereal(affected_mob))
|
||||
affected_mob.adjust_blood_volume(1 * seconds_per_tick)
|
||||
@@ -999,10 +1000,10 @@
|
||||
overdose_threshold = 17
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/astrotame/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/astrotame/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.disgust < 80)
|
||||
affected_mob.adjust_disgust(10 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_disgust(2.5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/secretsauce
|
||||
name = "Secret Sauce"
|
||||
@@ -1050,7 +1051,7 @@
|
||||
overdose_threshold = 15
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/char/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/char/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(13, seconds_per_tick))
|
||||
affected_mob.say(pick_list_replacements(BOOMER_FILE, "boomer"), forced = /datum/reagent/consumable/char)
|
||||
@@ -1141,7 +1142,6 @@
|
||||
description = "A sweet, sugary syrup made from crushed sweet korta nuts."
|
||||
color = "#d3a308"
|
||||
nutriment_factor = 5
|
||||
metabolization_rate = 1 * REAGENTS_METABOLISM
|
||||
taste_description = "peppery sweetness"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
@@ -1162,11 +1162,11 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
default_container = /obj/item/reagent_containers/condiment/peanut_butter
|
||||
|
||||
/datum/reagent/consumable/peanut_butter/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick) //ET loves peanut butter
|
||||
/datum/reagent/consumable/peanut_butter/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio) //ET loves peanut butter
|
||||
. = ..()
|
||||
if(isabductor(affected_mob))
|
||||
affected_mob.add_mood_event("ET_pieces", /datum/mood_event/et_pieces, name)
|
||||
affected_mob.set_drugginess(30 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_drugginess(15 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/consumable/vinegar
|
||||
name = "Vinegar"
|
||||
@@ -1223,7 +1223,7 @@
|
||||
taste_description = "mint"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/consumable/mintextract/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/consumable/mintextract/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(affected_mob, TRAIT_FAT))
|
||||
affected_mob.investigate_log("has been gibbed by consuming [src] while fat.", INVESTIGATE_DEATHS)
|
||||
|
||||
@@ -11,18 +11,18 @@
|
||||
ph = 3
|
||||
inverse_chem = null
|
||||
inverse_chem_val = 0
|
||||
metabolization_rate = 0.1 * REM //default impurity is 0.75, so we get 25% converted. Default metabolisation rate is 0.4, so we're 4 times slower.
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
var/liver_damage = 0.5
|
||||
|
||||
/datum/reagent/impurity/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/impurity/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
var/need_mob_update
|
||||
|
||||
if(liver)//Though, lets be safe
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, liver_damage * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, METABOLIZE_FREE_CONSTANT(0.5) * liver_damage * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
else
|
||||
need_mob_update = affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)//Incase of no liver!
|
||||
need_mob_update = affected_mob.adjust_tox_loss(1 * liver_damage * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)//Incase of no liver!
|
||||
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
@@ -38,10 +38,10 @@
|
||||
///how much this reagent does for tox damage too
|
||||
var/tox_damage = 1
|
||||
|
||||
|
||||
/datum/reagent/inverse/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_tox_loss(tox_damage * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
|
||||
if(affected_mob.adjust_tox_loss(METABOLIZE_FREE_CONSTANT(0.5) * tox_damage * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
//Failed chems - generally use inverse if you want to use a impure subtype for it
|
||||
@@ -67,7 +67,7 @@
|
||||
chemical_flags = NONE
|
||||
tox_damage = 0
|
||||
|
||||
/datum/reagent/inverse/eigenswap/on_mob_life(mob/living/carbon/affected_mob)
|
||||
/datum/reagent/inverse/eigenswap/on_mob_life(mob/living/carbon/affected_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!prob(creation_purity * 100))
|
||||
return
|
||||
@@ -95,7 +95,7 @@
|
||||
taste_description = "your tongue freezing, shortly followed by your thoughts. Brr!"
|
||||
ph = 14
|
||||
chemical_flags = REAGENT_DEAD_PROCESS | REAGENT_IGNORE_STASIS | REAGENT_UNAFFECTED_BY_METABOLISM
|
||||
metabolization_rate = 1 * REM
|
||||
metabolization_rate = 2.5 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/inverse/cryostylane/expose_mob(mob/living/carbon/human/human_thing, methods, reac_volume, show_message, touch_protection)
|
||||
. = ..()
|
||||
@@ -108,13 +108,14 @@
|
||||
|
||||
human_thing.apply_status_effect(/datum/status_effect/reagent_effect/freeze, type)
|
||||
|
||||
/datum/reagent/inverse/cryostylane/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/cryostylane/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
metabolization_rate += 0.01 //speed up our metabolism over time. Chop chop.
|
||||
metabolization_rate += 0.05 * REAGENTS_METABOLISM //speed up our metabolism over time. Chop chop.
|
||||
|
||||
/datum/reagent/inverse/cryostylane/metabolize_reagent(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/cryostylane/metabolize_reagent(mob/living/carbon/affected_mob, seconds_per_tick, metabolized_volume)
|
||||
if(current_cycle >= 60)
|
||||
holder.remove_reagent(type, volume) // remove it all if we're past 60 cycles
|
||||
volume = 0 // remove it all if we're past 60 cycles
|
||||
holder.update_total()
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
+112
-118
@@ -28,26 +28,26 @@
|
||||
/datum/reagent/impurity/healing/medicine_failure
|
||||
name = "Insolvent Medicinal Precipitate"
|
||||
description = "A viscous mess of various medicines. Will heal a damage type at random"
|
||||
metabolization_rate = 1 * REM//This is fast
|
||||
metabolization_rate = 2.5 * REAGENTS_METABOLISM
|
||||
addiction_types = list(/datum/addiction/medicine = 7.5)
|
||||
ph = 11
|
||||
affected_biotype = MOB_ORGANIC | MOB_MINERAL | MOB_PLANT // no healing ghosts
|
||||
affected_respiration_type = ALL
|
||||
|
||||
//Random healing of the 4 main groups
|
||||
/datum/reagent/impurity/healing/medicine_failure/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/impurity/healing/medicine_failure/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
var/pick = pick("brute", "burn", "tox", "oxy")
|
||||
switch(pick)
|
||||
if("brute")
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-0.5, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = affected_mob.adjust_brute_loss(-0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
if("burn")
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-0.5, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = affected_mob.adjust_fire_loss(-0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
if("tox")
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-0.5, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if("oxy")
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(-0.5, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update = affected_mob.adjust_oxy_loss(-0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
/datum/reagent/inverse/helgrasp
|
||||
name = "Helgrasp"
|
||||
description = "This rare and forbidden concoction is thought to bring you closer to the grasp of the Norse goddess Hel."
|
||||
metabolization_rate = 1*REM //This is fast
|
||||
metabolization_rate = 2.5 * REAGENTS_METABOLISM
|
||||
tox_damage = 0.25
|
||||
ph = 14
|
||||
//Compensates for seconds_per_tick lag by spawning multiple hands at the end
|
||||
@@ -83,7 +83,7 @@ Then I attempt to calculate the how many hands to created based off the current
|
||||
I take the 2s interval period and divide it by the number of hands I want to make (i.e. the current seconds_per_tick) and I keep track of how many hands I'm creating (since I always create one on a tick, then I start at 1 hand). For each hand I then use this time value multiplied by the number of hands. Since we're spawning one now, and it checks to see if hands is less than, but not less than or equal to, seconds_per_tick, no hands will be created on the next expected tick.
|
||||
Basically, we fill the time between now and 2s from now with hands based off the current lag.
|
||||
*/
|
||||
/datum/reagent/inverse/helgrasp/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/helgrasp/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
spawn_hands(affected_mob)
|
||||
lag_remainder += seconds_per_tick - FLOOR(seconds_per_tick, 1)
|
||||
@@ -116,7 +116,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
/datum/reagent/inverse/helgrasp/heretic
|
||||
name = "Grasp of the Mansus"
|
||||
description = "The Hand of the Mansus is at your neck."
|
||||
metabolization_rate = 1 * REM
|
||||
metabolization_rate = 2.5 * REAGENTS_METABOLISM
|
||||
tox_damage = 0
|
||||
|
||||
//libital
|
||||
@@ -130,9 +130,9 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
addiction_types = list(/datum/addiction/medicine = 4)
|
||||
tox_damage = 0
|
||||
|
||||
/datum/reagent/inverse/libitoil/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/libitoil/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.1 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.05 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/inverse/libitoil/on_mob_add(mob/living/affected_mob, amount)
|
||||
. = ..()
|
||||
@@ -180,7 +180,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
addiction_types = list(/datum/addiction/medicine = 5)
|
||||
liver_damage = 0
|
||||
|
||||
/datum/reagent/impurity/probital_failed/overdose_start(mob/living/carbon/M)
|
||||
/datum/reagent/impurity/probital_failed/overdose_start(mob/living/carbon/M, metabolization_ratio)
|
||||
. = ..()
|
||||
metabolization_rate = 4 * REAGENTS_METABOLISM
|
||||
|
||||
@@ -190,11 +190,11 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "These inhibitory peptides drains nutrition and causes brain damage in the patient!"
|
||||
ph = 2.1
|
||||
|
||||
/datum/reagent/peptides_failed/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/peptides_failed/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.25 * seconds_per_tick, 170))
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.125 * metabolization_ratio * seconds_per_tick, 170))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
affected_mob.adjust_nutrition(-5 * REAGENTS_METABOLISM * seconds_per_tick)
|
||||
affected_mob.adjust_nutrition(-2.5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
//Lenturi
|
||||
//inverse
|
||||
@@ -223,8 +223,8 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
var/amount_of_blur_applied = 1.25 SECONDS
|
||||
tox_damage = 0
|
||||
|
||||
/datum/reagent/inverse/aiuri/on_mob_life(mob/living/carbon/owner, seconds_per_tick)
|
||||
owner.adjust_organ_loss(ORGAN_SLOT_EYES, 0.1 * REM * seconds_per_tick)
|
||||
/datum/reagent/inverse/aiuri/on_mob_life(mob/living/carbon/owner, seconds_per_tick, metabolization_ratio)
|
||||
owner.adjust_organ_loss(ORGAN_SLOT_EYES, 0.05 * metabolization_ratio * seconds_per_tick)
|
||||
owner.adjust_eye_blur(amount_of_blur_applied * seconds_per_tick)
|
||||
. = ..()
|
||||
return TRUE
|
||||
@@ -242,9 +242,9 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
taste_description = "heat! Ouch!"
|
||||
addiction_types = list(/datum/addiction/medicine = 2.5)
|
||||
|
||||
/datum/reagent/inverse/hercuri/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/hercuri/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/heating = rand(5, 25) * creation_purity * REM * seconds_per_tick
|
||||
var/heating = 0.5 * rand(5, 25) * creation_purity * metabolization_ratio * seconds_per_tick
|
||||
var/datum/reagents/mob_reagents = affected_mob.reagents
|
||||
if(mob_reagents)
|
||||
mob_reagents.expose_temperature(mob_reagents.chem_temp + heating, 1)
|
||||
@@ -262,11 +262,11 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
exposed_mob.adjust_bodytemperature(reac_volume * TEMPERATURE_DAMAGE_COEFFICIENT)
|
||||
exposed_mob.adjust_fire_stacks(reac_volume / 2)
|
||||
|
||||
/datum/reagent/inverse/hercuri/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/hercuri/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 2 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)) //Makes it so you can't abuse it with pyroxadone very easily (liver dies from 25u unless it's fully upgraded)
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 1 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)) //Makes it so you can't abuse it with pyroxadone very easily (liver dies from 25u unless it's fully upgraded)
|
||||
. = UPDATE_MOB_HEALTH
|
||||
var/heating = 10 * creation_purity * REM * seconds_per_tick * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
var/heating = 5 * creation_purity * metabolization_ratio * seconds_per_tick * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
affected_mob.adjust_bodytemperature(heating) //hot hot
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/human = affected_mob
|
||||
@@ -282,7 +282,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
addiction_types = list(/datum/addiction/medicine = 5)
|
||||
|
||||
//Makes patients fall asleep, then boosts the purirty of their medicine reagents if they're asleep
|
||||
/datum/reagent/inverse/healing/tirimol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/healing/tirimol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
switch(current_cycle)
|
||||
if(2 to 11)//same delay as chloral hydrate
|
||||
@@ -396,20 +396,18 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
/datum/reagent/inverse/technetium
|
||||
name = "Technetium 99"
|
||||
description = "A radioactive tracer agent that can improve a scanner's ability to detect internal organ damage. Will poison the patient when present very slowly, purging or using a low dose is recommended after use."
|
||||
metabolization_rate = 0.3 * REM
|
||||
metabolization_rate = 0.75 * REAGENTS_METABOLISM
|
||||
chemical_flags = NONE //Do show this on scanner
|
||||
tox_damage = 0
|
||||
|
||||
var/time_until_next_poison = 0
|
||||
|
||||
var/poison_interval = (9 SECONDS)
|
||||
|
||||
/datum/reagent/inverse/technetium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/technetium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
time_until_next_poison -= seconds_per_tick * (1 SECONDS)
|
||||
if (time_until_next_poison <= 0)
|
||||
time_until_next_poison = poison_interval
|
||||
if(affected_mob.adjust_tox_loss(creation_purity * 1, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(1.34 * creation_purity * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
//Kind of a healing effect, Presumably you're using syrinver to purge so this helps that
|
||||
@@ -457,13 +455,13 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
addiction_types = list(/datum/addiction/medicine = 3.5)
|
||||
|
||||
//Heals toxins if it's the only thing present - kinda the oposite of multiver! Maybe that's why it's inverse!
|
||||
/datum/reagent/inverse/healing/monover/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/healing/monover/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
if(length(affected_mob.reagents.reagent_list) > 1)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LUNGS, 0.5 * seconds_per_tick, required_organ_flag = affected_organ_flags) //Hey! It's everyone's favourite drawback from multiver!
|
||||
else
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-2 * REM * creation_purity * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-1 * metabolization_ratio * creation_purity * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -476,7 +474,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
name = "Nooartrium"
|
||||
description = "A reagent that is known to stimulate the heart in a dead patient, temporarily bringing back recently dead patients at great cost to their heart."
|
||||
ph = 14
|
||||
metabolization_rate = 0.05 * REM
|
||||
metabolization_rate = 0.125 * REAGENTS_METABOLISM
|
||||
addiction_types = list(/datum/addiction/medicine = 12)
|
||||
overdose_threshold = 20
|
||||
self_consuming = TRUE //No pesky liver shenanigans
|
||||
@@ -495,14 +493,14 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
TRAIT_NO_OXYLOSS_PASSOUT,
|
||||
)
|
||||
|
||||
/datum/reagent/inverse/penthrite/on_mob_dead(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/penthrite/on_mob_dead(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if (HAS_TRAIT(affected_mob, TRAIT_SUICIDED))
|
||||
return
|
||||
var/obj/item/organ/heart/heart = affected_mob.get_organ_slot(ORGAN_SLOT_HEART)
|
||||
if(!heart || heart.organ_flags & ORGAN_FAILING)
|
||||
return
|
||||
metabolization_rate = 0.2 * REM
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
affected_mob.add_traits(trait_buffs, type)
|
||||
affected_mob.set_stat(CONSCIOUS) //This doesn't touch knocked out
|
||||
affected_mob.updatehealth()
|
||||
@@ -517,7 +515,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
affected_mob.emote("gasp")
|
||||
affected_mob.playsound_local(affected_mob, 'sound/effects/health/fastbeat.ogg', 65)
|
||||
|
||||
/datum/reagent/inverse/penthrite/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/penthrite/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!back_from_the_dead)
|
||||
return
|
||||
@@ -526,10 +524,10 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
REMOVE_TRAIT(affected_mob, TRAIT_KNOCKEDOUT, CRIT_HEALTH_TRAIT)
|
||||
REMOVE_TRAIT(affected_mob, TRAIT_KNOCKEDOUT, OXYLOSS_TRAIT)
|
||||
for(var/datum/wound/iter_wound as anything in affected_mob.all_wounds)
|
||||
iter_wound.adjust_blood_flow(creation_impurity * REM * seconds_per_tick)
|
||||
iter_wound.adjust_blood_flow(4 * creation_impurity * metabolization_ratio * seconds_per_tick)
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_brute_loss(5 * creation_impurity * REM * seconds_per_tick, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, ((1 + creation_impurity) * REM * seconds_per_tick), required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_brute_loss(20 * creation_impurity * metabolization_ratio * seconds_per_tick, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, 4 * ((1 + creation_impurity) * metabolization_ratio * seconds_per_tick), required_organ_flag = affected_organ_flags)
|
||||
if(affected_mob.health < HEALTH_THRESHOLD_CRIT)
|
||||
affected_mob.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nooartrium)
|
||||
if(affected_mob.health < HEALTH_THRESHOLD_FULLCRIT)
|
||||
@@ -549,7 +547,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
qdel(heart)
|
||||
affected_mob.visible_message(span_boldwarning("[affected_mob]'s heart explodes!"))
|
||||
|
||||
/datum/reagent/inverse/penthrite/overdose_start(mob/living/carbon/affected_mob)
|
||||
/datum/reagent/inverse/penthrite/overdose_start(mob/living/carbon/affected_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!back_from_the_dead)
|
||||
return ..()
|
||||
@@ -619,16 +617,16 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
color = "#DCDCAA"
|
||||
ph = 13.4
|
||||
addiction_types = list(/datum/addiction/medicine = 8)
|
||||
metabolization_rate = 0.025 * REM
|
||||
metabolization_rate = 0.0625 * REAGENTS_METABOLISM
|
||||
tox_damage = 0
|
||||
//The temporary trauma passed to the affected mob
|
||||
var/datum/brain_trauma/temp_trauma
|
||||
|
||||
/datum/reagent/inverse/neurine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/neurine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(temp_trauma)
|
||||
return
|
||||
if(!(SPT_PROB(creation_purity*10, seconds_per_tick)))
|
||||
if(!(SPT_PROB(creation_purity * 10, seconds_per_tick)))
|
||||
return
|
||||
var/static/list/traumalist
|
||||
if (!traumalist)
|
||||
@@ -690,7 +688,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
self_consuming = TRUE
|
||||
ph = 13.5
|
||||
addiction_types = list(/datum/addiction/medicine = 2.5)
|
||||
metabolization_rate = REM
|
||||
metabolization_rate = 2.5 * REAGENTS_METABOLISM
|
||||
chemical_flags = REAGENT_DEAD_PROCESS
|
||||
tox_damage = 0
|
||||
|
||||
@@ -716,30 +714,29 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Promotes alcoholic substances within the patients body, making their effects more potent."
|
||||
taste_description = "alcohol" //mostly for sneaky slips
|
||||
chemical_flags = REAGENT_INVISIBLE
|
||||
metabolization_rate = 0.05 * REM//This is fast
|
||||
metabolization_rate = 0.125 * REAGENTS_METABOLISM
|
||||
addiction_types = list(/datum/addiction/medicine = 4.5)
|
||||
color = "#4C8000"
|
||||
tox_damage = 0
|
||||
|
||||
/datum/reagent/inverse/antihol/on_mob_life(mob/living/carbon/C, seconds_per_tick)
|
||||
/datum/reagent/inverse/antihol/on_mob_life(mob/living/carbon/C, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
for(var/datum/reagent/consumable/ethanol/alcohol in C.reagents.reagent_list)
|
||||
alcohol.boozepwr += seconds_per_tick
|
||||
alcohol.boozepwr += 8 * metabolization_ratio * seconds_per_tick
|
||||
|
||||
/datum/reagent/inverse/oculine
|
||||
name = "Oculater"
|
||||
description = "Temporarily blinds the patient."
|
||||
color = "#DDDDDD"
|
||||
metabolization_rate = 0.1 * REM
|
||||
addiction_types = list(/datum/addiction/medicine = 3)
|
||||
taste_description = "funky toxin"
|
||||
ph = 13
|
||||
tox_damage = 0
|
||||
metabolization_rate = 0.2 * REM
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
///Did we get a headache?
|
||||
var/headache = FALSE
|
||||
|
||||
/datum/reagent/inverse/oculine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/oculine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(headache)
|
||||
return ..()
|
||||
@@ -762,7 +759,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
taste_description = "the heat evaporating from your mouth."
|
||||
ph = 1
|
||||
liver_damage = 0.1
|
||||
metabolization_rate = 0.04 * REM
|
||||
metabolization_rate = 0.1 * REAGENTS_METABOLISM
|
||||
///The random span we start hearing in
|
||||
var/random_span
|
||||
|
||||
@@ -812,23 +809,22 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Anabolic steroid that promotes the growth of muscle during and after exercise."
|
||||
color = "#520c23"
|
||||
taste_description = "sweat"
|
||||
metabolization_rate = 0.4 * REM
|
||||
overdose_threshold = 25
|
||||
ph = 12.2
|
||||
tox_damage = 0
|
||||
|
||||
/datum/reagent/inverse/oxandrolone/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/oxandrolone/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/high_message = pick("You feel unstoppable.", "Giving it EVERYTHING!!", "You feel ready for anything.", "You feel like doing a thousand jumping jacks!")
|
||||
if(SPT_PROB(2, seconds_per_tick))
|
||||
to_chat(affected_mob, span_notice("[high_message]"))
|
||||
|
||||
/datum/reagent/inverse/oxandrolone/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/oxandrolone/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(25, seconds_per_tick))
|
||||
affected_mob.adjust_bodytemperature(30 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio)
|
||||
affected_mob.set_jitter_if_lower(3 SECONDS)
|
||||
affected_mob.adjust_stamina_loss(5 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_stamina_loss(2.5 * metabolization_ratio)
|
||||
else if(SPT_PROB(5, seconds_per_tick))
|
||||
affected_mob.vomit(VOMIT_CATEGORY_BLOOD, lost_nutrition = 0, distance = 3)
|
||||
affected_mob.Paralyze(3 SECONDS)
|
||||
@@ -839,7 +835,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
color = "#ecd4d6"
|
||||
taste_description = "paint thinner"
|
||||
ph = 4.5
|
||||
metabolization_rate = 0.08 * REM
|
||||
metabolization_rate = 0.2 * REAGENTS_METABOLISM
|
||||
tox_damage = 0
|
||||
metabolized_traits = list(TRAIT_EASYBLEED)
|
||||
|
||||
@@ -849,18 +845,18 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
color = "#09ff00"
|
||||
ph = 3.7
|
||||
taste_description = "venom"
|
||||
metabolization_rate = 0.25 * REM
|
||||
metabolization_rate = 0.0625 * REAGENTS_METABOLISM
|
||||
tox_damage = 0
|
||||
|
||||
/datum/reagent/inverse/pen_acid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/medicine/c2/seiver, 5 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/medicine/potass_iodide, 5 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/medicine/c2/multiver, 5 * REM * seconds_per_tick)
|
||||
/datum/reagent/inverse/pen_acid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
holder.remove_reagent(/datum/reagent/medicine/c2/seiver, 40 * metabolization_ratio * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/medicine/potass_iodide, 40 * metabolization_ratio * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/medicine/c2/multiver, 40 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
. = ..()
|
||||
if(HAS_TRAIT(affected_mob, TRAIT_IRRADIATED))
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS)
|
||||
affected_mob.adjust_disgust(3 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_disgust(2.4 * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_warning("A horrible ache spreads in your insides!"))
|
||||
affected_mob.adjust_confusion_up_to(10 SECONDS, 15 SECONDS)
|
||||
@@ -870,21 +866,21 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Slowly regenerates all damaged organs, but cannot restore non-functional organs."
|
||||
color = "#273333"
|
||||
ph = 13.6
|
||||
metabolization_rate = 0.2 * REM
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
tox_damage = 0
|
||||
overdose_threshold = 40
|
||||
|
||||
/datum/reagent/inverse/atropine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/atropine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_STOMACH, -1 * REM * seconds_per_tick)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, -1 * REM * seconds_per_tick)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_STOMACH, -1 * metabolization_ratio * seconds_per_tick)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, -1 * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.get_tox_loss() <= 25)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-0.5, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/inverse/atropine/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/atropine/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/static/list/possible_organs = list(
|
||||
ORGAN_SLOT_HEART,
|
||||
@@ -898,17 +894,16 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
ORGAN_SLOT_TONGUE,
|
||||
)
|
||||
affected_mob.adjust_organ_loss(pick(possible_organs) ,2 * seconds_per_tick)
|
||||
affected_mob.reagents.remove_reagent(type, 1 * REM * seconds_per_tick)
|
||||
affected_mob.reagents.remove_reagent(type, 1 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/inverse/ammoniated_mercury
|
||||
name = "Ammoniated Sludge"
|
||||
description = "A ghastly looking mess of mercury by-product. Causes bursts of manic hysteria."
|
||||
color = "#353535"
|
||||
ph = 10.2
|
||||
metabolization_rate = 0.4 * REM
|
||||
tox_damage = 0
|
||||
|
||||
/datum/reagent/inverse/ammoniated_mercury/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/ammoniated_mercury/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(7.5, seconds_per_tick))
|
||||
affected_mob.emote("scream")
|
||||
@@ -919,7 +914,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Makes the user horribly afraid of all things related to fish."
|
||||
color = "#c92eb4"
|
||||
ph = 13.9
|
||||
metabolization_rate = 0.05 * REM
|
||||
metabolization_rate = 0.125 * REAGENTS_METABOLISM
|
||||
tox_damage = 0
|
||||
|
||||
/datum/reagent/inverse/rezadone/on_mob_metabolize(mob/living/carbon/affected_mob)
|
||||
@@ -935,7 +930,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Weakens the immune system, acclerating the effects of bacteria, viruses, and parasites while negating the effects of immunity boosters." //it's like spacacillin but evil muahaha
|
||||
color = "#002f06" //Gross green-black. Seemed fitting.
|
||||
ph = 8.1
|
||||
metabolization_rate = 0.1 * REM
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
tox_damage = 0
|
||||
metabolized_traits = list(TRAIT_IMMUNODEFICIENCY)
|
||||
|
||||
@@ -943,7 +938,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
name = "Permonid"
|
||||
description = "Highly potent sedative that provides the best benefits for pain management and surgery. Extremely addictive."
|
||||
color = "#15b5dd55"
|
||||
metabolization_rate = 0.1 * REM
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 20
|
||||
ph = 2.5
|
||||
addiction_types = list(/datum/addiction/opioids = 30)
|
||||
@@ -957,11 +952,11 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
|
||||
exposed_mob.add_surgery_speed_mod(type, 0.7, min(reac_volume * 1 MINUTES, 5 MINUTES))
|
||||
|
||||
/datum/reagent/inverse/krokodil/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/krokodil/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.add_mood_event("smacked out", /datum/mood_event/narcotic_heavy)
|
||||
|
||||
/datum/reagent/inverse/krokodil/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/krokodil/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_jitter_if_lower(10 SECONDS)
|
||||
affected_mob.set_dizzy_if_lower(5 SECONDS)
|
||||
@@ -979,7 +974,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Oop aak chee aak eek chee. Eek aak oop chee oop aak aak!!"
|
||||
color = "#7e3900"
|
||||
ph = 14
|
||||
metabolization_rate = 0.2 * REM
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
tox_damage = 0
|
||||
/// The martial art we teach (to monkies)
|
||||
var/datum/martial_art/jungle_arts/jungle_arts
|
||||
@@ -1001,7 +996,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
affected_mob.remove_traits(list(TRAIT_STUNIMMUNE, TRAIT_SLEEPIMMUNE, TRAIT_ANALGESIA, TRAIT_STIMULATED), type)
|
||||
affected_mob.Sleeping(30 SECONDS)
|
||||
|
||||
/datum/reagent/inverse/bath_salts/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/bath_salts/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(holder.has_reagent(/datum/reagent/drug/bath_salts))
|
||||
holder.remove_reagent(type, volume)
|
||||
@@ -1009,10 +1004,10 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
|
||||
if(is_simian(affected_mob))
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 5 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
|
||||
if(holder.has_reagent(/datum/reagent/consumable/monkey_energy))
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 5 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
|
||||
if(need_mob_update)
|
||||
. = UPDATE_MOB_HEALTH
|
||||
@@ -1025,29 +1020,29 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Synthetic medication that induces blood regeneration and wound clotting in patients. \
|
||||
Causes adverse side effects, including arterial damage and migraines when excessively used over time."
|
||||
color = "#dee4ff"
|
||||
metabolization_rate = 0.25 * REM
|
||||
metabolization_rate = 0.625 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 20
|
||||
ph = 6.1
|
||||
tox_damage = 0
|
||||
|
||||
/datum/reagent/inverse/aranesp/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/aranesp/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(overdosed)
|
||||
return
|
||||
|
||||
affected_mob.coagulant_effect(0.1 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_blood_volume(1 * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL)
|
||||
affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, 0.2 * REM * seconds_per_tick)
|
||||
affected_mob.coagulant_effect(0.08 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_blood_volume(1.6 * metabolization_ratio * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL)
|
||||
affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, 0.16 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
switch(current_cycle)
|
||||
if(10)
|
||||
to_chat(affected_mob, span_warning("You feel a migraine coming on..."))
|
||||
affected_mob.adjust_eye_blur(2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_eye_blur(0.16 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
if(15 to 30)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_warning("Your head aches as your vision blurs."))
|
||||
affected_mob.adjust_eye_blur(5 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_eye_blur(4 SECONDS * metabolization_ratio)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_warning("Your face contorts as a sudden pain forms in your head."))
|
||||
affected_mob.Stun(1 SECONDS)
|
||||
@@ -1055,7 +1050,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
if(31 to 45)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_warning("Intense pressure forms in your head, you can barely see!"))
|
||||
affected_mob.adjust_eye_blur(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_eye_blur(8 SECONDS * metabolization_ratio)
|
||||
affected_mob.adjust_confusion_up_to(5 SECONDS, 20 SECONDS)
|
||||
affected_mob.adjust_hallucinations(10 SECONDS)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
@@ -1064,12 +1059,12 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
affected_mob.emote(pick("stare","drool","moan","look"))
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_warning("Your inhaling becomes more stressed, it's getting harder to breathe!"))
|
||||
holder.add_reagent(/datum/reagent/toxin/histamine, 4 * REM * seconds_per_tick)
|
||||
holder.add_reagent(/datum/reagent/toxin/histamine, 3.2 * metabolization_ratio)
|
||||
|
||||
if(46 to INFINITY)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_warning("It feels like your head is going to implode!"))
|
||||
affected_mob.adjust_eye_blur(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_eye_blur(8 SECONDS * metabolization_ratio)
|
||||
affected_mob.adjust_confusion_up_to(10 SECONDS, 20 SECONDS)
|
||||
affected_mob.adjust_hallucinations(30 SECONDS)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
@@ -1078,15 +1073,15 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
affected_mob.emote(pick("stare","drool","tremble","shake"))
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_warning("Your breathing becomes weak and raspy, you can barely stay conscious!"))
|
||||
holder.add_reagent(/datum/reagent/toxin/histamine, 6 * REM * seconds_per_tick)
|
||||
holder.add_reagent(/datum/reagent/toxin/histamine, 4.8 * metabolization_ratio)
|
||||
affected_mob.losebreath += 3
|
||||
|
||||
/datum/reagent/inverse/aranesp/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/aranesp/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
to_chat(affected_mob, span_warning("It feels like your head is going to implode!"))
|
||||
affected_mob.adjust_eye_blur(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_eye_blur(8 SECONDS * metabolization_ratio)
|
||||
affected_mob.adjust_confusion_up_to(10 SECONDS, 20 SECONDS)
|
||||
affected_mob.adjust_hallucinations(30 SECONDS)
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
@@ -1095,7 +1090,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
affected_mob.emote(pick("stare","drool","tremble","shake"))
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
to_chat(affected_mob, span_warning("Your breathing becomes weak and raspy, you can barely stay conscious!"))
|
||||
holder.add_reagent(/datum/reagent/toxin/histamine, 6 * REM * seconds_per_tick)
|
||||
holder.add_reagent(/datum/reagent/toxin/histamine, 4.8 * metabolization_ratio)
|
||||
affected_mob.losebreath += 3
|
||||
need_mob_update = TRUE
|
||||
|
||||
@@ -1107,7 +1102,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Causes severe depressive behavior in users, and actively purges other antidepressants."
|
||||
color = "#0004ff"
|
||||
ph = 12
|
||||
metabolization_rate = 0.1 * REM
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
tox_damage = 0
|
||||
penetrates_skin = TOUCH|VAPOR
|
||||
|
||||
@@ -1128,16 +1123,16 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
exposed_mob.emote("cry")
|
||||
return
|
||||
|
||||
/datum/reagent/inverse/happiness/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/happiness/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.mob_mood?.has_mood_of_category("friendly_hug") && !HAS_TRAIT(affected_mob, TRAIT_BADTOUCH))
|
||||
holder.remove_reagent(type, volume)
|
||||
return
|
||||
|
||||
holder.remove_reagent(/datum/reagent/drug/happiness, 5 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/medicine/psicodine, 5 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/drug/happiness, 10 * metabolization_ratio * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/medicine/psicodine, 10 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
affected_mob.mob_mood.adjust_sanity(-7.5 * REM * seconds_per_tick, minimum = SANITY_INSANE)
|
||||
affected_mob.mob_mood.adjust_sanity(-13 * metabolization_ratio * seconds_per_tick, minimum = SANITY_INSANE)
|
||||
if(affected_mob.mob_mood != null && affected_mob.mob_mood.sanity < (SANITY_CRAZY))
|
||||
affected_mob.adjust_drowsiness_up_to(5 SECONDS, 30 SECONDS)
|
||||
if(SPT_PROB(25, seconds_per_tick))
|
||||
@@ -1150,7 +1145,6 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Potent psychotropic that causes intense anger within users."
|
||||
color = "#ff0000"
|
||||
ph = 1
|
||||
metabolization_rate = 0.4 * REM
|
||||
tox_damage = 0
|
||||
var/delayed_burn_damage = 0
|
||||
|
||||
@@ -1167,12 +1161,12 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
affected_mob.manual_emote("exhales sharply.")
|
||||
to_chat(affected_mob, span_warning("You feel an intense burning sensation as your anger subsides!"))
|
||||
|
||||
/datum/reagent/inverse/baldium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/baldium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
delayed_burn_damage += (seconds_per_tick * 1)
|
||||
if(holder.has_reagent(/datum/reagent/consumable/salt))
|
||||
holder.remove_reagent(/datum/reagent/inverse/baldium, 3 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/consumable/salt, 1 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/inverse/baldium, 1.5 * metabolization_ratio * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/consumable/salt, 0.5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
switch(current_cycle)
|
||||
if(5)
|
||||
@@ -1201,7 +1195,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Extremely drab coloring pigment that is favored by corporations who wish to maximize suffering."
|
||||
color = COLOR_GRAY
|
||||
ph = 10
|
||||
metabolization_rate = 0.4 * REM
|
||||
metabolization_rate = REAGENTS_METABOLISM
|
||||
tox_damage = 0
|
||||
/// Whenever this reagent can color mob limbs and organs upon exposure
|
||||
var/can_color_mobs = TRUE
|
||||
@@ -1214,18 +1208,6 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
/// Used when applying colors on valid things
|
||||
var/list/random_color_list = list("#1a1a1a","#2e2e2e","#424242","#565656","#6a6a6a","#7e7e7e","#929292","#a6a6a6","#bababa","#cecece")
|
||||
|
||||
/datum/reagent/inverse/colorful_reagent/on_mob_metabolize(mob/living/carbon/affected_mob)
|
||||
. = ..()
|
||||
affected_mob.gain_trauma(/datum/brain_trauma/mild/color_blindness, TRAUMA_RESILIENCE_ABSOLUTE)
|
||||
|
||||
/datum/reagent/inverse/colorful_reagent/on_mob_end_metabolize(mob/living/carbon/affected_mob)
|
||||
. = ..()
|
||||
affected_mob.cure_trauma_type(/datum/brain_trauma/mild/color_blindness, resilience = TRAUMA_RESILIENCE_ABSOLUTE)
|
||||
|
||||
/datum/reagent/inverse/colorful_reagent/overdose_start(mob/living/affected_mob)
|
||||
. = ..()
|
||||
metabolization_rate = 0.04 * REM
|
||||
|
||||
/datum/reagent/inverse/colorful_reagent/New()
|
||||
color_callback = CALLBACK(src, PROC_REF(UpdateColor))
|
||||
SSticker.OnRoundstart(color_callback)
|
||||
@@ -1236,6 +1218,18 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
color_callback = null
|
||||
return ..()
|
||||
|
||||
/datum/reagent/inverse/colorful_reagent/overdose_start(mob/living/affected_mob)
|
||||
. = ..()
|
||||
metabolization_rate = 0.04 * REM
|
||||
|
||||
/datum/reagent/inverse/colorful_reagent/on_mob_metabolize(mob/living/carbon/affected_mob)
|
||||
. = ..()
|
||||
affected_mob.gain_trauma(/datum/brain_trauma/mild/color_blindness, TRAUMA_RESILIENCE_ABSOLUTE)
|
||||
|
||||
/datum/reagent/inverse/colorful_reagent/on_mob_end_metabolize(mob/living/carbon/affected_mob)
|
||||
. = ..()
|
||||
affected_mob.cure_trauma_type(/datum/brain_trauma/mild/color_blindness, resilience = TRAUMA_RESILIENCE_ABSOLUTE)
|
||||
|
||||
/datum/reagent/inverse/colorful_reagent/proc/UpdateColor()
|
||||
color_callback = null
|
||||
color = pick(random_color_list)
|
||||
@@ -1271,7 +1265,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
for (var/obj/item/bodypart/part as anything in exposed_carbon.bodyparts)
|
||||
part.add_atom_colour(color_filter, WASHABLE_COLOUR_PRIORITY)
|
||||
|
||||
/datum/reagent/inverse/colorful_reagent/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/colorful_reagent/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
|
||||
if (!iscarbon(affected_mob))
|
||||
@@ -1300,7 +1294,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
description = "Experimental reagent that induces heavy gravokinetic effects on users."
|
||||
color = "#4b0082"
|
||||
ph = 2.3
|
||||
metabolization_rate = 1 * REM
|
||||
metabolization_rate = 2.5 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 30
|
||||
tox_damage = 0
|
||||
|
||||
@@ -1312,7 +1306,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
. = ..()
|
||||
affected_mob.RemoveElement(/datum/element/forced_gravity, gravity = 5, ignore_turf_gravity = TRUE, can_override = FALSE)
|
||||
|
||||
/datum/reagent/inverse/gravitum/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/inverse/gravitum/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
|
||||
switch(current_cycle)
|
||||
@@ -1331,7 +1325,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
|
||||
affected_mob.cause_wound_of_type_and_severity(WOUND_BLUNT, leg, WOUND_SEVERITY_CRITICAL)
|
||||
to_chat(affected_mob, span_warning("The gravity of this situation makes your bones snap like popsicle sticks!"))
|
||||
|
||||
/datum/reagent/inverse/gravitum/overdose_start(mob/living/carbon/affected_mob)
|
||||
/datum/reagent/inverse/gravitum/overdose_start(mob/living/carbon/affected_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.AddElement(/datum/element/squish, 120 SECONDS)
|
||||
for(var/obj/item/bodypart/leg/leg in affected_mob.bodyparts)
|
||||
|
||||
@@ -26,10 +26,10 @@
|
||||
ph = 7
|
||||
liver_damage = 0
|
||||
|
||||
/datum/reagent/impurity/methanol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/impurity/methanol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/eyes/eyes = affected_mob.get_organ_slot(ORGAN_SLOT_EYES)
|
||||
if(eyes?.apply_organ_damage(0.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
if(eyes?.apply_organ_damage(0.25 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
//Chloral Hydrate - Impure Version
|
||||
@@ -40,9 +40,9 @@
|
||||
ph = 7
|
||||
liver_damage = 0
|
||||
|
||||
/datum/reagent/impurity/chloralax/on_mob_life(mob/living/carbon/owner, seconds_per_tick)
|
||||
/datum/reagent/impurity/chloralax/on_mob_life(mob/living/carbon/owner, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(owner.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(owner.adjust_tox_loss(0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
//Mindbreaker Toxin - Impure Version
|
||||
@@ -54,7 +54,7 @@
|
||||
liver_damage = 0
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/impurity/rosenol/on_mob_life(mob/living/carbon/owner, seconds_per_tick)
|
||||
/datum/reagent/impurity/rosenol/on_mob_life(mob/living/carbon/owner, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/tongue/tongue = owner.get_organ_slot(ORGAN_SLOT_TONGUE)
|
||||
if(!tongue)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -108,9 +108,9 @@
|
||||
description = "An ubiquitous chemical substance that is composed of hydrogen and oxygen."
|
||||
color = "#AAAAAA77" // rgb: 170, 170, 170, 77 (alpha)
|
||||
taste_description = "water"
|
||||
var/cooling_temperature = 2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_CLEANS
|
||||
default_container = /obj/item/reagent_containers/cup/glass/waterbottle
|
||||
var/cooling_temperature = 2
|
||||
|
||||
/datum/glass_style/shot_glass/water
|
||||
required_drink_type = /datum/reagent/water
|
||||
@@ -217,24 +217,24 @@
|
||||
#undef WATER_TO_WET_STACKS_FACTOR_VAPOR
|
||||
|
||||
|
||||
/datum/reagent/water/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/water/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
|
||||
var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(liver?.damage && !IS_ROBOTIC_ORGAN(liver) && !(liver.organ_flags & ORGAN_FAILING))
|
||||
var/healing_bonus = liver.healing_factor * liver.maxHealth
|
||||
liver.apply_organ_damage(-healing_bonus * REM * seconds_per_tick)
|
||||
liver.apply_organ_damage(-0.5 * healing_bonus * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
var/water_adaptation = HAS_TRAIT(affected_mob, TRAIT_WATER_ADAPTATION)
|
||||
var/blood_restored = water_adaptation ? 0.3 : 0.1
|
||||
affected_mob.adjust_blood_volume(blood_restored * REM * seconds_per_tick) // water is good for you!
|
||||
affected_mob.adjust_blood_volume(0.5 * blood_restored * metabolization_ratio * seconds_per_tick) // water is good for you!
|
||||
var/drunkness_restored = water_adaptation ? -0.5 : -0.25
|
||||
affected_mob.adjust_drunk_effect(drunkness_restored * REM * seconds_per_tick) // and even sobers you up slowly!!
|
||||
affected_mob.adjust_drunk_effect(0.5 * drunkness_restored * metabolization_ratio * seconds_per_tick) // and even sobers you up slowly!!
|
||||
if(water_adaptation)
|
||||
var/need_mob_update = FALSE
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-0.125 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-0.125 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-0.125 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
return need_mob_update ? UPDATE_MOB_HEALTH : .
|
||||
|
||||
// For weird backwards situations where water manages to get added to trays nutrients, as opposed to being snowflaked away like usual.
|
||||
@@ -247,9 +247,9 @@
|
||||
name = "Mineral Water"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE|REAGENT_CLEANS
|
||||
|
||||
/datum/reagent/water/mineral/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/water/mineral/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_tox_loss(-0.1 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
affected_mob.adjust_tox_loss(-0.05 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/water/salt
|
||||
@@ -337,12 +337,12 @@
|
||||
if(IS_CULTIST(affected_mob))
|
||||
to_chat(affected_mob, span_userdanger("A vile holiness begins to spread its shining tendrils through your mind, purging the Geometer of Blood's influence!"))
|
||||
|
||||
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
|
||||
data["deciseconds_metabolized"] += (seconds_per_tick * 1 SECONDS * REM)
|
||||
|
||||
affected_mob.adjust_jitter_up_to(4 SECONDS * REM * seconds_per_tick, 20 SECONDS)
|
||||
affected_mob.adjust_jitter_up_to(2 SECONDS * metabolization_ratio * seconds_per_tick, 20 SECONDS)
|
||||
var/need_mob_update = FALSE
|
||||
|
||||
if(IS_CULTIST(affected_mob))
|
||||
@@ -355,7 +355,7 @@
|
||||
to_chat(affected_mob, span_cult_large("Your blood rites falter as holy water scours your body!"))
|
||||
|
||||
if(data["deciseconds_metabolized"] >= (25 SECONDS)) // 10 units
|
||||
affected_mob.adjust_stutter_up_to(4 SECONDS * REM * seconds_per_tick, 20 SECONDS)
|
||||
affected_mob.adjust_stutter_up_to(2 SECONDS * metabolization_ratio * seconds_per_tick, 20 SECONDS)
|
||||
affected_mob.set_dizzy_if_lower(10 SECONDS)
|
||||
if(IS_CULTIST(affected_mob) && SPT_PROB(10, seconds_per_tick))
|
||||
affected_mob.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")
|
||||
@@ -367,7 +367,7 @@
|
||||
else if(HAS_TRAIT(affected_mob, TRAIT_EVIL) && SPT_PROB(25, seconds_per_tick)) //Congratulations, your committment to evil has now made holy water a deadly poison to you!
|
||||
if(!IS_CULTIST(affected_mob) || affected_mob.mind?.holy_role != HOLY_ROLE_PRIEST)
|
||||
affected_mob.emote("scream")
|
||||
need_mob_update += affected_mob.adjust_fire_loss(3 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(1.5 * metabolization_ratio, updating_health = FALSE)
|
||||
|
||||
if(data["deciseconds_metabolized"] >= (1 MINUTES)) // 24 units
|
||||
if(IS_CULTIST(affected_mob))
|
||||
@@ -375,7 +375,7 @@
|
||||
affected_mob.Unconscious(10 SECONDS)
|
||||
else if(HAS_TRAIT(affected_mob, TRAIT_EVIL)) //At this much holy water, you're probably going to fucking melt. good luck
|
||||
if(!IS_CULTIST(affected_mob) || affected_mob.mind?.holy_role != HOLY_ROLE_PRIEST)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(10 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
affected_mob.remove_status_effect(/datum/status_effect/jitter)
|
||||
affected_mob.remove_status_effect(/datum/status_effect/speech/stutter)
|
||||
for(var/datum/status_effect/eldritch_painting/eldritch_curses in affected_mob.status_effects)
|
||||
@@ -405,7 +405,6 @@
|
||||
description = "An ubiquitous chemical substance that is composed of hydrogen and oxygen and oxygen." //intended intended
|
||||
color = "#AAAAAA77" // rgb: 170, 170, 170, 77 (alpha)
|
||||
taste_description = "burning water"
|
||||
var/cooling_temperature = 2
|
||||
ph = 6.2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
@@ -460,28 +459,27 @@
|
||||
if(IS_CULTIST(affected_mob))
|
||||
ADD_TRAIT(affected_mob, TRAIT_COAGULATING, type)
|
||||
|
||||
/datum/reagent/fuel/unholywater/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/fuel/unholywater/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
|
||||
var/need_mob_update = FALSE
|
||||
if(IS_CULTIST(affected_mob))
|
||||
affected_mob.adjust_drowsiness(-10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustAllImmobility(-40 * REM * seconds_per_tick)
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(-10 * REM * seconds_per_tick, updating_stamina = FALSE)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(-2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update = TRUE
|
||||
affected_mob.adjust_blood_volume(3 * REM * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL)
|
||||
affected_mob.coagulant_effect(2 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(-2 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.AdjustAllImmobility(-8 * metabolization_ratio * seconds_per_tick)
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(-2 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(-0.4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(-0.4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-0.4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-0.4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
affected_mob.adjust_blood_volume(0.6 * metabolization_ratio * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL)
|
||||
affected_mob.coagulant_effect(0.4 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
else // Will deal about 90 damage when 50 units are thrown
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 3 * REM * seconds_per_tick, 150)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(1 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(1 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(1 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.6 * metabolization_ratio * seconds_per_tick, 150)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(0.2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -496,7 +494,7 @@
|
||||
ph = 0.1
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/hellwater/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/hellwater/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_fire_stacks(min(affected_mob.fire_stacks + (1.5 * seconds_per_tick), 5))
|
||||
affected_mob.ignite_mob() //Only problem with igniting people is currently the commonly available fire suits make you immune to being on fire
|
||||
@@ -611,9 +609,9 @@
|
||||
if((methods & INGEST) && show_message)
|
||||
to_chat(exposed_mob, span_notice("That tasted horrible."))
|
||||
|
||||
/datum/reagent/spraytan/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/spraytan/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
metabolization_rate = 1 * REAGENTS_METABOLISM
|
||||
metabolization_rate = REAGENTS_METABOLISM
|
||||
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/affected_human = affected_mob
|
||||
@@ -663,7 +661,7 @@
|
||||
"Your appendages begin morphing." = MUT_MSG_EXTENDED,
|
||||
"You feel as though you're about to change at any moment!" = MUT_MSG_ABOUT2TURN)
|
||||
|
||||
/datum/reagent/mutationtoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/mutationtoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!ishuman(affected_mob))
|
||||
return
|
||||
@@ -747,7 +745,7 @@
|
||||
taste_description = "grandma's gelatin"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/mutationtoxin/jelly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/mutationtoxin/jelly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
if(!ishuman(affected_mob))
|
||||
return ..()
|
||||
var/mob/living/carbon/affected_human = affected_mob
|
||||
@@ -848,7 +846,7 @@
|
||||
taste_description = "slime"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/mulligan/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/mulligan/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!ishuman(affected_mob))
|
||||
return
|
||||
@@ -894,7 +892,7 @@
|
||||
ph = 10
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/serotrotium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/serotrotium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(3.5, seconds_per_tick))
|
||||
affected_mob.emote(pick("twitch","drool","moan","gasp"))
|
||||
@@ -966,13 +964,13 @@
|
||||
taste_mult = 0 // apparently tasteless.
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/mercury/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/mercury/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!HAS_TRAIT(src, TRAIT_IMMOBILIZED) && isturf(affected_mob.loc) && !isgroundlessturf(affected_mob.loc))
|
||||
step(affected_mob, pick(GLOB.cardinals))
|
||||
if(SPT_PROB(3.5, seconds_per_tick))
|
||||
affected_mob.emote(pick("twitch","drool","moan"))
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5*seconds_per_tick))
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5 * metabolization_ratio * seconds_per_tick))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/sulfur
|
||||
@@ -1016,7 +1014,7 @@
|
||||
// White Phosphorous + water -> phosphoric acid. That's not a good thing really.
|
||||
|
||||
|
||||
/datum/reagent/chlorine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/chlorine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.take_bodypart_damage(0.5*REM*seconds_per_tick, 0))
|
||||
return UPDATE_MOB_HEALTH
|
||||
@@ -1036,7 +1034,7 @@
|
||||
mytray.adjust_waterlevel(-round(volume * 0.5))
|
||||
mytray.adjust_weedlevel(-rand(1, 4))
|
||||
|
||||
/datum/reagent/fluorine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/fluorine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_tox_loss(0.5*REM*seconds_per_tick, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
@@ -1071,7 +1069,7 @@
|
||||
ph = 11.3
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/lithium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/lithium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!HAS_TRAIT(affected_mob, TRAIT_IMMOBILIZED) && isturf(affected_mob.loc) && !isgroundlessturf(affected_mob.loc))
|
||||
step(affected_mob, pick(GLOB.cardinals))
|
||||
@@ -1143,7 +1141,7 @@
|
||||
/// How radioactive is this reagent
|
||||
var/rad_power = 1
|
||||
|
||||
/datum/reagent/uranium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/uranium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!HAS_TRAIT(affected_mob, TRAIT_IRRADIATED) && SSradiation.can_irradiate_basic(affected_mob))
|
||||
var/chance = min(volume / (20 - rad_power * 5), rad_power)
|
||||
@@ -1238,7 +1236,7 @@
|
||||
|
||||
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/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/bluespace/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(current_cycle > 10 && SPT_PROB(7.5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_warning("You feel unstable..."))
|
||||
@@ -1290,7 +1288,7 @@
|
||||
|
||||
exposed_mob.adjust_fire_stacks(reac_volume / 10)
|
||||
|
||||
/datum/reagent/fuel/on_mob_life(mob/living/carbon/victim, seconds_per_tick)
|
||||
/datum/reagent/fuel/on_mob_life(mob/living/carbon/victim, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/liver/liver = victim.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM))
|
||||
@@ -1318,9 +1316,9 @@
|
||||
taste_description = "sourness"
|
||||
reagent_weight = 0.6 //so it sprays further
|
||||
penetrates_skin = VAPOR
|
||||
var/clean_types = CLEAN_WASH
|
||||
ph = 5.5
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_CLEANS|REAGENT_AFFECTS_WOUNDS
|
||||
var/clean_types = CLEAN_WASH
|
||||
|
||||
/datum/reagent/space_cleaner/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
|
||||
. = ..()
|
||||
@@ -1359,12 +1357,13 @@
|
||||
ph = 2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/space_cleaner/ez_clean/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/space_cleaner/ez_clean/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/heal = 1.1 * metabolization_ratio * seconds_per_tick
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_brute_loss(1.665*seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(1.665*seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(1.665*seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update = affected_mob.adjust_brute_loss(heal, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(heal, updating_health = FALSE)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(heal, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -1388,7 +1387,7 @@
|
||||
ph = 11.9
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/cryptobiolin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/cryptobiolin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.set_dizzy_if_lower(2 SECONDS)
|
||||
|
||||
@@ -1410,7 +1409,7 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
addiction_types = list(/datum/addiction/opioids = 10)
|
||||
|
||||
/datum/reagent/impedrezene/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/impedrezene/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_jitter(-5 SECONDS * seconds_per_tick)
|
||||
if(SPT_PROB(55, seconds_per_tick))
|
||||
@@ -1579,9 +1578,9 @@
|
||||
. = ..()
|
||||
REMOVE_TRAIT(affected_mob, TRAIT_BLOOD_FOUNTAIN, type)
|
||||
|
||||
/datum/reagent/nitrous_oxide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/nitrous_oxide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_drowsiness(4 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(1.34 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
if(!HAS_TRAIT(affected_mob, TRAIT_BLOOD_FOUNTAIN) && !HAS_TRAIT(affected_mob, TRAIT_COAGULATING)) //So long as they do not have a coagulant, if they did not have the bloody mess trait, they do now
|
||||
ADD_TRAIT(affected_mob, TRAIT_BLOOD_FOUNTAIN, type)
|
||||
@@ -1730,14 +1729,14 @@
|
||||
name = "Generic Nutriment"
|
||||
description = "Some kind of nutriment. You can't really tell what it is. You should probably report it, along with how you obtained it."
|
||||
color = COLOR_BLACK // RBG: 0, 0, 0
|
||||
var/tox_prob = 0
|
||||
taste_description = "plant food"
|
||||
ph = 3
|
||||
var/tox_prob = 0
|
||||
|
||||
/datum/reagent/plantnutriment/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/plantnutriment/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(tox_prob, seconds_per_tick))
|
||||
if(affected_mob.adjust_tox_loss(1, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(1 * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/plantnutriment/eznutriment
|
||||
@@ -1833,9 +1832,9 @@
|
||||
ph = 1.5
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/stable_plasma/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/stable_plasma/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjustPlasma(10 * REM * seconds_per_tick)
|
||||
affected_mob.adjustPlasma(5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/iodine
|
||||
name = "Iodine"
|
||||
@@ -1918,7 +1917,7 @@
|
||||
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/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/carpet/royal/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(liver)
|
||||
@@ -2196,7 +2195,7 @@
|
||||
for (var/obj/item/bodypart/part as anything in exposed_carbon.bodyparts)
|
||||
part.add_atom_colour(color_filter, WASHABLE_COLOUR_PRIORITY)
|
||||
|
||||
/datum/reagent/colorful_reagent/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/colorful_reagent/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
|
||||
if (!iscarbon(affected_mob))
|
||||
@@ -2300,7 +2299,7 @@
|
||||
exposed_human.set_hairstyle("Very Long Hair", update = TRUE)
|
||||
to_chat(exposed_human, span_notice("Your[HAS_TRAIT(exposed_human, TRAIT_BALD) ? " facial" : ""] hair starts growing at an incredible speed!"))
|
||||
|
||||
/datum/reagent/concentrated_barbers_aid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/concentrated_barbers_aid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(current_cycle > 21 / creation_purity)
|
||||
if(!ishuman(affected_mob))
|
||||
@@ -2449,7 +2448,7 @@
|
||||
ph = 3
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(1, seconds_per_tick))
|
||||
affected_mob.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz..."), forced = "royal bee jelly")
|
||||
@@ -2491,7 +2490,7 @@
|
||||
color = "#00f041"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/magillitis/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/magillitis/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if((ishuman(affected_mob)) && current_cycle > 10)
|
||||
var/mob/living/basic/gorilla/new_gorilla = affected_mob.gorillize()
|
||||
@@ -2505,7 +2504,7 @@
|
||||
taste_description = "bitterness" // apparently what viagra tastes like
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/growthserum/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/growthserum/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/newsize = current_size
|
||||
switch(volume)
|
||||
@@ -2549,7 +2548,7 @@
|
||||
taste_description = "plastic"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/glitter/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/glitter/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(25, seconds_per_tick))
|
||||
affected_mob.emote("cough")
|
||||
@@ -2630,11 +2629,11 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
metabolized_traits = list(TRAIT_CHANGELING_HIVEMIND_MUTE)
|
||||
|
||||
/datum/reagent/bz_metabolites/on_mob_life(mob/living/carbon/target, seconds_per_tick)
|
||||
/datum/reagent/bz_metabolites/on_mob_life(mob/living/carbon/target, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
target.adjust_hallucinations(5 SECONDS * REM * seconds_per_tick)
|
||||
target.adjust_hallucinations(12.5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
var/datum/antagonist/changeling/changeling = IS_CHANGELING(target)
|
||||
changeling?.adjust_chemicals(-2 * REM * seconds_per_tick)
|
||||
changeling?.adjust_chemicals(-5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/pax/peaceborg
|
||||
name = "Synthpax"
|
||||
@@ -2649,10 +2648,10 @@
|
||||
taste_description = "dizziness"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/peaceborg/confuse/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/peaceborg/confuse/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_confusion_up_to(3 SECONDS * REM * seconds_per_tick, 5 SECONDS)
|
||||
affected_mob.adjust_dizzy_up_to(6 SECONDS * REM * seconds_per_tick, 12 SECONDS)
|
||||
affected_mob.adjust_confusion_up_to(1 SECONDS * metabolization_ratio * seconds_per_tick, 5 SECONDS)
|
||||
affected_mob.adjust_dizzy_up_to(2 SECONDS * metabolization_ratio * seconds_per_tick, 12 SECONDS)
|
||||
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
to_chat(affected_mob, "You feel confused and disoriented.")
|
||||
@@ -2664,12 +2663,12 @@
|
||||
taste_description = "tiredness"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/peaceborg/tire/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/peaceborg/tire/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/healthcomp = (100 - affected_mob.health) //DOES NOT ACCOUNT FOR ADMINBUS THINGS THAT MAKE YOU HAVE MORE THAN 200/210 HEALTH, OR SOMETHING OTHER THAN A HUMAN PROCESSING THIS.
|
||||
. = FALSE
|
||||
if(affected_mob.get_stamina_loss() < (45 - healthcomp)) //At 50 health you would have 200 - 150 health meaning 50 compensation. 60 - 50 = 10, so would only do 10-19 stamina.)
|
||||
if(affected_mob.adjust_stamina_loss(10 * REM * seconds_per_tick, updating_stamina = FALSE))
|
||||
if(affected_mob.adjust_stamina_loss(3.34 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(SPT_PROB(16, seconds_per_tick))
|
||||
to_chat(affected_mob, "You should sit down and take a rest...")
|
||||
@@ -2716,7 +2715,7 @@
|
||||
|
||||
#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/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/yuck/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!yuck_cycle)
|
||||
if(SPT_PROB(4, seconds_per_tick))
|
||||
@@ -2877,7 +2876,7 @@
|
||||
affected_mob.adjust_stamina_loss(stam_crash)
|
||||
affected_mob.remove_status_effect(/datum/status_effect/determined)
|
||||
|
||||
/datum/reagent/determination/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/determination/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!significant && volume >= WOUND_DETERMINATION_SEVERE)
|
||||
significant = TRUE
|
||||
@@ -2889,8 +2888,8 @@
|
||||
var/datum/wound/W = thing
|
||||
var/obj/item/bodypart/wounded_part = W.limb
|
||||
if(wounded_part)
|
||||
wounded_part.heal_damage(0.25 * REM * seconds_per_tick, 0.25 * REM * seconds_per_tick)
|
||||
if(affected_mob.adjust_stamina_loss(-1 * REM * seconds_per_tick, updating_stamina = FALSE)) // the more wounds, the more stamina regen
|
||||
wounded_part.heal_damage(0.167 * metabolization_ratio * seconds_per_tick, 0.25 * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.adjust_stamina_loss(-0.67 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)) // the more wounds, the more stamina regen
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
// unholy water, but for heretics.
|
||||
@@ -2908,29 +2907,30 @@
|
||||
metabolization_rate = 2.5 * REAGENTS_METABOLISM //0.5u/second
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/eldritch/on_mob_life(mob/living/carbon/drinker, seconds_per_tick)
|
||||
/datum/reagent/eldritch/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/common = 0.4 * metabolization_ratio * seconds_per_tick
|
||||
var/need_mob_update = FALSE
|
||||
if(IS_HERETIC_OR_MONSTER(drinker))
|
||||
drinker.adjust_drowsiness(-10 * REM * seconds_per_tick)
|
||||
drinker.AdjustAllImmobility(-40 * REM * seconds_per_tick)
|
||||
need_mob_update += drinker.adjust_stamina_loss(-10 * REM * seconds_per_tick, updating_stamina = FALSE)
|
||||
need_mob_update += drinker.adjust_tox_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE)
|
||||
need_mob_update += drinker.adjust_oxy_loss(-2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_brute_loss(-2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_fire_loss(-2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
drinker.adjust_blood_volume(3 * REM * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL)
|
||||
drinker.adjust_drowsiness(-2 * metabolization_ratio * seconds_per_tick)
|
||||
drinker.AdjustAllImmobility(-8 * metabolization_ratio * seconds_per_tick)
|
||||
need_mob_update += drinker.adjust_stamina_loss(-2 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
need_mob_update += drinker.adjust_tox_loss(-common, updating_health = FALSE, forced = TRUE)
|
||||
need_mob_update += drinker.adjust_oxy_loss(-common, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_brute_loss(-common, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_fire_loss(-common, updating_health = FALSE)
|
||||
drinker.adjust_blood_volume(0.6 * metabolization_ratio * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL)
|
||||
// Slowly regulates your body temp
|
||||
drinker.adjust_bodytemperature((drinker.get_body_temp_normal() - drinker.bodytemperature) / 5)
|
||||
for(var/datum/reagent/reagent as anything in drinker.reagents.reagent_list)
|
||||
if(reagent != src)
|
||||
drinker.reagents.remove_reagent(reagent.type, 2 * reagent.purge_multiplier * REM * seconds_per_tick)
|
||||
drinker.reagents.remove_reagent(reagent.type, 0.8 * reagent.purge_multiplier * metabolization_ratio * seconds_per_tick)
|
||||
else
|
||||
need_mob_update = drinker.adjust_organ_loss(ORGAN_SLOT_BRAIN, 3 * REM * seconds_per_tick, 150)
|
||||
need_mob_update += drinker.adjust_tox_loss(2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_fire_loss(2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_oxy_loss(2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_brute_loss(2 * REM * seconds_per_tick, updating_health = FALSE)
|
||||
need_mob_update = drinker.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.6 * metabolization_ratio * seconds_per_tick, 150)
|
||||
need_mob_update += drinker.adjust_tox_loss(common, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_fire_loss(common, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_oxy_loss(common, updating_health = FALSE)
|
||||
need_mob_update += drinker.adjust_brute_loss(common, updating_health = FALSE)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -2987,9 +2987,9 @@
|
||||
name = "glass of ants"
|
||||
desc = "Bottoms up...?"
|
||||
|
||||
/datum/reagent/ants/on_mob_life(mob/living/carbon/victim, seconds_per_tick)
|
||||
/datum/reagent/ants/on_mob_life(mob/living/carbon/victim, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
victim.adjust_brute_loss(max(0.1, round((ant_ticks * ant_damage),0.1))) //Scales with time. Roughly 32 brute with 100u.
|
||||
victim.adjust_brute_loss(0.2 * max(0.1, round((ant_ticks * ant_damage),0.1)) * metabolization_ratio * seconds_per_tick) //Scales with time. Roughly 32 brute with 100u.
|
||||
ant_ticks++
|
||||
if(ant_ticks < 5) // Makes ant food a little more appetizing, since you won't be screaming as much.
|
||||
return
|
||||
@@ -3072,7 +3072,7 @@
|
||||
color = "#80919d"
|
||||
metabolization_rate = 0.4 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/lead/on_mob_life(mob/living/carbon/victim)
|
||||
/datum/reagent/lead/on_mob_life(mob/living/carbon/victim, metabolization_ratio)
|
||||
. = ..()
|
||||
if(victim.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5))
|
||||
return UPDATE_MOB_HEALTH
|
||||
@@ -3087,11 +3087,11 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
addiction_types = list(/datum/addiction/stimulants = 5)
|
||||
|
||||
/datum/reagent/kronkus_extract/on_mob_life(mob/living/carbon/kronkus_enjoyer, seconds_per_tick)
|
||||
/datum/reagent/kronkus_extract/on_mob_life(mob/living/carbon/kronkus_enjoyer, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = kronkus_enjoyer.adjust_organ_loss(ORGAN_SLOT_HEART, 0.2 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += kronkus_enjoyer.adjust_stamina_loss(-6, updating_stamina = FALSE)
|
||||
need_mob_update = kronkus_enjoyer.adjust_organ_loss(ORGAN_SLOT_HEART, 0.2 * metabolization_ratio * seconds_per_tick, required_organ_flag = affected_organ_flags)
|
||||
need_mob_update += kronkus_enjoyer.adjust_stamina_loss(-6 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -3102,7 +3102,7 @@
|
||||
taste_description = "burning"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/brimdust/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/brimdust/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_fire_loss((ispodperson(affected_mob) ? -1 : 1 * seconds_per_tick), updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
@@ -3140,7 +3140,7 @@
|
||||
affected_mob.clear_mood_event(name)
|
||||
affected_mob.add_mood_event(name, /datum/mood_event/love_reagent, duration_of_moodlet)
|
||||
|
||||
/datum/reagent/love/overdose_process(mob/living/metabolizer, seconds_per_tick)
|
||||
/datum/reagent/love/overdose_process(mob/living/metabolizer, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/mob/living/carbon/carbon_metabolizer = metabolizer
|
||||
if(!istype(carbon_metabolizer) || !carbon_metabolizer.can_heartattack() || carbon_metabolizer.undergoing_cardiac_arrest())
|
||||
@@ -3179,17 +3179,18 @@
|
||||
else
|
||||
affected_mob.add_mood_event("hauntium_spirits", /datum/mood_event/hauntium_spirits, name) //8 minutes of mood debuff
|
||||
|
||||
/datum/reagent/hauntium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/hauntium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.mob_biotypes & MOB_UNDEAD || HAS_MIND_TRAIT(affected_mob, TRAIT_MORBID)) //if morbid or undead,acts like an addiction-less drug
|
||||
var/common = -3.34 SECONDS * metabolization_ratio * seconds_per_tick
|
||||
affected_mob.remove_status_effect(/datum/status_effect/jitter)
|
||||
affected_mob.AdjustStun(-5 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustKnockdown(-5 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustUnconscious(-5 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustParalyzed(-5 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustImmobilized(-5 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.AdjustStun(common)
|
||||
affected_mob.AdjustKnockdown(common)
|
||||
affected_mob.AdjustUnconscious(common)
|
||||
affected_mob.AdjustParalyzed(common)
|
||||
affected_mob.AdjustImmobilized(common)
|
||||
else
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, REM * seconds_per_tick)) //1 heart damage per tick
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, 1.34 * metabolization_ratio * seconds_per_tick)) //1 heart damage per tick
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
affected_mob.emote(pick("twitch","choke","shiver","gag"))
|
||||
@@ -3248,7 +3249,7 @@
|
||||
if (eyes && !IS_ROBOTIC_ORGAN(eyes) && !overdosed)
|
||||
REMOVE_TRAIT(affected_human, TRAIT_LUMINESCENT_EYES, REF(src))
|
||||
|
||||
/datum/reagent/luminescent_fluid/on_mob_life(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/luminescent_fluid/on_mob_life(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
|
||||
if (isnull(glowing) && !added_light && volume > 20)
|
||||
@@ -3258,7 +3259,7 @@
|
||||
added_light = TRUE
|
||||
|
||||
if (SPT_PROB(8, seconds_per_tick))
|
||||
if(affected_mob.adjust_tox_loss(1, updating_health = FALSE))
|
||||
if(affected_mob.adjust_tox_loss(3.34 * metabolization_ratio, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/luminescent_fluid/proc/on_organ_added(mob/living/source, obj/item/organ/eyes/new_eyes)
|
||||
@@ -3273,7 +3274,7 @@
|
||||
if (istype(old_eyes) && !IS_ROBOTIC_ORGAN(old_eyes) && !overdosed)
|
||||
REMOVE_TRAIT(source, TRAIT_LUMINESCENT_EYES, REF(src))
|
||||
|
||||
/datum/reagent/luminescent_fluid/overdose_start(mob/living/affected_mob)
|
||||
/datum/reagent/luminescent_fluid/overdose_start(mob/living/affected_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
if (!ishuman(affected_mob))
|
||||
return
|
||||
@@ -3290,7 +3291,7 @@
|
||||
// The glow *is* unnatural, so...
|
||||
metabolized_traits = list(TRAIT_MINOR_NIGHT_VISION, TRAIT_UNNATURAL_RED_GLOWY_EYES)
|
||||
|
||||
/datum/reagent/luminescent_fluid/red/overdose_start(mob/living/affected_mob)
|
||||
/datum/reagent/luminescent_fluid/red/overdose_start(mob/living/affected_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
if (!ishuman(affected_mob))
|
||||
return
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
if(reac_volume >= 1)
|
||||
exposed_turf.AddComponent(/datum/component/thermite, reac_volume)
|
||||
|
||||
/datum/reagent/thermite/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/thermite/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_fire_loss(1 * REM * seconds_per_tick, updating_health = FALSE))
|
||||
if(affected_mob.adjust_fire_loss(0.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/nitroglycerin
|
||||
@@ -24,9 +24,9 @@
|
||||
taste_description = "oil"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/nitroglycerin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/nitroglycerin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, -1 * REM * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags))
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, -0.5 * metabolization_ratio * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/stabilizing_agent
|
||||
@@ -49,10 +49,10 @@
|
||||
penetrates_skin = NONE
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/clf3/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/clf3/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_fire_stacks(2 * REM * seconds_per_tick)
|
||||
if(affected_mob.adjust_fire_loss(0.3 * max(affected_mob.fire_stacks, 1) * REM * seconds_per_tick, updating_health = FALSE))
|
||||
affected_mob.adjust_fire_stacks(0.1 * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.adjust_fire_loss(0.015 * max(affected_mob.fire_stacks, 1) * metabolization_ratio * seconds_per_tick, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/clf3/expose_turf(turf/exposed_turf, reac_volume)
|
||||
@@ -171,10 +171,10 @@
|
||||
exposed_mob.adjust_fire_loss(burndmg, 0)
|
||||
exposed_mob.ignite_mob()
|
||||
|
||||
/datum/reagent/phlogiston/on_mob_life(mob/living/carbon/metabolizer, seconds_per_tick)
|
||||
/datum/reagent/phlogiston/on_mob_life(mob/living/carbon/metabolizer, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
metabolizer.adjust_fire_stacks(1 * REM * seconds_per_tick)
|
||||
if(metabolizer.adjust_fire_loss(0.3 * max(metabolizer.fire_stacks, 0.15) * REM * seconds_per_tick, updating_health = FALSE))
|
||||
metabolizer.adjust_fire_stacks(0.5 * metabolization_ratio * seconds_per_tick)
|
||||
if(metabolizer.adjust_fire_loss(0.15 * max(metabolizer.fire_stacks, 0.15) * metabolization_ratio * seconds_per_tick, updating_health = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/napalm
|
||||
@@ -194,9 +194,9 @@
|
||||
|
||||
mytray.adjust_weedlevel(-rand(5,9)) //At least give them a small reward if they bother.
|
||||
|
||||
/datum/reagent/napalm/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/napalm/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_fire_stacks(1 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_fire_stacks(0.5 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/napalm/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume)
|
||||
. = ..()
|
||||
@@ -238,19 +238,19 @@
|
||||
affected_mob.color = COLOR_WHITE
|
||||
|
||||
//Pauses decay! Does do something, I promise.
|
||||
/datum/reagent/cryostylane/on_mob_dead(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/cryostylane/on_mob_dead(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
metabolization_rate = 0.05 * REM //slower consumption when dead
|
||||
metabolization_rate = 0.125 * REAGENTS_METABOLISM //slower consumption when dead
|
||||
|
||||
/datum/reagent/cryostylane/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/cryostylane/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
metabolization_rate = 0.25 * REM//faster consumption when alive
|
||||
if(affected_mob.reagents.has_reagent(/datum/reagent/oxygen))
|
||||
affected_mob.reagents.remove_reagent(/datum/reagent/oxygen, 0.5 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-15 * REM * seconds_per_tick)
|
||||
affected_mob.reagents.remove_reagent(/datum/reagent/oxygen, 1 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-30 * metabolization_ratio * seconds_per_tick)
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/humi = affected_mob
|
||||
humi.adjust_coretemperature(-15 * REM * seconds_per_tick)
|
||||
humi.adjust_coretemperature(-30 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/cryostylane/expose_turf(turf/exposed_turf, reac_volume)
|
||||
. = ..()
|
||||
@@ -273,14 +273,14 @@
|
||||
burning_volume = 0.05
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/pyrosium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/pyrosium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(holder.has_reagent(/datum/reagent/oxygen))
|
||||
holder.remove_reagent(/datum/reagent/oxygen, 0.5 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(15 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/oxygen, 0.5 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(15 * metabolization_ratio * seconds_per_tick)
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/affected_human = affected_mob
|
||||
affected_human.adjust_coretemperature(15 * REM * seconds_per_tick)
|
||||
affected_human.adjust_coretemperature(15 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/pyrosium/burn(datum/reagents/holder)
|
||||
if(holder.has_reagent(/datum/reagent/oxygen))
|
||||
@@ -298,7 +298,7 @@
|
||||
var/shock_timer = 0
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/teslium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/teslium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
shock_timer++
|
||||
if(shock_timer >= rand(5, 30)) //Random shocks are wildly unpredictable
|
||||
@@ -335,16 +335,16 @@
|
||||
taste_description = "jelly"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/teslium/energized_jelly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
if(!isjellyperson(affected_mob)) //everyone but jellypeople get shocked as normal.
|
||||
return ..()
|
||||
affected_mob.AdjustAllImmobility(-40 *REM * seconds_per_tick)
|
||||
if(affected_mob.adjust_stamina_loss(-10 * REM * seconds_per_tick, updating_stamina = FALSE))
|
||||
affected_mob.AdjustAllImmobility(-20 * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.adjust_stamina_loss(-5 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(is_species(affected_mob, /datum/species/jelly/luminescent))
|
||||
var/mob/living/carbon/human/affected_human = affected_mob
|
||||
var/datum/species/jelly/luminescent/slime_species = affected_human.dna.species
|
||||
slime_species.extract_cooldown = max(slime_species.extract_cooldown - (2 SECONDS * REM * seconds_per_tick), 0)
|
||||
slime_species.extract_cooldown = max(slime_species.extract_cooldown - (1 SECONDS * metabolization_ratio * seconds_per_tick), 0)
|
||||
|
||||
/datum/reagent/firefighting_foam
|
||||
name = "Firefighting Foam"
|
||||
|
||||
@@ -23,10 +23,10 @@
|
||||
/datum/reagent/toxin/on_hydroponics_apply(obj/machinery/hydroponics/mytray, mob/user)
|
||||
mytray.adjust_toxic(round(volume * 2))
|
||||
|
||||
/datum/reagent/toxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(toxpwr && affected_mob.health > health_required)
|
||||
if(affected_mob.adjust_tox_loss(toxpwr * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(METABOLIZE_FREE_CONSTANT(0.5) * toxpwr * normalise_creation_purity() * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/amatoxin
|
||||
@@ -65,7 +65,7 @@
|
||||
exposed_mob.updateappearance()
|
||||
exposed_mob.domutcheck()
|
||||
|
||||
/datum/reagent/toxin/mutagen/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/mutagen/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_tox_loss(0.5 * seconds_per_tick * REM, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
@@ -105,11 +105,11 @@
|
||||
UnregisterSignal(holder, COMSIG_REAGENTS_TEMP_CHANGE)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(holder.has_reagent(/datum/reagent/medicine/epinephrine))
|
||||
holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2 * REM * seconds_per_tick)
|
||||
affected_mob.adjustPlasma(20 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/medicine/epinephrine, 1 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjustPlasma(10 * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/toxin/plasma/on_mob_metabolize(mob/living/carbon/affected_mob)
|
||||
. = ..()
|
||||
@@ -160,15 +160,15 @@
|
||||
material = /datum/material/hot_ice
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/hot_ice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/hot_ice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(holder.has_reagent(/datum/reagent/medicine/epinephrine))
|
||||
holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2 * REM * seconds_per_tick)
|
||||
affected_mob.adjustPlasma(20 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-7 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
holder.remove_reagent(/datum/reagent/medicine/epinephrine, 1 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjustPlasma(10 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_bodytemperature(-3.5 * TEMPERATURE_DAMAGE_COEFFICIENT * metabolization_ratio * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/humi = affected_mob
|
||||
humi.adjust_coretemperature(-7 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
humi.adjust_coretemperature(-3.5 * metabolization_ratio * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
|
||||
|
||||
/datum/reagent/toxin/hot_ice/on_mob_metabolize(mob/living/carbon/affected_mob)
|
||||
. = ..()
|
||||
@@ -190,11 +190,11 @@
|
||||
ph = 1.2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/lexorin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/lexorin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!HAS_TRAIT(affected_mob, TRAIT_NOBREATH))
|
||||
affected_mob.adjust_oxy_loss(5 * REM * normalise_creation_purity() * seconds_per_tick, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
affected_mob.losebreath += 2 * REM * normalise_creation_purity() * seconds_per_tick
|
||||
affected_mob.adjust_oxy_loss(2.5 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
affected_mob.losebreath += 1 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
affected_mob.emote("gasp")
|
||||
@@ -221,11 +221,11 @@
|
||||
ph = 10
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/slimejelly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/slimejelly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_danger("Your insides are burning!"))
|
||||
if(affected_mob.adjust_tox_loss(rand(20, 60), updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(rand(20, 60) * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
else if(SPT_PROB(23, seconds_per_tick))
|
||||
if(affected_mob.heal_bodypart_damage(5))
|
||||
@@ -292,18 +292,18 @@
|
||||
. = ..()
|
||||
affected_mob.remove_status_effect(/datum/status_effect/reagent_effect/fakedeath)
|
||||
|
||||
/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(affected_mob, TRAIT_FAKEDEATH) && HAS_TRAIT(affected_mob, TRAIT_DEATHCOMA))
|
||||
return
|
||||
var/need_mob_update
|
||||
switch(current_cycle)
|
||||
if(2 to 6)
|
||||
affected_mob.adjust_confusion(1 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_slurring(6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_confusion(0.5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(1 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_slurring(3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(6 to 9)
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(40 * REM * seconds_per_tick, updating_stamina = FALSE)
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(20 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
if(10 to INFINITY)
|
||||
if(affected_mob.stat != DEAD)
|
||||
affected_mob.fakedeath(type)
|
||||
@@ -322,9 +322,9 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_FAKEDEATH)
|
||||
|
||||
/datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_oxy_loss(1 * REM * seconds_per_tick, FALSE, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type))
|
||||
if(affected_mob.adjust_oxy_loss(0.5 * metabolization_ratio * seconds_per_tick, FALSE, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/mindbreaker
|
||||
@@ -341,7 +341,7 @@
|
||||
addiction_types = list(/datum/addiction/hallucinogens = 18) //7.2 per 2 seconds
|
||||
metabolized_traits = list(TRAIT_RDS_SUPPRESSED)
|
||||
|
||||
/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
// mindbreaker toxin assuages hallucinations in those plagued with it, mentally
|
||||
if(affected_mob.has_trauma_type(/datum/brain_trauma/mild/hallucinations))
|
||||
@@ -349,7 +349,7 @@
|
||||
|
||||
// otherwise it creates hallucinations. truly a miracle medicine.
|
||||
else
|
||||
affected_mob.adjust_hallucinations(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_hallucinations(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/toxin/mindbreaker/fish
|
||||
name = "Jellyfish Hallucinogen"
|
||||
@@ -433,9 +433,9 @@
|
||||
. = ..()
|
||||
AddElement(/datum/element/bugkiller_reagent)
|
||||
|
||||
/datum/reagent/toxin/pestkiller/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/pestkiller/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_tox_loss(2 * toxpwr * REM * seconds_per_tick, updating_health = FALSE, required_biotype = MOB_BUG))
|
||||
if(affected_mob.adjust_tox_loss(1 * toxpwr * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = MOB_BUG))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
//Pest Spray
|
||||
@@ -478,11 +478,11 @@
|
||||
spore_lung_victim.Stun(1 SECONDS)
|
||||
spore_lung_victim.emote("cough")
|
||||
|
||||
/datum/reagent/toxin/spore/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/spore/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.damageoverlaytemp = 60
|
||||
affected_mob.update_damage_hud()
|
||||
affected_mob.set_eye_blur_if_lower(6 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.set_eye_blur_if_lower(3 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/toxin/spore_burning
|
||||
name = "Burning Spore Toxin"
|
||||
@@ -493,9 +493,9 @@
|
||||
ph = 13
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/toxin/spore_burning/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/spore_burning/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_fire_stacks(2 * REM * seconds_per_tick)
|
||||
affected_mob.adjust_fire_stacks(1 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.ignite_mob()
|
||||
|
||||
/datum/reagent/toxin/chloralhydrate
|
||||
@@ -511,17 +511,17 @@
|
||||
inverse_chem = /datum/reagent/impurity/chloralax
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/chloralhydrate/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/chloralhydrate/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
switch(current_cycle)
|
||||
if(2 to 11)
|
||||
affected_mob.adjust_confusion(2 SECONDS * REM * normalise_creation_purity() * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(4 SECONDS * REM * normalise_creation_purity() * seconds_per_tick)
|
||||
affected_mob.adjust_confusion(0.67 SECONDS * normalise_creation_purity() * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_drowsiness(1.34 SECONDS * normalise_creation_purity() * metabolization_ratio * seconds_per_tick)
|
||||
if(11 to 51)
|
||||
affected_mob.Sleeping(40 * REM * normalise_creation_purity() * seconds_per_tick)
|
||||
affected_mob.Sleeping(13.34 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick)
|
||||
if(52 to INFINITY)
|
||||
affected_mob.Sleeping(40 * REM * normalise_creation_purity() * seconds_per_tick)
|
||||
if(affected_mob.adjust_tox_loss(1 * (current_cycle - 51) * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
affected_mob.Sleeping(13.34 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.adjust_tox_loss(0.34 * (current_cycle - 51) * normalise_creation_purity() * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/fakebeer //disguised as normal beer for use by emagged brobots
|
||||
@@ -545,14 +545,14 @@
|
||||
icon = initial(copy_from.icon)
|
||||
icon_state = initial(copy_from.icon_state)
|
||||
|
||||
/datum/reagent/toxin/fakebeer/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/fakebeer/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
switch(current_cycle)
|
||||
if(2 to 51)
|
||||
affected_mob.Sleeping(40 * REM * seconds_per_tick)
|
||||
affected_mob.Sleeping(13.34 * metabolization_ratio * seconds_per_tick)
|
||||
if(52 to INFINITY)
|
||||
affected_mob.Sleeping(40 * REM * seconds_per_tick)
|
||||
if(affected_mob.adjust_tox_loss(1 * (current_cycle - 50) * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
affected_mob.Sleeping(13.34 * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.adjust_tox_loss(0.34 * (current_cycle - 50) * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/coffeepowder
|
||||
@@ -595,10 +595,10 @@
|
||||
ph = 12.2
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/mutetoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/mutetoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
// Gain approximately 12 seconds * creation purity seconds of silence every metabolism tick.
|
||||
affected_mob.set_silence_if_lower(6 SECONDS * REM * normalise_creation_purity() * seconds_per_tick)
|
||||
affected_mob.set_silence_if_lower(3 SECONDS * metabolization_ratio * normalise_creation_purity() * seconds_per_tick)
|
||||
|
||||
/datum/reagent/toxin/staminatoxin
|
||||
name = "Tirizene"
|
||||
@@ -609,9 +609,9 @@
|
||||
toxpwr = 0
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/staminatoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/staminatoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_stamina_loss(data * REM * seconds_per_tick, updating_stamina = FALSE))
|
||||
if(affected_mob.adjust_stamina_loss(0.5 * data * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
data = max(data - 1, 3)
|
||||
|
||||
@@ -625,14 +625,14 @@
|
||||
/// How radioactive is this reagent
|
||||
var/rad_power = 3
|
||||
|
||||
/datum/reagent/toxin/polonium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/polonium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!HAS_TRAIT(affected_mob, TRAIT_IRRADIATED) && SSradiation.can_irradiate_basic(affected_mob))
|
||||
var/chance = min(volume / (20 - rad_power * 5), rad_power)
|
||||
if(SPT_PROB(chance, seconds_per_tick)) // ignore rad protection calculations bc it's inside of us
|
||||
affected_mob.AddComponent(/datum/component/irradiated)
|
||||
else
|
||||
if(affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(4 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/polonium/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
|
||||
@@ -677,7 +677,7 @@
|
||||
toxpwr = 0
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/toxin/histamine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/histamine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(30, seconds_per_tick))
|
||||
switch(pick(1, 2, 3, 4))
|
||||
@@ -691,15 +691,16 @@
|
||||
if(4)
|
||||
if(prob(75))
|
||||
to_chat(affected_mob, span_danger("You scratch at an itch."))
|
||||
if(affected_mob.adjust_brute_loss(2* REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
if(affected_mob.adjust_brute_loss(4 * metabolization_ratio, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/histamine/overdose_process(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/histamine/overdose_process(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/heal = 4 * metabolization_ratio * seconds_per_tick
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_oxy_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update = affected_mob.adjust_oxy_loss(heal, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(heal, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(heal, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -717,18 +718,18 @@
|
||||
inverse_chem = /datum/reagent/impurity/methanol
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
var/obj/item/organ/liver/liver = affected_mob.get_organ_slot(ORGAN_SLOT_LIVER)
|
||||
if(liver && HAS_TRAIT(liver, TRAIT_CORONER_METABOLISM)) //mmmm, the forbidden pickle juice
|
||||
if(affected_mob.adjust_tox_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) //it counteracts its own toxin damage.
|
||||
if(affected_mob.adjust_tox_loss(-1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)) //it counteracts its own toxin damage.
|
||||
return UPDATE_MOB_HEALTH
|
||||
return
|
||||
else if(SPT_PROB(2.5, seconds_per_tick) && !HAS_TRAIT(affected_mob, TRAIT_BLOCK_FORMALDEHYDE_METABOLISM))
|
||||
holder.add_reagent(/datum/reagent/toxin/histamine, pick(5,15))
|
||||
holder.remove_reagent(/datum/reagent/toxin/formaldehyde, 1.2)
|
||||
holder.remove_reagent(/datum/reagent/toxin/formaldehyde, 2.4 * metabolization_ratio * seconds_per_tick)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/toxin/formaldehyde/metabolize_reagent(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/formaldehyde/metabolize_reagent(mob/living/carbon/affected_mob, seconds_per_tick, metabolized_volume)
|
||||
if(HAS_TRAIT(affected_mob, TRAIT_BLOCK_FORMALDEHYDE_METABOLISM))
|
||||
return
|
||||
|
||||
@@ -744,13 +745,13 @@
|
||||
///Mob Size of the current mob sprite.
|
||||
var/current_size = RESIZE_DEFAULT_SIZE
|
||||
|
||||
/datum/reagent/toxin/venom/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/venom/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
var/newsize = 1.1 * RESIZE_DEFAULT_SIZE
|
||||
affected_mob.update_transform(newsize/current_size)
|
||||
current_size = newsize
|
||||
toxpwr = 0.1 * volume
|
||||
|
||||
if(affected_mob.adjust_brute_loss((0.3 * volume) * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
if(affected_mob.adjust_brute_loss(2 * (0.3 * volume) * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
|
||||
// chance to either decay into histamine or go the normal route of toxin metabolization
|
||||
@@ -777,16 +778,16 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
addiction_types = list(/datum/addiction/opioids = 25)
|
||||
|
||||
/datum/reagent/toxin/fentanyl/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/fentanyl/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 3 * REM * normalise_creation_purity() * seconds_per_tick, 150)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 3 * metabolization_ratio * normalise_creation_purity() * seconds_per_tick, 150)
|
||||
if(affected_mob.toxloss <= 60)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(1 * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(1 * metabolization_ratio * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(current_cycle > 4)
|
||||
affected_mob.add_mood_event("smacked out", /datum/mood_event/narcotic_heavy, name)
|
||||
if(current_cycle > 18)
|
||||
affected_mob.Sleeping(40 * REM * normalise_creation_purity() * seconds_per_tick)
|
||||
affected_mob.Sleeping(40 * metabolization_ratio * normalise_creation_purity() * seconds_per_tick)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -801,7 +802,7 @@
|
||||
ph = 9.3
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/cyanide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/cyanide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update = FALSE
|
||||
if(SPT_PROB(2.5, seconds_per_tick))
|
||||
@@ -810,7 +811,7 @@
|
||||
if(SPT_PROB(4, seconds_per_tick))
|
||||
to_chat(affected_mob, span_danger("You feel horrendously weak!"))
|
||||
affected_mob.Stun(40)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(2*REM * normalise_creation_purity(), updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_tox_loss(8 * normalise_creation_purity() * metabolization_ratio, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
if(need_mob_update)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
@@ -836,7 +837,7 @@
|
||||
penetrates_skin = TOUCH|VAPOR
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
var/scratched = FALSE
|
||||
var/scratch_damage = 0.2 * REM
|
||||
|
||||
@@ -868,7 +869,7 @@
|
||||
toxpwr = 2.5
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/toxin/initropidril/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/initropidril/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!SPT_PROB(13, seconds_per_tick))
|
||||
return
|
||||
@@ -879,7 +880,7 @@
|
||||
affected_mob.Paralyze(60)
|
||||
if(2)
|
||||
affected_mob.losebreath += 10
|
||||
affected_mob.adjust_oxy_loss(rand(5,25), updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
affected_mob.adjust_oxy_loss(2 * rand(5,25) * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update = TRUE
|
||||
if(3)
|
||||
if(!affected_mob.undergoing_cardiac_arrest() && affected_mob.can_heartattack())
|
||||
@@ -902,10 +903,10 @@
|
||||
taste_mult = 0 // undetectable, I guess?
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/toxin/pancuronium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/pancuronium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(current_cycle > 10)
|
||||
affected_mob.Stun(40 * REM * seconds_per_tick)
|
||||
affected_mob.Stun(80 * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(10, seconds_per_tick))
|
||||
affected_mob.losebreath += 4
|
||||
return UPDATE_MOB_HEALTH
|
||||
@@ -920,11 +921,11 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
added_traits = list(TRAIT_ANTICONVULSANT)
|
||||
|
||||
/datum/reagent/toxin/sodium_thiopental/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/sodium_thiopental/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(current_cycle > 10)
|
||||
affected_mob.Sleeping(40 * REM * seconds_per_tick)
|
||||
if(affected_mob.adjust_stamina_loss(10 * REM * seconds_per_tick, updating_stamina = FALSE))
|
||||
affected_mob.Sleeping(26.67 * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.adjust_stamina_loss(0.67 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/sulfonal
|
||||
@@ -939,10 +940,10 @@
|
||||
ph = 6
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/sulfonal/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/sulfonal/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(current_cycle > 22)
|
||||
affected_mob.Sleeping(40 * REM * normalise_creation_purity() * seconds_per_tick)
|
||||
affected_mob.Sleeping(160 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/toxin/amanitin
|
||||
name = "Amanitin"
|
||||
@@ -954,9 +955,9 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
var/delayed_toxin_damage = 0
|
||||
|
||||
/datum/reagent/toxin/amanitin/on_mob_life(mob/living/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/amanitin/on_mob_life(mob/living/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
delayed_toxin_damage += (seconds_per_tick * 3)
|
||||
delayed_toxin_damage += 6 * metabolization_ratio * seconds_per_tick
|
||||
|
||||
/datum/reagent/toxin/amanitin/on_mob_delete(mob/living/affected_mob)
|
||||
. = ..()
|
||||
@@ -977,12 +978,12 @@
|
||||
inverse_chem = /datum/reagent/impurity/ipecacide
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/lipolicide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/lipolicide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.nutrition <= NUTRITION_LEVEL_STARVING)
|
||||
if(affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
if(affected_mob.adjust_tox_loss(1 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
affected_mob.adjust_nutrition(-3 * REM * normalise_creation_purity() * seconds_per_tick) // making the chef more valuable, one meme trap at a time
|
||||
affected_mob.adjust_nutrition(-3 * normalise_creation_purity() * metabolization_ratio * seconds_per_tick) // making the chef more valuable, one meme trap at a time
|
||||
affected_mob.overeatduration = 0
|
||||
|
||||
/datum/reagent/toxin/coniine
|
||||
@@ -993,23 +994,22 @@
|
||||
toxpwr = 1.75
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/coniine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/coniine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.losebreath < 5)
|
||||
affected_mob.losebreath = min(affected_mob.losebreath + 5 * REM * seconds_per_tick, 5)
|
||||
affected_mob.losebreath = min(affected_mob.losebreath + 41.67 * metabolization_ratio * seconds_per_tick, 5)
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/spewium
|
||||
name = "Spewium"
|
||||
description = "A powerful emetic, causes uncontrollable vomiting. May result in vomiting organs at high doses."
|
||||
color = "#2f6617" //A sickly green color
|
||||
metabolization_rate = REAGENTS_METABOLISM
|
||||
overdose_threshold = 29
|
||||
toxpwr = 0
|
||||
taste_description = "vomit"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/toxin/spewium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/spewium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(current_cycle > 11 && SPT_PROB(min(31, current_cycle), seconds_per_tick))
|
||||
affected_mob.vomit(10, prob(10), prob(50), rand(0,4), TRUE)
|
||||
@@ -1021,9 +1021,9 @@
|
||||
affected_mob.vomit(vomit_flags = constructed_flags, distance = rand(0,4))
|
||||
for(var/datum/reagent/toxin/reagent in affected_mob.reagents.reagent_list)
|
||||
if(reagent != src)
|
||||
affected_mob.reagents.remove_reagent(reagent.type, 1 * reagent.purge_multiplier * REM * seconds_per_tick)
|
||||
affected_mob.reagents.remove_reagent(reagent.type, 0.5 * reagent.purge_multiplier * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/toxin/spewium/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/spewium/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(current_cycle > 33 && SPT_PROB(7.5, seconds_per_tick))
|
||||
affected_mob.spew_organ()
|
||||
@@ -1038,11 +1038,11 @@
|
||||
toxpwr = 1
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/toxin/curare/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/curare/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(current_cycle > 11)
|
||||
affected_mob.Paralyze(60 * REM * seconds_per_tick)
|
||||
if(affected_mob.adjust_oxy_loss(0.5*REM*seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type))
|
||||
affected_mob.Paralyze(240 * metabolization_ratio * seconds_per_tick)
|
||||
if(affected_mob.adjust_oxy_loss(2 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/heparin //Based on a real-life anticoagulant. I'm not a doctor, so this won't be realistic.
|
||||
@@ -1059,9 +1059,9 @@
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
metabolized_traits = list(TRAIT_BLOOD_FOUNTAIN)
|
||||
|
||||
/datum/reagent/toxin/heparin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/heparin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
if(holder.has_reagent(/datum/reagent/medicine/coagulant)) //Directly purges coagulants from the system. Get rid of the heparin BEFORE attempting to use coagulants.
|
||||
holder.remove_reagent(/datum/reagent/medicine/coagulant, 2 * REM * seconds_per_tick)
|
||||
holder.remove_reagent(/datum/reagent/medicine/coagulant, 5 * metabolization_ratio * seconds_per_tick)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/toxin/rotatium //Rotatium. Fucks up your rotation and is hilarious
|
||||
@@ -1077,7 +1077,7 @@
|
||||
taste_description = "spinning"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/rotatium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/rotatium/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(!affected_mob.hud_used || (current_cycle < 20 || (current_cycle % 20) == 0))
|
||||
return
|
||||
@@ -1106,13 +1106,14 @@
|
||||
ph = 8
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/anacea/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/anacea/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
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/reagent in affected_mob.reagents.reagent_list)
|
||||
affected_mob.reagents.remove_reagent(reagent.type, remove_amt * reagent.purge_multiplier * REM * normalise_creation_purity() * seconds_per_tick)
|
||||
reagent.volume -= 6.25 * remove_amt * reagent.purge_multiplier * normalise_creation_purity() * metabolization_ratio * seconds_per_tick
|
||||
affected_mob.reagents.update_total()
|
||||
|
||||
//ACID
|
||||
|
||||
@@ -1181,9 +1182,9 @@
|
||||
mytray.adjust_toxic(round(volume * 3))
|
||||
mytray.adjust_weedlevel(-rand(1,4))
|
||||
|
||||
/datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_fire_loss(((current_cycle-1)/15) * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
if(affected_mob.adjust_fire_loss(0.5 * ((current_cycle-1)/15) * metabolization_ratio * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/acid/nitracid
|
||||
@@ -1197,28 +1198,25 @@
|
||||
ph = 1.3
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/acid/nitracid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/acid/nitracid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_fire_loss((volume/10) * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)) //here you go nervar
|
||||
if(affected_mob.adjust_fire_loss(0.5 * (volume/10) * metabolization_ratio * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)) //here you go nervar
|
||||
return UPDATE_MOB_HEALTH
|
||||
|
||||
/datum/reagent/toxin/delayed
|
||||
name = "Toxin Microcapsules"
|
||||
description = "Causes heavy toxin damage after a brief time of inactivity."
|
||||
metabolization_rate = 0 //stays in the system until active.
|
||||
var/actual_metaboliztion_rate = REAGENTS_METABOLISM
|
||||
toxpwr = 0
|
||||
var/actual_toxpwr = 5
|
||||
var/delay = 31
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED|REAGENT_NO_RANDOM_RECIPE
|
||||
|
||||
/datum/reagent/toxin/delayed/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/delayed/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(current_cycle <= delay)
|
||||
if(current_cycle <= 31)
|
||||
return
|
||||
if(holder)
|
||||
holder.remove_reagent(type, actual_metaboliztion_rate * affected_mob.metabolism_efficiency * seconds_per_tick)
|
||||
if(affected_mob.adjust_tox_loss(actual_toxpwr * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
holder.remove_reagent(type, REAGENTS_METABOLISM * affected_mob.metabolism_efficiency * seconds_per_tick)
|
||||
if(affected_mob.adjust_tox_loss(0.5 * 5 * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
affected_mob.Paralyze(20)
|
||||
@@ -1253,9 +1251,9 @@
|
||||
. = ..()
|
||||
affected_mob.say("oof ouch my bones", forced = /datum/reagent/toxin/bonehurtingjuice)
|
||||
|
||||
/datum/reagent/toxin/bonehurtingjuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/bonehurtingjuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_stamina_loss(7.5 * REM * seconds_per_tick, updating_stamina = FALSE))
|
||||
if(affected_mob.adjust_stamina_loss(3.25 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(!SPT_PROB(10, seconds_per_tick))
|
||||
return
|
||||
@@ -1267,7 +1265,7 @@
|
||||
if(3)
|
||||
to_chat(affected_mob, span_warning("Your bones hurt!"))
|
||||
|
||||
/datum/reagent/toxin/bonehurtingjuice/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/bonehurtingjuice/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(SPT_PROB(2, seconds_per_tick) && iscarbon(affected_mob)) //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.
|
||||
@@ -1297,9 +1295,9 @@
|
||||
taste_description = "tannin"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/bungotoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/bungotoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, 3 * REM * seconds_per_tick))
|
||||
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, 3 * metabolization_ratio * seconds_per_tick))
|
||||
. = UPDATE_MOB_HEALTH
|
||||
|
||||
// If our mob's currently dizzy from anything else, we will also gain confusion
|
||||
@@ -1321,11 +1319,11 @@
|
||||
taste_description = "sugary sweetness"
|
||||
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
|
||||
|
||||
/datum/reagent/toxin/leadacetate/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/leadacetate/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_EARS, 1 * REM * seconds_per_tick)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 1 * REM * seconds_per_tick)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_EARS, 0.5 * metabolization_ratio * seconds_per_tick)
|
||||
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5 * metabolization_ratio * seconds_per_tick)
|
||||
if(need_mob_update)
|
||||
. = UPDATE_MOB_HEALTH
|
||||
if(SPT_PROB(0.5, seconds_per_tick))
|
||||
@@ -1345,9 +1343,9 @@
|
||||
health_required = 10
|
||||
liver_damage_multiplier = 0
|
||||
|
||||
/datum/reagent/toxin/viperspider/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/viperspider/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
affected_mob.adjust_hallucinations(10 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_hallucinations(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
|
||||
/datum/reagent/toxin/tetrodotoxin
|
||||
name = "Tetrodotoxin"
|
||||
@@ -1368,7 +1366,7 @@
|
||||
TRAIT_PARALYSIS_R_LEG = BODY_ZONE_R_LEG,
|
||||
)
|
||||
|
||||
/datum/reagent/toxin/tetrodotoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick)
|
||||
/datum/reagent/toxin/tetrodotoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, metabolization_ratio)
|
||||
. = ..()
|
||||
var/need_mob_update
|
||||
if(HAS_TRAIT(affected_mob, TRAIT_TETRODOTOXIN_HEALING))
|
||||
@@ -1376,10 +1374,10 @@
|
||||
liver_tolerance_multiplier = 0
|
||||
silent_toxin = TRUE
|
||||
remove_paralysis()
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(-0.7 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-0.75 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-1.2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-1.35 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_oxy_loss(-3.5 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
|
||||
need_mob_update = affected_mob.adjust_tox_loss(-3.25 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
|
||||
need_mob_update += affected_mob.adjust_brute_loss(-6 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
need_mob_update += affected_mob.adjust_fire_loss(-6.75 * metabolization_ratio * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
|
||||
return need_mob_update ? UPDATE_MOB_HEALTH : .
|
||||
|
||||
liver_tolerance_multiplier = initial(liver_tolerance_multiplier)
|
||||
@@ -1389,25 +1387,25 @@
|
||||
switch(current_cycle)
|
||||
if(7 to 13)
|
||||
if(SPT_PROB(20, seconds_per_tick))
|
||||
affected_mob.set_jitter_if_lower(rand(2 SECONDS, 3 SECONDS) * REM * seconds_per_tick)
|
||||
affected_mob.set_jitter_if_lower(5 * rand(2 SECONDS, 3 SECONDS) * metabolization_ratio)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
var/obj/item/organ/tongue/tongue = affected_mob.get_organ_slot(ORGAN_SLOT_TONGUE)
|
||||
if(tongue)
|
||||
to_chat(affected_mob, span_warning("Your [tongue.name] feels numb..."))
|
||||
affected_mob.set_slurring_if_lower(5 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_disgust(3.5 * REM * seconds_per_tick)
|
||||
affected_mob.set_slurring_if_lower(25 SECONDS * metabolization_ratio)
|
||||
affected_mob.adjust_disgust(17.5 * metabolization_ratio * seconds_per_tick)
|
||||
if(13 to 21)
|
||||
silent_toxin = FALSE
|
||||
toxpwr = 0.5
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(2.5 * REM * seconds_per_tick, updating_stamina = FALSE)
|
||||
need_mob_update = affected_mob.adjust_stamina_loss(12.5 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
if(SPT_PROB(20, seconds_per_tick))
|
||||
affected_mob.losebreath += 1 * REM * seconds_per_tick
|
||||
affected_mob.losebreath += 5 * metabolization_ratio
|
||||
need_mob_update = TRUE
|
||||
if(SPT_PROB(40, seconds_per_tick))
|
||||
affected_mob.set_jitter_if_lower(rand(2 SECONDS, 3 SECONDS) * REM * seconds_per_tick)
|
||||
affected_mob.adjust_disgust(3 * REM * seconds_per_tick)
|
||||
affected_mob.set_slurring_if_lower(1 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_stamina_loss(2 * REM * seconds_per_tick, updating_stamina = FALSE)
|
||||
affected_mob.set_jitter_if_lower(5 * rand(2 SECONDS, 3 SECONDS) * metabolization_ratio)
|
||||
affected_mob.adjust_disgust(15 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.set_slurring_if_lower(5 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.adjust_stamina_loss(10 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
if(SPT_PROB(4, seconds_per_tick))
|
||||
paralyze_limb(affected_mob)
|
||||
need_mob_update = TRUE
|
||||
@@ -1418,13 +1416,13 @@
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LUNGS, 0.7)
|
||||
if(SPT_PROB(40, seconds_per_tick))
|
||||
affected_mob.losebreath += 2 * REM * seconds_per_tick
|
||||
affected_mob.losebreath += 10 * metabolization_ratio
|
||||
need_mob_update = TRUE
|
||||
affected_mob.adjust_disgust(3 * REM * seconds_per_tick)
|
||||
affected_mob.set_slurring_if_lower(3 SECONDS * REM * seconds_per_tick)
|
||||
affected_mob.adjust_disgust(15 * metabolization_ratio * seconds_per_tick)
|
||||
affected_mob.set_slurring_if_lower(15 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(5, seconds_per_tick))
|
||||
to_chat(affected_mob, span_danger("You feel horribly weak."))
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(5 * REM * seconds_per_tick, updating_stamina = FALSE)
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(25 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
if(SPT_PROB(8, seconds_per_tick))
|
||||
paralyze_limb(affected_mob)
|
||||
need_mob_update = TRUE
|
||||
@@ -1434,9 +1432,9 @@
|
||||
toxpwr = 1.5
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 1, BRAIN_DAMAGE_DEATH)
|
||||
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LUNGS, 1.4)
|
||||
affected_mob.set_silence_if_lower(3 SECONDS * REM * seconds_per_tick)
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(5 * REM * seconds_per_tick, updating_stamina = FALSE)
|
||||
affected_mob.adjust_disgust(2 * REM * seconds_per_tick)
|
||||
affected_mob.set_silence_if_lower(15 SECONDS * metabolization_ratio * seconds_per_tick)
|
||||
need_mob_update += affected_mob.adjust_stamina_loss(25 * metabolization_ratio * seconds_per_tick, updating_stamina = FALSE)
|
||||
affected_mob.adjust_disgust(10 * metabolization_ratio * seconds_per_tick)
|
||||
if(SPT_PROB(15, seconds_per_tick))
|
||||
paralyze_limb(affected_mob)
|
||||
need_mob_update = TRUE
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
taste_description = "wiggly cosmic dust."
|
||||
color = "#5020F4"
|
||||
overdose_threshold = 15
|
||||
metabolization_rate = 1 * REAGENTS_METABOLISM
|
||||
ph = 3.7
|
||||
purity = 0.5
|
||||
creation_purity = 0.5
|
||||
@@ -78,7 +77,7 @@
|
||||
|
||||
return ..()
|
||||
|
||||
/datum/reagent/eigenstate/on_mob_life(mob/living/carbon/living_mob)
|
||||
/datum/reagent/eigenstate/on_mob_life(mob/living/carbon/living_mob, metabolization_ratio)
|
||||
. = ..()
|
||||
if(prob(20))
|
||||
do_sparks(5,FALSE,living_mob)
|
||||
@@ -95,7 +94,7 @@
|
||||
|
||||
qdel(eigenstate)
|
||||
|
||||
/datum/reagent/eigenstate/overdose_start(mob/living/living_mob) //Overdose, makes you teleport randomly
|
||||
/datum/reagent/eigenstate/overdose_start(mob/living/living_mob, metabolization_ratio) //Overdose, makes you teleport randomly
|
||||
. = ..()
|
||||
to_chat(living_mob, span_userdanger("You feel like your perspective is being ripped apart as you begin flitting in and out of reality!"))
|
||||
living_mob.set_jitter_if_lower(40 SECONDS)
|
||||
@@ -105,7 +104,7 @@
|
||||
carbon_mob.apply_status_effect(/datum/status_effect/eigenstasium)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/eigenstate/overdose_process(mob/living/living_mob) //Overdose, makes you teleport randomly
|
||||
/datum/reagent/eigenstate/overdose_process(mob/living/living_mob, metabolization_ratio) //Overdose, makes you teleport randomly
|
||||
. = ..()
|
||||
do_teleport(living_mob, get_turf(living_mob), 10, asoundin = 'sound/effects/phasein.ogg')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user