From 6b8e369da344a38ba5ea95f46655d1702472c86e Mon Sep 17 00:00:00 2001 From: Atemo Date: Tue, 26 Jan 2021 01:38:50 +0100 Subject: [PATCH] Fixed an issue with bReduceDamageReturn (#5722) Fixed #5650 Thanks to @eppc0330, Lemongrass3110 ! --- src/map/battle.cpp | 10 ++++++---- src/map/skill.cpp | 7 +++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/map/battle.cpp b/src/map/battle.cpp index cff1e47a2a..4ac3bce86b 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -7374,10 +7374,12 @@ int64 battle_calc_return_damage(struct block_list* bl, struct block_list *src, i } } - if (sd && sd->bonus.reduce_damage_return != 0) { - rdamage -= rdamage * sd->bonus.reduce_damage_return / 100; - if (rdamage < 1) - rdamage = 1; + if (rdamage > 0) { + map_session_data* ssd = BL_CAST(BL_PC, src); + if (ssd && ssd->bonus.reduce_damage_return != 0) { + rdamage -= rdamage * ssd->bonus.reduce_damage_return / 100; + rdamage = i64max(rdamage, 1); + } } if (ssc) { diff --git a/src/map/skill.cpp b/src/map/skill.cpp index cde8c5d8c0..a31c5188d1 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -3430,10 +3430,9 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list * dmg.damage -= dmg.damage * (6 * (1+per)) / 100; } - if (sd && sd->bonus.reduce_damage_return != 0) { - dmg.damage -= dmg.damage * sd->bonus.reduce_damage_return / 100; - if (dmg.damage < 1) - dmg.damage = 1; + if (dmg.damage > 0 && tsd && tsd->bonus.reduce_damage_return != 0) { + dmg.damage -= dmg.damage * tsd->bonus.reduce_damage_return / 100; + dmg.damage = i64max(dmg.damage, 1); } } #endif