[MIRROR] Fixes disabled limbs from compound fractures, only robotic limbs can be disabled by pure damage now (#1709)

* Fixes disabled limbs from compound fractures, only robotic limbs can be disabled by pure damage now (#54922)

* Fixes disabled limbs from compound fractures, only robotic limbs can be disabled by pure damage now

Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
This commit is contained in:
SkyratBot
2020-11-17 00:50:36 +01:00
committed by GitHub
co-authored by Ryll Ryll
parent 9ed66a2511
commit 964adb7828
16 changed files with 75 additions and 80 deletions
+2 -2
View File
@@ -120,14 +120,14 @@
if(!.)
return
ADD_TRAIT(H, TRAIT_NOGUNS, SLEEPING_CARP_TRAIT)
ADD_TRAIT(H, TRAIT_HARDLIMBWOUND, SLEEPING_CARP_TRAIT)
ADD_TRAIT(H, TRAIT_HARDLY_WOUNDED, SLEEPING_CARP_TRAIT)
ADD_TRAIT(H, TRAIT_NODISMEMBER, SLEEPING_CARP_TRAIT)
H.faction |= "carp" //:D
/datum/martial_art/the_sleeping_carp/on_remove(mob/living/carbon/human/H)
. = ..()
REMOVE_TRAIT(H, TRAIT_NOGUNS, SLEEPING_CARP_TRAIT)
REMOVE_TRAIT(H, TRAIT_HARDLIMBWOUND, SLEEPING_CARP_TRAIT)
REMOVE_TRAIT(H, TRAIT_HARDLY_WOUNDED, SLEEPING_CARP_TRAIT)
REMOVE_TRAIT(H, TRAIT_NODISMEMBER, SLEEPING_CARP_TRAIT)
H.faction -= "carp" //:(
+1 -1
View File
@@ -257,7 +257,7 @@
name = "Frail"
desc = "You have skin of paper and bones of glass! You suffer wounds much more easily than most."
value = -2
mob_trait = TRAIT_EASYLIMBWOUND
mob_trait = TRAIT_EASILY_WOUNDED
gain_text = "<span class='danger'>You feel frail.</span>"
lose_text = "<span class='notice'>You feel sturdy again.</span>"
medical_record_text = "Patient is absurdly easy to injure. Please take all due dilligence to avoid possible malpractice suits."
+3
View File
@@ -165,6 +165,7 @@
/// Remove the wound from whatever it's afflicting, and cleans up whateverstatus effects it had or modifiers it had on interaction times. ignore_limb is used for detachments where we only want to forget the victim
/datum/wound/proc/remove_wound(ignore_limb, replaced = FALSE)
//TODO: have better way to tell if we're getting removed without replacement (full heal) scar stuff
set_disabling(FALSE)
if(limb && !already_scarred && !replaced)
already_scarred = TRUE
var/datum/scar/new_scar = new
@@ -229,6 +230,8 @@
else if(. && limb) //Lost disabling.
REMOVE_TRAIT(limb, TRAIT_PARALYSIS, src)
REMOVE_TRAIT(limb, TRAIT_DISABLED_BY_WOUND, src)
if(limb?.can_be_disabled)
limb.update_disabled()
/// Additional beneficial effects when the wound is gained, in case you want to give a temporary boost to allow the victim to try an escape or last stand
+14 -9
View File
@@ -33,6 +33,9 @@
Overwriting of base procs
*/
/datum/wound/blunt/wound_injury(datum/wound/old_wound = null)
// hook into gaining/losing gauze so crit bone wounds can re-enable/disable depending if they're slung or not
RegisterSignal(limb, list(COMSIG_BODYPART_GAUZED, COMSIG_BODYPART_GAUZE_DESTROYED), .proc/update_inefficiencies)
if(limb.body_zone == BODY_ZONE_HEAD && brain_trauma_group)
processes = TRUE
active_trauma = victim.gain_trauma_type(brain_trauma_group, TRAUMA_RESILIENCE_WOUND)
@@ -52,6 +55,8 @@
/datum/wound/blunt/remove_wound(ignore_limb, replaced)
limp_slowdown = 0
QDEL_NULL(active_trauma)
if(limb)
UnregisterSignal(limb, list(COMSIG_BODYPART_GAUZED, COMSIG_BODYPART_GAUZE_DESTROYED))
if(victim)
UnregisterSignal(victim, COMSIG_HUMAN_EARLY_UNARMED_ATTACK)
return ..()
@@ -146,15 +151,15 @@
else
var/sling_condition = ""
// how much life we have left in these bandages
switch(limb.current_gauze.obj_integrity / limb.current_gauze.max_integrity * 100)
if(0 to 25)
sling_condition = "just barely "
if(25 to 50)
sling_condition = "loosely "
if(50 to 75)
sling_condition = "mostly "
if(75 to INFINITY)
sling_condition = "tightly "
switch(limb.current_gauze.absorption_capacity)
if(0 to 1.25)
sling_condition = "just barely"
if(1.25 to 2.75)
sling_condition = "loosely"
if(2.75 to 4)
sling_condition = "mostly"
if(4 to INFINITY)
sling_condition = "tightly"
msg += "[victim.p_their(TRUE)] [limb.name] is [sling_condition] fastened in a sling of [limb.current_gauze.name]"
+4 -4
View File
@@ -125,13 +125,13 @@
var/bandage_condition
switch(limb.current_gauze.absorption_capacity)
if(0 to 1.25)
bandage_condition = "nearly ruined "
bandage_condition = "nearly ruined"
if(1.25 to 2.75)
bandage_condition = "badly worn "
bandage_condition = "badly worn"
if(2.75 to 4)
bandage_condition = "slightly pus-stained "
bandage_condition = "slightly pus-stained"
if(4 to INFINITY)
bandage_condition = "clean "
bandage_condition = "clean"
condition += " underneath a dressing of [bandage_condition] [limb.current_gauze.name]"
else
+6 -6
View File
@@ -54,18 +54,18 @@
if(!limb.current_gauze)
return ..()
var/list/msg = list("The cuts on [victim.p_their()] [limb.name] are wrapped with")
var/list/msg = list("The cuts on [victim.p_their()] [limb.name] are wrapped with ")
// how much life we have left in these bandages
switch(limb.current_gauze.absorption_capacity)
if(0 to 1.25)
msg += "nearly ruined "
msg += "nearly ruined"
if(1.25 to 2.75)
msg += "badly worn "
msg += "badly worn"
if(2.75 to 4)
msg += "slightly bloodied "
msg += "slightly bloodied"
if(4 to INFINITY)
msg += "clean "
msg += "[limb.current_gauze.name]!"
msg += "clean"
msg += " [limb.current_gauze.name]!"
return "<B>[msg.Join()]</B>"