From b5098dca7b3454da208d60d4944d132ca660bb77 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 14 十月 2025 18:45:24 +0800
Subject: [PATCH] 125 战斗 子技能支持

---
 Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs |   85 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+), 1 deletions(-)

diff --git a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
index 563d00f..8262b27 100644
--- a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
+++ b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
@@ -99,6 +99,8 @@
 
         Dictionary<int, GameNetPackBasic> indexDict = new Dictionary<int, GameNetPackBasic>();
 
+        Dictionary<uint, HB427_tagSCUseSkill> skillDict = new Dictionary<uint, HB427_tagSCUseSkill>();
+
         for (int i = 0; i < b421SeriesPackList.Count; i++)
         {
             var pack = b421SeriesPackList[i];
@@ -134,7 +136,41 @@
             }
             else
             {
-                indexDict.Add(i, pack);
+                if (pack is HB427_tagSCUseSkill skillPack)
+                {
+                    //  澶勭悊鎶�鑳戒箣闂寸殑閾炬帴鍏崇郴
+                    if (skillPack.RelatedSkillID > 0)
+                    {
+                        skillDict.TryGetValue(skillPack.RelatedSkillID, out var parentSkill);
+
+                        if (parentSkill != null && skillPack.BattleType == 4)//4=瀛愭妧鑳�
+                        {
+                            parentSkill.subSkillList.Add(skillPack);
+                            skillPack.parentSkill = parentSkill;
+                        }
+                        else
+                        {
+                            indexDict.Add(i, pack);
+                        }
+                    }
+                    else
+                    {
+                        indexDict.Add(i, pack);
+                    }
+
+                    if (skillDict.ContainsKey(skillPack.SkillID))
+                    {
+                        skillDict[skillPack.SkillID] = skillPack;
+                    }
+                    else
+                    {
+                        skillDict.Add(skillPack.SkillID, skillPack);
+                    }
+                }
+                else
+                {
+                    indexDict.Add(i, pack);
+                }
             }
         }
 
@@ -203,6 +239,53 @@
 
     }
 
+    public static SkillRecordAction CreateSkillAction(string guid, List<GameNetPackBasic> _packList)
+    {
+        BattleField battleField = BattleManager.Instance.GetBattleField(guid);
+
+        if (null == battleField)
+        {
+            Debug.LogError("BattleField not found for guid: " + guid);
+            return null;
+        }
+
+        while (_packList.Count > 0)
+        {
+            var pack = _packList[0];
+            _packList.RemoveAt(0);
+
+            if (pack is HB427_tagSCUseSkill)
+            {
+                _packList.Insert(0, pack);
+                break;
+            }
+            else if (pack is CustomHB426CombinePack)
+            {
+                Debug.LogError("鏃犳硶鎵惧埌Skill鍖咃紝鍏堝彂鐜颁簡宓屽鍖�");
+                return null;
+            }
+            else
+            {
+                // Debug.LogError("鍙戠幇闈濻kill鍖咃紝鍏堝垎鍙戞帀: " + pack.GetType().Name);
+                PackageRegedit.Distribute(pack);
+            }
+        }
+
+        HB427_tagSCUseSkill skill = _packList[0] as HB427_tagSCUseSkill;
+        _packList.RemoveAt(0);
+        if (null == skill)
+        {
+            Debug.LogError("No HB427_tagSCUseSkill found in packList.");
+            return null;
+        }
+
+        BattleObject _caster = battleField.battleObjMgr.GetBattleObject((int)skill.ObjID);
+
+        SkillRecordAction skillAction = new SkillRecordAction(battleField, _caster, skill, _packList);
+        return skillAction;
+
+    }
+
     public SkillRecordAction CreateSkillAction()
     {
         BattleField battleField = BattleManager.Instance.GetBattleField(guid);

--
Gitblit v1.8.0