Fixes Golden X potion reflect effect (#5719)
* Fixes #5651 * Resolves an issue with Golden X potion causing 1 reflect damage even if the target doesn't have any reflect abilities active. Thanks to @eppc0330!
This commit is contained in:
parent
9f87653e3a
commit
1e3d777853
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user