From 147e8da2e43f4125d21a43cc1211a032a27e373d Mon Sep 17 00:00:00 2001 From: Aleos Date: Tue, 25 Sep 2018 12:27:30 -0400 Subject: [PATCH] Corrected Critical bonuses (#3506) * Fixes #3501. * Critical bonuses bCritAtkRate and bCriticalLong should not be applying to skills. Thanks to @mrjnumber1! --- src/map/battle.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 65f2bac288..e5d4cb93bd 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -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))