Many balance changes to halloss and damage. (#8160)

This commit is contained in:
Matt Atlas
2020-02-08 15:39:06 +01:00
committed by GitHub
parent 52f9c66c51
commit 16aeb5c9d9
16 changed files with 117 additions and 70 deletions
+1 -1
View File
@@ -154,7 +154,7 @@
blood_max += ((W.damage / 40) * species.bleed_mod)
if(temp.status & ORGAN_ARTERY_CUT)
var/bleed_amount = Floor(owner.vessel.total_volume / (temp.applied_pressure || !open_wound ? 450 : 300))
var/bleed_amount = Floor(owner.vessel.total_volume / (temp.applied_pressure || !open_wound ? 450 : 250))
if(bleed_amount)
if(open_wound)
blood_max += bleed_amount
+2 -2
View File
@@ -7,7 +7,7 @@
robotic_sprite = "liver-prosthetic"
toxin_type = CE_HEPATOTOXIC
min_bruised_damage = 25
min_broken_damage = 45
min_broken_damage = 55
max_damage = 70
relative_size = 60
@@ -28,7 +28,7 @@
//Detox can heal small amounts of damage
if (damage < max_damage && !owner.chem_effects[CE_TOXIN])
heal_damage(0.2 * owner.chem_effects[CE_ANTITOXIN])
heal_damage(0.3 * owner.chem_effects[CE_ANTITOXIN])
// Get the effectiveness of the liver.
var/filter_effect = 3
+14 -9
View File
@@ -251,10 +251,10 @@
var/laser = (damage_flags & DAM_LASER)
add_pain(0.6*burn + 0.4*brute)
add_pain(0.8*burn + 0.5*brute)
if(status & ORGAN_BROKEN && prob(40) && brute)
if (owner && (owner.can_feel_pain()))
if(owner && (owner.can_feel_pain()))
owner.emote("scream") //getting hit on broken hand hurts
if(used_weapon)
add_autopsy_data("[used_weapon]", brute + burn)
@@ -262,7 +262,10 @@
// High brute damage or sharp objects may damage internal organs
if(length(internal_organs))
if(damage_internal_organs(brute, burn, sharp, damage_flags))
brute /= 2
var/brute_div = 2 //We want melee weapons to not be affected by this.
if(damage_flags & DAM_BULLET)
brute_div = 1.25
brute /= brute_div
burn /= 2
var/can_cut = (prob(brute*2) || sharp) && !(status & ORGAN_ROBOT)
@@ -320,7 +323,7 @@
// sync the organ's damage with its wounds
update_damages()
if (owner)
if(owner)
owner.updatehealth() //droplimb will call updatehealth() again if it does end up being called
return update_icon()
@@ -342,7 +345,7 @@
var/organ_damage_threshold = 10
if(sharp)
organ_damage_threshold *= 0.5
organ_damage_threshold *= 0.3
if(laser)
organ_damage_threshold *= 2
@@ -479,8 +482,10 @@ This function completely restores a damaged organ to perfect condition.
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
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)
@@ -1016,7 +1021,7 @@ Note that amputating the affected organ does in fact remove the infection from t
perma_injury = brute_dam
// Fractures have a chance of getting you out of restraints
if (prob(25))
if(prob(25))
release_restraints()
// This is mostly for the ninja suit to stop ninja being so crippled by breaks.
@@ -1345,7 +1350,7 @@ Note that amputating the affected organ does in fact remove the infection from t
amount -= (owner.chem_effects[CE_PAINKILLER]/3)
if(amount <= 0)
return
pain = max(0,min(max_damage,pain+amount))
pain = max(0, min(max_damage, pain + amount))
if(owner && ((amount > 15 && prob(20)) || (amount > 30 && prob(60))))
owner.emote("scream")
return pain-last_pain
+13 -6
View File
@@ -59,7 +59,11 @@ mob/var/next_pain_time = 0
// Excessive halloss is horrible, just give them enough to make it visible.
if(!nohalloss && power)
adjustHalLoss(Ceiling(power/2))
if(!affecting)
adjustHalLoss(Ceiling(power/2))
else
affecting.add_pain(Ceiling(power/2))
flash_pain(min(round(2*power)+55, 255))
@@ -77,14 +81,17 @@ mob/var/next_pain_time = 0
next_pain_time = world.time + (100-power)
mob/living/carbon/human/proc/handle_pain()
/mob/living/carbon/human/proc/handle_pain()
// not when sleeping
if(!can_feel_pain()) return
if(!can_feel_pain())
return
if(stat >= 2) return
if(stat >= DEAD)
return
if(analgesic > 70)
return
var/maxdam = 0
var/obj/item/organ/external/damaged_organ = null
for(var/obj/item/organ/external/E in organs)
@@ -112,7 +119,7 @@ mob/living/carbon/human/proc/handle_pain()
else if (I.is_damaged())
painmessage = "You feel discomfort in your [parent.name]."
if(painmessage)
src.custom_pain(painmessage, I.is_bruised())
custom_pain(painmessage, 5, 5)
//The less hardcoded values, the better.
var/toxDamageMessage = null
@@ -135,4 +142,4 @@ mob/living/carbon/human/proc/handle_pain()
toxDamageMessage = "Your body aches all over, it's driving you mad!"
if(toxDamageMessage && prob(toxMessageProb))
src.custom_pain(toxDamageMessage, getToxLoss() >= 15)
custom_pain(toxDamageMessage, 5, 5)