Cleanup of PATK calculation (#8094)

Follow up to 66dddb3 (rathena/rathena#7996)

Fixes RK_DRAGONBREATH handling when DK_DRAGONIC_AURA is not skilled
This commit is contained in:
munkrej 2024-01-08 21:10:11 +01:00 committed by GitHub
parent a3cb48a341
commit 60dbe5a42d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6944,11 +6944,27 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
battle_attack_sc_bonus(&wd, src, target, skill_id, skill_lv);
if (sd) { //monsters, homuns and pets have their damage computed directly
//PATK mod applies to Dragonbreaths if Dragonic Aura is skilled only - [munkrej]
if (!((skill_id == RK_DRAGONBREATH || skill_id == RK_DRAGONBREATH_WATER) && pc_checkskill( sd, DK_DRAGONIC_AURA ) == 0)) {
wd.damage = (int64)floor((float)((wd.statusAtk + wd.weaponAtk + wd.equipAtk + wd.percentAtk) * (100 + sstatus->patk) / 100 + wd.masteryAtk + bonus_damage));
if (is_attack_left_handed(src, skill_id))
wd.damage2 = (int64)floor((float)((wd.statusAtk2 + wd.weaponAtk2 + wd.equipAtk2 + wd.percentAtk2) * (100 + sstatus->patk) / 100 + wd.masteryAtk2 + bonus_damage));
wd.damage = wd.statusAtk + wd.weaponAtk + wd.equipAtk + wd.percentAtk;
if( is_attack_left_handed( src, skill_id ) ){
wd.damage2 = wd.statusAtk2 + wd.weaponAtk2 + wd.equipAtk2 + wd.percentAtk2;
}
// Apply PATK mod
// But for Dragonbreaths it only applies if Dragonic Aura is skilled
if( ( skill_id != RK_DRAGONBREATH && skill_id != RK_DRAGONBREATH_WATER ) || pc_checkskill( sd, DK_DRAGONIC_AURA ) > 0 ){
wd.damage = (int64)floor( (float)( wd.damage * ( 100 + sstatus->patk ) / 100 ) );
if( is_attack_left_handed( src, skill_id ) ){
wd.damage2 = (int64)floor( (float)( wd.damage2 * ( 100 + sstatus->patk ) / 100 ) );
}
}
// Apply MasteryATK
wd.damage += wd.masteryAtk;
if( is_attack_left_handed( src, skill_id ) ){
wd.damage2 += wd.masteryAtk2;
}
// Apply bonus damage
wd.damage += bonus_damage;
if( is_attack_left_handed( src, skill_id ) ){
wd.damage2 += bonus_damage;
}
// CritAtkRate modifier