From 66dddb3b19ab4d42dfcab5f6c4e734a217b7b9b7 Mon Sep 17 00:00:00 2001 From: munkrej Date: Fri, 3 Nov 2023 14:07:28 +0100 Subject: [PATCH] Fixes RK_DRAGONBREATH/RK_DRAGONBREATH_WATER scaling with 4th job (#7996) Corrected POW scaling Corrected P.ATK scaling Corrected skills scaling with Dragonic Aura buff --- src/map/battle.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 5a9ccce8a6..3e0d19a3e9 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -3858,13 +3858,17 @@ static void battle_calc_skill_base_damage(struct Damage* wd, struct block_list * case RK_DRAGONBREATH_WATER: { int damagevalue = (sstatus->hp / 50 + status_get_max_sp(src) / 4) * skill_lv; - if(status_get_lv(src) > 100) damagevalue = damagevalue * status_get_lv(src) / 100; - if(sd) - damagevalue = damagevalue * ( 90 + 10 * pc_checkskill( sd, RK_DRAGONTRAINING ) + ( pc_checkskill( sd, DK_DRAGONIC_AURA ) >= 1 ? ( sstatus->pow / 4 + sstatus->patk / 2 ) : 0 ) ) / 100; - if (sc && sc->getSCE(SC_DRAGONIC_AURA))// Need official damage increase. [Rytech] - damagevalue += damagevalue * 50 / 100; + if(sd) { + if (pc_checkskill( sd, DK_DRAGONIC_AURA ) >= 1) { + damagevalue = damagevalue * (90 + 10 * pc_checkskill( sd, RK_DRAGONTRAINING ) + sstatus->pow / 5 ) / 100; + } else { + damagevalue = damagevalue * (90 + 10 * pc_checkskill( sd, RK_DRAGONTRAINING )) / 100; + } + } + if (sc && sc->getSCE(SC_DRAGONIC_AURA)) + damagevalue += damagevalue * sc->getSCE(SC_DRAGONIC_AURA)->val1 * 10 / 100; ATK_ADD(wd->damage, wd->damage2, damagevalue); #ifdef RENEWAL ATK_ADD(wd->weaponAtk, wd->weaponAtk2, damagevalue); @@ -6899,9 +6903,12 @@ 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 - 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)); + //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)); + } // CritAtkRate modifier if (wd.type == DMG_CRITICAL || wd.type == DMG_MULTI_HIT_CRITICAL) {