Lasers now evaporate blood. (#7670)

Lasers now evaporate blood
This commit is contained in:
Matt Atlas
2019-12-16 21:14:12 +02:00
committed by Erki
parent a45d218610
commit 25c4da7095
12 changed files with 84 additions and 13 deletions
+17 -2
View File
@@ -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)