From a8ea0a3fd478deabfeac88dca7a2a30317433ff0 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 4 Jul 2013 23:23:22 -0700 Subject: [PATCH] Bot shield not working against melee fix. --- .../mob/living/silicon/robot/robot_damage.dm | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index 49dcf7248ec..e5783877afd 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -54,11 +54,28 @@ picked.heal_damage(brute,burn) updatehealth() -/mob/living/silicon/robot/take_organ_damage(var/brute, var/burn, var/sharp = 0) +/mob/living/silicon/robot/take_organ_damage(var/brute = 0, var/burn = 0, var/sharp = 0) var/list/components = get_damageable_components() if(components.len) return + //Combat shielding absorbs a percentage of damage directly into the cell. + if(module_active && istype(module_active,/obj/item/borg/combat/shield)) + var/obj/item/borg/combat/shield/shield = module_active + //Shields absorb a certain percentage of damage based on their power setting. + var/absorb_brute = brute*shield.shield_level + var/absorb_burn = burn*shield.shield_level + var/cost = (absorb_brute+absorb_burn)*100 + + cell.charge -= cost + if(cell.charge <= 0) + cell.charge = 0 + src << "\red Your shield has overloaded!" + else + brute -= absorb_brute + burn -= absorb_burn + src << "\red Your shield absorbs some of the impact!" + var/datum/robot_component/C = pick(components) C.take_damage(brute,burn,sharp) updatehealth()