Merge remote-tracking branch 'tgstation/master' into upstream-2025-11-29

# Conflicts:
#	_maps/RandomRuins/SpaceRuins/derelict_sulaco.dmm
#	_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm
#	_maps/map_files/CatwalkStation/CatwalkStation_2023.dmm
#	_maps/map_files/tramstation/tramstation.dmm
#	code/_onclick/hud/new_player.dm
#	code/datums/components/squashable.dm
#	code/datums/diseases/advance/symptoms/heal.dm
#	code/datums/diseases/chronic_illness.dm
#	code/datums/status_effects/buffs.dm
#	code/datums/status_effects/debuffs/drunk.dm
#	code/datums/status_effects/debuffs/stamcrit.dm
#	code/game/machinery/computer/crew.dm
#	code/game/objects/items/devices/scanners/health_analyzer.dm
#	code/game/objects/items/wall_mounted.dm
#	code/game/turfs/closed/indestructible.dm
#	code/modules/admin/view_variables/filterrific.dm
#	code/modules/antagonists/heretic/influences.dm
#	code/modules/cargo/orderconsole.dm
#	code/modules/client/preferences.dm
#	code/modules/events/space_vines/vine_mutations.dm
#	code/modules/mob/dead/new_player/new_player.dm
#	code/modules/mob/living/carbon/human/death.dm
#	code/modules/mob/living/carbon/human/species_types/jellypeople.dm
#	code/modules/mob/living/damage_procs.dm
#	code/modules/mob/living/living.dm
#	code/modules/mob_spawn/ghost_roles/mining_roles.dm
#	code/modules/mob_spawn/mob_spawn.dm
#	code/modules/projectiles/ammunition/energy/laser.dm
#	code/modules/projectiles/guns/ballistic/launchers.dm
#	code/modules/projectiles/guns/energy/laser.dm
#	code/modules/reagents/chemistry/machinery/chem_dispenser.dm
#	code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm
#	code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm
#	code/modules/reagents/chemistry/reagents/medicine_reagents.dm
#	code/modules/surgery/healing.dm
#	code/modules/unit_tests/designs.dm
#	icons/mob/inhands/items_lefthand.dmi
#	icons/mob/inhands/items_righthand.dmi
#	tgui/packages/tgui/interfaces/ChemDispenser.tsx
This commit is contained in:
nevimer
2025-11-29 22:49:21 -05:00
1185 changed files with 39068 additions and 32028 deletions
@@ -373,10 +373,9 @@
total_step_added += step_add
#ifdef REAGENTS_TESTING //Kept in so that people who want to write fermireactions can contact me with this log so I can help them
if(GLOB.Debug2) //I want my spans for my sanity
message_admins(span_green("Reaction step active for:[reaction.type]"))
message_admins(span_notice("|Reaction conditions| Temp: [holder.chem_temp], pH: [holder.ph], reactions: [length(holder.reaction_list)], awaiting reactions: [length(holder.failed_but_capable_reactions)], no. reagents:[length(holder.reagent_list)], no. prev reagents: [length(holder.previous_reagent_list)]"))
message_admins(span_warning("Reaction vars: PreReacted:[reacted_vol] of [step_target_vol] of total [target_vol]. delta_t [delta_t], multiplier [multiplier], delta_chem_factor [delta_chem_factor] Pfactor [product_ratio], purity of [purity] from a delta_ph of [delta_ph]. DeltaTime: [seconds_per_tick]"))
debug_admins(span_green("Reaction step active for:[reaction.type]"))
debug_admins(span_notice("|Reaction conditions| Temp: [holder.chem_temp], pH: [holder.ph], reactions: [length(holder.reaction_list)], awaiting reactions: [length(holder.failed_but_capable_reactions)], no. reagents:[length(holder.reagent_list)], no. prev reagents: [length(holder.previous_reagent_list)]"))
debug_admins(span_warning("Reaction vars: PreReacted:[reacted_vol] of [step_target_vol] of total [target_vol]. delta_t [delta_t], multiplier [multiplier], delta_chem_factor [delta_chem_factor] Pfactor [product_ratio], purity of [purity] from a delta_ph of [delta_ph]. DeltaTime: [seconds_per_tick]"))
#endif
//Apply thermal output of reaction to beaker
@@ -257,27 +257,8 @@
//Use GLOB list - saves processing
data["master_reaction_list"] = GLOB.chemical_reactions_results_lookup_list
data["bitflags"] = list()
data["bitflags"]["BRUTE"] = REACTION_TAG_BRUTE
data["bitflags"]["BURN"] = REACTION_TAG_BURN
data["bitflags"]["TOXIN"] = REACTION_TAG_TOXIN
data["bitflags"]["OXY"] = REACTION_TAG_OXY
data["bitflags"]["HEALING"] = REACTION_TAG_HEALING
data["bitflags"]["DAMAGING"] = REACTION_TAG_DAMAGING
data["bitflags"]["EXPLOSIVE"] = REACTION_TAG_EXPLOSIVE
data["bitflags"]["OTHER"] = REACTION_TAG_OTHER
data["bitflags"]["DANGEROUS"] = REACTION_TAG_DANGEROUS
data["bitflags"]["EASY"] = REACTION_TAG_EASY
data["bitflags"]["MODERATE"] = REACTION_TAG_MODERATE
data["bitflags"]["HARD"] = REACTION_TAG_HARD
data["bitflags"]["ORGAN"] = REACTION_TAG_ORGAN
data["bitflags"]["DRINK"] = REACTION_TAG_DRINK
data["bitflags"]["FOOD"] = REACTION_TAG_FOOD
data["bitflags"]["SLIME"] = REACTION_TAG_SLIME
data["bitflags"]["DRUG"] = REACTION_TAG_DRUG
data["bitflags"]["UNIQUE"] = REACTION_TAG_UNIQUE
data["bitflags"]["CHEMICAL"] = REACTION_TAG_CHEMICAL
data["bitflags"]["PLANT"] = REACTION_TAG_PLANT
data["bitflags"]["COMPETITIVE"] = REACTION_TAG_COMPETITIVE
for(var/readable_flag, real_flag in REACTION_TAG_READABLE)
data["bitflags"][readable_flag] = real_flag
return data
@@ -407,5 +388,12 @@
if("toggle_tag_competitive")
ui_tags_selected = ui_tags_selected ^ REACTION_TAG_COMPETITIVE
return TRUE
if("toggle_tag_component")
ui_tags_selected = ui_tags_selected ^ REACTION_TAG_COMPONENT
return TRUE
if("toggle_tag_active")
ui_tags_selected = ui_tags_selected ^ REACTION_TAG_ACTIVE
return TRUE
if("update_ui")
return TRUE
@@ -23,7 +23,7 @@
/// If the UI has the pH meter shown
var/show_ph = TRUE
/// The overlay used to display the beaker on the machine
var/mutable_appearance/beaker_overlay
VAR_PRIVATE/mutable_appearance/beaker_overlay
/// Icon to display when the machine is powered
var/working_state = "dispenser_working"
/// Icon to display when the machine is not powered
@@ -47,9 +47,14 @@
/// Starting purity of the created reagents
var/base_reagent_purity = 1
/// Records the reagents dispensed by the user if this list is not null
var/list/recording_recipe
VAR_PRIVATE/list/recording_recipe
/// Saves all the recipes recorded by the machine
var/list/saved_recipes = list()
VAR_PRIVATE/list/saved_recipes = list()
/// Filters out all reactions that don't have any of these tags from the reaction list
var/shown_reaction_tags = DAMAGE_HEALING_REACTION_TAGS | MEDICATION_REACTION_TAGS | CHEMIST_REACTION_TAGS
/// Filters out all reactions that have any one of these tags from the reaction list
var/hidden_reaction_tags = REACTION_TAG_ACTIVE | REACTION_TAG_FOOD | REACTION_TAG_DRINK
// SKYRAT EDIT ADDITION BEGIN
/// Used for custom transfer amounts
var/list/transferAmounts = list()
@@ -83,11 +88,8 @@
/datum/reagent/sulfur,
/datum/reagent/toxin/acid,
/datum/reagent/water,
/datum/reagent/fuel,
/datum/reagent/fuel
)
//SKYRAT EDIT CHANGE BEGIN - ORIGINAL
/*
/// The default list of reagents upgrade_reagents
var/static/list/default_upgrade_reagents = list(
/datum/reagent/acetone,
@@ -105,33 +107,6 @@
/datum/reagent/drug/space_drugs,
/datum/reagent/toxin
)
*/
var/static/list/default_upgrade_reagents = list(
/datum/reagent/fuel/oil,
/datum/reagent/ammonia,
/datum/reagent/ash
)
var/static/list/default_upgrade2_reagents = list(
/datum/reagent/acetone,
/datum/reagent/phenol,
/datum/reagent/diethylamine
)
var/static/list/default_upgrade3_reagents = list(
/datum/reagent/medicine/mine_salve,
/datum/reagent/toxin
)
var/static/list/default_emagged_reagents = list(
/datum/reagent/drug/space_drugs,
/datum/reagent/toxin/plasma,
/datum/reagent/consumable/frostoil,
/datum/reagent/toxin/carpotoxin,
/datum/reagent/toxin/histamine,
/datum/reagent/medicine/morphine
)
//SKYRAT EDIT CHANGE END
/obj/machinery/chem_dispenser/Initialize(mapload)
if(dispensable_reagents != null && !dispensable_reagents.len)
@@ -143,16 +118,6 @@
upgrade_reagents = default_upgrade_reagents
if(upgrade_reagents)
upgrade_reagents = sort_list(upgrade_reagents, GLOBAL_PROC_REF(cmp_reagents_asc))
//SKYRAT EDIT ADDITION BEGIN
if(upgrade2_reagents != null && !upgrade2_reagents.len)
upgrade2_reagents = default_upgrade2_reagents
if(upgrade2_reagents)
upgrade2_reagents = sort_list(upgrade2_reagents, GLOBAL_PROC_REF(cmp_reagents_asc))
if(upgrade3_reagents != null && !upgrade3_reagents.len)
upgrade3_reagents = default_upgrade3_reagents
if(upgrade3_reagents)
upgrade3_reagents = sort_list(upgrade3_reagents, GLOBAL_PROC_REF(cmp_reagents_asc))
//SKYRAT EDIT ADDITION END
if(emagged_reagents != null && !emagged_reagents.len)
emagged_reagents = default_emagged_reagents
@@ -310,6 +275,18 @@
beaker_data["contents"] = beakerContents
.["beaker"] = beaker_data
/obj/machinery/chem_dispenser/ui_static_data(mob/user)
var/list/data = list()
data["reaction_list"] = get_reaction_list()
data["all_bitflags"] = list()
for(var/readable_flag, real_flag in REACTION_TAG_READABLE)
if((real_flag & hidden_reaction_tags) || !(real_flag & shown_reaction_tags))
continue
data["all_bitflags"][readable_flag] = real_flag
return data
/obj/machinery/chem_dispenser/ui_act(action, params, datum/tgui/ui, datum/ui_state/state)
. = ..()
if(.)
@@ -592,6 +569,61 @@
/obj/machinery/chem_dispenser/attack_ai_secondary(mob/user, list/modifiers)
return attack_hand_secondary(user, modifiers)
/obj/machinery/chem_dispenser/proc/get_reaction_list()
var/static/list/reaction_list
if(reaction_list?[type])
return reaction_list[type]
reaction_list ||= list()
reaction_list[type] = list()
var/list/new_reaction_list = list()
for(var/result, reactions in GLOB.chemical_reactions_list_product_index - dispensable_reagents)
var/datum/reagent/result_datum = GLOB.chemical_reagents_list[result]
for(var/datum/chemical_reaction/reaction as anything in reactions)
if(!(reaction.reaction_tags & shown_reaction_tags))
continue
if(reaction.reaction_tags & hidden_reaction_tags)
continue
if(reaction.required_container)
continue
var/index = result_datum.name
var/list/new_info = get_reaction_info(reaction)
new_info["description"] = result_datum.description
new_info["color"] = result_datum.color
var/num_alts = 0
while(new_reaction_list[index])
num_alts++
index = "[result_datum.name] (Alt[num_alts == 1 ? "" : " #[num_alts]"])"
new_reaction_list[index] = new_info
reaction_list[type] = new_reaction_list
return reaction_list[type]
/obj/machinery/chem_dispenser/proc/get_reaction_info(datum/chemical_reaction/reaction)
var/list/info = list()
info["id"] = reaction.type
info["lower_temperature"] = reaction.required_temp
info["upper_temperature"] = reaction.optimal_temp
info["lower_ph"] = reaction.optimal_ph_min
info["upper_ph"] = reaction.optimal_ph_max
info["bitflags"] = reaction.reaction_tags
info["required_reagents"] = reagent_list_to_info(reaction.required_reagents)
info["required_catalysts"] = reagent_list_to_info(reaction.required_catalysts)
return info
/obj/machinery/chem_dispenser/proc/reagent_list_to_info(list/reagent_list)
var/list/info = list()
for(var/datum/reagent/reagent_typepath as anything in reagent_list)
info += list(list(
"name" = reagent_typepath::name,
"amount" = reagent_list[reagent_typepath],
"typepath" = reagent_typepath,
))
return info
/obj/machinery/chem_dispenser/drinks
name = "soda dispenser"
@@ -608,6 +640,8 @@
nopower_state = null
pass_flags = PASSTABLE
show_ph = FALSE
shown_reaction_tags = KITCHEN_REACTION_TAGS
hidden_reaction_tags = REACTION_TAG_ACTIVE
/// The default list of reagents dispensable by the soda dispenser
var/static/list/drinks_dispensable_reagents = list(
/datum/reagent/consumable/coffee,
@@ -798,6 +832,8 @@
name = "botanical chemical dispenser"
desc = "Creates and dispenses chemicals useful for botany."
circuit = /obj/item/circuitboard/machine/chem_dispenser/mutagensaltpeter
shown_reaction_tags = BOTANIST_REACTION_TAGS
hidden_reaction_tags = REACTION_TAG_ACTIVE
/// The default list of dispensable reagents available in the mutagensaltpeter chem dispenser
var/static/list/mutagensaltpeter_dispensable_reagents = list(
@@ -47,9 +47,9 @@
. = ..()
breather.SetSleeping(30 SECONDS)
var/need_mob_update
need_mob_update = breather.adjustFireLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += breather.adjustToxLoss(-5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += breather.adjustBruteLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -80,8 +80,8 @@
/datum/reagent/nitrium_high_metabolization/on_mob_life(mob/living/carbon/breather, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = breather.adjustStaminaLoss(-4 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += breather.adjustToxLoss(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 * 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
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -135,9 +135,9 @@
/datum/reagent/zauker/on_mob_life(mob/living/breather, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = breather.adjustBruteLoss(6 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += breather.adjustOxyLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += breather.adjustFireLoss(2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += breather.adjustToxLoss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -26,22 +26,22 @@
/datum/reagent/medicine/c2/helbital/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/death_is_coming = (affected_mob.getToxLoss() + affected_mob.getOxyLoss() + affected_mob.getFireLoss() + affected_mob.getBruteLoss())*normalise_creation_purity()
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
var/good_kind_of_healing = FALSE
var/need_mob_update = FALSE
switch(affected_mob.stat)
if(CONSCIOUS) //bad
thou_shall_heal = max(death_is_coming/20, 3)
need_mob_update += affected_mob.adjustOxyLoss(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 * REM * 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.adjustOxyLoss(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 * REM * 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.adjustBruteLoss(-thou_shall_heal * REM * seconds_per_tick, FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_brute_loss(-thou_shall_heal * REM * seconds_per_tick, FALSE, required_bodytype = affected_bodytype)
if(need_mob_update)
. = UPDATE_MOB_HEALTH
@@ -110,8 +110,8 @@
/datum/reagent/medicine/c2/libital/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.3 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update += affected_mob.adjustBruteLoss(-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 * 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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -128,28 +128,28 @@
/datum/reagent/medicine/c2/probital/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustBruteLoss(-3 * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update = affected_mob.adjust_brute_loss(-3 * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
var/ooo_youaregettingsleepy = 3.5
switch(round(affected_mob.getStaminaLoss()))
switch(round(affected_mob.get_stamina_loss()))
if(10 to 40)
ooo_youaregettingsleepy = 3
if(41 to 60)
ooo_youaregettingsleepy = 2.5
if(61 to 200) //you really can only go to 120
ooo_youaregettingsleepy = 2
need_mob_update += affected_mob.adjustStaminaLoss(ooo_youaregettingsleepy * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update += affected_mob.adjust_stamina_loss(ooo_youaregettingsleepy * REM * 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, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustStaminaLoss(3 * REM * seconds_per_tick, updating_stamina = FALSE)
if(affected_mob.getStaminaLoss() >= 80)
need_mob_update = affected_mob.adjust_stamina_loss(3 * REM * seconds_per_tick, updating_stamina = FALSE)
if(affected_mob.get_stamina_loss() >= 80)
affected_mob.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick)
if(affected_mob.getStaminaLoss() >= 100)
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.adjustStaminaLoss(-100, updating_stamina = FALSE) // Don't add the biotype parameter here as it results in infinite sleep and chat spam.
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.
affected_mob.Sleeping(10 SECONDS)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -179,8 +179,8 @@
/datum/reagent/medicine/c2/lenturi/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustFireLoss(-3.75 * REM * normalise_creation_purity() * seconds_per_tick, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOrganLoss(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 * 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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -198,8 +198,8 @@
/datum/reagent/medicine/c2/aiuri/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustFireLoss(-2 * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_EYES, 0.25 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -218,14 +218,10 @@
/datum/reagent/medicine/c2/hercuri/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
// SKYRAT EDIT CHANGE BEGIN -- Adds check for owner_flags; indented the getFireLoss check and everything under it, so synths can get cooled down
var/owner_flags = affected_mob.dna.species.reagent_flags
if (owner_flags & PROCESS_ORGANIC)
if(affected_mob.getFireLoss() > 50)
need_mob_update = affected_mob.adjustFireLoss(-2 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype)
else
need_mob_update = affected_mob.adjustFireLoss(-1.25 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype)
// SKYRAT EDIT CHANGE END
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)
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)
if(ishuman(affected_mob))
var/mob/living/carbon/human/humi = affected_mob
@@ -271,10 +267,10 @@
. = ..()
var/oxycalc = 2.5 * REM * (current_cycle-1)
if(!overdosed)
oxycalc = min(oxycalc, affected_mob.getOxyLoss() + 0.5) //if NOT overdosing, we lower our toxdamage to only the damage we actually healed with a minimum of 0.1*current_cycle. IE if we only heal 10 oxygen damage but we COULD have healed 20, we will only take toxdamage for the 10. We would take the toxdamage for the extra 10 if we were overdosing.
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.adjustOxyLoss(-oxycalc * seconds_per_tick * normalise_creation_purity(), FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustToxLoss(oxycalc * seconds_per_tick / CONVERMOL_RATIO, updating_health = FALSE, required_biotype = affected_biotype)
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)
if(SPT_PROB((current_cycle-1) / 2, seconds_per_tick) && affected_mob.losebreath)
affected_mob.losebreath--
need_mob_update = TRUE
@@ -302,8 +298,8 @@
/datum/reagent/medicine/c2/tirimol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOxyLoss(-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.adjustStaminaLoss(2 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
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)
if(drowsycd && COOLDOWN_FINISHED(src, drowsycd))
affected_mob.adjust_drowsiness(20 SECONDS)
COOLDOWN_START(src, drowsycd, 45 SECONDS)
@@ -345,7 +341,7 @@
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/need_mob_update
if(toxcalc > 0)
need_mob_update = affected_mob.adjustToxLoss(-toxcalc, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update = affected_mob.adjust_tox_loss(-toxcalc, updating_health = FALSE, required_biotype = affected_biotype)
healypoints += toxcalc
//and you're cold
@@ -354,14 +350,14 @@
radcalc *= normalise_creation_purity()
// extra rad healing if you are SUPER cold
if(chemtemp < rads_heal_threshold*0.1)
need_mob_update += affected_mob.adjustToxLoss(-radcalc * 0.9, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_tox_loss(-radcalc * 0.9, updating_health = FALSE, required_biotype = affected_biotype)
else if(chemtemp < rads_heal_threshold)
need_mob_update += affected_mob.adjustToxLoss(-radcalc * 0.75, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_tox_loss(-radcalc * 0.75, updating_health = FALSE, required_biotype = affected_biotype)
healypoints += (radcalc / 5)
//you're yes and... oh no!
healypoints = round(healypoints, 0.1)
affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART, healypoints / 5, required_organ_flag = affected_organ_flags)
affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, healypoints / 5, required_organ_flag = affected_organ_flags)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -383,8 +379,8 @@
if(creation_purity >= 1) //Perfectly pure multivers gives a bonus of 2!
medibonus += 1
var/need_mob_update
need_mob_update = affected_mob.adjustToxLoss(-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.adjustOrganLoss(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, 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
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)
@@ -417,7 +413,7 @@
return
if(trans_volume >= 0.4) //prevents cheesing with ultralow doses.
exposed_mob.adjustToxLoss((-3 * min(2, trans_volume) * REM) * normalise_creation_purity(), required_biotype = affected_biotype) //This is to promote iv pole use for that chemotherapy feel.
exposed_mob.adjust_tox_loss((-3 * min(2, trans_volume) * REM) * normalise_creation_purity(), required_biotype = affected_biotype) //This is to promote iv pole use for that chemotherapy feel.
var/obj/item/organ/liver/L = exposed_mob.organs_slot[ORGAN_SLOT_LIVER]
if(!L || L.organ_flags & ORGAN_FAILING)
return
@@ -430,8 +426,8 @@
/datum/reagent/medicine/c2/syriniver/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.8 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update += affected_mob.adjustToxLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
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)
for(var/datum/reagent/R in affected_mob.reagents.reagent_list)
if(issyrinormusc(R))
continue
@@ -442,7 +438,7 @@
/datum/reagent/medicine/c2/syriniver/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(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.5 * REM * 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)
@@ -460,8 +456,8 @@
/datum/reagent/medicine/c2/musiver/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.1 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update += affected_mob.adjustToxLoss(-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.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)
for(var/datum/reagent/reagent as anything in affected_mob.reagents.reagent_list)
if(issyrinormusc(reagent))
continue
@@ -481,7 +477,7 @@
/datum/reagent/medicine/c2/musiver/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(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.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
. = UPDATE_MOB_HEALTH
affected_mob.adjust_disgust(3 * REM * seconds_per_tick)
@@ -503,18 +499,18 @@
if(!(methods & (PATCH|TOUCH|VAPOR)))
return
var/current_bruteloss = carbies.getBruteLoss() // because this will be changed after calling adjustBruteLoss()
var/current_fireloss = carbies.getFireLoss() // because this will be changed after calling adjustFireLoss()
var/current_bruteloss = carbies.get_brute_loss() // because this will be changed after calling adjust_brute_loss()
var/current_fireloss = carbies.get_fire_loss() // because this will be changed after calling adjust_fire_loss()
var/touch_protection_interference = (1 - touch_protection)
if(!touch_protection_interference)
return
var/harmies = clamp(carbies.adjustBruteLoss(-1.25 * reac_volume * touch_protection_interference, updating_health = FALSE, required_bodytype = affected_bodytype), 0, current_bruteloss)
var/burnies = clamp(carbies.adjustFireLoss(-1.25 * reac_volume * touch_protection_interference, updating_health = FALSE, required_bodytype = affected_bodytype), 0, current_fireloss)
var/harmies = clamp(carbies.adjust_brute_loss(-1.25 * reac_volume * touch_protection_interference, updating_health = FALSE, required_bodytype = affected_bodytype), 0, current_bruteloss)
var/burnies = clamp(carbies.adjust_fire_loss(-1.25 * reac_volume * touch_protection_interference, updating_health = FALSE, required_bodytype = affected_bodytype), 0, current_fireloss)
for(var/i in carbies.all_wounds)
var/datum/wound/iter_wound = i
iter_wound.on_synthflesh(reac_volume)
var/need_mob_update = harmies + burnies
need_mob_update = carbies.adjustToxLoss((harmies + burnies)*(0.5 + (0.25*(1-creation_purity))), updating_health = FALSE, required_biotype = affected_biotype) || need_mob_update //0.5 - 0.75
need_mob_update = carbies.adjust_tox_loss((harmies + burnies)*(0.5 + (0.25*(1-creation_purity))), updating_health = FALSE, required_biotype = affected_biotype) || need_mob_update //0.5 - 0.75
if(need_mob_update)
carbies.updatehealth()
@@ -529,7 +525,7 @@
return
//don't try to unhusk mobs above burn damage threshold
if(carbies.getFireLoss() > UNHUSK_DAMAGE_THRESHOLD)
if(carbies.get_fire_loss() > UNHUSK_DAMAGE_THRESHOLD)
if(show_message && !need_mob_update)
carbies.visible_message(span_minoralert("The liquid fails to properly stick on [carbies]. [carbies]'s burns need to be repaired first!"))
return
@@ -602,18 +598,17 @@
/datum/reagent/medicine/c2/penthrite/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustStaminaLoss(-12.5 * REM * seconds_per_tick, updating_stamina = FALSE) //SKYRAT EDIT ADDITION - COMBAT - makes your heart beat faster, fills you with energy. For miners
need_mob_update = affected_mob.adjustOrganLoss(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 * REM * 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.adjustToxLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustBruteLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOxyLoss(-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 * 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)
affected_mob.losebreath = 0
need_mob_update += affected_mob.adjustOrganLoss(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, max(volume/10, 1) * REM * 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)
@@ -641,8 +636,8 @@
. = ..()
REMOVE_TRAIT(affected_mob, TRAIT_STABLEHEART, type)
var/need_mob_update
need_mob_update = affected_mob.adjustStaminaLoss(10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART, 10 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
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.set_heartattack(TRUE)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -263,7 +263,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.adjustBruteLoss(15 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
if(drinker.adjust_brute_loss(15 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
. = UPDATE_MOB_HEALTH
else
to_chat(drinker, span_userdanger("You scream in terror as you go blind!"))
@@ -303,7 +303,7 @@
/datum/reagent/consumable/ethanol/bilk/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
if(drinker.getBruteLoss() && SPT_PROB(5, seconds_per_tick))
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))
return UPDATE_MOB_HEALTH
@@ -556,10 +556,10 @@
. = ..()
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.adjustBruteLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += cubano.adjustFireLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += cubano.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += cubano.adjustOxyLoss(-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 * 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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -646,7 +646,7 @@
if(HAS_TRAIT(liver, TRAIT_ENGINEER_METABOLISM))
ADD_TRAIT(drinker, TRAIT_HALT_RADIATION_EFFECTS, "[type]")
if (HAS_TRAIT(drinker, TRAIT_IRRADIATED))
if(drinker.adjustToxLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(drinker.adjust_tox_loss(-2 * REM * 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)
@@ -672,8 +672,7 @@
/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
if(drinker.blood_volume < BLOOD_VOLUME_NORMAL)
drinker.blood_volume = min(drinker.blood_volume + (1 * REM * seconds_per_tick), BLOOD_VOLUME_NORMAL) //Bloody Mary quickly restores blood loss. // SKYRAT EDIT - Bloodshot is now the go-to drink for bloodloss, not Bloody Mary - ORIGINAL: drinker.blood_volume = min(drinker.blood_volume + (3 * REM * delta_time), BLOOD_VOLUME_NORMAL)
drinker.adjust_blood_volume(3 * REM * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL) // Bloody Mary quickly restores blood loss.
/datum/reagent/consumable/ethanol/brave_bull
name = "Brave Bull"
@@ -771,7 +770,7 @@
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.adjustStaminaLoss(-10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype))
if(drinker.adjust_stamina_loss(-10 * REM * 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)
@@ -822,8 +821,8 @@
. = ..()
if(dorf_mode)
var/need_mob_update
need_mob_update = dwarf.adjustBruteLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += dwarf.adjustFireLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -946,7 +945,7 @@
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.adjustBruteLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
if(unshoed.adjust_brute_loss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/ethanol/snowwhite
@@ -1356,10 +1355,10 @@
. = ..()
if(drinker.health <= 0)
var/need_mob_update
need_mob_update = drinker.adjustBruteLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += drinker.adjustFireLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += drinker.adjustOxyLoss(-4 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += drinker.adjustToxLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1393,7 +1392,7 @@
drinker.Sleeping(100 * REM * seconds_per_tick)
if(202 to INFINITY)
drinker.AdjustSleeping(4 SECONDS * REM * seconds_per_tick)
if(drinker.adjustToxLoss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(drinker.adjust_tox_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/ethanol/gargle_blaster
@@ -1417,12 +1416,12 @@
if(56 to 201)
drinker.set_drugginess(110 SECONDS * REM * seconds_per_tick)
if(201 to INFINITY)
if(drinker.adjustToxLoss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(drinker.adjust_tox_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/ethanol/neurotoxin
name = "Neurotoxin"
description = "A strong neurotoxin that puts the subject into a death-like state."
description = "A strong neurotoxin that puts the patient into a death-like state."
color = "#2E2E61" // rgb: 46, 46, 97
boozepwr = 50
quality = DRINK_VERYGOOD
@@ -1438,18 +1437,18 @@
drinker.set_drugginess(100 SECONDS * REM * seconds_per_tick)
drinker.adjust_dizzy(4 SECONDS * REM * seconds_per_tick)
var/need_mob_update
need_mob_update = drinker.adjustOrganLoss(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, 1 * REM * seconds_per_tick, 150, required_organ_flag = affected_organ_flags)
if(SPT_PROB(10, seconds_per_tick))
need_mob_update += drinker.adjustStaminaLoss(10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += drinker.adjust_stamina_loss(10 * REM * seconds_per_tick, 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.adjustStaminaLoss(10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += drinker.adjust_stamina_loss(10 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
if(current_cycle > 31)
need_mob_update += drinker.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update += drinker.adjust_organ_loss(ORGAN_SLOT_BRAIN, 2 * REM * 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)
@@ -1464,7 +1463,7 @@
REMOVE_TRAIT(drinker, TRAIT_PARALYSIS_R_ARM, type)
REMOVE_TRAIT(drinker, TRAIT_PARALYSIS_R_LEG, type)
REMOVE_TRAIT(drinker, TRAIT_PARALYSIS_L_LEG, type)
drinker.adjustStaminaLoss(10, required_biotype = affected_biotype)
drinker.adjust_stamina_loss(10, required_biotype = affected_biotype)
/datum/reagent/consumable/ethanol/hippies_delight
name = "Hippie's Delight"
@@ -1506,7 +1505,7 @@
if(SPT_PROB(23, seconds_per_tick))
drinker.emote(pick("twitch","giggle"))
if(SPT_PROB(16, seconds_per_tick))
if(drinker.adjustToxLoss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(drinker.adjust_tox_loss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/ethanol/eggnog
@@ -1608,7 +1607,7 @@
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.adjustStaminaLoss(-5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += drinker.adjust_stamina_loss(-5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1649,12 +1648,12 @@
heal_points = 20 //heal more if we're in softcrit
var/need_mob_update
var/heal_amt = min(volume, heal_points) //only heals 1 point of damage per unit on add, for balance reasons
need_mob_update = drinker.adjustBruteLoss(-heal_amt, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += drinker.adjustFireLoss(-heal_amt, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += drinker.adjustToxLoss(-heal_amt, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += drinker.adjustOxyLoss(-heal_amt, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update = drinker.adjust_brute_loss(-heal_amt, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += drinker.adjust_fire_loss(-heal_amt, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += drinker.adjust_tox_loss(-heal_amt, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += drinker.adjust_oxy_loss(-heal_amt, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
// heal stamina loss on first metabolization, but only to a max of 20
need_mob_update += drinker.adjustStaminaLoss(max(-heal_amt * 5, -20), updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += drinker.adjust_stamina_loss(max(-heal_amt * 5, -20), updating_stamina = FALSE, required_biotype = affected_biotype)
if(need_mob_update)
drinker.updatehealth()
drinker.visible_message(span_warning("[drinker] shivers with renewed vigor!"), span_notice("One taste of [LOWER_TEXT(name)] fills you with energy!"))
@@ -1665,11 +1664,11 @@
. = ..()
if(drinker.health > 0)
var/need_mob_update
need_mob_update = drinker.adjustBruteLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += drinker.adjustFireLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += drinker.adjustToxLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += drinker.adjustOxyLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += drinker.adjustStaminaLoss(-5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1720,7 +1719,7 @@
/datum/reagent/consumable/ethanol/crevice_spike/on_mob_metabolize(mob/living/drinker) //damage only applies when drink first enters system and won't again until drink metabolizes out
. = ..()
drinker.adjustBruteLoss(3 * min(5,volume), required_bodytype = affected_bodytype) //minimum 3 brute damage on ingestion to limit non-drink means of injury - a full 5 unit gulp of the drink trucks you for the full 15
drinker.adjust_brute_loss(3 * min(5,volume), required_bodytype = affected_bodytype) //minimum 3 brute damage on ingestion to limit non-drink means of injury - a full 5 unit gulp of the drink trucks you for the full 15
/datum/reagent/consumable/ethanol/sake
name = "Sake"
@@ -1822,15 +1821,15 @@
return
var/need_mob_update
if(drinker.getBruteLoss() && drinker.getFireLoss()) //If you are damaged by both types, slightly increased healing but it only heals one. The more the merrier wink wink.
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.adjustBruteLoss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update = drinker.adjust_brute_loss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
else
need_mob_update = drinker.adjustFireLoss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
else if(drinker.getBruteLoss()) //If you have only one, it still heals but not as well.
need_mob_update = drinker.adjustBruteLoss(-0.2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
else if(drinker.getFireLoss())
need_mob_update = drinker.adjustFireLoss(-0.2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update = drinker.adjust_fire_loss(-0.25 * REM * 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)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1873,7 +1872,7 @@
/datum/reagent/consumable/ethanol/fernet/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
if(drinker.nutrition <= NUTRITION_LEVEL_STARVING)
if(drinker.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(drinker.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
. = UPDATE_MOB_HEALTH
drinker.adjust_nutrition(-5 * REM * seconds_per_tick)
drinker.overeatduration = 0
@@ -1890,7 +1889,7 @@
/datum/reagent/consumable/ethanol/fernet_cola/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
if(drinker.nutrition <= NUTRITION_LEVEL_STARVING)
if(drinker.adjustToxLoss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(drinker.adjust_tox_loss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
. = UPDATE_MOB_HEALTH
drinker.adjust_nutrition(-3 * REM * seconds_per_tick)
drinker.overeatduration = 0
@@ -1913,7 +1912,7 @@
/datum/reagent/consumable/ethanol/fanciulli/on_mob_metabolize(mob/living/drinker)
. = ..()
if(drinker.health > 0)
drinker.adjustStaminaLoss(20, required_biotype = affected_biotype)
drinker.adjust_stamina_loss(20, required_biotype = affected_biotype)
/datum/reagent/consumable/ethanol/branca_menta
name = "Branca Menta"
@@ -1932,7 +1931,7 @@
/datum/reagent/consumable/ethanol/branca_menta/on_mob_metabolize(mob/living/drinker)
. = ..()
if(drinker.health > 0)
drinker.adjustStaminaLoss(35, required_biotype = affected_biotype)
drinker.adjust_stamina_loss(35, required_biotype = affected_biotype)
/datum/reagent/consumable/ethanol/blank_paper
name = "Blank Paper"
@@ -2081,9 +2080,9 @@
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.adjustOxyLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += drinker.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += drinker.adjustStaminaLoss(-5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -2104,7 +2103,7 @@
/datum/reagent/consumable/ethanol/bug_spray/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
// Does some damage to bug biotypes
if(drinker.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(drinker.adjust_tox_loss(1 * REM * 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))
@@ -2140,7 +2139,7 @@
. = ..()
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.adjustStaminaLoss(-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() * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/ethanol/old_timer
@@ -2200,7 +2199,7 @@
/datum/reagent/consumable/ethanol/trappist/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
if(drinker.mind?.holy_role)
if(drinker.adjustFireLoss(-2.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
if(drinker.adjust_fire_loss(-2.5 * REM * 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)
@@ -2340,7 +2339,7 @@
/datum/reagent/consumable/ethanol/kortara/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired)
. = ..()
if(drinker.getBruteLoss() && SPT_PROB(10, seconds_per_tick))
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))
return UPDATE_MOB_HEALTH
@@ -2637,7 +2636,7 @@
var/mob/living/carbon/exposed_carbon = exposed_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 5 * ETHEREAL_DISCHARGE_RATE)
stomach.adjust_charge(reac_volume * 10 * ETHEREAL_DISCHARGE_RATE)
/datum/reagent/consumable/ethanol/telepole
name = "Telepole"
@@ -2657,7 +2656,7 @@
var/mob/living/carbon/exposed_carbon = exposed_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 10 * ETHEREAL_DISCHARGE_RATE)
stomach.adjust_charge(reac_volume * 20 * ETHEREAL_DISCHARGE_RATE)
/datum/reagent/consumable/ethanol/pod_tesla
name = "Pod Tesla"
@@ -2984,7 +2983,7 @@
. = ..()
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.adjustOrganLoss(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
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
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/ethanol/blue_blazer
@@ -9,8 +9,8 @@
/datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.getOxyLoss() && SPT_PROB(16, seconds_per_tick))
if(affected_mob.adjustOxyLoss(-1 * REM * seconds_per_tick, FALSE, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type))
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))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/tomatojuice
@@ -23,7 +23,7 @@
/datum/reagent/consumable/tomatojuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.getFireLoss() && SPT_PROB(10, seconds_per_tick))
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))
return UPDATE_MOB_HEALTH
@@ -38,8 +38,8 @@
/datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.getToxLoss() && SPT_PROB(10, seconds_per_tick))
if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
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))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/carrotjuice
@@ -57,9 +57,9 @@
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.adjustOrganLoss(ORGAN_SLOT_EYES, -2 * REM * seconds_per_tick)
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_EYES, -2 * REM * seconds_per_tick)
if(110 to INFINITY)
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_EYES, -2 * REM * seconds_per_tick)
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_EYES, -2 * REM * seconds_per_tick)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -86,7 +86,7 @@
/datum/reagent/consumable/poisonberryjuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/watermelonjuice
@@ -183,7 +183,7 @@
. = ..()
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.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/grapejuice
@@ -219,7 +219,7 @@
myseed.adjust_potency(-round(volume * 0.5))
/datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
if(affected_mob.getBruteLoss() && SPT_PROB(10, seconds_per_tick))
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))
. = UPDATE_MOB_HEALTH
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
@@ -242,7 +242,7 @@
/datum/reagent/consumable/soymilk/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.getBruteLoss() && SPT_PROB(10, seconds_per_tick))
if(affected_mob.get_brute_loss() && SPT_PROB(10, seconds_per_tick))
if(affected_mob.heal_bodypart_damage(1, 0))
return UPDATE_MOB_HEALTH
@@ -301,8 +301,8 @@
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)
if(affected_mob.getToxLoss() && SPT_PROB(10, seconds_per_tick))
if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
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))
. = UPDATE_MOB_HEALTH
affected_mob.adjust_bodytemperature(20 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
@@ -400,7 +400,7 @@
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.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/icetea
@@ -417,8 +417,8 @@
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)
if(affected_mob.getToxLoss() && SPT_PROB(10, seconds_per_tick))
if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
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))
. = UPDATE_MOB_HEALTH
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
@@ -492,7 +492,7 @@
REMOVE_TRAIT(affected_mob, TRAIT_DOUBLE_TAP, type)
if(current_cycle > 10)
to_chat(affected_mob, span_warning("You feel kinda tired as your sugar rush wears off..."))
affected_mob.adjustStaminaLoss(min(80, current_cycle * 3), required_biotype = affected_biotype)
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, times_fired)
@@ -658,11 +658,11 @@
var/need_mob_update
switch(affected_mob.mob_mood.sanity_level)
if (SANITY_LEVEL_GREAT to SANITY_LEVEL_NEUTRAL)
need_mob_update = affected_mob.adjustBruteLoss(-1.5 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update = affected_mob.adjust_brute_loss(-1.5 * REM * 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.adjustStaminaLoss(3 * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update = affected_mob.adjust_stamina_loss(3 * REM * seconds_per_tick, updating_stamina = FALSE)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -732,7 +732,7 @@
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())
if(affected_mob.getBruteLoss() && SPT_PROB(10, seconds_per_tick))
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -759,7 +759,7 @@
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())
if(affected_mob.getBruteLoss() && SPT_PROB(10, seconds_per_tick))
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -775,10 +775,10 @@
/datum/reagent/consumable/doctor_delight/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustBruteLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustToxLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOxyLoss(-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.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)
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)))
@@ -890,7 +890,7 @@
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())
if(affected_mob.getBruteLoss() && SPT_PROB(10, seconds_per_tick))
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -955,7 +955,7 @@
/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
affected_mob.adjust_bodytemperature(5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, 0, affected_mob.get_body_temp_normal())
if(affected_mob.getBruteLoss() && SPT_PROB(10, seconds_per_tick))
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))
. = UPDATE_MOB_HEALTH
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
@@ -1003,8 +1003,8 @@
. = ..()
if(IS_REVOLUTIONARY(drinker))
drinker.set_dizzy_if_lower(10 SECONDS * REM * seconds_per_tick)
if(drinker.getStaminaLoss() < 80)
drinker.adjustStaminaLoss(12, required_biotype = affected_biotype) //The pomegranate stops free radicals! Har har.
if(drinker.get_stamina_loss() < 80)
drinker.adjust_stamina_loss(12, required_biotype = affected_biotype) //The pomegranate stops free radicals! Har har.
/datum/reagent/consumable/parsnipjuice
name = "Parsnip Juice"
@@ -1113,8 +1113,8 @@
/datum/reagent/consumable/aloejuice/on_mob_life(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.getToxLoss() && SPT_PROB(16, seconds_per_tick))
if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
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))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/agua_fresca
@@ -1128,8 +1128,8 @@
/datum/reagent/consumable/agua_fresca/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
if(affected_mob.getToxLoss() && SPT_PROB(10, seconds_per_tick))
if(affected_mob.adjustToxLoss(-0.5, updating_health = FALSE, required_biotype = affected_biotype))
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))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/mushroom_tea
@@ -1143,7 +1143,7 @@
/datum/reagent/consumable/mushroom_tea/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(islizard(affected_mob))
if(affected_mob.adjustOxyLoss(-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.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type))
return UPDATE_MOB_HEALTH
//Moth Stuff
@@ -1164,7 +1164,7 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/strawberry_banana
name = "strawberry banana smoothie"
name = "Strawberry Banana Smoothie"
description = "A classic smoothie made from strawberries and bananas."
color = "#FF9999"
nutriment_factor = 0
@@ -1172,7 +1172,7 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/berry_blast
name = "berry blast smoothie"
name = "Berry Blast Smoothie"
description = "A classic smoothie made from mixed berries."
color = "#A76DC5"
nutriment_factor = 0
@@ -1180,7 +1180,7 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/funky_monkey
name = "funky monkey smoothie"
name = "Funky Monkey Smoothie"
description = "A classic smoothie made from chocolate and bananas."
color = COLOR_BROWNER_BROWN
nutriment_factor = 0
@@ -1188,7 +1188,7 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/green_giant
name = "green giant smoothie"
name = "Green Giant Smoothie"
description = "A green vegetable smoothie, made without vegetables."
color = COLOR_VERY_DARK_LIME_GREEN
nutriment_factor = 0
@@ -1196,7 +1196,7 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/melon_baller
name = "melon baller smoothie"
name = "Melon Baller Smoothie"
description = "A classic smoothie made from melons."
color = "#D22F55"
nutriment_factor = 0
@@ -1204,7 +1204,7 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/consumable/vanilla_dream
name = "vanilla dream smoothie"
name = "Vanilla Dream Smoothie"
description = "A classic smoothie made from vanilla and fresh cream."
color = "#FFF3DD"
nutriment_factor = 0
@@ -1230,8 +1230,8 @@
/datum/reagent/consumable/cucumberlemonade/on_mob_life(mob/living/carbon/doll, seconds_per_tick, times_fired)
. = ..()
doll.adjust_bodytemperature(-8 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, doll.get_body_temp_normal())
if(doll.getToxLoss() && SPT_PROB(10, seconds_per_tick))
if(doll.adjustToxLoss(-0.5, updating_health = FALSE, required_biotype = affected_biotype))
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))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/mississippi_queen
@@ -1267,8 +1267,8 @@
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)
if(affected_mob.getToxLoss() && SPT_PROB(25, seconds_per_tick))
if(affected_mob.adjustToxLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
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))
return UPDATE_MOB_HEALTH
/datum/reagent/consumable/hakka_mate
@@ -1333,9 +1333,9 @@
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.adjustToxLoss(-0.6 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update = affected_mob.adjustBruteLoss(-0.6 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update = affected_mob.adjustFireLoss(-0.6 * REM * seconds_per_tick, updating_health = FALSE)
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)
affected_mob.remove_movespeed_modifier(/datum/movespeed_modifier/punch_punishment)
else
affected_mob.clear_alert("punch_good")
@@ -93,8 +93,8 @@
/datum/reagent/drug/nicotine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustToxLoss(0.1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOxyLoss(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.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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -122,14 +122,14 @@
affected_human.set_facial_hairstyle("Shaved", update = FALSE)
affected_human.set_hairstyle("Bald", update = FALSE)
affected_mob.set_species(/datum/species/human/krokodil_addict)
if(affected_mob.adjustBruteLoss(50 * REM, updating_health = FALSE, required_bodytype = affected_bodytype)) // holy shit your skin just FELL THE FUCK OFF
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, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update = affected_mob.adjustToxLoss(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 * 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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -176,9 +176,9 @@
affected_mob.add_mood_event("tweaking", /datum/mood_event/stimulant_medium)
affected_mob.AdjustAllImmobility(-40 * REM * seconds_per_tick)
var/need_mob_update
need_mob_update = affected_mob.adjustStaminaLoss(-5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
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.adjustOrganLoss(ORGAN_SLOT_BRAIN, rand(1, 4) * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, rand(1, 4) * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
if(need_mob_update)
. = UPDATE_MOB_HEALTH
if(SPT_PROB(2.5, seconds_per_tick))
@@ -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.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOrganLoss(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(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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -233,8 +233,8 @@
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.adjustStaminaLoss(-6 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 4 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
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)
if(need_mob_update)
. = UPDATE_MOB_HEALTH
@@ -269,11 +269,11 @@
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.adjustStaminaLoss(-18 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustToxLoss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
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)
if(SPT_PROB(30, seconds_per_tick))
affected_mob.losebreath++
need_mob_update += affected_mob.adjustOxyLoss(1, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjust_oxy_loss(1, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -302,7 +302,7 @@
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.adjustOrganLoss(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 * REM * 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, times_fired)
@@ -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.adjustOrganLoss(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 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
return UPDATE_MOB_HEALTH
/datum/reagent/drug/pumpup
@@ -347,7 +347,7 @@
to_chat(affected_mob, span_notice("[pick("Go! Go! GO!", "You feel ready...", "You feel invincible...")]"))
if(SPT_PROB(7.5, seconds_per_tick))
affected_mob.losebreath++
affected_mob.adjustToxLoss(2, updating_health = FALSE, required_biotype = affected_biotype)
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)
@@ -364,10 +364,10 @@
affected_mob.emote(pick("twitch","drool"))
if(SPT_PROB(10, seconds_per_tick))
affected_mob.losebreath++
affected_mob.adjustStaminaLoss(4, updating_stamina = FALSE, required_biotype = affected_biotype)
affected_mob.adjust_stamina_loss(4, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update = TRUE
if(SPT_PROB(7.5, seconds_per_tick))
need_mob_update += affected_mob.adjustToxLoss(2, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_tox_loss(2, updating_health = FALSE, required_biotype = affected_biotype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -397,7 +397,7 @@
/datum/reagent/drug/maint/powder/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.adjustOrganLoss(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 * REM * 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
@@ -410,7 +410,7 @@
/datum/reagent/drug/maint/powder/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 6 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 6 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
return UPDATE_MOB_HEALTH
/datum/reagent/drug/maint/sludge
@@ -425,7 +425,7 @@
/datum/reagent/drug/maint/sludge/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustToxLoss(0.5 * REM * seconds_per_tick, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(0.5 * REM * 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, times_fired)
@@ -435,9 +435,9 @@
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.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update = carbie.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
if(SPT_PROB(5, seconds_per_tick))
need_mob_update += carbie.adjustToxLoss(5, required_biotype = affected_biotype, updating_health = FALSE)
need_mob_update += carbie.adjust_tox_loss(5, required_biotype = affected_biotype, updating_health = FALSE)
carbie.vomit(VOMIT_CATEGORY_DEFAULT)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -453,14 +453,14 @@
/datum/reagent/drug/maint/tar/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.AdjustAllImmobility(-10 * REM * seconds_per_tick)
affected_mob.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 1.5 * REM * 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, times_fired)
. = ..()
var/need_update
need_update = affected_mob.adjustToxLoss(5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_LIVER, 3 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
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)
if(need_update)
return UPDATE_MOB_HEALTH
@@ -613,7 +613,7 @@
/datum/reagent/drug/blastoff/on_mob_life(mob/living/carbon/dancer, seconds_per_tick, times_fired)
. = ..()
if(dancer.adjustOrganLoss(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 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
. = UPDATE_MOB_HEALTH
dancer.AdjustKnockdown(-20)
@@ -622,7 +622,7 @@
/datum/reagent/drug/blastoff/overdose_process(mob/living/dancer, seconds_per_tick, times_fired)
. = ..()
if(dancer.adjustOrganLoss(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 * REM * 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))
@@ -685,7 +685,7 @@
/datum/reagent/drug/saturnx/on_mob_life(mob/living/carbon/invisible_man, seconds_per_tick, times_fired)
. = ..()
if(invisible_man.adjustOrganLoss(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 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
return UPDATE_MOB_HEALTH
/datum/reagent/drug/saturnx/on_mob_metabolize(mob/living/invisible_man)
@@ -761,7 +761,7 @@
invisible_man.emote("giggle")
if(SPT_PROB(5, seconds_per_tick))
invisible_man.emote("laugh")
if(invisible_man.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.4 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
if(invisible_man.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.4 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
return UPDATE_MOB_HEALTH
/datum/reagent/drug/saturnx/stable
@@ -834,13 +834,13 @@ If you have at over 25u in your body you restore more than 20 stamina per cycle,
to_chat(druggo, span_nicegreen(pick("You feel the cowardice melt away...", "You feel unbothered by the judgements of others.", "My life feels lovely!", "You lower your snout... and suddenly feel more charitable!")))
else
stamina_heal_per_unit = 6
druggo.adjustStaminaLoss(-stamina_heal_per_unit * trans_volume)
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, times_fired)
. = ..()
var/need_mob_update
kronkaine_fiend.add_mood_event("tweaking", /datum/mood_event/stimulant_medium)
if(kronkaine_fiend.adjustOrganLoss(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.1 + 0.04 * volume) * REM * 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!"))
@@ -852,7 +852,7 @@ If you have at over 25u in your body you restore more than 20 stamina per cycle,
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.
I think that level of safety goes against the design we would like achieve with drugs; great rewards but at the cost of great risk.*/
if(kronkaine_fiend.getStaminaLoss() > 30)
if(kronkaine_fiend.get_stamina_loss() > 30)
for(var/possible_purger in kronkaine_fiend.reagents.reagent_list)
if(istype(possible_purger, /datum/reagent/medicine/c2/multiver) || istype(possible_purger, /datum/reagent/medicine/haloperidol))
if(kronkaine_fiend.HasDisease(/datum/disease/adrenal_crisis))
@@ -860,13 +860,13 @@ 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.adjustStaminaLoss(-0.8 * volume * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update = kronkaine_fiend.adjust_stamina_loss(-0.8 * volume * REM * 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, times_fired)
. = ..()
if(kronkaine_fiend.adjustOrganLoss(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.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
. = UPDATE_MOB_HEALTH
kronkaine_fiend.set_jitter_if_lower(20 SECONDS * REM * seconds_per_tick)
if(SPT_PROB(10, seconds_per_tick))
@@ -194,7 +194,7 @@
span_userdanger("You're covered in boiling oil!"))
if(FryLoss)
exposed_mob.emote("scream")
exposed_mob.adjustFireLoss(FryLoss)
exposed_mob.adjust_fire_loss(FryLoss)
playsound(exposed_mob, 'sound/machines/fryer/deep_fryer_emerge.ogg', 25, TRUE)
ADD_TRAIT(exposed_mob, TRAIT_OIL_FRIED, "cooking_oil_react")
addtimer(CALLBACK(exposed_mob, TYPE_PROC_REF(/mob/living, unfry_mob)), 2 SECONDS)
@@ -422,7 +422,7 @@
if(reac_volume < 5)
return
for(var/mob/living/basic/slime/exposed_slime in exposed_turf)
exposed_slime.adjustToxLoss(rand(15,30))
exposed_slime.adjust_tox_loss(rand(15,30))
/datum/reagent/consumable/condensedcapsaicin
name = "Condensed Capsaicin"
@@ -825,10 +825,10 @@
holder.add_reagent(/datum/reagent/consumable/sugar, 3 * REM * seconds_per_tick)
var/need_mob_update
if(SPT_PROB(33, seconds_per_tick))
need_mob_update = affected_mob.adjustBruteLoss(-1, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-1, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOxyLoss(-1, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustToxLoss(-1, updating_health = FALSE, required_biotype = affected_biotype)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -914,9 +914,9 @@
affected_mob.Unconscious(40 * REM * seconds_per_tick, FALSE)
if(SPT_PROB(10, seconds_per_tick))
affected_mob.losebreath += 4
affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2*REM, 150, affected_biotype)
affected_mob.adjustToxLoss(3*REM, updating_health = FALSE, required_biotype = affected_biotype)
affected_mob.adjustStaminaLoss(10*REM, updating_stamina = FALSE, required_biotype = affected_biotype)
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.set_eye_blur_if_lower(10 SECONDS)
need_mob_update = TRUE
if(need_mob_update)
@@ -960,8 +960,8 @@
. = ..()
var/need_mob_update
if(SPT_PROB(55, seconds_per_tick))
need_mob_update = affected_mob.adjustBruteLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -989,7 +989,7 @@
/datum/reagent/consumable/liquidelectricity/enriched/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(isethereal(affected_mob))
affected_mob.blood_volume += 1 * seconds_per_tick
affected_mob.adjust_blood_volume(1 * seconds_per_tick)
else if(SPT_PROB(10, seconds_per_tick)) //lmao at the newbs who eat energy bars
affected_mob.electrocute_act(rand(5,10), "Liquid Electricity in their body", 1, SHOCK_NOGLOVES) //the shock is coming from inside the house
playsound(affected_mob, SFX_SPARKS, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
@@ -20,9 +20,9 @@
var/need_mob_update
if(liver)//Though, lets be safe
need_mob_update = affected_mob.adjustOrganLoss(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, liver_damage * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
else
need_mob_update = affected_mob.adjustToxLoss(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 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)//Incase of no liver!
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -41,7 +41,7 @@
/datum/reagent/inverse/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustToxLoss(tox_damage * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(tox_damage * REM * 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
@@ -106,30 +106,19 @@
holder.del_reagent(type)
return
human_thing.apply_status_effect(/datum/status_effect/frozenstasis/irresistable)
if(!human_thing.has_status_effect(/datum/status_effect/grouped/stasis, STASIS_CHEMICAL_EFFECT))
human_thing.apply_status_effect(/datum/status_effect/grouped/stasis, STASIS_CHEMICAL_EFFECT)
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, times_fired)
. = ..()
if(!affected_mob.has_status_effect(/datum/status_effect/frozenstasis/irresistable))
holder.remove_reagent(type, volume) // remove it all if we were broken out
return
metabolization_rate += 0.01 //speed up our metabolism over time. Chop chop.
/datum/reagent/inverse/cryostylane/metabolize_reagent(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
if(current_cycle >= 60)
holder.remove_reagent(type, volume) // remove it all if we're past 60 cycles
return
return ..()
/datum/reagent/inverse/cryostylane/on_mob_end_metabolize(mob/living/affected_mob)
. = ..()
affected_mob.remove_status_effect(/datum/status_effect/frozenstasis/irresistable)
affected_mob.remove_status_effect(/datum/status_effect/grouped/stasis, STASIS_CHEMICAL_EFFECT)
/datum/reagent/inverse/cryostylane/on_mob_delete(mob/living/affected_mob, amount)
. = ..()
affected_mob.remove_status_effect(/datum/status_effect/frozenstasis/irresistable)
affected_mob.remove_status_effect(/datum/status_effect/grouped/stasis, STASIS_CHEMICAL_EFFECT)
affected_mob.remove_status_effect(/datum/status_effect/reagent_effect/freeze)
@@ -41,13 +41,13 @@
var/pick = pick("brute", "burn", "tox", "oxy")
switch(pick)
if("brute")
need_mob_update = affected_mob.adjustBruteLoss(-0.5, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update = affected_mob.adjust_brute_loss(-0.5, updating_health = FALSE, required_bodytype = affected_bodytype)
if("burn")
need_mob_update += affected_mob.adjustFireLoss(-0.5, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_fire_loss(-0.5, updating_health = FALSE, required_bodytype = affected_bodytype)
if("tox")
need_mob_update += affected_mob.adjustToxLoss(-0.5, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_tox_loss(-0.5, updating_health = FALSE, required_biotype = affected_biotype)
if("oxy")
need_mob_update += affected_mob.adjustOxyLoss(-0.5, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjust_oxy_loss(-0.5, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -132,7 +132,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
/datum/reagent/inverse/libitoil/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.1 * REM * seconds_per_tick)
affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.1 * REM * seconds_per_tick)
/datum/reagent/inverse/libitoil/on_mob_add(mob/living/affected_mob, amount)
. = ..()
@@ -192,7 +192,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
/datum/reagent/peptides_failed/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25 * seconds_per_tick, 170))
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.25 * seconds_per_tick, 170))
. = UPDATE_MOB_HEALTH
affected_mob.adjust_nutrition(-5 * REAGENTS_METABOLISM * seconds_per_tick)
@@ -224,7 +224,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
tox_damage = 0
/datum/reagent/inverse/aiuri/on_mob_life(mob/living/carbon/owner, seconds_per_tick, times_fired)
owner.adjustOrganLoss(ORGAN_SLOT_EYES, 0.1 * REM * seconds_per_tick)
owner.adjust_organ_loss(ORGAN_SLOT_EYES, 0.1 * REM * seconds_per_tick)
owner.adjust_eye_blur(amount_of_blur_applied * seconds_per_tick)
. = ..()
return TRUE
@@ -264,7 +264,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
/datum/reagent/inverse/hercuri/overdose_process(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(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, 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)
. = UPDATE_MOB_HEALTH
var/heating = 10 * creation_purity * REM * seconds_per_tick * TEMPERATURE_DAMAGE_COEFFICIENT
affected_mob.adjust_bodytemperature(heating) //hot hot
@@ -409,7 +409,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
time_until_next_poison -= seconds_per_tick * (1 SECONDS)
if (time_until_next_poison <= 0)
time_until_next_poison = poison_interval
if(affected_mob.adjustToxLoss(creation_purity * 1, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(creation_purity * 1, 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
@@ -461,9 +461,9 @@ Basically, we fill the time between now and 2s from now with hands based off the
. = ..()
var/need_mob_update
if(length(affected_mob.reagents.reagent_list) > 1)
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5 * seconds_per_tick, required_organ_flag = affected_organ_flags) //Hey! It's everyone's favourite drawback from multiver!
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.adjustToxLoss(-2 * REM * creation_purity * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update = affected_mob.adjust_tox_loss(-2 * REM * creation_purity * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -527,8 +527,8 @@ Basically, we fill the time between now and 2s from now with hands based off the
for(var/datum/wound/iter_wound as anything in affected_mob.all_wounds)
iter_wound.adjust_blood_flow(creation_impurity * REM * seconds_per_tick)
var/need_mob_update
need_mob_update = affected_mob.adjustBruteLoss(5 * creation_impurity * REM * seconds_per_tick, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART, ((1 + creation_impurity) * REM * seconds_per_tick), required_organ_flag = affected_organ_flags)
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)
if(affected_mob.health < HEALTH_THRESHOLD_CRIT)
affected_mob.add_movespeed_modifier(/datum/movespeed_modifier/reagent/nooartrium)
if(affected_mob.health < HEALTH_THRESHOLD_FULLCRIT)
@@ -828,7 +828,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
if(SPT_PROB(25, seconds_per_tick))
affected_mob.adjust_bodytemperature(30 * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick)
affected_mob.set_jitter_if_lower(3 SECONDS)
affected_mob.adjustStaminaLoss(5 * REM * seconds_per_tick)
affected_mob.adjust_stamina_loss(5 * REM * seconds_per_tick)
else if(SPT_PROB(5, seconds_per_tick))
affected_mob.vomit(VOMIT_CATEGORY_BLOOD, lost_nutrition = 0, distance = 3)
affected_mob.Paralyze(3 SECONDS)
@@ -877,10 +877,10 @@ Basically, we fill the time between now and 2s from now with hands based off the
/datum/reagent/inverse/atropine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_STOMACH, -1 * REM * seconds_per_tick)
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART, -1 * REM * seconds_per_tick)
if(affected_mob.getToxLoss() <= 25)
need_mob_update = affected_mob.adjustToxLoss(-0.5, updating_health = FALSE, required_biotype = affected_biotype)
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)
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
@@ -897,7 +897,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
ORGAN_SLOT_APPENDIX,
ORGAN_SLOT_TONGUE,
)
affected_mob.adjustOrganLoss(pick(possible_organs) ,2 * seconds_per_tick)
affected_mob.adjust_organ_loss(pick(possible_organs) ,2 * seconds_per_tick)
affected_mob.reagents.remove_reagent(type, 1 * REM * seconds_per_tick)
/datum/reagent/inverse/ammoniated_mercury
@@ -1010,10 +1010,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.adjustOrganLoss(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 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
if(holder.has_reagent(/datum/reagent/consumable/monkey_energy))
need_mob_update += affected_mob.adjustOrganLoss(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 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
if(need_mob_update)
. = UPDATE_MOB_HEALTH
@@ -1035,7 +1035,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
if(overdosed)
return
var/need_mob_update
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_LIVER, -1 * REM * seconds_per_tick)
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, -1 * REM * seconds_per_tick)
for(var/datum/wound/iter_wound as anything in affected_mob.all_wounds)
if(iter_wound.blood_flow)
if(holder.has_reagent(/datum/reagent/medicine/coagulant, 3))
@@ -1043,8 +1043,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
else
holder.add_reagent(/datum/reagent/medicine/coagulant, 0.2 * REM * seconds_per_tick)
if(affected_mob.blood_volume < BLOOD_VOLUME_NORMAL)
need_mob_update += affected_mob.blood_volume += min(3 * seconds_per_tick, BLOOD_VOLUME_NORMAL)
affected_mob.adjust_blood_volume(3 * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL)
switch(current_cycle)
if(10)
@@ -1205,7 +1204,7 @@ Basically, we fill the time between now and 2s from now with hands based off the
/datum/reagent/inverse/baldium/on_mob_delete(mob/living/affected_mob)
. = ..()
affected_mob.log_message("has taken [delayed_burn_damage] burn damage from maldium's aftereffects", LOG_ATTACK)
affected_mob.adjustFireLoss(delayed_burn_damage, updating_health = TRUE, required_bodytype = affected_bodytype)
affected_mob.adjust_fire_loss(delayed_burn_damage, updating_health = TRUE, required_bodytype = affected_bodytype)
/datum/reagent/inverse/colorful_reagent
name = "Dulling Reagent"
@@ -42,7 +42,7 @@
/datum/reagent/impurity/chloralax/on_mob_life(mob/living/carbon/owner, seconds_per_tick)
. = ..()
if(owner.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(owner.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
//Mindbreaker Toxin - Impure Version
@@ -68,7 +68,7 @@
/datum/reagent/medicine/adminordrazine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.heal_bodypart_damage(brute = 5 * REM * seconds_per_tick, burn = 5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
affected_mob.adjustToxLoss(-5 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype)
affected_mob.adjust_tox_loss(-5 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype)
// Heal everything! That we want to. But really don't heal reagents. Otherwise we'll lose ... us.
affected_mob.fully_heal(full_heal_flags & ~HEAL_ALL_REAGENTS) // there is no need to return UPDATE_MOB_HEALTH because this proc calls updatehealth()
@@ -94,7 +94,7 @@
holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5 * REM * seconds_per_tick)
affected_mob.adjust_hallucinations(-20 SECONDS * REM * seconds_per_tick)
if(SPT_PROB(16, seconds_per_tick))
if(affected_mob.adjustToxLoss(1, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/synaphydramine
@@ -113,7 +113,7 @@
holder.remove_reagent(/datum/reagent/toxin/histamine, 5 * REM * seconds_per_tick)
affected_mob.adjust_hallucinations(-20 SECONDS * REM * seconds_per_tick)
if(SPT_PROB(16, seconds_per_tick))
if(affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/sansufentanyl
@@ -127,7 +127,7 @@
. = ..()
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)
if(affected_mob.adjustStaminaLoss(1 * REM * seconds_per_tick, updating_stamina = FALSE))
if(affected_mob.adjust_stamina_loss(1 * REM * seconds_per_tick, updating_stamina = FALSE))
. = UPDATE_MOB_HEALTH
if(SPT_PROB(10, seconds_per_tick))
@@ -152,10 +152,10 @@
return
var/power = -0.00003 * (affected_mob.bodytemperature ** 2) + 3
var/need_mob_update
need_mob_update = affected_mob.adjustOxyLoss(-3 * power * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustBruteLoss(-power * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-power * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustToxLoss(-power * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) //heals TOXINLOVERs
need_mob_update = affected_mob.adjust_oxy_loss(-3 * power * 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(-power * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_fire_loss(-power * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_tox_loss(-power * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) //heals TOXINLOVERs
for(var/i in affected_mob.all_wounds)
var/datum/wound/iter_wound = i
iter_wound.on_xadone(power * REM * seconds_per_tick)
@@ -191,10 +191,10 @@
power *= 2
var/need_mob_update
need_mob_update = affected_mob.adjustOxyLoss(-2 * power * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustBruteLoss(-power * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-1.5 * power * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustToxLoss(-power * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype)
need_mob_update = affected_mob.adjust_oxy_loss(-2 * power * 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(-power * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_fire_loss(-1.5 * power * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_tox_loss(-power * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype)
if(need_mob_update)
. = UPDATE_MOB_HEALTH
for(var/i in affected_mob.all_wounds)
@@ -227,7 +227,7 @@
/datum/reagent/medicine/rezadone/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
. = UPDATE_MOB_HEALTH
affected_mob.set_dizzy_if_lower(10 SECONDS * REM * seconds_per_tick)
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
@@ -240,7 +240,7 @@
var/functional_react_volume = reac_volume * (1 - touch_protection)
var/mob/living/carbon/patient = exposed_mob
if(functional_react_volume >= 5 && HAS_TRAIT(patient, TRAIT_HUSK) && patient.getFireLoss() < UNHUSK_DAMAGE_THRESHOLD) //One carp yields 12u rezadone. // BUBBER EDIT CHANGE - Synthflesh works on ling husks - Original: HAS_TRAIT_FROM(patient, TRAIT_HUSK, BURN)
if(functional_react_volume >= 5 && HAS_TRAIT(patient, TRAIT_HUSK) && patient.get_fire_loss() < UNHUSK_DAMAGE_THRESHOLD) //One carp yields 12u rezadone. // BUBBER EDIT CHANGE - Synthflesh works on ling husks - Original: HAS_TRAIT_FROM(patient, TRAIT_HUSK, BURN)
patient.cure_husk() // BUBBER EDIT CHANGE - Synthflesh works on ling husks - Original: patient.cure_husk(BURN)
patient.visible_message(span_nicegreen("[patient]'s body rapidly absorbs moisture from the environment, taking on a more healthy appearance."))
@@ -271,17 +271,17 @@
/datum/reagent/medicine/oxandrolone/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
if(affected_mob.getFireLoss() > 25)
need_mob_update = affected_mob.adjustFireLoss(-4 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype) //Twice as effective as AIURI for severe burns
if(affected_mob.get_fire_loss() > 25)
need_mob_update = affected_mob.adjust_fire_loss(-4 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype) //Twice as effective as AIURI for severe burns
else
need_mob_update = affected_mob.adjustFireLoss(-0.5 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype) //But only a quarter as effective for more minor ones
need_mob_update = affected_mob.adjust_fire_loss(-0.5 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype) //But only a quarter as effective for more minor ones
if(need_mob_update)
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/oxandrolone/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.getFireLoss()) //It only makes existing burns worse
if(affected_mob.adjustFireLoss(4.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_biotype)) // it's going to be healing either 4 or 0.5
if(affected_mob.get_fire_loss()) //It only makes existing burns worse
if(affected_mob.adjust_fire_loss(4.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_biotype)) // it's going to be healing either 4 or 0.5
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/salglu_solution
@@ -291,30 +291,34 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
overdose_threshold = 60
taste_description = "sweetness and salt"
var/last_added = 0
var/maximum_reachable = BLOOD_VOLUME_NORMAL - 10 //So that normal blood regeneration can continue with salglu active
var/extra_regen = 0.25 // in addition to acting as temporary blood, also add about half this much to their actual blood per second
ph = 5.5
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/// Add about half this much extra blood regen per second.
var/extra_regen = 0.25
/// Add many extra units of blood per unit of saline.
var/dilution_per_unit = 5
/// Doesn't dilute blood beyond this point.
var/dilution_cap = BLOOD_VOLUME_NORMAL
/// Only supplements blood types that use this restoration chem.
var/required_restoration_chem = /datum/reagent/iron
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update = FALSE
if(SPT_PROB(18, seconds_per_tick))
need_mob_update = affected_mob.adjustBruteLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_biotype)
need_mob_update += affected_mob.adjustFireLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_biotype)
need_mob_update = affected_mob.adjust_brute_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_biotype)
need_mob_update += affected_mob.adjust_fire_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_biotype)
// Regen is handled here, dilution is handled in [living/proc/get_blood_volume]
var/datum/blood_type/blood_type = affected_mob.get_bloodtype()
// Only suppliments base blood types
if(blood_type?.restoration_chem != /datum/reagent/iron)
return need_mob_update ? UPDATE_MOB_HEALTH : null
if(last_added)
affected_mob.blood_volume -= last_added
last_added = 0
if(affected_mob.blood_volume < maximum_reachable) //Can only up to double your effective blood level.
var/amount_to_add = min(affected_mob.blood_volume, 5*volume)
var/new_blood_level = min(affected_mob.blood_volume + amount_to_add, maximum_reachable)
last_added = new_blood_level - affected_mob.blood_volume
affected_mob.blood_volume = new_blood_level + (extra_regen * REM * seconds_per_tick)
if(blood_type?.restoration_chem == required_restoration_chem)
affected_mob.adjust_blood_volume(extra_regen * REM * seconds_per_tick)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -332,8 +336,8 @@
holder.add_reagent(/datum/reagent/consumable/sugar, 1)
holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5)
if(SPT_PROB(18, seconds_per_tick))
need_mob_update = affected_mob.adjustBruteLoss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_biotype)
need_mob_update += affected_mob.adjustFireLoss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_biotype)
need_mob_update = affected_mob.adjust_brute_loss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_biotype)
need_mob_update += affected_mob.adjust_fire_loss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_biotype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -349,8 +353,8 @@
/datum/reagent/medicine/mine_salve/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustBruteLoss(-0.25 * REM * seconds_per_tick, FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-0.25 * REM * seconds_per_tick, FALSE, required_bodytype = affected_bodytype)
need_mob_update = affected_mob.adjust_brute_loss(-0.25 * REM * seconds_per_tick, FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_fire_loss(-0.25 * REM * seconds_per_tick, FALSE, required_bodytype = affected_bodytype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -399,20 +403,20 @@
/datum/reagent/medicine/omnizine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustToxLoss(-healing * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOxyLoss(-healing * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustBruteLoss(-healing * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-healing * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update = affected_mob.adjust_tox_loss(-healing * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_oxy_loss(-healing * 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(-healing * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_fire_loss(-healing * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/omnizine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustToxLoss(1.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOxyLoss(1.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustBruteLoss(1.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(1.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update = affected_mob.adjust_tox_loss(1.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_oxy_loss(1.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(1.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_fire_loss(1.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -441,13 +445,13 @@
continue
affected_mob.reagents.remove_reagent(target_reagent.type, 3 * target_reagent.purge_multiplier * REM * seconds_per_tick)
var/toxin_amount = round(affected_mob.health / 40, 0.1)
if(affected_mob.adjustToxLoss(toxin_amount * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(toxin_amount * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/calomel/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.reagents.remove_reagent(type, 2 * REM * seconds_per_tick)
if(affected_mob.adjustToxLoss(2.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(2.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/ammoniated_mercury
@@ -470,8 +474,8 @@
for(var/datum/reagent/toxin/target_reagent in affected_mob.reagents.reagent_list)
toxin_chem_amount += 1
affected_mob.reagents.remove_reagent(target_reagent.type, 5 * target_reagent.purge_multiplier * REM * seconds_per_tick)
var/toxin_amount = round(affected_mob.getBruteLoss() / 15, 0.1) + round(affected_mob.getFireLoss() / 30, 0.1) - 3
if(affected_mob.adjustToxLoss(toxin_amount * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
var/toxin_amount = round(affected_mob.get_brute_loss() / 15, 0.1) + round(affected_mob.get_fire_loss() / 30, 0.1) - 3
if(affected_mob.adjust_tox_loss(toxin_amount * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
. = UPDATE_MOB_HEALTH
if(toxin_chem_amount == 0)
for(var/datum/reagent/medicine/ammoniated_mercury/target_reagent in affected_mob.reagents.reagent_list)
@@ -479,7 +483,7 @@
/datum/reagent/medicine/ammoniated_mercury/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustToxLoss(3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/potass_iodide
@@ -494,7 +498,7 @@
/datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(HAS_TRAIT(affected_mob, TRAIT_IRRADIATED))
if(affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/pen_acid
@@ -510,7 +514,7 @@
/datum/reagent/medicine/pen_acid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustToxLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
. = UPDATE_MOB_HEALTH
for(var/datum/reagent/reagent as anything in affected_mob.reagents.reagent_list)
if(reagent != src)
@@ -530,17 +534,17 @@
/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
if(affected_mob.getBruteLoss() > 25)
need_mob_update = affected_mob.adjustBruteLoss(-4 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype)
if(affected_mob.get_brute_loss() > 25)
need_mob_update = affected_mob.adjust_brute_loss(-4 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype)
else
need_mob_update = affected_mob.adjustBruteLoss(-0.5 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update = affected_mob.adjust_brute_loss(-0.5 * REM * seconds_per_tick * normalise_creation_purity(), updating_health = FALSE, required_bodytype = affected_bodytype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/sal_acid/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.getBruteLoss()) //It only makes existing bruises worse
if(affected_mob.adjustBruteLoss(4.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)) // it's going to be healing either 4 or 0.5
if(affected_mob.get_brute_loss()) //It only makes existing bruises worse
if(affected_mob.adjust_brute_loss(4.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = BODYTYPE_ORGANIC)) // it's going to be healing either 4 or 0.5
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/salbutamol
@@ -556,7 +560,7 @@
/datum/reagent/medicine/salbutamol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOxyLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update = affected_mob.adjust_oxy_loss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(affected_mob.losebreath >= 4)
var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type // use lungs' respiration type or mob_respiration_type if no lungs
@@ -630,8 +634,8 @@
if (current_cycle > secondary_overdose_effect_cycle_threshold)
if (SPT_PROB(30, seconds_per_tick))
carbon_mob.adjust_eye_blur_up_to(6 SECONDS, 30 SECONDS)
if (carbon_mob.getStaminaLoss() < maximum_od_stamina_damage)
carbon_mob.adjustStaminaLoss(seconds_per_tick)
if (carbon_mob.get_stamina_loss() < maximum_od_stamina_damage)
carbon_mob.adjust_stamina_loss(seconds_per_tick)
/datum/reagent/medicine/albuterol/proc/holder_lost_organ(datum/source, obj/item/organ/lost)
SIGNAL_HANDLER
@@ -680,7 +684,7 @@
affected_mob.set_jitter_if_lower(20 SECONDS)
affected_mob.AdjustAllImmobility(-20 * REM * seconds_per_tick * normalise_creation_purity())
affected_mob.adjustStaminaLoss(-4 * REM * seconds_per_tick * normalise_creation_purity(), updating_stamina = FALSE)
affected_mob.adjust_stamina_loss(-4 * REM * seconds_per_tick * normalise_creation_purity(), updating_stamina = FALSE)
return UPDATE_MOB_HEALTH
@@ -695,7 +699,7 @@
to_chat(affected_mob, span_notice("[pick("Your head pounds.", "You feel a tight pain in your chest.", "You find it hard to stay still.", "You feel your heart practically beating out of your chest.")]"))
if(SPT_PROB(18 * (1 + (1-normalise_creation_purity())), seconds_per_tick))
affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
affected_mob.losebreath++
return UPDATE_MOB_HEALTH
@@ -847,7 +851,7 @@
/datum/reagent/medicine/oculine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_EYES, 1.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_EYES, 1.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
. = UPDATE_MOB_HEALTH
/datum/reagent/medicine/oculine/flumpuline
@@ -956,10 +960,10 @@
. = ..()
if(affected_mob.health <= affected_mob.crit_threshold)
var/need_mob_update
need_mob_update = affected_mob.adjustToxLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustBruteLoss(-2* REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOxyLoss(-5 * 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 * 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(-5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(need_mob_update)
. = UPDATE_MOB_HEALTH
var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
@@ -972,14 +976,15 @@
/datum/reagent/medicine/atropine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustToxLoss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
. = UPDATE_MOB_HEALTH
affected_mob.set_dizzy_if_lower(2 SECONDS * REM * seconds_per_tick)
affected_mob.set_jitter_if_lower(2 SECONDS * REM * seconds_per_tick)
/datum/reagent/medicine/epinephrine
name = "Epinephrine"
description = "Very minor boost to stun resistance. Slowly heals damage if a patient is in critical condition, as well as regulating oxygen loss. Overdose causes weakness and toxin damage."
description = "Stabilizes and slowly heals patients in critical condition, and slows suffocation. \
Also provides a very minor boost to stun resistance. Overdose causes weakness and toxin damage."
color = "#D2FFFA"
metabolization_rate = 0.25 * REAGENTS_METABOLISM
overdose_threshold = 30
@@ -996,10 +1001,10 @@
var/need_mob_update
if(affected_mob.health <= affected_mob.crit_threshold)
need_mob_update = affected_mob.adjustToxLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustBruteLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOxyLoss(-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_tox_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
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_oxy_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(affected_mob.losebreath >= 4)
var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type
@@ -1009,7 +1014,7 @@
if(affected_mob.losebreath < 0)
affected_mob.losebreath = 0
need_mob_update = TRUE
need_mob_update += affected_mob.adjustStaminaLoss(-2 * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update += affected_mob.adjust_stamina_loss(-2 * REM * seconds_per_tick, updating_stamina = FALSE)
if(SPT_PROB(10, seconds_per_tick))
affected_mob.AdjustAllImmobility(-20)
need_mob_update = TRUE
@@ -1026,8 +1031,8 @@
. = ..()
if(SPT_PROB(18, REM * seconds_per_tick))
var/need_mob_update
need_mob_update = affected_mob.adjustStaminaLoss(2.5 * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update += affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update = affected_mob.adjust_stamina_loss(2.5 * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update += affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
var/obj/item/organ/lungs/affected_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
var/our_respiration_type = affected_lungs ? affected_lungs.respiration_type : affected_mob.mob_respiration_type
if(our_respiration_type & affected_respiration_type)
@@ -1074,7 +1079,7 @@
/// Calculates the amount of reagent to at a bare minimum make the target not dead
/datum/reagent/medicine/strange_reagent/proc/calculate_amount_needed_to_revive(mob/living/benefactor)
var/their_health = benefactor.getMaxHealth() - (benefactor.getBruteLoss() + benefactor.getFireLoss())
var/their_health = benefactor.getMaxHealth() - (benefactor.get_brute_loss() + benefactor.get_fire_loss())
if(their_health > 0)
return 1
@@ -1082,7 +1087,7 @@
/// Calculates the amount of reagent that will be needed to both revive and full heal the target. Looks at healing_per_reagent_unit and excess_healing_ratio
/datum/reagent/medicine/strange_reagent/proc/calculate_amount_needed_to_full_heal(mob/living/benefactor)
var/their_health = benefactor.getBruteLoss() + benefactor.getFireLoss()
var/their_health = benefactor.get_brute_loss() + benefactor.get_fire_loss()
var/max_health = benefactor.getMaxHealth()
if(their_health >= max_health)
return 1
@@ -1106,7 +1111,7 @@
exposed_mob.visible_message(span_warning("[exposed_mob]'s body lets off a puff of smoke..."))
return
if((exposed_mob.getBruteLoss() + exposed_mob.getFireLoss()) > (exposed_mob.getMaxHealth() * max_revive_damage_ratio))
if((exposed_mob.get_brute_loss() + exposed_mob.get_fire_loss()) > (exposed_mob.getMaxHealth() * max_revive_damage_ratio))
exposed_mob.visible_message(span_warning("[exposed_mob]'s body convulses violently, before falling still..."))
return
@@ -1146,8 +1151,8 @@
. = ..()
var/damage_at_random = rand(0, 250)/100 //0 to 2.5
var/need_mob_update
need_mob_update = affected_mob.adjustBruteLoss(damage_at_random * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(damage_at_random * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update = affected_mob.adjust_brute_loss(damage_at_random * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_fire_loss(damage_at_random * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1186,7 +1191,7 @@
/datum/reagent/medicine/mannitol/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, -2 * REM * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags))
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, -2 * REM * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/mannitol/overdose_start(mob/living/affected_mob)
@@ -1233,7 +1238,7 @@
return
var/mob/living/carbon/affected_carbon = affected_mob
if(initial_bdamage < affected_carbon.get_organ_loss(ORGAN_SLOT_BRAIN))
affected_carbon.setOrganLoss(ORGAN_SLOT_BRAIN, initial_bdamage)
affected_carbon.set_organ_loss(ORGAN_SLOT_BRAIN, initial_bdamage)
/datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
@@ -1244,7 +1249,7 @@
/datum/reagent/medicine/neurine/on_mob_dead(mob/living/carbon/affected_mob, seconds_per_tick)
. = ..()
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1 * REM * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags))
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, -1 * REM * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/mutadone
@@ -1299,7 +1304,7 @@
for(var/effect in status_effects_to_clear)
affected_mob.remove_status_effect(effect)
affected_mob.reagents.remove_reagent(/datum/reagent/consumable/ethanol, 8 * REM * seconds_per_tick * normalise_creation_purity(), include_subtypes = TRUE)
if(affected_mob.adjustToxLoss(-0.2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(-0.2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
. = UPDATE_MOB_HEALTH
affected_mob.adjust_drunk_effect(-10 * REM * seconds_per_tick * normalise_creation_purity())
@@ -1334,20 +1339,20 @@
. = ..()
if(affected_mob.health < 50 && affected_mob.health > 0)
var/need_mob_update
need_mob_update += affected_mob.adjustOxyLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustToxLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustBruteLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_oxy_loss(-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(-1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
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)
if(need_mob_update)
. = UPDATE_MOB_HEALTH
affected_mob.AdjustAllImmobility(-60 * REM * seconds_per_tick)
affected_mob.adjustStaminaLoss(-12 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
affected_mob.adjust_stamina_loss(-12 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
/datum/reagent/medicine/stimulants/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(SPT_PROB(18, seconds_per_tick))
affected_mob.adjustStaminaLoss(2.5, updating_stamina = FALSE, required_biotype = affected_biotype)
affected_mob.adjustToxLoss(1, updating_health = FALSE, required_biotype = affected_biotype)
affected_mob.adjust_stamina_loss(2.5, updating_stamina = FALSE, required_biotype = affected_biotype)
affected_mob.adjust_tox_loss(1, updating_health = FALSE, required_biotype = affected_biotype)
affected_mob.losebreath++
return UPDATE_MOB_HEALTH
@@ -1400,10 +1405,10 @@
/datum/reagent/medicine/regen_jelly/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustBruteLoss(-1.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-1.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOxyLoss(-1.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustToxLoss(-1.5 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) //heals TOXINLOVERs
need_mob_update = affected_mob.adjust_brute_loss(-1.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_fire_loss(-1.5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_oxy_loss(-1.5 * 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(-1.5 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) //heals TOXINLOVERs
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1418,11 +1423,11 @@
/datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustBruteLoss(-5 * REM * seconds_per_tick, updating_health = FALSE) //A ton of healing - this is a 50 telecrystal investment.
need_mob_update += affected_mob.adjustFireLoss(-5 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustOxyLoss(-15 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustToxLoss(-5 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, -15 * REM * seconds_per_tick)
need_mob_update = affected_mob.adjust_brute_loss(-5 * REM * seconds_per_tick, updating_health = FALSE) //A ton of healing - this is a 50 telecrystal investment.
need_mob_update += affected_mob.adjust_fire_loss(-5 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjust_oxy_loss(-15 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjust_tox_loss(-5 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, -15 * REM * seconds_per_tick)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1447,19 +1452,19 @@
. = ..()
var/need_mob_update
if(current_cycle < 25) //10u has to be processed before u get into THE FUN ZONE
need_mob_update = affected_mob.adjustBruteLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-1 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOxyLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustToxLoss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustStaminaLoss(-2 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1 * REM * seconds_per_tick, 150, affected_organ_flags) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that!
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_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_tox_loss(-0.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
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_organ_loss(ORGAN_SLOT_BRAIN, 1 * REM * seconds_per_tick, 150, affected_organ_flags) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that!
else
need_mob_update = affected_mob.adjustBruteLoss(-5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) //slow to start, but very quick healing once it gets going
need_mob_update += affected_mob.adjustFireLoss(-5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustOxyLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustToxLoss(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustStaminaLoss(-8 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2 * REM * seconds_per_tick, 150, affected_organ_flags)
need_mob_update = affected_mob.adjust_brute_loss(-5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype) //slow to start, but very quick healing once it gets going
need_mob_update += affected_mob.adjust_fire_loss(-5 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_oxy_loss(-3 * 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(-3 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_stamina_loss(-8 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 2 * REM * seconds_per_tick, 150, affected_organ_flags)
affected_mob.adjust_jitter_up_to(6 SECONDS * REM * seconds_per_tick, 1 MINUTES)
if(SPT_PROB(5, seconds_per_tick))
affected_mob.say(return_hippie_line(), forced = /datum/reagent/medicine/earthsblood)
@@ -1472,9 +1477,9 @@
affected_mob.adjust_hallucinations_up_to(10 SECONDS * REM * seconds_per_tick, 120 SECONDS)
var/need_mob_update
if(current_cycle > 26)
need_mob_update = affected_mob.adjustToxLoss(4 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update = affected_mob.adjust_tox_loss(4 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
if(current_cycle > 101) //podpeople get out reeeeeeeeeeeeeeeeeeeee
need_mob_update += affected_mob.adjustToxLoss(6 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_tox_loss(6 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
if(iscarbon(affected_mob))
var/mob/living/carbon/hippie = affected_mob
hippie.gain_trauma(/datum/brain_trauma/severe/pacifism)
@@ -1515,13 +1520,13 @@
if (affected_mob.get_timed_status_effect_duration(/datum/status_effect/hallucination) >= 10 SECONDS)
affected_mob.adjust_hallucinations(-10 SECONDS * REM * seconds_per_tick)
if(affected_mob.getStaminaLoss() >= 100)
if(affected_mob.get_stamina_loss() >= 100)
affected_mob.reagents.remove_reagent(type, metabolization_rate * REM * seconds_per_tick)
var/need_mob_update = FALSE
if(SPT_PROB(10, seconds_per_tick))
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1, 50, affected_organ_flags)
need_mob_update += affected_mob.adjustStaminaLoss(2.5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 1, 50, affected_organ_flags)
need_mob_update += affected_mob.adjust_stamina_loss(2.5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1536,7 +1541,7 @@
/datum/reagent/medicine/changelingadrenaline/on_mob_life(mob/living/carbon/metabolizer, seconds_per_tick, times_fired)
. = ..()
metabolizer.AdjustAllImmobility(-20 * REM * seconds_per_tick)
if(metabolizer.adjustStaminaLoss(-30 * REM * seconds_per_tick, updating_stamina = FALSE))
if(metabolizer.adjust_stamina_loss(-30 * REM * seconds_per_tick, updating_stamina = FALSE))
. = UPDATE_MOB_HEALTH
metabolizer.set_jitter_if_lower(20 SECONDS * REM * seconds_per_tick)
metabolizer.set_dizzy_if_lower(20 SECONDS * REM * seconds_per_tick)
@@ -1557,14 +1562,14 @@
/datum/reagent/medicine/changelingadrenaline/proc/on_stamcrit(mob/living/affected_mob)
SIGNAL_HANDLER
affected_mob?.setStaminaLoss(90, updating_stamina = TRUE)
affected_mob?.set_stamina_loss(90, updating_stamina = TRUE)
to_chat(affected_mob, span_changeling("Our gene-stim flares! We are invigorated, but its potency wanes."))
volume -= (min(volume, 1))
return STAMCRIT_CANCELLED
/datum/reagent/medicine/changelingadrenaline/overdose_process(mob/living/metabolizer, seconds_per_tick, times_fired)
. = ..()
if(metabolizer.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE))
if(metabolizer.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/changelinghaste
@@ -1584,7 +1589,7 @@
/datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/metabolizer, seconds_per_tick, times_fired)
. = ..()
if(metabolizer.adjustToxLoss(2 * REM * seconds_per_tick, updating_health = FALSE))
if(metabolizer.adjust_tox_loss(2 * REM * seconds_per_tick, updating_health = FALSE))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/higadrite
@@ -1642,7 +1647,7 @@
return
overdose_threshold = overdose_threshold + ((rand(-10, 10) / 10) * REM * seconds_per_tick) // for extra fun
metabolizer.AdjustAllImmobility(-5 * REM * seconds_per_tick)
metabolizer.adjustStaminaLoss(-3 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
metabolizer.adjust_stamina_loss(-3 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
metabolizer.set_jitter_if_lower(1 SECONDS * REM * seconds_per_tick)
metabolization_rate = 0.005 * REAGENTS_METABOLISM * rand(5, 20) // randomizes metabolism between 0.02 and 0.08 per second
return UPDATE_MOB_HEALTH
@@ -1665,8 +1670,8 @@
affected_mob.losebreath++
need_mob_update = TRUE
if(41 to 80)
need_mob_update = affected_mob.adjustOxyLoss(0.1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustStaminaLoss(0.1 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update = affected_mob.adjust_oxy_loss(0.1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjust_stamina_loss(0.1 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
affected_mob.adjust_jitter_up_to(2 SECONDS * REM * seconds_per_tick, 40 SECONDS)
affected_mob.adjust_stutter_up_to(2 SECONDS * REM * seconds_per_tick, 40 SECONDS)
affected_mob.set_dizzy_if_lower(20 SECONDS * REM * seconds_per_tick)
@@ -1679,13 +1684,13 @@
affected_mob.Paralyze(20) // you should be in a bad spot at this point unless epipen has been used
if(81)
to_chat(affected_mob, span_userdanger("You feel too exhausted to continue!")) // at this point you will eventually die unless you get charcoal
need_mob_update = affected_mob.adjustOxyLoss(0.1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustStaminaLoss(0.1 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update = affected_mob.adjust_oxy_loss(0.1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjust_stamina_loss(0.1 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
if(82 to INFINITY)
REMOVE_TRAIT(affected_mob, TRAIT_SLEEPIMMUNE, type)
affected_mob.Sleeping(100 * REM * seconds_per_tick)
need_mob_update += affected_mob.adjustOxyLoss(1.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustStaminaLoss(1.5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_oxy_loss(1.5 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjust_stamina_loss(1.5 * REM * seconds_per_tick, updating_stamina = FALSE, required_biotype = affected_biotype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1711,7 +1716,7 @@
/datum/reagent/medicine/psicodine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.adjust_hallucinations_up_to(10 SECONDS * REM * seconds_per_tick, 120 SECONDS)
if(affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/metafactor
@@ -1742,7 +1747,7 @@
/datum/reagent/medicine/silibinin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_LIVER, -2 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)) // Add a chance to cure liver trauma once implemented.
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, -2 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)) // Add a chance to cure liver trauma once implemented.
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/polypyr //This is intended to be an ingredient in advanced chems.
@@ -1757,8 +1762,8 @@
/datum/reagent/medicine/polypyr/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired) //I wanted a collection of small positive effects, this is as hard to obtain as coniine after all.
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_LUNGS, -0.25 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update += affected_mob.adjustBruteLoss(-0.35 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LUNGS, -0.25 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update += affected_mob.adjust_brute_loss(-0.35 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1771,7 +1776,7 @@
/datum/reagent/medicine/polypyr/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_LUNGS, 0.5 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags))
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/granibitaluri
@@ -1785,18 +1790,18 @@
/datum/reagent/medicine/granibitaluri/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/healamount = max(0.5 - round(0.01 * (affected_mob.getBruteLoss() + affected_mob.getFireLoss()), 0.1), 0) //base of 0.5 healing per cycle and loses 0.1 healing for every 10 combined brute/burn damage you have
var/healamount = max(0.5 - round(0.01 * (affected_mob.get_brute_loss() + affected_mob.get_fire_loss()), 0.1), 0) //base of 0.5 healing per cycle and loses 0.1 healing for every 10 combined brute/burn damage you have
var/need_mob_update
need_mob_update = affected_mob.adjustBruteLoss(-healamount * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-healamount * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update = affected_mob.adjust_brute_loss(-healamount * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjust_fire_loss(-healamount * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
/datum/reagent/medicine/granibitaluri/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.2 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update += affected_mob.adjustToxLoss(0.2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) //Only really deadly if you eat over 100u
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_LIVER, 0.2 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update += affected_mob.adjust_tox_loss(0.2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype) //Only really deadly if you eat over 100u
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1832,7 +1837,7 @@
/datum/reagent/medicine/coagulant/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(!affected_mob.blood_volume || !affected_mob.all_wounds)
if(!CAN_HAVE_BLOOD(affected_mob) || !affected_mob.all_wounds)
return
var/datum/wound/bloodiest_wound
@@ -1853,7 +1858,7 @@
/datum/reagent/medicine/coagulant/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(!affected_mob.blood_volume)
if(!CAN_HAVE_BLOOD(affected_mob))
return
// SKYRAT EDIT CHANGE BEGIN -- Adds check for owner_flags
@@ -1866,12 +1871,12 @@
// SKYRAT EDIT CHANGE END
if(SPT_PROB(7.5, seconds_per_tick))
affected_mob.losebreath += rand(2, 4)
affected_mob.adjustOxyLoss(rand(1, 3), updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
affected_mob.adjust_oxy_loss(rand(1, 3), updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(prob(30))
to_chat(affected_mob, span_danger("You can feel your blood clotting up in your veins!"))
else if(prob(10))
to_chat(affected_mob, span_userdanger("You feel like your blood has stopped moving!"))
affected_mob.adjustOxyLoss(rand(3, 4) * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
affected_mob.adjust_oxy_loss(rand(3, 4) * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(prob(50))
var/obj/item/organ/lungs/our_lungs = affected_mob.get_organ_slot(ORGAN_SLOT_LUNGS)
@@ -1926,8 +1931,8 @@
. = ..()
if(SPT_PROB(8, seconds_per_tick))
affected_mob.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick)
if(SPT_PROB(15, seconds_per_tick) && !affected_mob.getStaminaLoss())
if(affected_mob.adjustStaminaLoss(10 * REM * seconds_per_tick, updating_stamina = FALSE))
if(SPT_PROB(15, seconds_per_tick) && !affected_mob.get_stamina_loss())
if(affected_mob.adjust_stamina_loss(10 * REM * seconds_per_tick, updating_stamina = FALSE))
. = UPDATE_MOB_HEALTH
affected_mob.adjust_disgust(-10 * REM * seconds_per_tick)
@@ -233,16 +233,15 @@
liver.apply_organ_damage(-healing_bonus * REM * seconds_per_tick)
var/water_adaptation = HAS_TRAIT(affected_mob, TRAIT_WATER_ADAPTATION)
if(affected_mob.blood_volume)
var/blood_restored = water_adaptation ? 0.3 : 0.1
affected_mob.blood_volume += blood_restored * REM * seconds_per_tick // water is good for you!
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!
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!!
if(water_adaptation)
var/need_mob_update = FALSE
need_mob_update = affected_mob.adjustToxLoss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustFireLoss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustBruteLoss(-0.25 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
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)
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.
@@ -366,7 +365,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.adjustFireLoss(3 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjust_fire_loss(3 * REM * seconds_per_tick, updating_health = FALSE)
if(data["deciseconds_metabolized"] >= (1 MINUTES)) // 24 units
if(IS_CULTIST(affected_mob))
@@ -374,7 +373,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.adjustFireLoss(10 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjust_fire_loss(10 * REM * 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)
@@ -442,7 +441,7 @@
var/damage_to_inflict = 2 * max(1 - touch_protection, 0)
if(damage_to_inflict)
exposed_mob.adjustFireLoss(damage_to_inflict)
exposed_mob.adjust_fire_loss(damage_to_inflict)
/datum/reagent/fuel/unholywater //if you somehow managed to extract this from someone, dont splash it on yourself and have a smoke
name = "Unholy Water"
@@ -466,14 +465,14 @@
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.adjustStaminaLoss(-10 * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update += affected_mob.adjustToxLoss(-2 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustOxyLoss(-2 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustBruteLoss(-2 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustFireLoss(-2 * REM * seconds_per_tick, updating_health = FALSE)
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
if(ishuman(affected_mob) && affected_mob.blood_volume < BLOOD_VOLUME_NORMAL)
affected_mob.blood_volume += 3 * REM * seconds_per_tick
if(ishuman(affected_mob))
affected_mob.adjust_blood_volume(3 * REM * seconds_per_tick, maximum = BLOOD_VOLUME_NORMAL)
var/datum/wound/bloodiest_wound
@@ -485,11 +484,11 @@
bloodiest_wound.adjust_blood_flow(-2 * REM * seconds_per_tick)
else // Will deal about 90 damage when 50 units are thrown
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3 * REM * seconds_per_tick, 150)
need_mob_update += affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustFireLoss(1 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustOxyLoss(1 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustBruteLoss(1 * REM * seconds_per_tick, updating_health = FALSE)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -509,9 +508,9 @@
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
var/need_mob_update
need_mob_update = affected_mob.adjustToxLoss(0.5*seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustFireLoss(0.5*seconds_per_tick, updating_health = FALSE) //Hence the other damages... ain't I a bastard?
affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2.5*seconds_per_tick, 150)
need_mob_update = affected_mob.adjust_tox_loss(0.5*seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjust_fire_loss(0.5*seconds_per_tick, updating_health = FALSE) //Hence the other damages... ain't I a bastard?
affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 2.5*seconds_per_tick, 150)
if(holder)
holder.remove_reagent(type, 0.5 * seconds_per_tick)
if(need_mob_update)
@@ -983,7 +982,7 @@
step(affected_mob, pick(GLOB.cardinals))
if(SPT_PROB(3.5, seconds_per_tick))
affected_mob.emote(pick("twitch","drool","moan"))
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5*seconds_per_tick))
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5*seconds_per_tick))
return UPDATE_MOB_HEALTH
/datum/reagent/sulfur
@@ -1049,7 +1048,7 @@
/datum/reagent/fluorine/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustToxLoss(0.5*REM*seconds_per_tick, updating_health = FALSE))
if(affected_mob.adjust_tox_loss(0.5*REM*seconds_per_tick, updating_health = FALSE))
return UPDATE_MOB_HEALTH
/datum/reagent/sodium
@@ -1091,7 +1090,7 @@
/datum/reagent/glycerol
name = "Glycerol"
description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity."
description = "A simple polyol compound. Sweet-tasting and of low toxicity."
color = "#D3B913"
taste_description = "sweetness"
ph = 9
@@ -1164,7 +1163,7 @@
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)
if(affected_mob.adjustToxLoss(tox_damage * seconds_per_tick * REM, updating_health = FALSE))
if(affected_mob.adjust_tox_loss(tox_damage * seconds_per_tick * REM, updating_health = FALSE))
return UPDATE_MOB_HEALTH
/datum/reagent/uranium/expose_obj(obj/exposed_obj, reac_volume, methods=TOUCH, show_message=TRUE)
@@ -1310,7 +1309,7 @@
var/obj/item/organ/liver/liver = victim.get_organ_slot(ORGAN_SLOT_LIVER)
if(liver && HAS_TRAIT(liver, TRAIT_HUMAN_AI_METABOLISM))
return
if(victim.adjustToxLoss(0.5 * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(victim.adjust_tox_loss(0.5 * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/fuel/expose_turf(turf/exposed_turf, reac_volume)
@@ -1349,7 +1348,7 @@
exposed_turf.wash(clean_types, TRUE)
for(var/mob/living/basic/slime/exposed_slime in exposed_turf)
exposed_slime.adjustToxLoss(rand(5,10))
exposed_slime.adjust_tox_loss(rand(5,10))
/datum/reagent/space_cleaner/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message=TRUE, touch_protection=0)
. = ..()
@@ -1377,9 +1376,9 @@
/datum/reagent/space_cleaner/ez_clean/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustBruteLoss(1.665*seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustFireLoss(1.665*seconds_per_tick, updating_health = FALSE)
need_mob_update += affected_mob.adjustToxLoss(1.665*seconds_per_tick, updating_health = FALSE)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -1391,8 +1390,8 @@
var/damage_to_inflict = 1.5 * max(1 - touch_protection, 0)
if(damage_to_inflict)
exposed_mob.adjustBruteLoss(damage_to_inflict)
exposed_mob.adjustFireLoss(damage_to_inflict)
exposed_mob.adjust_brute_loss(damage_to_inflict)
exposed_mob.adjust_fire_loss(damage_to_inflict)
/datum/reagent/cryptobiolin
name = "Cryptobiolin"
@@ -1418,7 +1417,7 @@
/datum/reagent/impedrezene
name = "Impedrezene"
description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions."
description = "A narcotic that impedes one's ability by slowing down the higher brain cell functions."
color = "#E07DDD" // pink = happy = dumb
taste_description = "numbness"
ph = 9.1
@@ -1429,7 +1428,7 @@
. = ..()
affected_mob.adjust_jitter(-5 SECONDS * seconds_per_tick)
if(SPT_PROB(55, seconds_per_tick))
affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2)
affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 2)
. = TRUE
if(SPT_PROB(30, seconds_per_tick))
affected_mob.adjust_drowsiness(6 SECONDS)
@@ -1582,7 +1581,7 @@
var/drowsiness_to_apply = max(round(reac_volume, 1) * 2 SECONDS * (1 - touch_protection), 4 SECONDS)
exposed_mob.adjust_drowsiness(drowsiness_to_apply)
if(methods & INHALE)
exposed_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.25 * reac_volume, required_organ_flag = affected_organ_flags)
exposed_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.25 * reac_volume, required_organ_flag = affected_organ_flags)
exposed_mob.adjust_hallucinations(10 SECONDS * reac_volume)
/datum/reagent/nitrous_oxide/on_mob_metabolize(mob/living/affected_mob)
@@ -1752,7 +1751,7 @@
/datum/reagent/plantnutriment/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(SPT_PROB(tox_prob, seconds_per_tick))
if(affected_mob.adjustToxLoss(1, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/plantnutriment/eznutriment
@@ -2089,21 +2088,21 @@
/datum/reagent/pentaerythritol
name = "Pentaerythritol"
description = "Slow down, it ain't no spelling bee!"
color = "#E66FFF"
description = "A crystalline compound used in the synthesis of explosives and other chemicals."
color = "#EEEEEF"
taste_description = "acid"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/acetaldehyde
name = "Acetaldehyde"
description = "Similar to plastic. Tastes like dead people."
description = "A colorless liquid with a strong smell. Used in the synthesis of other chemicals."
color = "#EEEEEF"
taste_description = "dead people" //made from formaldehyde, ya get da joke ?
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
/datum/reagent/acetone_oxide
name = "Acetone Oxide"
description = "Enslaved oxygen"
description = "A highly reactive compoud derived from acetone. Known to cause burns on contact. Used in the synthesis of various explosives."
color = "#966199cb"
taste_description = "acid"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
@@ -2116,7 +2115,7 @@
var/damage_to_inflict = 2 * max(1 - touch_protection, 0)
if(damage_to_inflict)
exposed_mob.adjustFireLoss(damage_to_inflict)
exposed_mob.adjust_fire_loss(damage_to_inflict)
exposed_mob.adjust_fire_stacks((reac_volume / 10))
@@ -2130,7 +2129,7 @@
/datum/reagent/ash
name = "Ash"
description = "Supposedly phoenixes rise from these, but you've never seen it."
description = "A fine ash. Supposedly phoenixes rise from these, but you've never seen it."
color = "#515151"
taste_description = "ash"
ph = 6.5
@@ -2572,7 +2571,7 @@
/datum/reagent/plastic_polymers
name = "Plastic Polymers"
description = "the petroleum based components of plastic."
description = "Petroleum based components of plastic."
color = "#f7eded"
taste_description = "plastic"
ph = 6
@@ -2705,8 +2704,8 @@
. = ..()
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.getStaminaLoss() < (45 - healthcomp)) //At 50 health you would have 200 - 150 health meaning 50 compensation. 60 - 50 = 10, so would only do 10-19 stamina.)
if(affected_mob.adjustStaminaLoss(10 * REM * seconds_per_tick, updating_stamina = 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))
. = UPDATE_MOB_HEALTH
if(SPT_PROB(16, seconds_per_tick))
to_chat(affected_mob, "You should sit down and take a rest...")
@@ -2911,7 +2910,7 @@
for(var/thing in affected_mob.all_wounds)
var/datum/wound/W = thing
stam_crash += (W.severity + 1) * 3 // spike of 3 stam damage per wound severity (moderate = 6, severe = 9, critical = 12) when the determination wears off if it was a combat rush
affected_mob.adjustStaminaLoss(stam_crash)
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, times_fired)
@@ -2927,7 +2926,7 @@
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.adjustStaminaLoss(-1 * REM * seconds_per_tick, updating_stamina = FALSE)) // the more wounds, the more stamina regen
if(affected_mob.adjust_stamina_loss(-1 * REM * seconds_per_tick, updating_stamina = FALSE)) // the more wounds, the more stamina regen
return UPDATE_MOB_HEALTH
// unholy water, but for heretics.
@@ -2952,13 +2951,12 @@
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.adjustStaminaLoss(-10 * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update += drinker.adjustToxLoss(-2 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE)
need_mob_update += drinker.adjustOxyLoss(-2 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += drinker.adjustBruteLoss(-2 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += drinker.adjustFireLoss(-2 * REM * seconds_per_tick, updating_health = FALSE)
if(drinker.blood_volume < BLOOD_VOLUME_NORMAL)
drinker.blood_volume += 3 * 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)
// 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)
@@ -2970,11 +2968,11 @@
drinker.heal_bodypart_damage(heal_amount, heal_amount, required_bodytype = BODYTYPE_ROBOTIC)
// BUBBER EDIT END
else
need_mob_update = drinker.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3 * REM * seconds_per_tick, 150)
need_mob_update += drinker.adjustToxLoss(2 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += drinker.adjustFireLoss(2 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += drinker.adjustOxyLoss(2 * REM * seconds_per_tick, updating_health = FALSE)
need_mob_update += drinker.adjustBruteLoss(2 * REM * seconds_per_tick, updating_health = FALSE)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -3033,7 +3031,7 @@
/datum/reagent/ants/on_mob_life(mob/living/carbon/victim, seconds_per_tick)
. = ..()
victim.adjustBruteLoss(max(0.1, round((ant_ticks * ant_damage),0.1))) //Scales with time. Roughly 32 brute with 100u.
victim.adjust_brute_loss(max(0.1, round((ant_ticks * ant_damage),0.1))) //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
@@ -3118,7 +3116,7 @@
/datum/reagent/lead/on_mob_life(mob/living/carbon/victim)
. = ..()
if(victim.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5))
if(victim.adjust_organ_loss(ORGAN_SLOT_BRAIN, 0.5))
return UPDATE_MOB_HEALTH
//The main feedstock for kronkaine production, also a shitty stamina healer.
@@ -3134,8 +3132,8 @@
/datum/reagent/kronkus_extract/on_mob_life(mob/living/carbon/kronkus_enjoyer, seconds_per_tick)
. = ..()
var/need_mob_update
need_mob_update = kronkus_enjoyer.adjustOrganLoss(ORGAN_SLOT_HEART, 0.2 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags)
need_mob_update += kronkus_enjoyer.adjustStaminaLoss(-6, updating_stamina = FALSE)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -3148,7 +3146,7 @@
/datum/reagent/brimdust/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustFireLoss((ispodperson(affected_mob) ? -1 : 1 * seconds_per_tick), updating_health = FALSE))
if(affected_mob.adjust_fire_loss((ispodperson(affected_mob) ? -1 : 1 * seconds_per_tick), updating_health = FALSE))
return UPDATE_MOB_HEALTH
/datum/reagent/brimdust/on_hydroponics_apply(obj/machinery/hydroponics/mytray, mob/user)
@@ -3232,7 +3230,7 @@
affected_mob.AdjustParalyzed(-5 SECONDS * REM * seconds_per_tick)
affected_mob.AdjustImmobilized(-5 SECONDS * REM * seconds_per_tick)
else
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART, REM * seconds_per_tick)) //1 heart damage per tick
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, REM * 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"))
@@ -3301,7 +3299,7 @@
added_light = TRUE
if (SPT_PROB(8, seconds_per_tick))
if(affected_mob.adjustToxLoss(1, updating_health = FALSE))
if(affected_mob.adjust_tox_loss(1, updating_health = FALSE))
return UPDATE_MOB_HEALTH
/datum/reagent/luminescent_fluid/proc/on_organ_added(mob/living/source, obj/item/organ/eyes/new_eyes)
@@ -13,7 +13,7 @@
/datum/reagent/thermite/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustFireLoss(1 * REM * seconds_per_tick, updating_health = FALSE))
if(affected_mob.adjust_fire_loss(1 * REM * seconds_per_tick, updating_health = FALSE))
return UPDATE_MOB_HEALTH
/datum/reagent/nitroglycerin
@@ -26,7 +26,7 @@
/datum/reagent/nitroglycerin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(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, -1 * REM * seconds_per_tick * normalise_creation_purity(), required_organ_flag = affected_organ_flags))
return UPDATE_MOB_HEALTH
/datum/reagent/stabilizing_agent
@@ -42,7 +42,7 @@
/datum/reagent/clf3
name = "Chlorine Trifluoride"
description = "Makes a temporary 3x3 fireball when it comes into existence, so be careful when mixing. ClF3 applied to a surface burns things that wouldn't otherwise burn, sometimes through the very floors of the station and exposing it to the vacuum of space."
description = "A very flammable liquid capable of burning even through the hull of the station. Bursts into a fireball upon creation."
color = "#FFC8C8"
metabolization_rate = 10 * REAGENTS_METABOLISM
taste_description = "burning"
@@ -52,7 +52,7 @@
/datum/reagent/clf3/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.adjust_fire_stacks(2 * REM * seconds_per_tick)
if(affected_mob.adjustFireLoss(0.3 * max(affected_mob.fire_stacks, 1) * REM * seconds_per_tick, updating_health = FALSE))
if(affected_mob.adjust_fire_loss(0.3 * max(affected_mob.fire_stacks, 1) * REM * seconds_per_tick, updating_health = FALSE))
return UPDATE_MOB_HEALTH
/datum/reagent/clf3/expose_turf(turf/exposed_turf, reac_volume)
@@ -168,13 +168,13 @@
exposed_mob.adjust_fire_stacks(1)
var/burndmg = max(0.3*exposed_mob.fire_stacks * (1 - touch_protection), 0.3)
if(burndmg)
exposed_mob.adjustFireLoss(burndmg, 0)
exposed_mob.adjust_fire_loss(burndmg, 0)
exposed_mob.ignite_mob()
/datum/reagent/phlogiston/on_mob_life(mob/living/carbon/metabolizer, seconds_per_tick, times_fired)
. = ..()
metabolizer.adjust_fire_stacks(1 * REM * seconds_per_tick)
if(metabolizer.adjustFireLoss(0.3 * max(metabolizer.fire_stacks, 0.15) * REM * seconds_per_tick, updating_health = FALSE))
if(metabolizer.adjust_fire_loss(0.3 * max(metabolizer.fire_stacks, 0.15) * REM * seconds_per_tick, updating_health = FALSE))
return UPDATE_MOB_HEALTH
/datum/reagent/napalm
@@ -256,7 +256,7 @@
if(reac_volume < 5)
return
for(var/mob/living/basic/slime/exposed_slime in exposed_turf)
exposed_slime.adjustToxLoss(rand(15,30))
exposed_slime.adjust_tox_loss(rand(15,30))
#undef CRYO_SPEED_PREFACTOR
#undef CRYO_SPEED_CONSTANT
@@ -338,7 +338,7 @@
if(!isjellyperson(affected_mob)) //everyone but jellypeople get shocked as normal.
return ..()
affected_mob.AdjustAllImmobility(-40 *REM * seconds_per_tick)
if(affected_mob.adjustStaminaLoss(-10 * REM * seconds_per_tick, updating_stamina = FALSE))
if(affected_mob.adjust_stamina_loss(-10 * REM * 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
@@ -156,19 +156,35 @@
if(!.)
return
for(var/_reagent in target.reagent_list)
var/datum/reagent/reaction_agent/reagent = _reagent
var/conversion_buffer = amount * 10 //Converts up to 10 units of reagent per 1 unit of inversing buffer.
var/converted = 0
var/list/cached_reagents = target.reagent_list.Copy()
for(var/datum/reagent/reagent as anything in cached_reagents)
if(!conversion_buffer)
return
if(reagent.purity <= reagent.inverse_chem_val)
target.my_atom.audible_message(span_warning("The beaker goes into a rolling boil as the contents begin inversing!"))
playsound(target.my_atom, 'sound/effects/chemistry/catalyst.ogg', 50, TRUE)
var/converted = min(reagent.volume, amount * 10)//Converts up to 10 units of reagent per 1 unit of inversing buffer.
if(converted > 0)
target.remove_reagent(reagent.type, converted, safety = FALSE)
target.add_reagent(reagent.inverse_chem, converted, FALSE, added_purity = reagent.get_inverse_purity(reagent.purity))
volume -= amount
holder.update_total()
break
else
target.my_atom.audible_message(span_warning("The buffer quietly fizzles away with no effect."))
volume -= amount
holder.update_total()
//compute volume of reagent to be converted
converted = min(reagent.volume, conversion_buffer)
//remove original reagent from target
reagent.volume -= converted
target.update_total()
//add new inverse reagent to target
target.add_reagent(reagent.inverse_chem, converted, FALSE, added_purity = reagent.get_inverse_purity(reagent.purity))
//remove from buffer remaining
conversion_buffer -= converted
//audible feedback
if(conversion_buffer < amount * 10)
target.my_atom.audible_message(span_warning("The beaker goes into a rolling boil as the contents begin inversing!"))
playsound(target.my_atom, 'sound/effects/chemistry/catalyst.ogg', 50, TRUE)
else
target.my_atom.audible_message(span_warning("The buffer fizzles with no effect."))
//remove inversening reagent based on total buffer removed
var/volume_to_transfer = amount - (amount * (1 - (conversion_buffer / (amount * 10))))
if(volume_to_transfer)
target.add_reagent(type, volume_to_transfer, reagtemp = holder.chem_temp, added_purity = purity, added_ph = ph)
if(!copy_only)
volume -= amount
holder.update_total()
@@ -26,7 +26,7 @@
/datum/reagent/toxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(toxpwr && affected_mob.health > health_required)
if(affected_mob.adjustToxLoss(toxpwr * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(toxpwr * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/toxin/amatoxin
@@ -67,7 +67,7 @@
/datum/reagent/toxin/mutagen/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustToxLoss(0.5 * seconds_per_tick * REM, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(0.5 * seconds_per_tick * REM, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/toxin/mutagen/on_hydroponics_apply(obj/machinery/hydroponics/mytray, mob/user)
@@ -193,7 +193,7 @@
/datum/reagent/toxin/lexorin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(!HAS_TRAIT(affected_mob, TRAIT_NOBREATH))
affected_mob.adjustOxyLoss(5 * REM * normalise_creation_purity() * seconds_per_tick, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
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
. = UPDATE_MOB_HEALTH
if(SPT_PROB(10, seconds_per_tick))
@@ -225,7 +225,7 @@
. = ..()
if(SPT_PROB(5, seconds_per_tick))
to_chat(affected_mob, span_danger("Your insides are burning!"))
if(affected_mob.adjustToxLoss(rand(20, 60), updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(rand(20, 60), 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))
@@ -248,7 +248,7 @@
/datum/reagent/toxin/zombiepowder
name = "Zombie Powder"
description = "A strong neurotoxin that puts the subject into a death-like state."
description = "A strong neurotoxin that puts the patient into a death-like state."
silent_toxin = TRUE
creation_purity = REAGENT_STANDARD_PURITY
purity = REAGENT_STANDARD_PURITY
@@ -280,9 +280,9 @@
/datum/reagent/toxin/zombiepowder/proc/zombify(mob/living/holder_mob)
PRIVATE_PROC(TRUE)
holder_mob.adjustOxyLoss(0.5*REM, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
holder_mob.adjust_oxy_loss(0.5*REM, FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if((data?["method"] & (INGEST|INHALE)) && holder_mob.stat != DEAD)
holder_mob.fakedeath(type)
holder_mob.apply_status_effect(/datum/status_effect/reagent_effect/fakedeath, type)
/datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/holder_mob)
. = ..()
@@ -290,7 +290,7 @@
/datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/affected_mob)
. = ..()
affected_mob.cure_fakedeath(type)
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, times_fired)
. = ..()
@@ -303,7 +303,7 @@
affected_mob.adjust_drowsiness(2 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_slurring(6 SECONDS * REM * seconds_per_tick)
if(6 to 9)
need_mob_update = affected_mob.adjustStaminaLoss(40 * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update = affected_mob.adjust_stamina_loss(40 * REM * seconds_per_tick, updating_stamina = FALSE)
if(10 to INFINITY)
if(affected_mob.stat != DEAD)
affected_mob.fakedeath(type)
@@ -324,7 +324,7 @@
/datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOxyLoss(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(1 * REM * 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
@@ -399,7 +399,7 @@
var/damage = min(round(0.4 * reac_volume, 0.1), 10)
if(exposed_mob.mob_biotypes & MOB_PLANT)
// spray bottle emits 5u so it's dealing ~15 dmg per spray
if(exposed_mob.adjustToxLoss(damage * 20, required_biotype = affected_biotype))
if(exposed_mob.adjust_tox_loss(damage * 20, required_biotype = affected_biotype))
return
if(!(methods & VAPOR) || !iscarbon(exposed_mob))
@@ -407,7 +407,7 @@
var/mob/living/carbon/exposed_carbon = exposed_mob
if(!exposed_carbon.wear_mask)
exposed_carbon.adjustToxLoss(damage, required_biotype = affected_biotype)
exposed_carbon.adjust_tox_loss(damage, required_biotype = affected_biotype)
/datum/reagent/toxin/plantbgone/weedkiller
name = "Weed Killer"
@@ -435,7 +435,7 @@
/datum/reagent/toxin/pestkiller/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustToxLoss(2 * toxpwr * REM * seconds_per_tick, updating_health = FALSE, required_biotype = MOB_BUG))
if(affected_mob.adjust_tox_loss(2 * toxpwr * REM * seconds_per_tick, updating_health = FALSE, required_biotype = MOB_BUG))
return UPDATE_MOB_HEALTH
//Pest Spray
@@ -521,7 +521,7 @@
affected_mob.Sleeping(40 * REM * normalise_creation_purity() * seconds_per_tick)
if(52 to INFINITY)
affected_mob.Sleeping(40 * REM * normalise_creation_purity() * seconds_per_tick)
if(affected_mob.adjustToxLoss(1 * (current_cycle - 51) * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1 * (current_cycle - 51) * REM * normalise_creation_purity() * 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
@@ -552,7 +552,7 @@
affected_mob.Sleeping(40 * REM * seconds_per_tick)
if(52 to INFINITY)
affected_mob.Sleeping(40 * REM * seconds_per_tick)
if(affected_mob.adjustToxLoss(1 * (current_cycle - 50) * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1 * (current_cycle - 50) * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
return UPDATE_MOB_HEALTH
/datum/reagent/toxin/coffeepowder
@@ -611,7 +611,7 @@
/datum/reagent/toxin/staminatoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustStaminaLoss(data * REM * seconds_per_tick, updating_stamina = FALSE))
if(affected_mob.adjust_stamina_loss(data * REM * seconds_per_tick, updating_stamina = FALSE))
. = UPDATE_MOB_HEALTH
data = max(data - 1, 3)
@@ -632,7 +632,7 @@
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.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1 * REM * 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)
@@ -691,21 +691,22 @@
if(4)
if(prob(75))
to_chat(affected_mob, span_danger("You scratch at an itch."))
if(affected_mob.adjustBruteLoss(2* REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
if(affected_mob.adjust_brute_loss(2* REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
return UPDATE_MOB_HEALTH
/datum/reagent/toxin/histamine/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOxyLoss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update += affected_mob.adjustBruteLoss(2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustToxLoss(2 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
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)
if(need_mob_update)
return UPDATE_MOB_HEALTH
/datum/reagent/toxin/formaldehyde
name = "Formaldehyde"
description = "Formaldehyde, on its own, is a fairly weak toxin. It contains trace amounts of Histamine, very rarely making it decay into Histamine. When used in a dead body, will prevent organ decay."
description = "A fairly weak toxin that helps prevent organ decay in dead bodies. \
It will slowly decay into Histamine over time."
silent_toxin = TRUE
color = "#B4004B"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
@@ -719,7 +720,7 @@
/datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
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.adjustToxLoss(-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 * REM * 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))
@@ -749,7 +750,7 @@
current_size = newsize
toxpwr = 0.1 * volume
if(affected_mob.adjustBruteLoss((0.3 * volume) * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
if(affected_mob.adjust_brute_loss((0.3 * volume) * REM * 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
@@ -766,7 +767,7 @@
/datum/reagent/toxin/fentanyl
name = "Fentanyl"
description = "Fentanyl will inhibit brain function and cause toxin damage before eventually knocking out its victim."
description = "Inhibits brain function and causes toxin damage before eventually knocking out the patient."
color = "#64916E"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
creation_purity = REAGENT_STANDARD_PURITY
@@ -779,9 +780,9 @@
/datum/reagent/toxin/fentanyl/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3 * REM * normalise_creation_purity() * seconds_per_tick, 150)
need_mob_update = affected_mob.adjust_organ_loss(ORGAN_SLOT_BRAIN, 3 * REM * normalise_creation_purity() * seconds_per_tick, 150)
if(affected_mob.toxloss <= 60)
need_mob_update += affected_mob.adjustToxLoss(1 * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_tox_loss(1 * REM * 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)
@@ -809,7 +810,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.adjustToxLoss(2*REM * normalise_creation_purity(), updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjust_tox_loss(2*REM * normalise_creation_purity(), updating_health = FALSE, required_biotype = affected_biotype)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -878,7 +879,7 @@
affected_mob.Paralyze(60)
if(2)
affected_mob.losebreath += 10
affected_mob.adjustOxyLoss(rand(5,25), updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
affected_mob.adjust_oxy_loss(rand(5,25), 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())
@@ -887,7 +888,7 @@
affected_mob.visible_message(span_userdanger("[affected_mob] clutches at [affected_mob.p_their()] chest as if [affected_mob.p_their()] heart stopped!"))
else
affected_mob.losebreath += 10
need_mob_update = affected_mob.adjustOxyLoss(rand(5,25), updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update = affected_mob.adjust_oxy_loss(rand(5,25), updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
if(need_mob_update)
return UPDATE_MOB_HEALTH
@@ -923,7 +924,7 @@
. = ..()
if(current_cycle > 10)
affected_mob.Sleeping(40 * REM * seconds_per_tick)
if(affected_mob.adjustStaminaLoss(10 * REM * seconds_per_tick, updating_stamina = FALSE))
if(affected_mob.adjust_stamina_loss(10 * REM * seconds_per_tick, updating_stamina = FALSE))
return UPDATE_MOB_HEALTH
/datum/reagent/toxin/sulfonal
@@ -960,7 +961,7 @@
/datum/reagent/toxin/amanitin/on_mob_delete(mob/living/affected_mob)
. = ..()
affected_mob.log_message("has taken [delayed_toxin_damage] toxin damage from amanitin toxin", LOG_ATTACK)
affected_mob.adjustToxLoss(delayed_toxin_damage, required_biotype = affected_biotype)
affected_mob.adjust_tox_loss(delayed_toxin_damage, required_biotype = affected_biotype)
/datum/reagent/toxin/lipolicide
name = "Lipolicide"
@@ -979,7 +980,7 @@
/datum/reagent/toxin/lipolicide/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.nutrition <= NUTRITION_LEVEL_STARVING)
if(affected_mob.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(1 * REM * 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.overeatduration = 0
@@ -1041,12 +1042,13 @@
. = ..()
if(current_cycle > 11)
affected_mob.Paralyze(60 * REM * seconds_per_tick)
if(affected_mob.adjustOxyLoss(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.5*REM*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.
name = "Heparin"
description = "A powerful anticoagulant. All open cut wounds on the victim will open up and bleed much faster. It directly purges sanguirite, a coagulant."
description = "A powerful anticoagulant. All open cut wounds on the patient will open up and bleed much faster. \
Counters coagulants like Sanguirite, purging them."
silent_toxin = TRUE
creation_purity = REAGENT_STANDARD_PURITY
purity = REAGENT_STANDARD_PURITY
@@ -1064,7 +1066,7 @@
/datum/reagent/toxin/rotatium //Rotatium. Fucks up your rotation and is hilarious
name = "Rotatium"
description = "A constantly swirling, oddly colourful fluid. Causes the consumer's sense of direction and hand-eye coordination to become wild."
description = "A constantly swirling, oddly colourful fluid. Causes the patient's sense of direction and hand-eye coordination to become wild."
silent_toxin = TRUE
creation_purity = REAGENT_STANDARD_PURITY
purity = REAGENT_STANDARD_PURITY
@@ -1141,10 +1143,10 @@
return
reac_volume = round(reac_volume,0.1)
if(methods & (INGEST|INHALE))
exposed_carbon.adjustBruteLoss(min(6*toxpwr, reac_volume * toxpwr), required_bodytype = affected_bodytype)
exposed_carbon.adjust_brute_loss(min(6*toxpwr, reac_volume * toxpwr), required_bodytype = affected_bodytype)
return
if(methods & INJECT)
exposed_carbon.adjustBruteLoss(1.5 * min(6*toxpwr, reac_volume * toxpwr), required_bodytype = affected_bodytype)
exposed_carbon.adjust_brute_loss(1.5 * min(6*toxpwr, reac_volume * toxpwr), required_bodytype = affected_bodytype)
return
exposed_carbon.acid_act(acidpwr, reac_volume)
@@ -1164,7 +1166,7 @@
/datum/reagent/toxin/acid/fluacid
name = "Fluorosulfuric Acid"
description = "Fluorosulfuric acid is an extremely corrosive chemical substance."
description = "An extremely corrosive chemical substance."
color = "#5050FF"
creation_purity = REAGENT_STANDARD_PURITY
purity = REAGENT_STANDARD_PURITY
@@ -1181,12 +1183,12 @@
/datum/reagent/toxin/acid/fluacid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustFireLoss(((current_cycle-1)/15) * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
if(affected_mob.adjust_fire_loss(((current_cycle-1)/15) * REM * normalise_creation_purity() * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype))
return UPDATE_MOB_HEALTH
/datum/reagent/toxin/acid/nitracid
name = "Nitric Acid"
description = "Nitric acid is an extremely corrosive chemical substance that violently reacts with living organic tissue."
description = "An extremely corrosive chemical substance that violently reacts with living organic tissue."
color = "#5050FF"
creation_purity = REAGENT_STANDARD_PURITY
purity = REAGENT_STANDARD_PURITY
@@ -1197,7 +1199,7 @@
/datum/reagent/toxin/acid/nitracid/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustFireLoss((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((volume/10) * REM * 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
@@ -1216,7 +1218,7 @@
return
if(holder)
holder.remove_reagent(type, actual_metaboliztion_rate * affected_mob.metabolism_efficiency * seconds_per_tick)
if(affected_mob.adjustToxLoss(actual_toxpwr * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype))
if(affected_mob.adjust_tox_loss(actual_toxpwr * REM * 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,7 +1255,7 @@
/datum/reagent/toxin/bonehurtingjuice/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustStaminaLoss(7.5 * REM * seconds_per_tick, updating_stamina = FALSE))
if(affected_mob.adjust_stamina_loss(7.5 * REM * seconds_per_tick, updating_stamina = FALSE))
. = UPDATE_MOB_HEALTH
if(!SPT_PROB(10, seconds_per_tick))
return
@@ -1297,7 +1299,7 @@
/datum/reagent/toxin/bungotoxin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
if(affected_mob.adjustOrganLoss(ORGAN_SLOT_HEART, 3 * REM * seconds_per_tick))
if(affected_mob.adjust_organ_loss(ORGAN_SLOT_HEART, 3 * REM * seconds_per_tick))
. = UPDATE_MOB_HEALTH
// If our mob's currently dizzy from anything else, we will also gain confusion
@@ -1322,8 +1324,8 @@
/datum/reagent/toxin/leadacetate/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
var/need_mob_update
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_EARS, 1 * REM * seconds_per_tick)
need_mob_update += affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1 * REM * seconds_per_tick)
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)
if(need_mob_update)
. = UPDATE_MOB_HEALTH
if(SPT_PROB(0.5, seconds_per_tick))
@@ -1374,10 +1376,10 @@
liver_tolerance_multiplier = 0
silent_toxin = TRUE
remove_paralysis()
need_mob_update += affected_mob.adjustOxyLoss(-0.7 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype, required_respiration_type = affected_respiration_type)
need_mob_update = affected_mob.adjustToxLoss(-0.75 * REM * seconds_per_tick, updating_health = FALSE, required_biotype = affected_biotype)
need_mob_update += affected_mob.adjustBruteLoss(-1.2 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
need_mob_update += affected_mob.adjustFireLoss(-1.35 * REM * seconds_per_tick, updating_health = FALSE, required_bodytype = affected_bodytype)
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)
return need_mob_update ? UPDATE_MOB_HEALTH : .
liver_tolerance_multiplier = initial(liver_tolerance_multiplier)
@@ -1397,7 +1399,7 @@
if(13 to 21)
silent_toxin = FALSE
toxpwr = 0.5
need_mob_update = affected_mob.adjustStaminaLoss(2.5 * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update = affected_mob.adjust_stamina_loss(2.5 * REM * seconds_per_tick, updating_stamina = FALSE)
if(SPT_PROB(20, seconds_per_tick))
affected_mob.losebreath += 1 * REM * seconds_per_tick
need_mob_update = TRUE
@@ -1405,7 +1407,7 @@
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.adjustStaminaLoss(2 * REM * seconds_per_tick, updating_stamina = FALSE)
affected_mob.adjust_stamina_loss(2 * REM * seconds_per_tick, updating_stamina = FALSE)
if(SPT_PROB(4, seconds_per_tick))
paralyze_limb(affected_mob)
need_mob_update = TRUE
@@ -1413,8 +1415,8 @@
affected_mob.adjust_confusion(rand(6 SECONDS, 8 SECONDS))
if(21 to 29)
toxpwr = 1
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.5)
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.7)
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
need_mob_update = TRUE
@@ -1422,7 +1424,7 @@
affected_mob.set_slurring_if_lower(3 SECONDS * REM * 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.adjustStaminaLoss(5 * REM * seconds_per_tick, updating_stamina = FALSE)
need_mob_update += affected_mob.adjust_stamina_loss(5 * REM * seconds_per_tick, updating_stamina = FALSE)
if(SPT_PROB(8, seconds_per_tick))
paralyze_limb(affected_mob)
need_mob_update = TRUE
@@ -1430,10 +1432,10 @@
affected_mob.adjust_confusion(rand(6 SECONDS, 8 SECONDS))
if(29 to INFINITY)
toxpwr = 1.5
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1, BRAIN_DAMAGE_DEATH)
need_mob_update = affected_mob.adjustOrganLoss(ORGAN_SLOT_LUNGS, 1.4)
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.adjustStaminaLoss(5 * REM * seconds_per_tick, updating_stamina = FALSE)
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)
if(SPT_PROB(15, seconds_per_tick))
paralyze_limb(affected_mob)
@@ -26,7 +26,7 @@
rate_up_lim = 12.5
purity_min = 0.5 //100u will natrually just dip under this w/ no buffer
reaction_flags = REACTION_HEAT_ARBITARY //Heating up is arbitary because of submechanics of this reaction.
reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DRUG | REACTION_TAG_DANGEROUS
reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DRUG | REACTION_TAG_DANGEROUS | REACTION_TAG_ORGAN
//The less pure it is, the faster it heats up. tg please don't hate me for making your meth even more dangerous
/datum/chemical_reaction/methamphetamine/reaction_step(datum/reagents/holder, datum/equilibrium/reaction, delta_t, delta_ph, step_reaction_vol)
@@ -160,7 +160,7 @@
required_reagents = list(/datum/reagent/kronkus_extract = 15, /datum/reagent/fuel = 5, /datum/reagent/ammonia = 3)
mob_react = FALSE
reaction_flags = REACTION_INSTANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING | REACTION_TAG_ACTIVE
/datum/chemical_reaction/moon_rock/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/location = get_turf(holder.my_atom)
@@ -176,7 +176,7 @@
required_reagents = list(/datum/reagent/silver = 10, /datum/reagent/toxin/cyanide = 10, /datum/reagent/lye = 5)
mob_react = FALSE
reaction_flags = REACTION_INSTANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING | REACTION_TAG_ACTIVE
/datum/chemical_reaction/blastoff_ampoule/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/location = get_turf(holder.my_atom)
@@ -189,7 +189,7 @@
required_reagents = list(/datum/reagent/lead = 5, /datum/reagent/consumable/nothing = 5, /datum/reagent/drug/maint/tar = 10)
mob_react = FALSE
reaction_flags = REACTION_INSTANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DRUG | REACTION_TAG_ORGAN | REACTION_TAG_DAMAGING | REACTION_TAG_ACTIVE
/datum/chemical_reaction/saturnx_glob/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/location = get_turf(holder.my_atom)
@@ -169,7 +169,7 @@
results = list(/datum/reagent/medicine/albuterol = 4, /datum/reagent/medicine/sal_acid = 0.5, /datum/reagent/ammonia = 0.5)
required_catalysts = list(/datum/reagent/toxin/acid = 1)
required_reagents = list(/datum/reagent/medicine/salbutamol = 5, /datum/reagent/medicine/c2/convermol = 1)
reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_ORGAN | REACTION_TAG_OTHER
reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_ORGAN | REACTION_TAG_OTHER | REACTION_TAG_ACTIVE
required_temp = 500
optimal_temp = 610
overheat_temp = 980
@@ -181,7 +181,7 @@
results = list(/datum/reagent/medicine/salbutamol = 2, /datum/reagent/ammonia = 1)
required_catalysts = list(/datum/reagent/toxin/acid = 1)
required_reagents = list(/datum/reagent/medicine/albuterol = 3, /datum/reagent/oxygen = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_ORGAN | REACTION_TAG_OTHER
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_ORGAN | REACTION_TAG_OTHER | REACTION_TAG_ACTIVE
required_temp = 300
optimal_temp = 500
overheat_temp = 800
@@ -191,7 +191,7 @@
results = list(/datum/reagent/inverse/healing/convermol = 1, /datum/reagent/lithium = 3, /datum/reagent/aluminium = 3, /datum/reagent/bromine = 3)
required_catalysts = list(/datum/reagent/toxin/acid/fluacid = 1)
required_reagents = list(/datum/reagent/medicine/albuterol = 5)
reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_ORGAN | REACTION_TAG_OTHER
reaction_tags = REACTION_TAG_MODERATE | REACTION_TAG_ORGAN | REACTION_TAG_OTHER | REACTION_TAG_ACTIVE
required_temp = 900
optimal_temp = 920
overheat_temp = 990
@@ -401,7 +401,7 @@
/datum/chemical_reaction/medicine/medsuture
required_reagents = list(/datum/reagent/cellulose = 2, /datum/reagent/toxin/formaldehyde = 4, /datum/reagent/medicine/polypyr = 3) //This might be a bit much, reagent cost should be reviewed after implementation.
reaction_flags = REACTION_INSTANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_BRUTE
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_BRUTE | REACTION_TAG_ACTIVE
/datum/chemical_reaction/medicine/medsuture/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
new /obj/item/stack/medical/suture/medicated(get_turf(holder.my_atom), round(created_volume * 4))
@@ -409,7 +409,7 @@
/datum/chemical_reaction/medicine/medmesh
required_reagents = list(/datum/reagent/cellulose = 2, /datum/reagent/consumable/aloejuice = 4, /datum/reagent/space_cleaner/sterilizine = 2)
reaction_flags = REACTION_INSTANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_BURN
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_BURN | REACTION_TAG_ACTIVE
/datum/chemical_reaction/medicine/medmesh/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
new /obj/item/stack/medical/mesh/advanced(get_turf(holder.my_atom), round(created_volume * 3))
@@ -417,7 +417,7 @@
/datum/chemical_reaction/medicine/poultice
required_reagents = list(/datum/reagent/toxin/bungotoxin = 4, /datum/reagent/cellulose = 4, /datum/reagent/consumable/aloejuice = 4 )
reaction_flags = REACTION_INSTANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_BRUTE | REACTION_TAG_BURN
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_BRUTE | REACTION_TAG_BURN | REACTION_TAG_ACTIVE
/datum/chemical_reaction/medicine/poultice/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
new /obj/item/stack/medical/poultice(get_turf(holder.my_atom), round(created_volume * 3))
@@ -42,7 +42,7 @@
/datum/chemical_reaction/sodiumchloride
results = list(/datum/reagent/consumable/salt = 2)
required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/chlorine = 1) // That's what I said! Sodium Chloride!
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_FOOD
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_FOOD | REACTION_TAG_COMPONENT
required_other = TRUE
/datum/chemical_reaction/sodiumchloride/pre_reaction_other_checks(datum/reagents/holder)
@@ -233,6 +233,7 @@
var/level_min = 1
var/level_max = 2
reaction_flags = REACTION_INSTANT
reaction_tags = REACTION_TAG_ACTIVE
/datum/chemical_reaction/mix_virus/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
@@ -386,18 +387,18 @@
optimal_ph_min = 1 // Lets increase our range for this basic chem
optimal_ph_max = 12
H_ion_release = -0.02 //handmade is more neutral
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_PLANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_PLANT | REACTION_TAG_COMPONENT
/datum/chemical_reaction/diethylamine
results = list(/datum/reagent/diethylamine = 2)
required_reagents = list (/datum/reagent/ammonia = 1, /datum/reagent/consumable/ethanol = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_PLANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_PLANT | REACTION_TAG_COMPONENT
/datum/chemical_reaction/space_cleaner
results = list(/datum/reagent/space_cleaner = 2)
required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/water = 1)
rate_up_lim = 40
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE | REACTION_TAG_COMPONENT
/datum/chemical_reaction/plantbgone
results = list(/datum/reagent/toxin/plantbgone = 5)
@@ -418,14 +419,14 @@
/datum/chemical_reaction/drying_agent
results = list(/datum/reagent/drying_agent = 3)
required_reagents = list(/datum/reagent/stable_plasma = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/sodium = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE | REACTION_TAG_COMPONENT
//////////////////////////////////// Other goon stuff ///////////////////////////////////////////
/datum/chemical_reaction/acetone
results = list(/datum/reagent/acetone = 3)
required_reagents = list(/datum/reagent/fuel/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/oxygen = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_COMPONENT
/datum/chemical_reaction/carpet
results = list(/datum/reagent/carpet = 2)
@@ -526,18 +527,18 @@
/datum/chemical_reaction/oil
results = list(/datum/reagent/fuel/oil = 3)
required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/carbon = 1, /datum/reagent/hydrogen = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_COMPONENT
/datum/chemical_reaction/phenol
results = list(/datum/reagent/phenol = 3)
required_reagents = list(/datum/reagent/water = 1, /datum/reagent/chlorine = 1, /datum/reagent/fuel/oil = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_COMPONENT
/datum/chemical_reaction/ash
results = list(/datum/reagent/ash = 1)
required_reagents = list(/datum/reagent/fuel/oil = 1)
required_temp = 480
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_PLANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_PLANT | REACTION_TAG_COMPONENT
/datum/chemical_reaction/colorful_reagent
results = list(/datum/reagent/colorful_reagent = 5)
@@ -643,19 +644,19 @@
/datum/chemical_reaction/electrolysis
results = list(/datum/reagent/oxygen = 2.5, /datum/reagent/hydrogen = 5)
required_reagents = list(/datum/reagent/consumable/liquidelectricity = 1, /datum/reagent/water = 5)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE
/datum/chemical_reaction/electrolysis2
results = list(/datum/reagent/oxygen = 2.5, /datum/reagent/hydrogen = 5)
required_reagents = list(/datum/reagent/consumable/liquidelectricity/enriched = 1, /datum/reagent/water = 5)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE
//salt electrolysis
/datum/chemical_reaction/saltelectrolysis
results = list(/datum/reagent/chlorine = 2.5, /datum/reagent/sodium = 2.5)
required_reagents = list(/datum/reagent/consumable/salt = 5)
required_catalysts = list(/datum/reagent/consumable/liquidelectricity = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE
/datum/chemical_reaction/saltelectrolysis/enriched
required_catalysts = list(/datum/reagent/consumable/liquidelectricity/enriched = 1)
@@ -722,18 +723,18 @@
/datum/chemical_reaction/saltpetre
results = list(/datum/reagent/saltpetre = 3)
required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 3)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_PLANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_PLANT | REACTION_TAG_COMPONENT
/datum/chemical_reaction/lye
results = list(/datum/reagent/lye = 3)
required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1)
required_temp = 10 //So hercuri still shows life.
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_COMPONENT
/datum/chemical_reaction/lye2
results = list(/datum/reagent/lye = 2)
required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/water = 1, /datum/reagent/carbon = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_COMPONENT
/datum/chemical_reaction/royal_bee_jelly
results = list(/datum/reagent/royal_bee_jelly = 5)
@@ -901,7 +902,7 @@
purity_min = 0
mix_message = "The solution freezes up into ice!"
reaction_flags = REACTION_COMPETITIVE
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_DRINK
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_CHEMICAL | REACTION_TAG_DRINK | REACTION_TAG_COMPONENT | REACTION_TAG_ACTIVE
/datum/chemical_reaction/water
results = list(/datum/reagent/water = 0.92)//rough density excahnge
@@ -1092,5 +1093,3 @@
glitter.data["colors"] = list("[accumulated_color]" = 100)
glitter.color = accumulated_color
@@ -11,7 +11,7 @@
var/strengthdiv = 10
var/modifier = 0
reaction_flags = REACTION_INSTANT
reaction_tags = REACTION_TAG_EXPLOSIVE | REACTION_TAG_MODERATE | REACTION_TAG_DANGEROUS
reaction_tags = REACTION_TAG_EXPLOSIVE | REACTION_TAG_MODERATE | REACTION_TAG_DANGEROUS | REACTION_TAG_ACTIVE
required_temp = 0 //Prevent impromptu RPGs
// Only clear mob reagents in special cases
var/clear_mob_reagents = FALSE
@@ -189,7 +189,7 @@
/datum/chemical_reaction/gunpowder
results = list(/datum/reagent/gunpowder = 3)
required_reagents = list(/datum/reagent/saltpetre = 1, /datum/reagent/medicine/c2/multiver = 1, /datum/reagent/sulfur = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_CHEMICAL
/datum/chemical_reaction/reagent_explosion/gunpowder_explosion
required_reagents = list(/datum/reagent/gunpowder = 1)
@@ -208,7 +208,7 @@
/datum/chemical_reaction/emp_pulse
required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/iron = 1, /datum/reagent/aluminium = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS | REACTION_TAG_ACTIVE
/datum/chemical_reaction/emp_pulse/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
//pretending this reaction took two ingredients and not three for its effects
@@ -228,7 +228,7 @@
/datum/chemical_reaction/beesplosion
required_reagents = list(/datum/reagent/consumable/honey = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/uranium/radium = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS | REACTION_TAG_ACTIVE
/datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/location = holder.my_atom.drop_location()
@@ -251,7 +251,7 @@
/datum/chemical_reaction/stabilizing_agent
results = list(/datum/reagent/stabilizing_agent = 3)
required_reagents = list(/datum/reagent/iron = 1, /datum/reagent/oxygen = 1, /datum/reagent/hydrogen = 1)
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_CHEMICAL | REACTION_TAG_PLANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_CHEMICAL | REACTION_TAG_PLANT | REACTION_TAG_COMPONENT
/datum/chemical_reaction/clf3
results = list(/datum/reagent/clf3 = 4)
@@ -300,7 +300,7 @@
/datum/chemical_reaction/sorium_vortex
required_reagents = list(/datum/reagent/sorium = 1)
required_temp = 474
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS | REACTION_TAG_ACTIVE
/datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/turf/T = get_turf(holder.my_atom)
@@ -323,7 +323,7 @@
/datum/chemical_reaction/ldm_vortex
required_reagents = list(/datum/reagent/liquid_dark_matter = 1)
required_temp = 474
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS | REACTION_TAG_ACTIVE
/datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/turf/T = get_turf(holder.my_atom)
@@ -356,7 +356,7 @@
/datum/chemical_reaction/flash_powder_flash
required_reagents = list(/datum/reagent/flash_powder = 1)
required_temp = 374
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS | REACTION_TAG_ACTIVE
/datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/location = get_turf(holder.my_atom)
@@ -397,7 +397,7 @@
required_temp = 374
mob_react = FALSE
reaction_flags = REACTION_INSTANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS | REACTION_TAG_ACTIVE
/datum/chemical_reaction/smoke_powder_smoke/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/location = get_turf(holder.my_atom)
@@ -427,7 +427,7 @@
/datum/chemical_reaction/sonic_powder_deafen
required_reagents = list(/datum/reagent/sonic_powder = 1)
required_temp = 374
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_EXPLOSIVE | REACTION_TAG_DANGEROUS | REACTION_TAG_ACTIVE
/datum/chemical_reaction/sonic_powder_deafen/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
var/location = get_turf(holder.my_atom)
@@ -409,7 +409,7 @@
required_reagents = list(/datum/reagent/toxin/plasma = 1)
/datum/chemical_reaction/slime/slimepotion2/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
new /obj/item/slimepotion/slime/sentience(get_turf(holder.my_atom))
new /obj/item/slimepotion/sentience(get_turf(holder.my_atom))
..()
/datum/chemical_reaction/slime/renaming
@@ -417,7 +417,7 @@
required_reagents = list(/datum/reagent/water = 1)
/datum/chemical_reaction/slime/renaming/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
new /obj/item/slimepotion/slime/renaming(holder.my_atom.drop_location())
new /obj/item/slimepotion/renaming(holder.my_atom.drop_location())
..()
@@ -454,7 +454,7 @@
required_container = /obj/item/slime_extract/bluespace
/datum/chemical_reaction/slime/slimeradio/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume)
new /obj/item/slimepotion/slime/slimeradio(get_turf(holder.my_atom))
new /obj/item/slimepotion/slimeradio(get_turf(holder.my_atom))
..()
//Cerulean
@@ -177,7 +177,7 @@
rate_up_lim = 10
purity_min = 0.7
reaction_flags = REACTION_PH_VOL_CONSTANT
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DAMAGING | REACTION_TAG_PLANT | REACTION_TAG_OTHER
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DAMAGING | REACTION_TAG_PLANT | REACTION_TAG_OTHER | REACTION_TAG_COMPONENT
/datum/chemical_reaction/lexorin
results = list(/datum/reagent/toxin/lexorin = 3)
@@ -204,7 +204,7 @@
required_reagents = list(/datum/reagent/toxin/hot_ice = 1)
required_temp = T0C + 30 //Don't burst into flames when you melt
thermic_constant = -200//Counter the heat
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DAMAGING | REACTION_TAG_CHEMICAL | REACTION_TAG_TOXIN
reaction_tags = REACTION_TAG_EASY | REACTION_TAG_DAMAGING | REACTION_TAG_CHEMICAL | REACTION_TAG_TOXIN | REACTION_TAG_ACTIVE
/datum/chemical_reaction/chloralhydrate
results = list(/datum/reagent/toxin/chloralhydrate = 1)
+2 -1
View File
@@ -410,7 +410,8 @@
var/trans = round(reagents.trans_to(target, amount_per_transfer_from_this, transferred_by = user), CHEMICAL_VOLUME_ROUNDING)
playsound(target.loc, SFX_LIQUID_POUR, 50, TRUE)
to_chat(user, span_notice("You transfer [trans] unit\s of the solution to [target]."))
if(trans)
to_chat(user, span_notice("You transfer [trans] unit\s of the solution to [target]."))
SEND_SIGNAL(src, COMSIG_REAGENTS_CUP_TRANSFER_TO, target)
target.update_appearance()
return ITEM_INTERACT_SUCCESS
@@ -212,6 +212,7 @@
name = "x-large beaker"
desc = "An extra-large beaker. Can hold up to 120 units."
icon_state = "beakerwhite"
inhand_icon_state = "beaker_white"
custom_materials = list(/datum/material/glass=SHEET_MATERIAL_AMOUNT*1.25, /datum/material/plastic=SHEET_MATERIAL_AMOUNT * 1.5)
volume = 120
amount_per_transfer_from_this = 10
@@ -222,6 +223,7 @@
name = "metamaterial beaker"
desc = "A large beaker. Can hold up to 180 units."
icon_state = "beakergold"
inhand_icon_state = "beaker_gold"
custom_materials = list(/datum/material/glass=SHEET_MATERIAL_AMOUNT*1.25, /datum/material/plastic=SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/gold=HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium=HALF_SHEET_MATERIAL_AMOUNT)
volume = 180
amount_per_transfer_from_this = 10
@@ -233,6 +235,7 @@
desc = "A cryostasis beaker that allows for chemical storage without \
reactions. Can hold up to 50 units."
icon_state = "beakernoreact"
inhand_icon_state = "beaker_cryo"
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT * 1.5)
initial_reagent_flags = OPENCONTAINER | NO_REACT
volume = 50
@@ -244,6 +247,7 @@
and Element Cuban combined with the Compound Pete. Can hold up to \
300 units."
icon_state = "beakerbluespace"
inhand_icon_state = "beaker_bluespace"
custom_materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/plasma =SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/diamond =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace =HALF_SHEET_MATERIAL_AMOUNT)
volume = 300
amount_per_transfer_from_this = 10
@@ -447,7 +451,7 @@
if(!grinded)
to_chat(user, span_warning("There is nothing to grind!"))
return ITEM_INTERACT_BLOCKING
if(user.getStaminaLoss() > 50)
if(user.get_stamina_loss() > 50)
to_chat(user, span_warning("You are too tired to work!"))
return ITEM_INTERACT_BLOCKING
var/list/choose_options = list(
@@ -460,7 +464,7 @@
to_chat(user, span_notice("You start grinding..."))
if(!do_after(user, 2.5 SECONDS, target = src))
return ITEM_INTERACT_BLOCKING
user.adjustStaminaLoss(40)
user.adjust_stamina_loss(40)
switch(picked_option)
if("Juice")
return juice_item(grinded, user) ? ITEM_INTERACT_BLOCKING : ITEM_INTERACT_SUCCESS
@@ -548,7 +548,8 @@
return ITEM_INTERACT_BLOCKING
var/transfer_amount = round(reagents.trans_to(tool, amount_per_transfer_from_this, transferred_by = user), CHEMICAL_VOLUME_ROUNDING)
balloon_alert(user, "transferred [transfer_amount] unit\s")
if(transfer_amount)
balloon_alert(user, "transferred [transfer_amount] unit\s")
flick("syrup_anim",src)
tool.update_appearance()
update_appearance()
@@ -60,7 +60,8 @@
log_combat(user, M, "squirted", reagents.get_reagent_log_string())
trans = round(reagents.trans_to(target, amount_per_transfer_from_this, transferred_by = user), CHEMICAL_VOLUME_ROUNDING)
to_chat(user, span_notice("You transfer [trans] unit\s of the solution."))
if(trans)
to_chat(user, span_notice("You transfer [trans] unit\s of the solution."))
update_appearance()
target.update_appearance()
return ITEM_INTERACT_SUCCESS
@@ -74,8 +75,8 @@
return ITEM_INTERACT_BLOCKING
var/trans = round(target.reagents.trans_to(src, amount_per_transfer_from_this, transferred_by = user), CHEMICAL_VOLUME_ROUNDING)
to_chat(user, span_notice("You fill [src] with [trans] unit\s of the solution."))
if(trans)
to_chat(user, span_notice("You fill [src] with [trans] unit\s of the solution."))
update_appearance()
target.update_appearance()
@@ -107,7 +107,7 @@
/obj/item/reagent_containers/medigel/synthflesh/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(iscarbon(interacting_with) && reagents?.total_volume)
var/mob/living/carbon/carbies = interacting_with
if(HAS_TRAIT_FROM(carbies, TRAIT_HUSK, BURN) && carbies.getFireLoss() > UNHUSK_DAMAGE_THRESHOLD * 2.5)
if(HAS_TRAIT_FROM(carbies, TRAIT_HUSK, BURN) && carbies.get_fire_loss() > UNHUSK_DAMAGE_THRESHOLD * 2.5)
// give them a warning if the mob is a husk but synthflesh won't unhusk yet
carbies.visible_message(span_boldwarning("[carbies]'s burns need to be repaired first before synthflesh will unhusk it!"))
@@ -208,7 +208,7 @@
return
// Check mob damage for synthflesh unhusking
var/mob/living/carbon/carbies = eater
if(HAS_TRAIT_FROM(carbies, TRAIT_HUSK, BURN) && carbies.getFireLoss() > UNHUSK_DAMAGE_THRESHOLD * 2.5)
if(HAS_TRAIT_FROM(carbies, TRAIT_HUSK, BURN) && carbies.get_fire_loss() > UNHUSK_DAMAGE_THRESHOLD * 2.5)
// give them a warning if the mob is a husk but synthflesh won't unhusk yet
carbies.visible_message(span_boldwarning("[carbies]'s burns need to be repaired first before synthflesh will unhusk it!"))
@@ -137,8 +137,8 @@
return ITEM_INTERACT_BLOCKING
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, transferred_by = user) // transfer from, transfer to - who cares?
to_chat(user, span_notice("You fill [src] with [trans] units of the solution. It now contains [reagents.total_volume] units."))
if(trans)
to_chat(user, span_notice("You fill [src] with [trans] units of the solution. It now contains [reagents.total_volume] units."))
target.update_appearance()
return ITEM_INTERACT_SUCCESS
+2 -2
View File
@@ -370,7 +370,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/peppertank, 3
if(prob(1))
desc = "IT'S PEPPER TIME, BITCH!"
if(mapload)
find_and_hang_on_wall()
find_and_hang_on_atom()
/obj/structure/reagent_dispensers/water_cooler
name = "water cooler"
@@ -629,7 +629,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/reagent_dispensers/wall/virusfood, 30
/obj/structure/reagent_dispensers/wall/virusfood/Initialize(mapload)
. = ..()
if(mapload)
find_and_hang_on_wall()
find_and_hang_on_atom()
/obj/structure/reagent_dispensers/cooking_oil
name = "vat of cooking oil"