Bläddra i källkod

Implemented DK_DRAGONIC_BREATH (#7985)

    Deals normal long ranged physical damage to the target.
    Can only be used when riding dragon.
    Deals additional damage depends on user's MaxHP and MaxSP.
    Affected by Hit/Flee calculation.
    Ignores physical defense.
    Damage property depends on weapon property.
    Affected by attack modifiers (such as race modifier).
    Recovers 2 AP.
    When using while under Dragonic Aura buff, increases influence of MaxHP and MaxSP in skill damage.
    Fixed casting time : 0.5 seconds (based on level 10).
    Variable Casting time : 2 seconds (based on level 10).
    Cooldown: 0.5 seconds (based on level 10).
    Global cool time : 0.15 seconds (based on level 10).

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>

Credit to @datawulf
Atemo 1 år sedan
förälder
incheckning
ebabfd8807
4 ändrade filer med 97 tillägg och 0 borttagningar
  1. 79 0
      db/re/skill_db.yml
  2. 7 0
      db/re/skill_tree.yml
  3. 9 0
      src/map/battle.cpp
  4. 2 0
      src/map/skill.cpp

+ 79 - 0
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

+ 7 - 0
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:

+ 9 - 0
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);

+ 2 - 0
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);