Changes how dismemberment is handled a bit (#7735)

-fixes heads and groin never being cut off at all
-removed the brute and burn armor check, the damage that is take in consideration here is already reduced by the armor in the basic attack procs
-removed the maim mallus from the head and groin
-gives more hp to hands and feet to make sure they can survive the armor bonus loss
This commit is contained in:
Alberyk
2019-12-22 15:10:44 +02:00
committed by Erki
parent 9c390fe976
commit 50ccfd2f4e
3 changed files with 29 additions and 32 deletions
+20 -28
View File
@@ -378,39 +378,31 @@
/obj/item/organ/external/proc/handle_limb_gibbing(var/used_weapon,var/brute,var/burn)
//If limb took enough damage, try to cut or tear it off
if(owner && loc == owner && !is_stump())
if(!cannot_amputate && config.limbs_can_break && (brute_dam + burn_dam) >= (max_damage * config.organ_health_multiplier))
if(!cannot_amputate && config.limbs_can_break)
var/brute_armor_value = 0
var/burn_armor_value = 0
var/edge_eligible = 0
var/maim_bonus = 0
if((brute_dam + burn_dam) >= (max_damage * config.organ_health_multiplier))
var/mob/living/carbon/human/H
if(istype(owner,/mob/living/carbon/human))
H = owner
brute_armor_value = H.getarmor_organ(src, "melee")
burn_armor_value = H.getarmor_organ(src, "burn")
var/edge_eligible = 0
var/maim_bonus = 0
if(istype(used_weapon,/obj/item))
var/obj/item/W = used_weapon
if(isprojectile(W))
var/obj/item/projectile/P = W
brute_armor_value = H.getarmor_organ(src, "bullet")
maim_bonus += P.maim_rate
else if(W.w_class >= w_class && edge)
if(istype(used_weapon,/obj/item))
var/obj/item/W = used_weapon
if(isprojectile(W))
var/obj/item/projectile/P = W
maim_bonus += P.maim_rate
else if(W.w_class >= w_class && edge)
edge_eligible = 1
else if(edge)
edge_eligible = 1
else if(edge)
edge_eligible = 1
if(edge_eligible && brute >= max_damage / (DROPLIMB_THRESHOLD_EDGE + maim_bonus) && brute >= brute_armor_value)
droplimb(0, DROPLIMB_EDGE)
else if(burn >= max_damage / (DROPLIMB_THRESHOLD_DESTROY + maim_bonus) && burn >= burn_armor_value)
droplimb(0, DROPLIMB_BURN)
else if(brute >= max_damage / (DROPLIMB_THRESHOLD_DESTROY + maim_bonus) && brute >= brute_armor_value)
droplimb(0, DROPLIMB_BLUNT)
else if(brute >= max_damage / (DROPLIMB_THRESHOLD_TEAROFF + maim_bonus) && brute >= brute_armor_value)
droplimb(0, DROPLIMB_EDGE)
if(edge_eligible && brute >= max_damage / (DROPLIMB_THRESHOLD_EDGE + maim_bonus))
droplimb(0, DROPLIMB_EDGE)
else if(burn >= max_damage / (DROPLIMB_THRESHOLD_DESTROY + maim_bonus))
droplimb(0, DROPLIMB_BURN)
else if(brute >= max_damage / (DROPLIMB_THRESHOLD_DESTROY + maim_bonus))
droplimb(0, DROPLIMB_BLUNT)
else if(brute >= max_damage / (DROPLIMB_THRESHOLD_TEAROFF + maim_bonus))
droplimb(0, DROPLIMB_EDGE)
/obj/item/organ/external/heal_damage(brute, burn, internal = 0, robo_repair = 0)
if(status & ORGAN_ROBOT && !robo_repair)
+2 -4
View File
@@ -36,7 +36,6 @@
artery_name = "iliac artery"
dislocated = -1
gendered_icon = 1
maim_bonus = 0.25
/obj/item/organ/external/arm
limb_name = "l_arm"
@@ -95,7 +94,7 @@
limb_name = "l_foot"
name = "left foot"
icon_name = "l_foot"
max_damage = 30
max_damage = 35
min_broken_damage = 15
w_class = 2
body_part = FOOT_LEFT
@@ -125,7 +124,7 @@
limb_name = "l_hand"
name = "left hand"
icon_name = "l_hand"
max_damage = 30
max_damage = 35
min_broken_damage = 15
w_class = 2
body_part = HAND_LEFT
@@ -170,7 +169,6 @@
gendered_icon = 1
encased = "skull"
var/can_intake_reagents = 1
maim_bonus = 0.33
/obj/item/organ/external/head/removed()
if(owner)