Adds mob bleeding overlays, tweaks some bleeding balance (#65371)

This commit is contained in:
Ryll Ryll
2022-03-28 10:24:03 -07:00
committed by GitHub
parent 9458d3a801
commit c4fa0d4aff
15 changed files with 216 additions and 124 deletions
+6 -1
View File
@@ -243,7 +243,9 @@
owner.add_filter("stasis_status_ripple", 2, list("type" = "ripple", "flags" = WAVE_BOUNDED, "radius" = 0, "size" = 2))
var/filter = owner.get_filter("stasis_status_ripple")
animate(filter, radius = 32, time = 15, size = 0, loop = -1)
if(iscarbon(owner))
var/mob/living/carbon/carbon_owner = owner
carbon_owner.update_bodypart_bleed_overlays()
/datum/status_effect/grouped/stasis/tick()
update_time_of_death()
@@ -253,6 +255,9 @@
REMOVE_TRAIT(owner, TRAIT_HANDS_BLOCKED, TRAIT_STATUS_EFFECT(id))
owner.remove_filter("stasis_status_ripple")
update_time_of_death()
if(iscarbon(owner))
var/mob/living/carbon/carbon_owner = owner
carbon_owner.update_bodypart_bleed_overlays()
return ..()
/atom/movable/screen/alert/status_effect/stasis
+2 -2
View File
@@ -146,7 +146,7 @@
if(severity == WOUND_SEVERITY_TRIVIAL)
return
if(!(silent || demoted))
if(!silent && !demoted)
var/msg = span_danger("[victim]'s [limb.name] [occur_text]!")
var/vis_dist = COMBAT_MESSAGE_RANGE
@@ -158,8 +158,8 @@
if(sound_effect)
playsound(L.owner, sound_effect, 70 + 20 * severity, TRUE)
wound_injury(old_wound, attack_direction = attack_direction)
if(!demoted)
wound_injury(old_wound, attack_direction = attack_direction)
second_wind()
/datum/wound/proc/null_victim()
+11 -9
View File
@@ -18,7 +18,7 @@
var/initial_flow
/// When we have less than this amount of flow, either from treatment or clotting, we demote to a lower cut or are healed of the wound
var/minimum_flow
/// How much our blood_flow will naturally decrease per tick, not only do larger cuts bleed more blood faster, they clot slower (higher number = clot quicker, negative = opening up)
/// How much our blood_flow will naturally decrease per second, not only do larger cuts bleed more blood faster, they clot slower (higher number = clot quicker, negative = opening up)
var/clot_rate
/// Once the blood flow drops below minimum_flow, we demote it to this type of wound. If there's none, we're all better
@@ -31,14 +31,15 @@
var/datum/scar/highest_scar
/datum/wound/slash/wound_injury(datum/wound/slash/old_wound = null, attack_direction = null)
blood_flow = initial_flow
if(old_wound)
blood_flow = max(old_wound.blood_flow, initial_flow)
if(old_wound.severity > severity && old_wound.highest_scar)
set_highest_scar(old_wound.highest_scar)
old_wound.clear_highest_scar()
else if(attack_direction && victim.blood_volume > BLOOD_VOLUME_OKAY)
victim.spray_blood(attack_direction, severity)
else
blood_flow = initial_flow
if(attack_direction && victim.blood_volume > BLOOD_VOLUME_OKAY)
victim.spray_blood(attack_direction, severity)
if(!highest_scar)
var/datum/scar/new_scar = new
@@ -83,7 +84,7 @@
/datum/wound/slash/receive_damage(wounding_type, wounding_dmg, wound_bonus)
if(victim.stat != DEAD && wound_bonus != CANT_WOUND && wounding_type == WOUND_SLASH) // can't stab dead bodies to make it bleed faster this way
blood_flow += 0.05 * wounding_dmg
blood_flow += WOUND_SLASH_DAMAGE_FLOW_COEFF * wounding_dmg
/datum/wound/slash/drag_bleed_amount()
// say we have 3 severe cuts with 3 blood flow each, pretty reasonable
@@ -252,6 +253,7 @@
if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
return
user.visible_message(span_green("[user] stitches up some of the bleeding on [victim]."), span_green("You stitch up some of the bleeding on [user == victim ? "yourself" : "[victim]"]."))
var/blood_sutured = I.stop_bleeding / self_penalty_mult
blood_flow -= blood_sutured
@@ -274,7 +276,7 @@
severity = WOUND_SEVERITY_MODERATE
initial_flow = 2
minimum_flow = 0.5
clot_rate = 0.06
clot_rate = 0.05
threshold_minimum = 20
threshold_penalty = 10
status_effect_type = /datum/status_effect/wound/slash/moderate
@@ -305,9 +307,9 @@
occur_text = "is torn open, spraying blood wildly"
sound_effect = 'sound/effects/wounds/blood3.ogg'
severity = WOUND_SEVERITY_CRITICAL
initial_flow = 4.25
minimum_flow = 4
clot_rate = -0.025 // critical cuts actively get worse instead of better
initial_flow = 4
minimum_flow = 3.85
clot_rate = -0.015 // critical cuts actively get worse instead of better
threshold_minimum = 80
threshold_penalty = 40
demotes_to = /datum/wound/slash/severe