From 24f7c0ca2cac15f9aa55e32b50ec4162d563dfb3 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Fri, 13 May 2016 02:51:40 +0100 Subject: [PATCH] Fixes not being able to stop wounds from bleeding --- code/modules/organs/wound.dm | 40 +++++++++++++++--------------------- 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/code/modules/organs/wound.dm b/code/modules/organs/wound.dm index 3cf3ecb239..2c97bf4cfc 100644 --- a/code/modules/organs/wound.dm +++ b/code/modules/organs/wound.dm @@ -13,6 +13,8 @@ var/damage = 0 // ticks of bleeding left. var/bleed_timer = 0 + // Above this amount wounds you will need to treat the wound to stop bleeding, regardless of bleed_timer + var/bleed_threshold = 30 // amount of damage the current wound type requires(less means we need to apply the next healing stage) var/min_damage = 0 @@ -187,7 +189,7 @@ return 0 //incompatible damage types if (src.amount > 1) - return 0 + return 0//merged wounds cannot be worsened. //with 1.5*, a shallow cut will be able to carry at most 30 damage, //37.5 for a deep cut @@ -208,8 +210,8 @@ if (bandaged||clamped) return 0 - if (wound_damage() <= 30 && bleed_timer <= 0) - return 0 //Bleed timer has run out. Wounds with more than 30 damage don't stop bleeding on their own. + if (bleed_timer <= 0 && wound_damage() <= bleed_threshold) + return 0 //Bleed timer has run out. Once a wound is big enough though, you'll need a bandage to stop it return 1 @@ -264,8 +266,9 @@ return null //no wound /** CUTS **/ -/datum/wound/cut/bleeding() - return ..() || wound_damage() >= 5 +/datum/wound/cut + bleed_threshold = 5 + damage_type = CUT /datum/wound/cut/small // link wound descriptions to amounts of damage @@ -273,40 +276,34 @@ // The major cut types have the max_bleeding_stage set to the clot stage (which is accordingly given the "blood soaked" descriptor). max_bleeding_stage = 3 stages = list("ugly ripped cut" = 20, "ripped cut" = 10, "cut" = 5, "healing cut" = 2, "small scab" = 0) - damage_type = CUT /datum/wound/cut/deep max_bleeding_stage = 3 stages = list("ugly deep ripped cut" = 25, "deep ripped cut" = 20, "deep cut" = 15, "clotted cut" = 8, "scab" = 2, "fresh skin" = 0) - damage_type = CUT /datum/wound/cut/flesh max_bleeding_stage = 4 stages = list("ugly ripped flesh wound" = 35, "ugly flesh wound" = 30, "flesh wound" = 25, "blood soaked clot" = 15, "large scab" = 5, "fresh skin" = 0) - damage_type = CUT /datum/wound/cut/gaping max_bleeding_stage = 3 stages = list("gaping wound" = 50, "large blood soaked clot" = 25, "blood soaked clot" = 15, "small angry scar" = 5, "small straight scar" = 0) - damage_type = CUT /datum/wound/cut/gaping_big max_bleeding_stage = 3 stages = list("big gaping wound" = 60, "healing gaping wound" = 40, "large blood soaked clot" = 25, "large angry scar" = 10, "large straight scar" = 0) - damage_type = CUT datum/wound/cut/massive max_bleeding_stage = 3 stages = list("massive wound" = 70, "massive healing wound" = 50, "massive blood soaked clot" = 25, "massive angry scar" = 10, "massive jagged scar" = 0) - damage_type = CUT /** PUNCTURES **/ +/datum/wound/puncture + bleed_threshold = 5 + damage_type = PIERCE + /datum/wound/puncture/can_worsen(damage_type, damage) - return 0 -/datum/wound/puncture/can_merge(var/datum/wound/other) - return 0 -/datum/wound/puncture/bleeding() - return ..() || wound_damage() >= 5 + return 0 //puncture wounds cannot be enlargened /datum/wound/puncture/small max_bleeding_stage = 2 @@ -334,41 +331,36 @@ datum/wound/puncture/massive damage_type = PIERCE /** BRUISES **/ -/datum/wound/bruise/bleeding() - return ..() || wound_damage() >= 20 - /datum/wound/bruise stages = list("monumental bruise" = 80, "huge bruise" = 50, "large bruise" = 30, "moderate bruise" = 20, "small bruise" = 10, "tiny bruise" = 5) + bleed_threshold = 20 max_bleeding_stage = 3 //only large bruise and above can bleed. autoheal_cutoff = 30 damage_type = BRUISE /** BURNS **/ /datum/wound/burn + damage_type = BURN max_bleeding_stage = 0 + /datum/wound/burn/bleeding() return 0 /datum/wound/burn/moderate stages = list("ripped burn" = 10, "moderate burn" = 5, "healing moderate burn" = 2, "fresh skin" = 0) - damage_type = BURN /datum/wound/burn/large stages = list("ripped large burn" = 20, "large burn" = 15, "healing large burn" = 5, "fresh skin" = 0) - damage_type = BURN /datum/wound/burn/severe stages = list("ripped severe burn" = 35, "severe burn" = 30, "healing severe burn" = 10, "burn scar" = 0) - damage_type = BURN /datum/wound/burn/deep stages = list("ripped deep burn" = 45, "deep burn" = 40, "healing deep burn" = 15, "large burn scar" = 0) - damage_type = BURN /datum/wound/burn/carbonised stages = list("carbonised area" = 50, "healing carbonised area" = 20, "massive burn scar" = 0) - damage_type = BURN /** INTERNAL BLEEDING **/ /datum/wound/internal_bleeding