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
+1 -1
View File
@@ -51,7 +51,7 @@
pulse_mod++
var/oxy = owner.get_blood_oxygenation()
if(oxy < BLOOD_VOLUME_OKAY) //brain wants us to get MOAR OXY
if(oxy < BLOOD_VOLUME_OKAY) //brain wants us to get moar oxygen
pulse_mod++
if(oxy < BLOOD_VOLUME_BAD) //MOAR
pulse_mod++
+6 -6
View File
@@ -297,24 +297,24 @@
if(breath.temperature >= owner.species.heat_level_1)
if(breath.temperature < owner.species.heat_level_2)
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD, used_weapon = "Excessive Heat")
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Heat")
owner.fire_alert = max(owner.fire_alert, 2)
else if(breath.temperature < species.heat_level_3)
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD, used_weapon = "Excessive Heat")
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_2, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Heat")
owner.fire_alert = max(owner.fire_alert, 2)
else
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, BURN, BP_HEAD, used_weapon = "Excessive Heat")
owner.apply_damage(HEAT_GAS_DAMAGE_LEVEL_3, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Heat")
owner.fire_alert = max(owner.fire_alert, 2)
else if(breath.temperature <= owner.species.cold_level_1)
if(breath.temperature > species.cold_level_2)
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, BP_HEAD, used_weapon = "Excessive Cold")
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Cold")
owner.fire_alert = max(owner.fire_alert, 1)
else if(breath.temperature > species.cold_level_3)
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_2, BURN, BP_HEAD, used_weapon = "Excessive Cold")
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_2, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Cold")
owner.fire_alert = max(owner.fire_alert, 1)
else
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, BURN, BP_HEAD, used_weapon = "Excessive Cold")
owner.apply_damage(COLD_GAS_DAMAGE_LEVEL_3, DAMAGE_BURN, BP_HEAD, used_weapon = "Excessive Cold")
owner.fire_alert = max(owner.fire_alert, 1)
//breathing in hot/cold air also heats/cools you a bit
+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]"
+1 -1
View File
@@ -106,7 +106,7 @@
parent_organ = BP_GROIN
/obj/item/organ/internal/augment/calf_override/proc/do_run_act()
owner.apply_damage(1, BRUTE, BP_GROIN, armor_pen = 100)
owner.apply_damage(1, DAMAGE_BRUTE, BP_GROIN, armor_pen = 100)
/obj/item/organ/internal/augment/protein_valve
name = "protein breakdown valve"
+6 -6
View File
@@ -38,7 +38,7 @@
var/list/stages
// maximum stage at which bleeding should still happen. Beyond this stage bleeding is prevented.
var/max_bleeding_stage = 0
// one of CUT, BRUISE, PIERCE , BURN
// one of CUT, BRUISE, PIERCE, BURN
var/damage_type = CUT
// whether this wound needs a bandage/salve to heal at all
// the maximum amount of damage that this wound can have and still autoheal
@@ -92,7 +92,7 @@
switch(damage_type)
if(BRUISE, CUT, PIERCE)
return bandaged
if(BURN)
if(DAMAGE_BURN)
return salved
// Checks whether other other can be merged into src.
@@ -133,7 +133,7 @@
switch (damage_type)
if (BRUISE)
return prob(dam_coef*5)
if (BURN)
if (DAMAGE_BURN)
return prob(dam_coef*10)
if (CUT)
return prob(dam_coef*20)
@@ -245,7 +245,7 @@
if(BRUISE)
return /datum/wound/bruise
if(BURN, LASER)
if(DAMAGE_BURN, LASER)
switch(damage)
if(50 to INFINITY)
return /datum/wound/burn/carbonised
@@ -334,7 +334,7 @@ datum/wound/puncture/massive
/** BURNS **/
/datum/wound/burn
damage_type = BURN
damage_type = DAMAGE_BURN
max_bleeding_stage = 0
/datum/wound/burn/bleeding()
@@ -373,7 +373,7 @@ datum/wound/puncture/massive
"scarred stump" = 0
)
if(DROPLIMB_BURN)
damage_type = BURN
damage_type = DAMAGE_BURN
stages = list(
"ripped charred stump" = damage_amt*1.3,
"charred stump" = damage_amt,