diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index c4207eac08..764fbe4531 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -41389,6 +41389,85 @@ Body: SplashArea: 6 Requires: SpCost: 1 + - Id: 6001 + Name: DK_DRAGONIC_BREATH + Description: Dragonic Breath + MaxLevel: 10 + Type: Weapon + TargetType: Attack + DamageFlags: + Splash: true + IgnoreDefense: true + Flags: + TargetTrap: true + Range: 9 + GiveAp: 2 + Hit: Multi_Hit + HitCount: -2 + Element: Weapon + SplashArea: + - Level: 1 + Area: 3 + - Level: 2 + Area: 3 + - Level: 3 + Area: 3 + - Level: 4 + Area: 3 + - Level: 5 + Area: 3 + - Level: 6 + Area: 4 + - Level: 7 + Area: 4 + - Level: 8 + Area: 4 + - Level: 9 + Area: 4 + - Level: 10 + Area: 4 + CastCancel: true + CastTime: + - Level: 4 + Time: 1000 + - Level: 5 + Time: 1000 + - Level: 6 + Time: 1000 + - Level: 7 + Time: 1500 + - Level: 8 + Time: 1500 + - Level: 9 + Time: 2000 + - Level: 10 + Time: 2000 + AfterCastActDelay: 150 + FixedCastTime: 500 + Cooldown: 500 + Requires: + SpCost: + - Level: 1 + Amount: 61 + - Level: 2 + Amount: 64 + - Level: 3 + Amount: 67 + - Level: 4 + Amount: 70 + - Level: 5 + Amount: 73 + - Level: 6 + Amount: 76 + - Level: 7 + Amount: 79 + - Level: 8 + Amount: 82 + - Level: 9 + Amount: 85 + - Level: 10 + Amount: 88 + State: Ridingdragon - Id: 6002 Name: MT_SPARK_BLASTER Description: Spark Blaster diff --git a/db/re/skill_tree.yml b/db/re/skill_tree.yml index b7c422d40e..02d5d441cd 100644 --- a/db/re/skill_tree.yml +++ b/db/re/skill_tree.yml @@ -6683,6 +6683,13 @@ Body: Requires: - Name: DK_TWOHANDDEF Level: 5 + - Name: DK_DRAGONIC_BREATH + MaxLevel: 10 + Requires: + - Name: RK_DRAGONBREATH + Level: 10 + - Name: RK_DRAGONBREATH_WATER + Level: 10 - Name: DK_DRAGONIC_AURA MaxLevel: 10 Requires: diff --git a/src/map/battle.cpp b/src/map/battle.cpp index ddd83d59bf..5a9ccce8a6 100644 --- a/src/map/battle.cpp +++ b/src/map/battle.cpp @@ -5405,6 +5405,15 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list * if (sc && sc->getSCE(SC_GIANTGROWTH) && rnd()%100 < 30) 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; + RE_LVL_DMOD(100); + break; case IQ_OLEUM_SANCTUM: skillratio += -100 + 500 + 2000 * skill_lv + 5 * sstatus->pow; RE_LVL_DMOD(100); diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 1c0d965a33..a952f1941a 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -5616,6 +5616,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case DK_SERVANT_W_DEMOL: case DK_MADNESS_CRUSHER: case DK_HACKANDSLASHER: + case DK_DRAGONIC_BREATH: case AG_CRIMSON_ARROW_ATK: case AG_DESTRUCTIVE_HURRICANE: case AG_SOUL_VC_STRIKE: @@ -5735,6 +5736,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case GN_CARTCANNON: case SU_SCRATCH: case BO_MAYHEMIC_THORNS: + case DK_DRAGONIC_BREATH: case DK_HACKANDSLASHER: case MT_SPARK_BLASTER: clif_skill_nodamage(src,bl,skill_id,skill_lv,1);