diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 4ac3bce86b..5c3d1824ca 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -7307,14 +7307,12 @@ int64 battle_calc_return_damage(struct block_list* bl, struct block_list *src, i if (ssc) { if (ssc->data[SC_HELLS_PLANT]) return 0; - if (ssc->data[SC_REF_T_POTION]) - return 1; // Returns 1 damage } if (flag & BF_SHORT) {//Bounces back part of the damage. if ( (skill_get_inf2(skill_id, INF2_ISTRAP) || !status_reflect) && sd && sd->bonus.short_weapon_damage_return ) { rdamage += damage * sd->bonus.short_weapon_damage_return / 100; - rdamage = i64max(rdamage,1); + rdamage = i64max(rdamage, 1); } else if( status_reflect && sc && sc->count ) { if( sc->data[SC_REFLECTSHIELD] ) { struct status_change_entry *sce_d; @@ -7343,8 +7341,7 @@ int64 battle_calc_return_damage(struct block_list* bl, struct block_list *src, i rdamage = 0; else { rdamage += damage * sc->data[SC_REFLECTSHIELD]->val2 / 100; - if (rdamage < 1) - rdamage = 1; + rdamage = i64max(rdamage, 1); } } @@ -7363,14 +7360,14 @@ int64 battle_calc_return_damage(struct block_list* bl, struct block_list *src, i if( sc->data[SC_SHIELDSPELL_DEF] && sc->data[SC_SHIELDSPELL_DEF]->val1 == 2 && !status_bl_has_mode(src,MD_STATUS_IMMUNE) ){ rdamage += damage * sc->data[SC_SHIELDSPELL_DEF]->val2 / 100; - if (rdamage < 1) rdamage = 1; + rdamage = i64max(rdamage, 1); } } } } else { if (!status_reflect && sd && sd->bonus.long_weapon_damage_return) { rdamage += damage * sd->bonus.long_weapon_damage_return / 100; - if (rdamage < 1) rdamage = 1; + rdamage = i64max(rdamage, 1); } } @@ -7393,6 +7390,9 @@ int64 battle_calc_return_damage(struct block_list* bl, struct block_list *src, i } if (ssc->data[SC_VENOMBLEED] && ssc->data[SC_VENOMBLEED]->val3 == 0) rdamage -= damage * ssc->data[SC_VENOMBLEED]->val2 / 100; + + if (rdamage > 0 && ssc->data[SC_REF_T_POTION]) + return 1; // Returns 1 damage } if (sc) {