From e152ebcd142a4e54e1d8dc1debba273d499d98ea Mon Sep 17 00:00:00 2001 From: HarpyEagle Date: Thu, 13 Aug 2015 17:23:54 -0400 Subject: [PATCH] Thrown objects continue flying if reactive teleport armour is triggered. --- .../mob/living/carbon/human/human_defense.dm | 20 ++++++++++--------- code/modules/mob/living/damage_procs.dm | 1 + code/modules/mob/living/living_defense.dm | 1 - 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 284515a222..e1cfa6f7ff 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -134,11 +134,9 @@ emp_act /mob/living/carbon/human/proc/check_shields(var/damage = 0, var/atom/damage_source = null, var/mob/attacker = null, var/def_zone = null, var/attack_text = "the attack") for(var/obj/item/shield in list(l_hand, r_hand, wear_suit)) - if(!shield) - continue - var/result = shield.handle_shield(src, damage, damage_source, attacker, def_zone, attack_text) - if(result) - return result + if(!shield) continue + . = shield.handle_shield(src, damage, damage_source, attacker, def_zone, attack_text) + if(.) return return 0 /mob/living/carbon/human/emp_act(severity) @@ -293,15 +291,19 @@ emp_act miss_chance = max(15*(distance-2), 0) zone = get_zone_with_miss_chance(zone, src, miss_chance, ranged_attack=1) + if(zone && O.thrower != src) + var/shield_check = check_shields(throw_damage, O, thrower, zone, "[O]") + if(shield_check == PROJECTILE_FORCE_MISS) + zone = null + else if(shield_check) + return + if(!zone) - visible_message("\blue \The [O] misses [src] narrowly!") + visible_message("\The [O] misses [src] narrowly!") return O.throwing = 0 //it hit, so stop moving - if ((O.thrower != src) && check_shields(throw_damage, O, thrower, zone, "[O]")) - return - var/obj/item/organ/external/affecting = get_organ(zone) var/hit_area = affecting.name diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index cc76d40c65..2f0d30ce2c 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -24,6 +24,7 @@ adjustCloneLoss(damage/(blocked+1)) if(HALLOSS) adjustHalLoss(damage/(blocked+1)) + flash_weak_pain() updatehealth() return 1 diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 871e95c8b4..0d4a5d77b4 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -50,7 +50,6 @@ /mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone) - flash_weak_pain() //Being hit while using a cloaking device var/obj/item/weapon/cloaking_device/C = locate((/obj/item/weapon/cloaking_device) in src)