From e4300c4b866f75d665139ebfe454c0c5406c6cd8 Mon Sep 17 00:00:00 2001 From: Atemo Date: Thu, 9 Apr 2026 14:30:42 +0200 Subject: [PATCH 1/3] 6th rebalance - Hyper Novice (#9989) * Shield Chain Rush - Increases base damage from 11350% ATK to 13600% ATK based on level 10. * Spiral Pierce Max - No longer immobilize target. - Increases bonus damage from Breaking Limit from 100% to 130%. --- src/map/battle.cpp | 4 +++- src/map/skills/novice/shieldchainrush.cpp | 4 +++- src/map/skills/novice/spiralpiercemax.cpp | 8 -------- src/map/skills/novice/spiralpiercemax.hpp | 1 - 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/map/battle.cpp b/src/map/battle.cpp index 94f383eaa98..2243c31e4d6 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -1969,9 +1969,11 @@ int64 battle_calc_damage(block_list *src,block_list *bl,struct Damage *d,int64 d damage += damage * 120 / 100; break; case HN_MEGA_SONIC_BLOW: - case HN_SPIRAL_PIERCE_MAX: damage *= 2; break; + case HN_SPIRAL_PIERCE_MAX: + damage += damage * 130 / 100; + break; } } diff --git a/src/map/skills/novice/shieldchainrush.cpp b/src/map/skills/novice/shieldchainrush.cpp index 9d8f0db35ac..0075e22a1eb 100644 --- a/src/map/skills/novice/shieldchainrush.cpp +++ b/src/map/skills/novice/shieldchainrush.cpp @@ -20,12 +20,14 @@ void SkillShieldChainRush::calculateSkillRatio(const Damage *wd, const block_lis const status_data* sstatus = status_get_status_data(*src); const map_session_data* sd = BL_CAST( BL_PC, src ); - skillratio += -100 + 850 + 1050 * skill_lv; + skillratio += -100 + 600 + 1300 * skill_lv; skillratio += pc_checkskill(sd, HN_SELFSTUDY_TATICS) * 3 * skill_lv; skillratio += 5 * sstatus->pow; + RE_LVL_DMOD(100); } +// TODO : refactor to SkillImplRecursiveDamageSplash void SkillShieldChainRush::castendDamageId(block_list *src, block_list *target, uint16 skill_lv, t_tick tick, int32& flag) const { if (flag & 1) { WeaponSkillImpl::castendDamageId(src, target, skill_lv, tick, flag); diff --git a/src/map/skills/novice/spiralpiercemax.cpp b/src/map/skills/novice/spiralpiercemax.cpp index 54c1960d1b4..0d45336005d 100644 --- a/src/map/skills/novice/spiralpiercemax.cpp +++ b/src/map/skills/novice/spiralpiercemax.cpp @@ -13,14 +13,6 @@ SkillSpiralPierceMax::SkillSpiralPierceMax() : WeaponSkillImpl(HN_SPIRAL_PIERCE_MAX) { } -void SkillSpiralPierceMax::applyAdditionalEffects(block_list *src, block_list *target, uint16 skill_lv, t_tick tick, int32 attack_type, enum damage_lv dmg_lv) const { - map_session_data* dstsd = BL_CAST( BL_PC, target ); - mob_data *dstmd = BL_CAST(BL_MOB, target); - - if( dstsd || ( dstmd && !status_bl_has_mode(target,MD_STATUSIMMUNE) ) ) //Does not work on status immune - sc_start(src,target,SC_ANKLE,100,0,skill_get_time2(getSkillId(),skill_lv)); -} - void SkillSpiralPierceMax::calculateSkillRatio(const Damage *wd, const block_list *src, const block_list *target, uint16 skill_lv, int32 &skillratio, int32 mflag) const { const status_data* sstatus = status_get_status_data(*src); const map_session_data* sd = BL_CAST( BL_PC, src ); diff --git a/src/map/skills/novice/spiralpiercemax.hpp b/src/map/skills/novice/spiralpiercemax.hpp index 6a92d807011..342bd8e1334 100644 --- a/src/map/skills/novice/spiralpiercemax.hpp +++ b/src/map/skills/novice/spiralpiercemax.hpp @@ -9,7 +9,6 @@ class SkillSpiralPierceMax : public WeaponSkillImpl { public: SkillSpiralPierceMax(); - void applyAdditionalEffects(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32 attack_type, enum damage_lv dmg_lv) const override; void calculateSkillRatio(const Damage *wd, const block_list *src, const block_list *target, uint16 skill_lv, int32 &skillratio, int32 mflag) const override; void castendDamageId(block_list *src, block_list *target, uint16 skill_lv, t_tick tick, int32& flag) const override; }; From a0352a8e568224998f42ec3bf9d0f5e589494ded Mon Sep 17 00:00:00 2001 From: Atemo Date: Thu, 9 Apr 2026 14:31:23 +0200 Subject: [PATCH 2/3] 6th rebalance - Sky Emperor (#9988) * Twinkling Galaxy - Increases base damage from 2800% ATK to 3250% ATK based on level 5. * Star Cannon - Increases base damage from 3000% ATK to 3400% ATK based on level 5. - Increases area of effect of shooting star from 5 x 5 cells to 7 x 7 cells. * Star Light Kick - Reduces skill cooldown from 1 second to 0.75 seconds. --- db/re/skill_db.yml | 4 ++-- src/map/skills/taekwon/starcannon.cpp | 3 ++- src/map/skills/taekwon/twinklinggalaxy.cpp | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index b6529ca6b4a..890a3be2bf9 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -43587,7 +43587,7 @@ Body: HitCount: -3 GiveAp: 3 Element: Weapon - SplashArea: 2 + SplashArea: 3 Cooldown: 3500 FixedCastTime: 500 Duration1: 2500 @@ -44787,7 +44787,7 @@ Body: - Level: 5 Area: 3 AfterCastActDelay: 300 - Cooldown: 1000 + Cooldown: 750 Requires: SpCost: - Level: 1 diff --git a/src/map/skills/taekwon/starcannon.cpp b/src/map/skills/taekwon/starcannon.cpp index 75cdb1a7607..eff3320e1d1 100644 --- a/src/map/skills/taekwon/starcannon.cpp +++ b/src/map/skills/taekwon/starcannon.cpp @@ -67,8 +67,9 @@ void SkillStarCannon::calculateSkillRatio(const Damage* wd, const block_list* sr const map_session_data* sd = BL_CAST(BL_PC, src); const status_data* sstatus = status_get_status_data(*src); - skillratio += -100 + 250 + 550 * skill_lv; + skillratio += -100 + 150 + 650 * skill_lv; skillratio += pc_checkskill(sd, SKE_SKY_MASTERY) * 5 * skill_lv; skillratio += 5 * sstatus->pow; + RE_LVL_DMOD(100); } diff --git a/src/map/skills/taekwon/twinklinggalaxy.cpp b/src/map/skills/taekwon/twinklinggalaxy.cpp index d670c443010..d9ef8e778d2 100644 --- a/src/map/skills/taekwon/twinklinggalaxy.cpp +++ b/src/map/skills/taekwon/twinklinggalaxy.cpp @@ -27,8 +27,9 @@ void SkillTwinklingGalaxy::calculateSkillRatio(const Damage* wd, const block_lis const map_session_data* sd = BL_CAST(BL_PC, src); const status_data* sstatus = status_get_status_data(*src); - skillratio += -100 + 300 + 500 * skill_lv; + skillratio += -100 + 250 + 600 * skill_lv; skillratio += pc_checkskill(sd, SKE_SKY_MASTERY) * 3 * skill_lv; skillratio += 5 * sstatus->pow; + RE_LVL_DMOD(100); } From 6deba062e233490bdd2a708da5680174c18eb535 Mon Sep 17 00:00:00 2001 From: Atemo Date: Thu, 9 Apr 2026 14:32:00 +0200 Subject: [PATCH 3/3] 6th rebalance - Inquisitor (#9987) * First Brand - Applies critical damage, the critical chance is the user's CRI. * Second Faith - Applies critical damage, the critical chance is the user's CRI. * Second Judgement - Changes damage logic from 3 split hits to 3 cumulative hits. - Changes base damage from 13150% ATK to 4500% ATK per hit based on level 5. * Third Consecration - Increases base damage from 3500% ATK per hit to 6000% ATK per hit based on level 5. - Reduces skill cooldown from 1 second to 0.7 seconds. - No longer recover HP/SP. * Oleum Sanctum - Applies critical damage, the critical chance is the user's CRI. --- db/re/skill_db.yml | 7 +++++-- src/map/skills/acolyte/secondjudgement.cpp | 4 +++- src/map/skills/acolyte/thirdconsecration.cpp | 5 +++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index 890a3be2bf9..a4b6b581c6a 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -35975,6 +35975,7 @@ Body: Type: Weapon TargetType: Self DamageFlags: + Critical: true Splash: true Range: 9 Hit: Single @@ -36119,6 +36120,7 @@ Body: Type: Weapon TargetType: Attack DamageFlags: + Critical: true Splash: true Range: 3 Hit: Single @@ -36241,6 +36243,7 @@ Body: Type: Weapon TargetType: Attack DamageFlags: + Critical: true Splash: true Range: 3 Hit: Multi_Hit @@ -36273,7 +36276,7 @@ Body: Splash: true Range: 3 Hit: Multi_Hit - HitCount: -3 + HitCount: 3 Element: Weapon SplashArea: 3 GiveAp: 4 @@ -36363,7 +36366,7 @@ Body: HitCount: 5 Element: Weapon SplashArea: 3 - Cooldown: 1000 + Cooldown: 700 Requires: SpCost: - Level: 1 diff --git a/src/map/skills/acolyte/secondjudgement.cpp b/src/map/skills/acolyte/secondjudgement.cpp index b16b9ddfe3f..d2e1e886ce7 100644 --- a/src/map/skills/acolyte/secondjudgement.cpp +++ b/src/map/skills/acolyte/secondjudgement.cpp @@ -14,7 +14,9 @@ SkillSecondJudgement::SkillSecondJudgement() : SkillImplRecursiveDamageSplash(IQ void SkillSecondJudgement::calculateSkillRatio(const Damage* wd, const block_list* src, const block_list* target, uint16 skill_lv, int32& skillratio, int32 mflag) const { const status_data* sstatus = status_get_status_data(*src); - skillratio += -100 + 150 + 2600 * skill_lv + 7 * sstatus->pow; + skillratio += -100 + 2000 + 500 * skill_lv; + skillratio += 7 * sstatus->pow; // TODO : pow ratio has changed ? + RE_LVL_DMOD(100); } diff --git a/src/map/skills/acolyte/thirdconsecration.cpp b/src/map/skills/acolyte/thirdconsecration.cpp index 2bec34b31ce..cdcc03b9b4d 100644 --- a/src/map/skills/acolyte/thirdconsecration.cpp +++ b/src/map/skills/acolyte/thirdconsecration.cpp @@ -14,7 +14,9 @@ SkillThirdConsecration::SkillThirdConsecration() : SkillImplRecursiveDamageSplas void SkillThirdConsecration::calculateSkillRatio(const Damage* wd, const block_list* src, const block_list* target, uint16 skill_lv, int32& skillratio, int32 mflag) const { const status_data* sstatus = status_get_status_data(*src); - skillratio += -100 + 700 * skill_lv + 10 * sstatus->pow; + skillratio += -100 + 1200 * skill_lv; + skillratio += 10 * sstatus->pow; + RE_LVL_DMOD(100); } @@ -24,7 +26,6 @@ void SkillThirdConsecration::applyAdditionalEffects(block_list* src, block_list* void SkillThirdConsecration::splashSearch(block_list* src, block_list* target, uint16 skill_lv, t_tick tick, int32 flag) const { clif_skill_nodamage(src, *target, getSkillId(), skill_lv); - status_heal(src, status_get_max_hp(src) * skill_lv / 100, status_get_max_sp(src) * skill_lv / 100, 0); SkillImplRecursiveDamageSplash::splashSearch(src, target, skill_lv, tick, flag); }