mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-21 12:08:55 +01:00
[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:
@@ -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" //:(
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user