mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 04:51:32 +01:00
Many balance changes to halloss and damage. (#8160)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user