Browse Source

Implemented new Shadow Cross skill SHC_CROSS_SLASH (#8664)

The skill requires a client 20240708+
Haydrich 6 tháng trước cách đây
mục cha
commit
0fcc88c31a
5 tập tin đã thay đổi với 62 bổ sung1 xóa
  1. 41 0
      db/re/skill_db.yml
  2. 7 0
      db/re/skill_tree.yml
  3. 1 1
      src/common/mmo.hpp
  4. 11 0
      src/map/battle.cpp
  5. 2 0
      src/map/skill.cpp

+ 41 - 0
db/re/skill_db.yml

@@ -43053,6 +43053,47 @@ Body:
           Amount: 84
         - Level: 10
           Amount: 86
+  - Id: 6511
+    Name: SHC_CROSS_SLASH
+    Description: Cross Slash
+    MaxLevel: 5
+    Type: Weapon
+    TargetType: Attack
+    DamageFlags:
+      Splash: true
+      Critical: true
+    Range: 3
+    Hit: Multi_Hit
+    HitCount: 3
+    Element: Weapon
+    SplashArea:
+      - Level: 1
+        Area: 2
+      - Level: 2
+        Area: 2
+      - Level: 3
+        Area: 2
+      - Level: 4
+        Area: 3
+      - Level: 5
+        Area: 3
+    GiveAp: 2
+    Duration1: 10000
+    AfterCastActDelay: 700
+    Cooldown: 1000
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 58
+        - Level: 2
+          Amount: 63
+        - Level: 3
+          Amount: 68
+        - Level: 4
+          Amount: 73
+        - Level: 5
+          Amount: 78
+    Status: WeaponBlock_On
   - Id: 8001
     Name: HLIF_HEAL
     Description: Healing Touch

+ 7 - 0
db/re/skill_tree.yml

@@ -6891,6 +6891,13 @@ Body:
             Level: 5
           - Name: SHC_SHADOW_STAB
             Level: 5
+      - Name: SHC_CROSS_SLASH
+        MaxLevel: 5
+        Requires:
+          - Name: GC_WEAPONBLOCKING
+            Level: 3
+          - Name: SHC_DANCING_KNIFE
+            Level: 3
   - Job: Arch_Mage
     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 1623 ///Maximum skill can be hold by Player, Homunculus, & Mercenary (skill list) AND skill_db limit
+#define MAX_SKILL 1624 ///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

+ 11 - 0
src/map/battle.cpp

@@ -3040,6 +3040,7 @@ static bool is_attack_critical(struct Damage* wd, struct block_list *src, struct
 			case SHC_SAVAGE_IMPACT:
 			case SHC_ETERNAL_SLASH:
 			case SHC_IMPACT_CRATER:
+			case SHC_CROSS_SLASH:
 				cri /= 2;
 				break;
 			case WH_GALESTORM:
@@ -5981,6 +5982,16 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 				skillratio += 150 * skill_lv;
 			RE_LVL_DMOD(100);
 			break;
+		case SHC_CROSS_SLASH:
+			skillratio += -100 + 300 * skill_lv;
+			skillratio += 5 * sstatus->pow;
+
+			if( sc != nullptr && sc->getSCE( SC_SHADOW_EXCEED ) ) {
+				skillratio += 60 * skill_lv;
+				skillratio += 2 * sstatus->pow;
+			}
+			RE_LVL_DMOD(100);
+			break;
 		case MT_AXE_STOMP:
 			skillratio += -100 + 450 + 1150 * skill_lv;
 			skillratio += 5 * sstatus->pow;

+ 2 - 0
src/map/skill.cpp

@@ -5704,6 +5704,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 	case SHC_SAVAGE_IMPACT:
 	case SHC_IMPACT_CRATER:
 	case SHC_FATAL_SHADOW_CROW:
+	case SHC_CROSS_SLASH:
 	case MT_AXE_STOMP:
 	case MT_MIGHTY_SMASH:
 	case MT_RUSH_QUAKE:
@@ -5936,6 +5937,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 					break;
 				case IG_SHIELD_SHOOTING:
 				case IG_GRAND_JUDGEMENT:
+				case SHC_CROSS_SLASH:
 					clif_skill_nodamage(src, *bl, skill_id, skill_lv);
 					sc_start(src, src, skill_get_sc(skill_id), 100, skill_lv, skill_get_time(skill_id, skill_lv));
 					break;