Rebalance Dragon Knight 2024-02-05 (#8135)

* Servant Weapon
- Reduces skill cooldown from 150 seconds to 60 seconds based on level 5.
- Increases base damage from 2500%Atk to 4850%Atk based on level 5.
- Increases number of hit from 2 hits to 3 hits.
- No longer be removed by Dispell or Clearance.
- Increases the trigger chance of weapon from 15% to 25% based on level 5.

* Madness Crusher
- Increases base damage from 8350%Atk to 20000%Atk based on level 5.

* Storm Slash
- Increases base damage from 2200%Atk to 4050%Atk per hit based on level 5.

* Hack and Slasher
- Increases base damage from 7700%Atk to 8550%Atk per hit based on level 10.

* Dragonic Breath
- Increases factor weight of MaxHP in skill formula from 12.5% to 25%.
- Increases factor weight of MaxSP in skill formula from 25% to 50%.

Additionally:
Dragonic Breath formula updated. Thanks to @datawulf !


Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
This commit is contained in:
Atemo 2024-02-27 23:41:03 +01:00 committed by GitHub
parent 8e44c94c7c
commit fa71d1012d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 21 additions and 22 deletions

View File

@ -34931,17 +34931,7 @@ Body:
Time: 2000
- Level: 5
Time: 1000
Cooldown:
- Level: 1
Time: 30000
- Level: 2
Time: 60000
- Level: 3
Time: 90000
- Level: 4
Time: 120000
- Level: 5
Time: 150000
Cooldown: 60000
Requires:
SpCost:
- Level: 1
@ -34966,7 +34956,7 @@ Body:
Critical: true
Range: 1
Hit: Multi_Hit
HitCount: 2
HitCount: 3
Element: Weapon
Requires:
SpCost: 1

View File

@ -5432,7 +5432,8 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
skillratio += skillratio * sc->getSCE(SC_LIGHTOFSTAR)->val2 / 100;
break;
case DK_SERVANTWEAPON_ATK:
skillratio += -100 + 500 + 400 * skill_lv + 5 * sstatus->pow;
skillratio += -100 + 450 + 800 * skill_lv;
skillratio += 5 * sstatus->pow;
RE_LVL_DMOD(100);
break;
case DK_SERVANT_W_PHANTOM:
@ -5445,7 +5446,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
break;
case DK_HACKANDSLASHER:
case DK_HACKANDSLASHER_ATK:
skillratio += -100 + 200 + 750 * skill_lv;
skillratio += -100 + 350 + 820 * skill_lv;
skillratio += 7 * sstatus->pow;
RE_LVL_DMOD(100);
break;
@ -5456,7 +5457,8 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
RE_LVL_DMOD(100);
break;
case DK_MADNESS_CRUSHER:
skillratio += -100 + 350 + 1600 * skill_lv + 10 * sstatus->pow;
skillratio += -100 + 1000 + 3800 * skill_lv;
skillratio += 10 * sstatus->pow;
if( sd != nullptr ){
int16 index = sd->equip_index[EQI_HAND_R];
@ -5469,18 +5471,25 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
skillratio *= 2;
break;
case DK_STORMSLASH:
skillratio += -100 + 200 + 400 * skill_lv + 5 * sstatus->pow;
skillratio += -100 + 300 + 750 * skill_lv;
skillratio += 5 * sstatus->pow;
RE_LVL_DMOD(100);
if (sc && sc->getSCE(SC_GIANTGROWTH) && rnd_chance(60, 100))
skillratio *= 2;
break;
case DK_DRAGONIC_BREATH:
skillratio += -100 + 50 + 350 * skill_lv;
skillratio += 5 * sstatus->pow;
//TODO: needs official HP/SP scaling [Muh]
skillratio += sstatus->max_hp / 500 + status_get_max_sp(src) / 40;
if (sc && sc->getSCE(SC_DRAGONIC_AURA))
skillratio += sstatus->max_hp / 500 + status_get_max_sp(src) / 40;
skillratio += 7 * sstatus->pow;
if (sc && sc->getSCE(SC_DRAGONIC_AURA)) {
skillratio += 3 * sstatus->pow;
skillratio += (skill_lv * (sstatus->max_hp * 25 / 100) * 5) / 100; // Skill level x 0.05 x ((MaxHP / 4) + (MaxSP / 2))
skillratio += (skill_lv * (sstatus->max_sp * 50 / 100) * 5) / 100;
} else {
skillratio += (skill_lv * (sstatus->max_hp * 25 / 100) * 7) / 100; // Skill level x 0.07 x ((MaxHP / 4) + (MaxSP / 2))
skillratio += (skill_lv * (sstatus->max_sp * 50 / 100) * 7) / 100;
}
RE_LVL_DMOD(100);
break;
case IQ_OLEUM_SANCTUM:
@ -9718,7 +9727,7 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
}
if( sc ){
if( sc->getSCE( SC_SERVANTWEAPON ) && sd->servantball > 0 && rnd() % 100 < ( 3 * sc->getSCE( SC_SERVANTWEAPON )->val1 ) ){
if( sc->getSCE( SC_SERVANTWEAPON ) && sd->servantball > 0 && rnd_chance( 5 * sc->getSCE( SC_SERVANTWEAPON )->val1, 100 ) ){
uint16 skill_id = DK_SERVANTWEAPON_ATK;
uint16 skill_lv = sc->getSCE(SC_SERVANTWEAPON)->val1;