From dbb19abb668133d9e054af4077e2c4b9d0ff0b71 Mon Sep 17 00:00:00 2001 From: Playtester Date: Fri, 29 Jan 2016 22:07:24 +0100 Subject: [PATCH] Fixed elemental armor not reducing damage to 0 in pre-renewal (fixes #924) --- src/map/battle.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/map/battle.c b/src/map/battle.c index 802aa039ea..8ce1e80046 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -513,12 +513,15 @@ int64 battle_attr_fix(struct block_list *src, struct block_list *target, int64 d } } - if (ratio < 100) - damage = damage - (damage * (100 - ratio) / 100); - else - damage = damage + (damage * (ratio - 100) / 100); +#ifdef RENEWAL + //In renewal, reductions are always rounded down so damage can never reach 0 unless ratio is 0 + damage = damage - (int64)((damage * (100 - ratio)) / 100); +#else + damage = (int64)((damage*ratio)/100); +#endif - return i64max(damage,0); + //Damage can be negative, see battle_config.attr_recover + return damage; } /**