mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 05:57:24 +01:00
@@ -217,9 +217,8 @@
|
||||
if(19)
|
||||
//Instrinct Resistance
|
||||
T.visible_message("<span class='userdanger'>[user] looks very robust!</span>")
|
||||
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!
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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 <span class='danger'>Diamond Golem</span>, 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 <span class='danger'>Gold Golem</span>, 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 <span class='danger'>Titanium Golem</span>, 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 <span class='danger'>Plastitanium Golem</span>, 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 <span class='danger'>Sand Golem</span>, 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 <span class='danger'>Glass Golem</span>, 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"
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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, "<span class='notice'>You feel tough.</span>")
|
||||
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, "<span class='notice'>You feel very fast and agile.</span>")
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user