فهرست منبع

Implemented new Imperial Guard skills (#8661)

Co-authored-by: Atemo <Atemo@users.noreply.github.com>
Co-authored-by: munkrej <schmunk@posteo.de>
Haydrich 6 ماه پیش
والد
کامیت
98ca6ecc6e
5فایلهای تغییر یافته به همراه130 افزوده شده و 1 حذف شده
  1. 94 0
      db/re/skill_db.yml
  2. 12 0
      db/re/skill_tree.yml
  3. 1 1
      src/common/mmo.hpp
  4. 20 0
      src/map/battle.cpp
  5. 3 0
      src/map/skill.cpp

+ 94 - 0
db/re/skill_db.yml

@@ -43053,6 +43053,100 @@ Body:
           Amount: 84
         - Level: 10
           Amount: 86
+  - Id: 6503
+    Name: IG_RADIANT_SPEAR
+    Description: Radiant Spear
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Attack
+    DamageFlags:
+      Splash: true
+      Critical: true
+    Range: 7
+    Hit: Multi_Hit
+    HitCount: 2
+    Element: Weapon
+    GiveAp: 2
+    SplashArea:
+      - Level: 1
+        Area: 1
+      - Level: 2
+        Area: 1
+      - Level: 3
+        Area: 1
+      - Level: 4
+        Area: 1
+      - Level: 5
+        Area: 2
+      - Level: 6
+        Area: 2
+      - Level: 7
+        Area: 2
+      - Level: 8
+        Area: 2
+      - Level: 9
+        Area: 3
+      - Level: 10
+        Area: 3
+    CastCancel: true
+    CastTime: 1000
+    AfterCastActDelay: 1200
+    Cooldown: 700
+    FixedCastTime: 1000
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 67
+        - Level: 2
+          Amount: 69
+        - Level: 3
+          Amount: 71
+        - Level: 4
+          Amount: 73
+        - Level: 5
+          Amount: 75
+        - Level: 6
+          Amount: 77
+        - Level: 7
+          Amount: 79
+        - Level: 8
+          Amount: 81
+        - Level: 9
+          Amount: 83
+        - Level: 10
+          Amount: 85
+      Weapon:
+        1hSpear: true
+      Status:
+        Attack_Stance: true
+  - Id: 6504
+    Name: IG_IMPERIAL_CROSS
+    Description: Imperial Cross
+    MaxLevel: 5
+    Type: Weapon
+    TargetType: Attack
+    Range: 2
+    Hit: Multi_Hit
+    HitCount: 3
+    Element: Weapon
+    GiveAp: 2
+    CastCancel: true
+    AfterCastActDelay: 700
+    Cooldown: 400
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 49
+        - Level: 2
+          Amount: 53
+        - Level: 3
+          Amount: 57
+        - Level: 4
+          Amount: 61
+        - Level: 5
+          Amount: 65
+      Status:
+        Attack_Stance: true
   - Id: 6506
     Name: MT_RUSH_STRIKE
     Description: Rush Strike

+ 12 - 0
db/re/skill_tree.yml

@@ -7279,6 +7279,18 @@ Body:
         Requires:
           - Name: IG_SHIELD_MASTERY
             Level: 1
+      - Name: IG_IMPERIAL_CROSS
+        MaxLevel: 5
+        Requires:
+          - Name: IG_OVERSLASH
+            Level: 5
+      - Name: IG_RADIANT_SPEAR
+        MaxLevel: 10
+        Requires:
+          - Name: IG_OVERSLASH
+            Level: 3
+          - Name: IG_SHIELD_SHOOTING
+            Level: 3
   - Job: Biolo
     Inherit:
       Novice: true

+ 1 - 1
src/common/mmo.hpp

@@ -89,7 +89,7 @@ typedef uint32 t_itemid;
 #endif
 #define MAX_FAME 1000000000 ///Max fame points
 #define MAX_CART 100 ///Maximum item in cart
-#define MAX_SKILL 1627 ///Maximum skill can be hold by Player, Homunculus, & Mercenary (skill list) AND skill_db limit
+#define MAX_SKILL 1629 ///Maximum skill can be hold by Player, Homunculus, & Mercenary (skill list) AND skill_db limit
 #define DEFAULT_WALK_SPEED 150 ///Default walk speed (other than NPC)
 #define DEFAULT_NPC_WALK_SPEED 200 ///Default NPC walk speed
 #define MIN_WALK_SPEED 20 ///Min walk speed

+ 20 - 0
src/map/battle.cpp

@@ -5928,6 +5928,26 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 			if ((i = pc_checkskill_imperial_guard(sd, 3)) > 0)
 				skillratio += skillratio * i / 100;
 			break;
+		case IG_RADIANT_SPEAR:
+			skillratio += -100 + 3500 + 1150 * skill_lv;
+			skillratio += pc_checkskill(sd, IG_SPEAR_SWORD_M) * 50;
+			skillratio += 5 * sstatus->pow;	// !TODO: check POW ratio
+
+			if( sc != nullptr && sc->getSCE( SC_SPEAR_SCAR ) )
+				skillratio += 250 * skill_lv;
+
+			RE_LVL_DMOD(100);
+			break;
+		case IG_IMPERIAL_CROSS:
+			skillratio += -100 + 1650 + 1350 * skill_lv;
+			skillratio += pc_checkskill(sd, IG_SPEAR_SWORD_M) * 25;
+			skillratio += 5 * sstatus->pow;	// !TODO: check POW ratio
+
+			if( sc != nullptr && sc->getSCE( SC_SPEAR_SCAR ) )
+				skillratio += 100 + 300 * skill_lv;
+
+			RE_LVL_DMOD(100);
+			break;
 		case CD_EFFLIGO:
 			skillratio += -100 + 1650 * skill_lv + 7 * sstatus->pow;
 			skillratio += 8 * pc_checkskill( sd, CD_MACE_BOOK_M );

+ 3 - 0
src/map/skill.cpp

@@ -5280,6 +5280,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 		break;
 	case DK_DRAGONIC_AURA:
 	case DK_STORMSLASH:
+	case IG_IMPERIAL_CROSS:
 	case CD_EFFLIGO:
 	case ABC_FRENZY_SHOT:
 	case WH_HAWKRUSH:
@@ -5697,6 +5698,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 	case IQ_THIRD_FLAME_BOMB:
 	case IQ_THIRD_CONSECRATION:
 	case IG_OVERSLASH:
+	case IG_RADIANT_SPEAR:
 	case CD_ARBITRIUM_ATK:
 	case CD_PETITIO:
 	case CD_FRAMEN:
@@ -5877,6 +5879,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 				case IQ_SECOND_FLAME:
 				case IQ_SECOND_FAITH:
 				case IQ_SECOND_JUDGEMENT:
+				case IG_RADIANT_SPEAR:
 				case CD_PETITIO:
 				case CD_FRAMEN:
 				case MT_POWERFUL_SWING: