diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 0ee5aa6c427..2ee2ac615fa 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -57,14 +57,12 @@ ADD_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, "blooddrunk") if(ishuman(owner)) var/mob/living/carbon/human/H = owner - for(var/X in H.bodyparts) - var/obj/item/organ/external/BP = X - BP.brute_mod *= 0.1 - BP.burn_mod *= 0.1 - H.dna.species.tox_mod *= 0.1 - H.dna.species.oxy_mod *= 0.1 - H.dna.species.clone_mod *= 0.1 - H.dna.species.stamina_mod *= 0.1 + H.physiology.brute_mod *= 0.1 + H.physiology.burn_mod *= 0.1 + H.physiology.tox_mod *= 0.1 + H.physiology.oxy_mod *= 0.1 + H.physiology.clone_mod *= 0.1 + H.physiology.stamina_mod *= 0.1 add_attack_logs(owner, owner, "gained blood-drunk stun immunity", ATKLOG_ALL) owner.add_stun_absorption("blooddrunk", INFINITY, 4) owner.playsound_local(get_turf(owner), 'sound/effects/singlebeat.ogg', 40, TRUE, use_reverb = FALSE) @@ -72,14 +70,12 @@ /datum/status_effect/blooddrunk/on_remove() if(ishuman(owner)) var/mob/living/carbon/human/H = owner - for(var/X in H.bodyparts) - var/obj/item/organ/external/BP = X - BP.brute_mod *= 10 - BP.burn_mod *= 10 - H.dna.species.tox_mod *= 10 - H.dna.species.oxy_mod *= 10 - H.dna.species.clone_mod *= 10 - H.dna.species.stamina_mod *= 10 + H.physiology.brute_mod *= 10 + H.physiology.burn_mod *= 10 + H.physiology.tox_mod *= 10 + H.physiology.oxy_mod *= 10 + H.physiology.clone_mod *= 10 + H.physiology.stamina_mod *= 10 add_attack_logs(owner, owner, "lost blood-drunk stun immunity", ATKLOG_ALL) REMOVE_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, "blooddrunk") if(islist(owner.stun_absorption) && owner.stun_absorption["blooddrunk"]) diff --git a/code/modules/awaymissions/mission_code/academy.dm b/code/modules/awaymissions/mission_code/academy.dm index 65c64edd83f..40c4975505d 100644 --- a/code/modules/awaymissions/mission_code/academy.dm +++ b/code/modules/awaymissions/mission_code/academy.dm @@ -217,9 +217,8 @@ if(19) //Instrinct Resistance T.visible_message("[user] looks very robust!") - var/datum/species/S = user.dna.species - S.brute_mod *= 0.5 - S.burn_mod *= 0.5 + user.physiology.brute_mod *= 0.5 + user.physiology.burn_mod *= 0.5 if(20) //Free wizard! diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 8907c7195dc..2a412353b19 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -38,6 +38,8 @@ dna.real_name = real_name sync_organ_dna(1) + physiology = new() + UpdateAppearance() GLOB.human_list += src @@ -59,6 +61,7 @@ SSmobs.cubemonkeys -= src QDEL_LIST(bodyparts) splinted_limbs.Cut() + QDEL_NULL(physiology) GLOB.human_list -= src /mob/living/carbon/human/dummy @@ -596,6 +599,7 @@ else if(!(flags & SHOCK_NOGLOVES)) //This gets the siemens_coeff for all non tesla shocks if(gloves) siemens_coeff *= gloves.siemens_coefficient + siemens_coeff *= physiology.siemens_coeff siemens_coeff *= dna.species.siemens_coeff . = ..() //Don't go further if the shock was blocked/too weak. diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 2073f8ca0be..855c7bc7d19 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -322,11 +322,5 @@ This function restores all organs. return bodyparts_by_name[zone] -/mob/living/carbon/human/apply_damage(damage = 0, damagetype = BRUTE, def_zone = null, blocked = 0, sharp = 0, obj/used_weapon = null) - //Handle other types of damage - if((damagetype != BRUTE) && (damagetype != BURN)) - ..(damage, damagetype, def_zone, blocked) - return 1 - - //Handle species apply_damage procs - return dna.species.apply_damage(damage, damagetype, def_zone, blocked, src, sharp, used_weapon) +/mob/living/carbon/human/apply_damage(damage = 0, damagetype = BRUTE, def_zone, blocked = 0, sharp = FALSE, obj/used_weapon, spread_damage = FALSE) + return dna.species.apply_damage(damage, damagetype, def_zone, blocked, src, sharp, used_weapon, spread_damage) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 59855472786..7e45c9c81cc 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -151,7 +151,7 @@ emp_act var/obj/item/clothing/C = bp if(C.body_parts_covered & def_zone.body_part) protection += C.armor.getRating(type) - + protection += physiology.armor.getRating(type) return protection //this proc returns the Siemens coefficient of electrical resistivity for a particular external organ. diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index d5c76b1dd97..a6bc7b0d363 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -48,6 +48,8 @@ var/name_override //For temporary visible name changes + var/datum/physiology/physiology + var/xylophone = 0 //For the spoooooooky xylophone cooldown var/mob/remoteview_target = null diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index a943de4e79d..90e2f3dcf87 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -284,7 +284,7 @@ if(bodytemperature > dna.species.heat_level_1) //Body temperature is too hot. if(status_flags & GODMODE) return 1 //godmode - var/mult = dna.species.heatmod + var/mult = dna.species.heatmod * physiology.heat_mod if(bodytemperature >= dna.species.heat_level_1 && bodytemperature <= dna.species.heat_level_2) throw_alert("temp", /obj/screen/alert/hot, 1) @@ -306,7 +306,7 @@ return 1 if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) - var/mult = dna.species.coldmod + var/mult = dna.species.coldmod * physiology.cold_mod if(bodytemperature >= dna.species.cold_level_2 && bodytemperature <= dna.species.cold_level_1) throw_alert("temp", /obj/screen/alert/cold, 1) take_overall_damage(burn=mult*COLD_DAMAGE_LEVEL_1, updating_health = TRUE, used_weapon = "Low Body Temperature") @@ -330,7 +330,7 @@ if(adjusted_pressure >= dna.species.hazard_high_pressure) if(!HAS_TRAIT(src, TRAIT_RESISTHIGHPRESSURE)) - var/pressure_damage = min( ( (adjusted_pressure / dna.species.hazard_high_pressure) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) + var/pressure_damage = min(((adjusted_pressure / dna.species.hazard_high_pressure) - 1) * PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) * physiology.pressure_mod take_overall_damage(brute=pressure_damage, updating_health = TRUE, used_weapon = "High Pressure") throw_alert("pressure", /obj/screen/alert/highpressure, 2) else @@ -345,7 +345,7 @@ if(HAS_TRAIT(src, TRAIT_RESISTLOWPRESSURE)) clear_alert("pressure") else - take_overall_damage(brute=LOW_PRESSURE_DAMAGE, updating_health = TRUE, used_weapon = "Low Pressure") + take_overall_damage(brute = LOW_PRESSURE_DAMAGE * physiology.pressure_mod, updating_health = TRUE, used_weapon = "Low Pressure") throw_alert("pressure", /obj/screen/alert/lowpressure, 2) @@ -556,6 +556,7 @@ if(prob(round(-satiety/40))) Jitter(5) hunger_rate = 3 * hunger_drain + hunger_rate *= physiology.hunger_mod adjust_nutrition(-hunger_rate) if(nutrition > NUTRITION_LEVEL_FULL) diff --git a/code/modules/mob/living/carbon/human/physiology.dm b/code/modules/mob/living/carbon/human/physiology.dm new file mode 100644 index 00000000000..5e4b380c492 --- /dev/null +++ b/code/modules/mob/living/carbon/human/physiology.dm @@ -0,0 +1,46 @@ +/** + * # physiology datum + * + * Datum that stores several modifiers in a way that isn't cleared by changing species + * + */ +/datum/physiology + /// % of brute damage taken from all sources + var/brute_mod = 1 + /// % of burn damage taken from all sources + var/burn_mod = 1 + /// % of toxin damage taken from all sources + var/tox_mod = 1 + /// % of oxygen damage taken from all sources + var/oxy_mod = 1 + /// % of clone damage taken from all sources + var/clone_mod = 1 + /// % of stamina damage taken from all sources + var/stamina_mod = 1 + /// % of brain damage taken from all sources + var/brain_mod = 1 + + /// % of brute damage taken from low or high pressure (stacks with brute_mod) + var/pressure_mod = 1 + /// % of burn damage taken from heat (stacks with burn_mod) + var/heat_mod = 1 + /// % of burn damage taken from cold (stacks with burn_mod) + var/cold_mod = 1 + + /// %damage reduction from all sources + var/damage_resistance = 0 + + /// resistance to shocks + var/siemens_coeff = 1 + + /// % stun modifier + var/stun_mod = 1 + /// % bleeding modifier + var/bleed_mod = 1 + /// internal armor datum + var/datum/armor/armor + ///% of hunger rate taken per tick. + var/hunger_mod = 1 + +/datum/physiology/New() + armor = new diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 179351afb97..9c05d98b452 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -51,6 +51,8 @@ var/stamina_mod = 1 var/stun_mod = 1 // If a species is more/less impacated by stuns/weakens/paralysis var/speed_mod = 0 // this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster + ///Percentage modifier for overall defense of the race, or less defense, if it's negative. + var/armor = 0 var/blood_damage_type = OXY //What type of damage does this species take if it's low on blood? var/total_health = 100 var/punchdamagelow = 0 //lowest possible punch damage @@ -343,46 +345,66 @@ /datum/species/proc/handle_death(gibbed, mob/living/carbon/human/H) //Handles any species-specific death events (such as dionaea nymph spawns). return -/datum/species/proc/apply_damage(damage = 0, damagetype = BRUTE, def_zone = null, blocked = 0, mob/living/carbon/human/H, sharp = 0, obj/used_weapon = null) - blocked = (100 - blocked) / 100 - if(blocked <= 0) - return 0 +/datum/species/proc/apply_damage(damage = 0, damagetype = BRUTE, def_zone, blocked = 0, mob/living/carbon/human/H, sharp = FALSE, obj/used_weapon, spread_damage = FALSE) + var/hit_percent = (100 - (blocked + armor)) / 100 + hit_percent = (hit_percent * (100 - H.physiology.damage_resistance)) / 100 + if(!damage || (hit_percent <= 0)) + return FALSE var/obj/item/organ/external/organ = null - if(isorgan(def_zone)) - organ = def_zone - else - if(!def_zone) - def_zone = ran_zone(def_zone) - organ = H.get_organ(check_zone(def_zone)) - if(!organ) - return 0 - - damage = damage * blocked + if(!spread_damage) + if(isorgan(def_zone)) + organ = def_zone + else + if(!def_zone) + def_zone = ran_zone(def_zone) + organ = H.get_organ(check_zone(def_zone)) + if(!organ) + organ = H.bodyparts[1] switch(damagetype) if(BRUTE) - damage = damage * brute_mod - if(damage) + var/damage_amount = damage * hit_percent * brute_mod * H.physiology.brute_mod + if(damage_amount) H.damageoverlaytemp = 20 - if(organ.receive_damage(damage, 0, sharp, used_weapon)) - H.UpdateDamageIcon() - + if(organ) + if(organ.receive_damage(damage_amount, 0, sharp, used_weapon)) + H.UpdateDamageIcon() + else //no bodypart, we deal damage with a more general method. + H.adjustBruteLoss(damage_amount) if(BURN) - damage = damage * burn_mod - if(damage) + var/damage_amount = damage * hit_percent * burn_mod * H.physiology.burn_mod + if(damage_amount) H.damageoverlaytemp = 20 - if(organ.receive_damage(0, damage, sharp, used_weapon)) - H.UpdateDamageIcon() + if(organ) + if(organ.receive_damage(0, damage_amount, sharp, used_weapon)) + H.UpdateDamageIcon() + else + H.adjustFireLoss(damage_amount) + if(TOX) + var/damage_amount = damage * hit_percent * H.physiology.tox_mod + H.adjustToxLoss(damage_amount) + if(OXY) + var/damage_amount = damage * hit_percent * H.physiology.oxy_mod + H.adjustOxyLoss(damage_amount) + if(CLONE) + var/damage_amount = damage * hit_percent * H.physiology.clone_mod + H.adjustCloneLoss(damage_amount) + if(STAMINA) + var/damage_amount = damage * hit_percent * H.physiology.stamina_mod + H.adjustStaminaLoss(damage_amount) + if(BRAIN) + var/damage_amount = damage * hit_percent * H.physiology.brain_mod + H.adjustBrainLoss(damage_amount) // Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life(). H.updatehealth("apply damage") - return 1 + return TRUE -/datum/species/proc/spec_stun(mob/living/carbon/human/H,amount) - return +/datum/species/proc/spec_stun(mob/living/carbon/human/H, amount) + . = stun_mod * H.physiology.stun_mod * amount /datum/species/proc/spec_electrocute_act(mob/living/carbon/human/H, shock_damage, source, siemens_coeff = 1, flags = NONE) return diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index b83b2e95a5f..653d39f63eb 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -9,12 +9,7 @@ inherent_biotypes = MOB_HUMANOID | MOB_MINERAL dies_at_threshold = TRUE speed_mod = 2 - brute_mod = 0.45 //55% damage reduction - burn_mod = 0.45 - tox_mod = 0.45 - clone_mod = 0.45 - brain_mod = 0.45 - stamina_mod = 0.45 + armor = 55 siemens_coeff = 0 punchdamagelow = 5 punchdamagehigh = 14 @@ -186,12 +181,7 @@ /datum/species/golem/diamond name = "Diamond Golem" golem_colour = rgb(0, 255, 255) - brute_mod = 0.3 //70% damage reduction up from 55% - burn_mod = 0.3 - tox_mod = 0.3 - clone_mod = 0.3 - brain_mod = 0.3 - stamina_mod = 0.3 + armor = 70 //up from 55 skinned_type = /obj/item/stack/ore/diamond info_text = "As a Diamond Golem, you are more resistant than the average golem." prefix = "Diamond" @@ -202,12 +192,7 @@ name = "Gold Golem" golem_colour = rgb(204, 204, 0) speed_mod = 1 - brute_mod = 0.75 //25% damage reduction down from 55% - burn_mod = 0.75 - tox_mod = 0.75 - clone_mod = 0.75 - brain_mod = 0.75 - stamina_mod = 0.75 + armor = 25 //down from 55 skinned_type = /obj/item/stack/ore/gold info_text = "As a Gold Golem, you are faster but less resistant than the average golem." prefix = "Golden" @@ -248,7 +233,7 @@ golem_colour = rgb(255, 255, 255) skinned_type = /obj/item/stack/ore/titanium info_text = "As a Titanium Golem, you are resistant to burn damage and immune to ash storms." - burn_mod = 0.405 + burn_mod = 0.9 prefix = "Titanium" special_names = list("Dioxide") @@ -266,7 +251,7 @@ golem_colour = rgb(136, 136, 136) skinned_type = /obj/item/stack/ore/titanium info_text = "As a Plastitanium Golem, you are very resistant to burn damage and immune to both ash storms and lava." - burn_mod = 0.36 + burn_mod = 0.8 prefix = "Plastitanium" special_names = null @@ -317,12 +302,8 @@ //Can burn and take damage from heat inherent_traits = list(TRAIT_NOBREATH, TRAIT_RESISTCOLD, TRAIT_RESISTHIGHPRESSURE, TRAIT_RESISTLOWPRESSURE, TRAIT_CHUNKYFINGERS, TRAIT_RADIMMUNE, TRAIT_PIERCEIMMUNE, TRAIT_NOPAIN) inherent_biotypes = MOB_ORGANIC | MOB_HUMANOID | MOB_PLANT - brute_mod = 0.7 //30% damage reduction down from 55% - burn_mod = 0.875 - tox_mod = 0.7 - clone_mod = 0.7 - brain_mod = 0.7 - stamina_mod = 0.7 + armor = 30 + burn_mod = 1.25 heatmod = 1.5 dietflags = DIET_HERB // Plants eat...plants? @@ -390,12 +371,9 @@ name = "Sand Golem" golem_colour = rgb(255, 220, 143) skinned_type = /obj/item/stack/ore/glass //this is sand - brute_mod = 0.25 + armor = 0 burn_mod = 3 //melts easily - tox_mod = 1 - clone_mod = 1 - brain_mod = 1 - stamina_mod = 1 + brute_mod = 0.25 info_text = "As a Sand Golem, you are immune to physical bullets and take very little brute damage, but are extremely vulnerable to burn damage and energy weapons. You will also turn to sand when dying, preventing any form of recovery." unarmed_type = /datum/unarmed_attack/golem/sand prefix = "Sand" @@ -426,12 +404,9 @@ name = "Glass Golem" golem_colour = rgb(90, 150, 180) skinned_type = /obj/item/shard + armor = 0 brute_mod = 3 //very fragile burn_mod = 0.25 - tox_mod = 1 - clone_mod = 1 - brain_mod = 1 - stamina_mod = 1 info_text = "As a Glass Golem, you reflect lasers and energy weapons, and are very resistant to burn damage. However, you are extremely vulnerable to brute damage. On death, you'll shatter beyond any hope of recovery." unarmed_type = /datum/unarmed_attack/golem/glass prefix = "Glass" diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm index 0beb30088da..232b441cd4b 100644 --- a/code/modules/mob/living/carbon/human/status_procs.dm +++ b/code/modules/mob/living/carbon/human/status_procs.dm @@ -1,27 +1,15 @@ /mob/living/carbon/human/SetStunned(amount, updating = 1, force = 0) - if(dna.species.stun_mod) - amount = amount * dna.species.stun_mod - else - amount = dna.species.spec_stun(src,amount) + amount = dna.species.spec_stun(src, amount) return ..() /mob/living/carbon/human/SetWeakened(amount, updating = 1, force = 0) - if(dna.species.stun_mod) - amount = amount * dna.species.stun_mod - else - amount = dna.species.spec_stun(src,amount) + amount = dna.species.spec_stun(src, amount) return ..() /mob/living/carbon/human/SetParalysis(amount, updating = 1, force = 0) - if(dna.species.stun_mod) - amount = amount * dna.species.stun_mod - else - amount = dna.species.spec_stun(src,amount) + amount = dna.species.spec_stun(src, amount) return ..() /mob/living/carbon/human/SetSleeping(amount, updating = 1, no_alert = FALSE) - if(dna.species.stun_mod) - amount = amount * dna.species.stun_mod - else - amount = dna.species.spec_stun(src,amount) + amount = dna.species.spec_stun(src, amount) return ..() diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index e7be12930ce..037e3013fc0 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -8,24 +8,26 @@ Returns standard 0 if fail */ -/mob/living/proc/apply_damage(var/damage = 0, var/damagetype = BRUTE, var/def_zone = null, var/blocked = 0, var/sharp = 0, var/used_weapon = null) - blocked = (100-blocked)/100 - if(!damage || (blocked <= 0)) return 0 +/mob/living/proc/apply_damage(damage = 0, damagetype = BRUTE, def_zone, blocked = 0, sharp = FALSE, used_weapon, spread_damage = FALSE) + var/hit_percent = (100 - blocked) / 100 + if(!damage || (hit_percent <= 0)) + return FALSE + var/damage_amount = damage * hit_percent switch(damagetype) if(BRUTE) - adjustBruteLoss(damage * blocked) + adjustBruteLoss(damage_amount) if(BURN) - adjustFireLoss(damage * blocked) + adjustFireLoss(damage_amount) if(TOX) - adjustToxLoss(damage * blocked) + adjustToxLoss(damage_amount) if(OXY) - adjustOxyLoss(damage * blocked) + adjustOxyLoss(damage_amount) if(CLONE) - adjustCloneLoss(damage * blocked) + adjustCloneLoss(damage_amount) if(STAMINA) - adjustStaminaLoss(damage * blocked) + adjustStaminaLoss(damage_amount) updatehealth("apply damage") - return 1 + return TRUE /mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs switch(damagetype) diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 739ca3ee97d..3c0fdd79ca2 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -1242,12 +1242,12 @@ ..() if(ishuman(M)) var/mob/living/carbon/human/H = M - H.dna.species.siemens_coeff *= 2 + H.physiology.siemens_coeff *= 2 /datum/reagent/teslium/on_mob_delete(mob/living/M) if(ishuman(M)) var/mob/living/carbon/human/H = M - H.dna.species.siemens_coeff *= 0.5 + H.physiology.siemens_coeff *= 0.5 ..() /datum/reagent/gluttonytoxin diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index 2139b54c62c..031471e968c 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -321,13 +321,7 @@ GLOBAL_LIST_INIT(non_simple_animals, typecacheof(list(/mob/living/carbon/human/m S.stun_mod *= 0.5 if(VAULT_ARMOUR) to_chat(H, "You feel tough.") - S.brute_mod *= 0.7 - S.burn_mod *= 0.7 - S.tox_mod *= 0.7 - S.oxy_mod *= 0.7 - S.clone_mod *= 0.7 - S.brain_mod *= 0.7 - S.stamina_mod *= 0.7 + S.armor = 30 ADD_TRAIT(H, TRAIT_PIERCEIMMUNE, "dna_vault") if(VAULT_SPEED) to_chat(H, "You feel very fast and agile.") diff --git a/code/modules/surgery/organs/blood.dm b/code/modules/surgery/organs/blood.dm index 764028beab9..2fd179caad9 100644 --- a/code/modules/surgery/organs/blood.dm +++ b/code/modules/surgery/organs/blood.dm @@ -91,6 +91,7 @@ add_splatter_floor(loc, 1) /mob/living/carbon/human/bleed(amt) + amt *= physiology.bleed_mod if(!(NO_BLOOD in dna.species.species_traits)) ..() if(dna.species.exotic_blood) diff --git a/paradise.dme b/paradise.dme index 54e0c7bccbe..7ad1f61982b 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1870,6 +1870,7 @@ #include "code\modules\mob\living\carbon\human\login.dm" #include "code\modules\mob\living\carbon\human\logout.dm" #include "code\modules\mob\living\carbon\human\npcs.dm" +#include "code\modules\mob\living\carbon\human\physiology.dm" #include "code\modules\mob\living\carbon\human\say.dm" #include "code\modules\mob\living\carbon\human\status_procs.dm" #include "code\modules\mob\living\carbon\human\update_icons.dm"