Corrected Critical bonuses (#3506)
* Fixes #3501. * Critical bonuses bCritAtkRate and bCriticalLong should not be applying to skills. Thanks to @mrjnumber1!
This commit is contained in:
parent
f0dfdf9219
commit
147e8da2e4
@ -2406,10 +2406,9 @@ static bool is_attack_critical(struct Damage wd, struct block_list *src, struct
|
|||||||
|
|
||||||
if (sd) {
|
if (sd) {
|
||||||
cri += sd->critaddrace[tstatus->race] + sd->critaddrace[RC_ALL];
|
cri += sd->critaddrace[tstatus->race] + sd->critaddrace[RC_ALL];
|
||||||
if(is_skill_using_arrow(src, skill_id)) {
|
if(!skill_id && is_skill_using_arrow(src, skill_id)) {
|
||||||
cri += sd->bonus.arrow_cri;
|
cri += sd->bonus.arrow_cri;
|
||||||
if (!skill_id)
|
cri += sd->bonus.critical_rangeatk;
|
||||||
cri += sd->bonus.critical_rangeatk;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3278,7 +3277,7 @@ struct Damage battle_calc_skill_base_damage(struct Damage wd, struct block_list
|
|||||||
RE_ALLATK_ADDRATE(wd, sd->bonus.atk_rate);
|
RE_ALLATK_ADDRATE(wd, sd->bonus.atk_rate);
|
||||||
}
|
}
|
||||||
#ifndef RENEWAL
|
#ifndef RENEWAL
|
||||||
if(sd->bonus.crit_atk_rate && is_attack_critical(wd, src, target, skill_id, skill_lv, false)) { // add +crit damage bonuses here in pre-renewal mode [helvetica]
|
if(sd->bonus.crit_atk_rate && !skill_id && is_attack_critical(wd, src, target, skill_id, skill_lv, false)) { // add +crit damage bonuses here in pre-renewal mode [helvetica]
|
||||||
ATK_ADDRATE(wd.damage, wd.damage2, sd->bonus.crit_atk_rate);
|
ATK_ADDRATE(wd.damage, wd.damage2, sd->bonus.crit_atk_rate);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -5481,7 +5480,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
|
|||||||
return wd; //Enough, rest is not needed.
|
return wd; //Enough, rest is not needed.
|
||||||
|
|
||||||
#ifdef RENEWAL
|
#ifdef RENEWAL
|
||||||
if (is_attack_critical(wd, src, target, skill_id, skill_lv, false)) {
|
if (!skill_id && is_attack_critical(wd, src, target, skill_id, skill_lv, false)) {
|
||||||
if (sd) { //Check for player so we don't crash out, monsters don't have bonus crit rates [helvetica]
|
if (sd) { //Check for player so we don't crash out, monsters don't have bonus crit rates [helvetica]
|
||||||
wd.damage = (int)floor((float)((wd.damage * 140) / 100 * (100 + sd->bonus.crit_atk_rate)) / 100);
|
wd.damage = (int)floor((float)((wd.damage * 140) / 100 * (100 + sd->bonus.crit_atk_rate)) / 100);
|
||||||
if (is_attack_left_handed(src, skill_id))
|
if (is_attack_left_handed(src, skill_id))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user