Ports the radiation subsystem and cleans up damage flags. (#15715)

This commit is contained in:
Matt Atlas
2023-02-07 13:22:47 +01:00
committed by GitHub
parent 5527fc0810
commit 31c73ead85
198 changed files with 981 additions and 649 deletions
+16 -16
View File
@@ -281,9 +281,9 @@
brute *= brute_mod
burn *= burn_mod
var/laser = (damage_flags & DAM_LASER)
var/sharp = (damage_flags & DAM_SHARP)
var/edge = (damage_flags & DAM_EDGE)
var/laser = (damage_flags & DAMAGE_FLAG_LASER)
var/sharp = (damage_flags & DAMAGE_FLAG_SHARP)
var/edge = (damage_flags & DAMAGE_FLAG_EDGE)
var/blunt = !!(brute && !sharp && !edge)
if(status & ORGAN_BROKEN && prob(40) && brute)
@@ -329,7 +329,7 @@
if(laser)
createwound(LASER, burn)
else
createwound(BURN, burn)
createwound(DAMAGE_BURN, burn)
add_pain(0.6 * burn + 0.4 * brute)
@@ -352,8 +352,8 @@
var/damage_amt = brute
var/cur_damage = brute_dam
var/sharp = (damage_flags & DAM_SHARP)
var/laser = (damage_flags & DAM_LASER)
var/sharp = (damage_flags & DAMAGE_FLAG_SHARP)
var/laser = (damage_flags & DAMAGE_FLAG_LASER)
if(BP_IS_ROBOTIC(src) || laser)
damage_amt += burn
@@ -411,17 +411,17 @@
dam_flags = W.damage_flags()
if(isprojectile(W))
var/obj/item/projectile/P = W
if(dam_flags & DAM_BULLET)
if(dam_flags & DAMAGE_FLAG_BULLET)
blunt_eligible = TRUE
maim_bonus += P.maim_rate
if(W.w_class >= w_class && (dam_flags & DAM_EDGE))
if(W.w_class >= w_class && (dam_flags & DAMAGE_FLAG_EDGE))
edge_eligible = TRUE
if(!blunt_eligible && edge_eligible && (brute >= max_damage / (DROPLIMB_THRESHOLD_EDGE + maim_bonus)))
droplimb(0, DROPLIMB_EDGE)
else if(burn >= max_damage / ((dam_flags & DAM_LASER ? DROPLIMB_THRESHOLD_DESTROY_PROJECTILE : DROPLIMB_THRESHOLD_DESTROY) + maim_bonus))
else if(burn >= max_damage / ((dam_flags & DAMAGE_FLAG_LASER ? DROPLIMB_THRESHOLD_DESTROY_PROJECTILE : DROPLIMB_THRESHOLD_DESTROY) + maim_bonus))
droplimb(0, DROPLIMB_BURN)
else if(blunt_eligible && brute >= max_damage / ((dam_flags & DAM_BULLET ? DROPLIMB_THRESHOLD_DESTROY_PROJECTILE : DROPLIMB_THRESHOLD_DESTROY) + maim_bonus))
else if(blunt_eligible && brute >= max_damage / ((dam_flags & DAMAGE_FLAG_BULLET ? DROPLIMB_THRESHOLD_DESTROY_PROJECTILE : DROPLIMB_THRESHOLD_DESTROY) + maim_bonus))
droplimb(0, DROPLIMB_BLUNT)
else if(brute >= max_damage / (DROPLIMB_THRESHOLD_TEAROFF + maim_bonus))
droplimb(0, DROPLIMB_EDGE)
@@ -436,7 +436,7 @@
break
// heal brute damage
if(W.damage_type == BURN)
if(W.damage_type == DAMAGE_BURN)
burn = W.heal_damage(burn)
else
brute = W.heal_damage(brute)
@@ -489,7 +489,7 @@ This function completely restores a damaged organ to perfect condition.
var/local_damage = brute_dam + burn_dam + damage
if(damage > (min_broken_damage / 2) && local_damage > min_broken_damage && !(status & ORGAN_ROBOT))
if(!(type in list(BURN, LASER)))
if(!(type in list(DAMAGE_BURN, LASER)))
if(prob(damage) && sever_artery())
owner.custom_pain("You feel something rip in your [name]!", 25)
@@ -501,10 +501,10 @@ This function completely restores a damaged organ to perfect condition.
tendon.damage(new_brute)
//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))
if((type in list(DAMAGE_BURN, LASER)) && (damage > 5 || damage + burn_dam >= 15) && !BP_IS_ROBOTIC(src))
var/fluid_loss_severity
switch(type)
if(BURN)
if(DAMAGE_BURN)
fluid_loss_severity = FLUIDLOSS_WIDE_BURN
if(LASER)
fluid_loss_severity = FLUIDLOSS_CONC_BURN
@@ -832,7 +832,7 @@ Note that amputating the affected organ does in fact remove the infection from t
//update damage counts
for(var/datum/wound/W in wounds)
if(W.damage_type == BURN)
if(W.damage_type == DAMAGE_BURN)
burn_dam += W.damage
else
brute_dam += W.damage
@@ -1336,7 +1336,7 @@ Note that amputating the affected organ does in fact remove the infection from t
wound_descriptors["an incision"] = 1
for(var/datum/wound/W in wounds)
var/this_wound_desc = W.desc
if(W.damage_type == BURN && W.salved) this_wound_desc = "salved [this_wound_desc]"
if(W.damage_type == DAMAGE_BURN && W.salved) this_wound_desc = "salved [this_wound_desc]"
if(W.bleeding()) this_wound_desc = "bleeding [this_wound_desc]"
if(W.bandaged == 1)
this_wound_desc = "bandaged [this_wound_desc]"