mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 20:43:10 +01:00
@@ -252,6 +252,8 @@
|
||||
brute *= brute_mod
|
||||
burn *= burn_mod
|
||||
|
||||
var/laser = (damage_flags & DAM_LASER)
|
||||
|
||||
add_pain(0.6*burn + 0.4*brute)
|
||||
|
||||
if(status & ORGAN_BROKEN && prob(40) && brute)
|
||||
@@ -305,7 +307,10 @@
|
||||
|
||||
if(burn > 0 && can_inflict)
|
||||
//Inflict all burn damage we can
|
||||
createwound(BURN, min(burn,can_inflict))
|
||||
if(laser)
|
||||
createwound(LASER, min(burn, can_inflict))
|
||||
else
|
||||
createwound(BURN, min(burn,can_inflict))
|
||||
//How much burn damage is left to inflict
|
||||
spillover += max(0, burn - can_inflict)
|
||||
|
||||
@@ -466,7 +471,8 @@ This function completely restores a damaged organ to perfect condition.
|
||||
|
||||
|
||||
/obj/item/organ/external/proc/createwound(var/type = CUT, var/damage)
|
||||
if(damage == 0) return
|
||||
|
||||
if(damage <= 0) return
|
||||
|
||||
//moved this before the open_wound check so that having many small wounds for example doesn't somehow protect you from taking internal damage (because of the return)
|
||||
//Possibly trigger an internal wound, too.
|
||||
@@ -480,6 +486,15 @@ This function completely restores a damaged organ to perfect condition.
|
||||
if(internal_damage)
|
||||
owner.custom_pain("You feel something rip in your [name]!", 25)
|
||||
|
||||
//Burn damage can cause fluid loss due to blistering and cook-off
|
||||
if((type in list(BURN, LASER)) && (damage > 5 || damage + burn_dam >= 15) && !BP_IS_ROBOTIC(src))
|
||||
var/fluid_loss_severity
|
||||
switch(type)
|
||||
if(BURN) fluid_loss_severity = FLUIDLOSS_WIDE_BURN
|
||||
if(LASER) fluid_loss_severity = FLUIDLOSS_CONC_BURN
|
||||
var/fluid_loss = (damage/(owner.maxHealth - config.health_threshold_dead)) * DEFAULT_BLOOD_AMOUNT * fluid_loss_severity
|
||||
owner.remove_blood_simple(fluid_loss)
|
||||
|
||||
// first check whether we can widen an existing wound
|
||||
if(wounds.len > 0 && prob(max(50+(number_wounds-1)*10,90)))
|
||||
if((type == CUT || type == BRUISE) && damage >= 5)
|
||||
|
||||
Reference in New Issue
Block a user