mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-25 06:00:16 +01:00
Adds mob bleeding overlays, tweaks some bleeding balance (#65371)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user