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:
Aleos 2018-09-25 12:27:30 -04:00 committed by GitHub
parent f0dfdf9219
commit 147e8da2e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2406,10 +2406,9 @@ static bool is_attack_critical(struct Damage wd, struct block_list *src, struct
if (sd) {
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;
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);
}
#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);
}
#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.
#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]
wd.damage = (int)floor((float)((wd.damage * 140) / 100 * (100 + sd->bonus.crit_atk_rate)) / 100);
if (is_attack_left_handed(src, skill_id))