From 8d42bc7ab52a3980df2778d2ee7757e60914e6e0 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 24 九月 2025 19:42:45 +0800
Subject: [PATCH] 125 【战斗】战斗系统 战斗封包处理 支持B426拆分FightAction 支持多重嵌套

---
 Main/System/Battle/BattleField/BattleField.cs                                               |    2 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs |   77 ++++++------
 Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs                             |    1 
 Main/System/Battle/BattleManager.cs                                                         |  199 +++++++++++++++++++++++++++------
 Main/System/Battle/Skill/SkillBase.cs                                                       |   25 +++
 Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB427_tagSCUseSkill.cs        |   12 ++
 Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs                           |   12 +
 Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs                         |    3 
 Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs                           |    3 
 Main/Core/NetworkPackage/GameNetPackBasic.cs                                                |   12 +
 10 files changed, 259 insertions(+), 87 deletions(-)

diff --git a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
index 46c9bd6..ce2e53f 100644
--- a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
+++ b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
@@ -81,6 +81,7 @@
         for (int i = 0; i < b421SeriesPackList.Count; i++)
         {
             var pack = b421SeriesPackList[i];
+
             if (pack is HB426_tagSCTurnFightTag)
             {
                 var tag = pack as HB426_tagSCTurnFightTag;
@@ -156,6 +157,8 @@
             }
         }
 
+        // newPackList = BattleManager.ParseBattlePackList(_guid, newPackList);
+
         // Debug.LogError(temp);
 
         return newPackList;
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB427_tagSCUseSkill.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB427_tagSCUseSkill.cs
index 31cea26..18469df 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB427_tagSCUseSkill.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB427_tagSCUseSkill.cs
@@ -14,6 +14,18 @@
         // 姝e父鏉ヨ 閮芥槸瑕佸寘b426鐨� 浣嗘槸鏈変簺鎶�鑳戒笉闇�瑕� 渚嬪鎸侭UFF鐨� 鎵�浠ユ殏鏃舵敮鎸佽繖涔堝仛 濡傛灉鍚庣画鏈夋洿澶嶆潅鐨凚UFF鍐嶆敼 25 9/22 YYL
         if (null != battleField)
         {
+            BattleObject caster = battleField.battleObjMgr.GetBattleObject((int)vNetData.ObjID);
+
+            //涓嶈蛋CombinePack鐨勬妧鑳藉鑷翠笉鍦ㄦ祦绋嬪唴 鎵�浠ユ墽琛岃捣鏉ョ殑鏃跺�欏凡缁忔竻绌烘暟鎹簡
+            if (null == caster)
+            {
+                // foreach (var bo in battleField.battleObjMgr.allBattleObjDict.Values)
+                // {
+                //     Debug.LogError("褰撳墠鏈夌殑 DTCB427_tagSCUseSkill: battleObjMgr has obj id: " + bo.ObjID);
+                // }
+                return;
+            }
+
             SkillRecordAction skillRecord = new SkillRecordAction(battleField, battleField.battleObjMgr.GetBattleObject((int)vNetData.ObjID), vNetData, new System.Collections.Generic.List<GameNetPackBasic>());
             battleField.PlayRecord(skillRecord);
         }
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs
index b069477..3ef6757 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB4_FightDefine/DTCB430_tagSCTurnFightReport.cs
@@ -99,56 +99,57 @@
         // 涓洪槻姝㈡寰幆锛屽彲寮哄埗鍥炲煄浼戞伅锛岃鐜╁閲嶆柊鐐瑰嚮鍏冲崱鎴樻枟鎴栨寫鎴榖oss锛�
         // 姝e父鎯呭喌涓嬪湪鎴橀敜瓒冲鏃剁悊璁轰笂閮藉彲浠ヤ竴鐩村惊鐜埛鎬紝濡傛灉杩炵画澶氭娌℃湁鎴樻枟鐗囨灏佸寘锛屾瘮濡傞檺鍒朵釜杩炵画10娆′互鍐咃紝灏卞彲浠ョ悊瑙d负寮傚父浜�
 
-        const int MaxContinousEmptyCount = 10; // 杩炵画绌哄寘鏈�澶ф鏁�
+        // const int MaxContinousEmptyCount = 10; // 杩炵画绌哄寘鏈�澶ф鏁�
 
         List<GameNetPackBasic> packQueueSnapshot = new List<GameNetPackBasic>(vPackList);
 
-        List<GameNetPackBasic> newPackList = new List<GameNetPackBasic>();
-        HashSet<int> skipIndexes = new HashSet<int>();
+        List<GameNetPackBasic> newPackList = BattleManager.ParseBattlePackList(guid, packQueueSnapshot);
+        // List<GameNetPackBasic> newPackList = new List<GameNetPackBasic>();
+        // HashSet<int> skipIndexes = new HashSet<int>();
 
-        // 杩欓噷宸茬粡鏄寜鐓equeue鐨勯『搴忎簡
-        for (int i = 0; i < packQueueSnapshot.Count; i++)
-        {
-            if (skipIndexes.Contains(i)) continue;
+        // // 杩欓噷宸茬粡鏄寜鐓equeue鐨勯『搴忎簡
+        // for (int i = 0; i < packQueueSnapshot.Count; i++)
+        // {
+        //     if (skipIndexes.Contains(i)) continue;
 
-            GameNetPackBasic pack = packQueueSnapshot[i];
+        //     GameNetPackBasic pack = packQueueSnapshot[i];
 
-            // 纰板埌B421 鎴柇 寰�涓嬫敹闆哹421閲岀殑鍏ㄩ儴鍐呭
-            if (pack is HB421_tagMCTurnFightObjAction)
-            {
-                HB421_tagMCTurnFightObjAction b421Pack = pack as HB421_tagMCTurnFightObjAction;
+        //     // 纰板埌B421 鎴柇 寰�涓嬫敹闆哹421閲岀殑鍏ㄩ儴鍐呭
+        //     if (pack is HB421_tagMCTurnFightObjAction)
+        //     {
+        //         HB421_tagMCTurnFightObjAction b421Pack = pack as HB421_tagMCTurnFightObjAction;
 
-                List<GameNetPackBasic> b421PackList = new List<GameNetPackBasic>();
-                i++;    // 璺宠繃褰撳墠鐨凚421鍖�
+        //         List<GameNetPackBasic> b421PackList = new List<GameNetPackBasic>();
+        //         i++;    // 璺宠繃褰撳墠鐨凚421鍖�
 
-                // 鏀堕泦鎵�鏈夐潪B421鍖咃紝鐩村埌閬囧埌涓嬩竴涓狟421鎴栭槦鍒楃粨鏉�
-                for (; i < packQueueSnapshot.Count; i++)
-                {
-                    GameNetPackBasic nextPack = packQueueSnapshot[i];
-                    if (nextPack is HB421_tagMCTurnFightObjAction)
-                    {
-                        i--; // 鍥為��涓�涓綅缃紝鐣欑粰澶栧眰寰幆澶勭悊
-                        break;
-                    }
-                    else
-                    {
-                        b421PackList.Add(nextPack);
-                        skipIndexes.Add(i); // 鏍囪宸茶鍚堝寘
-                    }
-                }
+        //         // 鏀堕泦鎵�鏈夐潪B421鍖咃紝鐩村埌閬囧埌涓嬩竴涓狟421鎴栭槦鍒楃粨鏉�
+        //         for (; i < packQueueSnapshot.Count; i++)
+        //         {
+        //             GameNetPackBasic nextPack = packQueueSnapshot[i];
+        //             if (nextPack is HB421_tagMCTurnFightObjAction)
+        //             {
+        //                 i--; // 鍥為��涓�涓綅缃紝鐣欑粰澶栧眰寰幆澶勭悊
+        //                 break;
+        //             }
+        //             else
+        //             {
+        //                 b421PackList.Add(nextPack);
+        //                 skipIndexes.Add(i); // 鏍囪宸茶鍚堝寘
+        //             }
+        //         }
 
 
 
-                // 鍚堝苟鎵�鏈夌浉鍏冲寘
-                CustomB421ActionPack actionPack = CustomB421ActionPack.CreateB421ActionPack(guid, b421PackList);
+        //         // 鍚堝苟鎵�鏈夌浉鍏冲寘
+        //         CustomB421ActionPack actionPack = CustomB421ActionPack.CreateB421ActionPack(guid, b421PackList);
 
-                newPackList.Add(actionPack);
-            }
-            else
-            {
-                newPackList.Add(pack);
-            }
-        }
+        //         newPackList.Add(actionPack);
+        //     }
+        //     else
+        //     {
+        //         newPackList.Add(pack);
+        //     }
+        // }
 
 
         List<GameNetPackBasic> returnList = new List<GameNetPackBasic>();
diff --git a/Main/Core/NetworkPackage/GameNetPackBasic.cs b/Main/Core/NetworkPackage/GameNetPackBasic.cs
index b758eee..91985e0 100644
--- a/Main/Core/NetworkPackage/GameNetPackBasic.cs
+++ b/Main/Core/NetworkPackage/GameNetPackBasic.cs
@@ -10,10 +10,18 @@
 
     static ulong AutoIncreaseUID = 0;
 
+    public ulong mPackUID;
+
     public ulong packUID
     {
-        get;
-        private set;
+        get
+        {
+            return mPackUID;
+        }
+        private set
+        {
+            mPackUID = value;
+        }
     }
 
     public GameNetPackBasic()
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index ff9fd01..55a4b8b 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -274,9 +274,11 @@
         //  Msg;    //size = Len   +
 
 
+
         if (State == 4)
         {
             //宸茬粡缁撴潫骞剁粨绠�
+            Debug.Log("鎴樻枟缁撴潫");
             OnBattleEnd(turnFightStateData);
             return;
         }
diff --git a/Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs b/Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs
index bb9bcea..1f0c5bc 100644
--- a/Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs
@@ -22,7 +22,6 @@
     {
         base.Run();
 
-        Debug.Log("Battle Ended");
         isFinish = true;
         onComplete?.Invoke();
     }
diff --git a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
index 482218f..0e6a4a0 100644
--- a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -1,5 +1,6 @@
 using UnityEngine;
 using System.Collections.Generic;
+using Cysharp.Threading.Tasks;
 
 public class DeathRecordAction : RecordAction
 {
@@ -30,16 +31,21 @@
             int total = deadPackList.Count;
             foreach (var deadPack in deadPackList)
             {
-                index++;
-                isLastOne = index >= total;
                 BattleObject deadObj = battleField.battleObjMgr.GetBattleObject((int)deadPack.ObjID);
                 deadObj.OnDeath(() =>
                 {
+                    index++;
+
+                    isLastOne = index >= total;
+
                     OnDeathAnimationEnd(deadObj);
 
                     if (isLastOne)
                     {
-                        isFinish = true;
+                        UniTaskExtension.DelayTime((GameObject)null, 0.3f / battleField.speedRatio, () =>
+                        {
+                            isFinish = true;
+                        });
                     }
                 });
             }
diff --git a/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
index a267138..142b60f 100644
--- a/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
@@ -57,7 +57,8 @@
 		{
 			BattleDebug.LogError("cast skill from skill : " + fromSkillId);
 		}
-			
+
+		// Debug.LogError("cast skill id is " + skillBase.skillConfig.SkillID);
 
 		skillBase.fromSkillId = fromSkillId;
 
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index a21db8a..7c22487 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -125,52 +125,52 @@
 
         List<GameNetPackBasic> packQueueSnapshot = new List<GameNetPackBasic>(packQueue);
 
-        List<GameNetPackBasic> newPackList = new List<GameNetPackBasic>();
-        HashSet<int> skipIndexes = new HashSet<int>();
+        List<GameNetPackBasic> newPackList = ParseBattlePackList(string.Empty, packQueueSnapshot);
+        // HashSet<int> skipIndexes = new HashSet<int>();
 
-        // 杩欓噷宸茬粡鏄寜鐓equeue鐨勯『搴忎簡
-        for (int i = 0; i < packQueueSnapshot.Count; i++)
-        {
-            if (skipIndexes.Contains(i)) continue;
+        // // 杩欓噷宸茬粡鏄寜鐓equeue鐨勯『搴忎簡
+        // for (int i = 0; i < packQueueSnapshot.Count; i++)
+        // {
+        //     if (skipIndexes.Contains(i)) continue;
 
-            GameNetPackBasic pack = packQueueSnapshot[i];
+        //     GameNetPackBasic pack = packQueueSnapshot[i];
 
-            // 纰板埌B421 鎴柇 寰�涓嬫敹闆哹421閲岀殑鍏ㄩ儴鍐呭
-            if (pack is HB421_tagMCTurnFightObjAction)
-            {
-                HB421_tagMCTurnFightObjAction b421Pack = pack as HB421_tagMCTurnFightObjAction;
+        //     // 纰板埌B421 鎴柇 寰�涓嬫敹闆哹421閲岀殑鍏ㄩ儴鍐呭
+        //     if (pack is HB421_tagMCTurnFightObjAction)
+        //     {
+        //         HB421_tagMCTurnFightObjAction b421Pack = pack as HB421_tagMCTurnFightObjAction;
 
-                List<GameNetPackBasic> b421PackList = new List<GameNetPackBasic>();
-                i++;    // 璺宠繃褰撳墠鐨凚421鍖�
+        //         List<GameNetPackBasic> b421PackList = new List<GameNetPackBasic>();
+        //         i++;    // 璺宠繃褰撳墠鐨凚421鍖�
 
-                // 鏀堕泦鎵�鏈夐潪B421鍖咃紝鐩村埌閬囧埌涓嬩竴涓狟421鎴栭槦鍒楃粨鏉�
-                for (; i < packQueueSnapshot.Count; i++)
-                {
-                    GameNetPackBasic nextPack = packQueueSnapshot[i];
-                    if (nextPack is HB421_tagMCTurnFightObjAction)
-                    {
-                        i--; // 鍥為��涓�涓綅缃紝鐣欑粰澶栧眰寰幆澶勭悊
-                        break;
-                    }
-                    else
-                    {
-                        b421PackList.Add(nextPack);
-                        skipIndexes.Add(i); // 鏍囪宸茶鍚堝寘
-                    }
-                }
+        //         // 鏀堕泦鎵�鏈夐潪B421鍖咃紝鐩村埌閬囧埌涓嬩竴涓狟421鎴栭槦鍒楃粨鏉�
+        //         for (; i < packQueueSnapshot.Count; i++)
+        //         {
+        //             GameNetPackBasic nextPack = packQueueSnapshot[i];
+        //             if (nextPack is HB421_tagMCTurnFightObjAction)
+        //             {
+        //                 i--; // 鍥為��涓�涓綅缃紝鐣欑粰澶栧眰寰幆澶勭悊
+        //                 break;
+        //             }
+        //             else
+        //             {
+        //                 b421PackList.Add(nextPack);
+        //                 skipIndexes.Add(i); // 鏍囪宸茶鍚堝寘
+        //             }
+        //         }
 
 
 
-                // 鍚堝苟鎵�鏈夌浉鍏冲寘
-                CustomB421ActionPack actionPack = CustomB421ActionPack.CreateB421ActionPack(GetGUID(b421Pack.packUID), b421PackList);
+        //         // 鍚堝苟鎵�鏈夌浉鍏冲寘
+        //         CustomB421ActionPack actionPack = CustomB421ActionPack.CreateB421ActionPack(GetGUID(b421Pack.packUID), b421PackList);
 
-                newPackList.Add(actionPack);
-            }
-            else
-            {
-                newPackList.Add(pack);
-            }
-        }
+        //         newPackList.Add(actionPack);
+        //     }
+        //     else
+        //     {
+        //         newPackList.Add(pack);
+        //     }
+        // }
 
         // 闃茶寖鏈哄埗锛氳繛缁娆℃病鏈夋垬鏂楃墖娈靛皝鍖呮椂鑷姩鍥炲煄
         if (newPackList.Count == 0)
@@ -208,6 +208,131 @@
         DistributeNextPackage();
     }
 
+    public static List<GameNetPackBasic> ParseBattlePackList(string guid, List<GameNetPackBasic> packQueueSnapshot)
+    {
+        bool wrong = false;
+
+        List<GameNetPackBasic> newPackList = new List<GameNetPackBasic>();
+
+        HB421_tagMCTurnFightObjAction b421Pack = null;
+
+        for (int i = 0; i < packQueueSnapshot.Count; i++)
+        {
+        	GameNetPackBasic pack = packQueueSnapshot[i];
+            if (null == b421Pack)
+            {
+                if (pack is HB421_tagMCTurnFightObjAction _b421)
+                {
+                    b421Pack = _b421;
+                }
+                else
+                {
+                    newPackList.Add(pack);
+                }
+                continue;
+            }
+            else
+            {
+                List<GameNetPackBasic> b421List = new List<GameNetPackBasic>();
+
+                bool find = false;
+
+                for (int k = i; k < packQueueSnapshot.Count; k++/*, Debug.LogError(k + " : is plusing")*/)
+                {
+                    GameNetPackBasic maybeB426Pack = packQueueSnapshot[k];
+
+                    if (maybeB426Pack is HB426_tagSCTurnFightTag b426Pack)
+                    {
+                        // Debug.LogError(k + " : find b426 " + maybeB426Pack.packUID + " sign " + b426Pack.Sign + " tag " + b426Pack.Tag);
+                        if (b426Pack.Sign == 0)
+                        {
+                            find = true;
+                            List<GameNetPackBasic> b426List = new List<GameNetPackBasic>();
+                            b426List.Add(b426Pack);
+                            for (int j = k + 1; j < packQueueSnapshot.Count; j++)
+                            {
+                                GameNetPackBasic maybeB426EndPack = packQueueSnapshot[j];
+                                if (maybeB426EndPack is HB426_tagSCTurnFightTag b426EndPack)
+                                {
+                                    // Debug.LogError(j + " : find b426 end pack : " + b426EndPack.packUID + " sign " + b426EndPack.Sign + " tag " + b426EndPack.Tag);
+
+                                    if (b426EndPack.Tag == b426Pack.Tag)
+                                    {
+                                        if (b426EndPack.Sign == 1)
+                                        {
+                                            b426List.Add(maybeB426EndPack);
+                                            k = j;
+                                            i = k;
+                                            break;
+                                        }
+                                        else
+                                        {
+                                            Debug.LogError("閿欒鐨凷ign == 1");
+                                            continue;
+                                        }
+                                    }
+                                    else
+                                    {
+                                        //  鏂扮殑涓�瀵�
+                                    }
+                                }
+                                else
+                                {
+                                    b426List.Add(maybeB426EndPack);
+                                    k = j;
+                                    i = k;
+                                }
+                            }
+                            //	杩欓噷闈㈢殑b421杩樻病澶勭悊
+                            List<GameNetPackBasic> combinedList = CustomHB426CombinePack.CombineToSkillPackFromList(guid, b426List);
+                            b421List.AddRange(combinedList);
+                        }
+                        else
+                        {
+                            wrong = true;
+                            Debug.LogError("閿欒鐨刡426 鍒嗘瀽鏈夐棶棰� " + b426Pack.packUID);
+                        }
+                    }
+                    else
+                    {
+                        if (!find)
+                        {
+                            newPackList.Add(maybeB426Pack);
+                            i = k;
+                        }
+                        else
+                        {
+                            if (maybeB426Pack is HB421_tagMCTurnFightObjAction _b421)
+                            {
+                                i = k - 1;
+                                break;
+                            }
+
+                            b421List.Add(maybeB426Pack);
+                            i = k;
+                        }
+                    }
+                }
+                CustomB421ActionPack actionPack = CustomB421ActionPack.CreateB421ActionPack(guid, b421List);
+                newPackList.Add(actionPack);
+                b421Pack = null;
+        	}
+        }
+
+        if (wrong)
+        {
+            string output = string.Empty;
+            for (int f = 0; f < packQueueSnapshot.Count; f++)
+            {
+                output += (packQueueSnapshot[f].packUID  + "&" + packQueueSnapshot[f].GetType().ToString() + "|");
+            }
+
+            Debug.LogError(output);
+        }
+
+        return newPackList;
+    }
+
     //  涓撳睘浜庝富绾挎垬鏂楃殑娲惧彂
     public bool DistributeNextPackage()
     {
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index d73efa0..49f7c3c 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -1,9 +1,9 @@
 using System.Collections.Generic;
 using UnityEngine;
-using System;
 using DG.Tweening;
 using Spine;
 using System.Linq;
+using System;
 
 
 public class SkillBase
@@ -14,7 +14,7 @@
 
 	protected HB427_tagSCUseSkill tagUseSkillAttack;
 
-	protected SkillConfig skillConfig;
+	public SkillConfig skillConfig;
 
 	protected bool isFinished = false;
 
@@ -39,6 +39,10 @@
     public SkillBase(BattleObject _caster, SkillConfig _skillCfg, HB427_tagSCUseSkill vNetData, List<GameNetPackBasic> _packList, BattleField _battleField = null)
 	{
 		caster = _caster;
+		if (null == caster)
+		{
+			throw new Exception("SkillBase caster is null ");
+		}
 		skillConfig = _skillCfg;
 		tagUseSkillAttack = vNetData;
 		battleField = _battleField;
@@ -82,7 +86,9 @@
 	// 1路绉诲姩鍒拌窛绂婚樀瀹逛綅缃畁鐮佺殑璺濈锛堝2鍙蜂綅锛�5鍙蜂綅锛夐噴鏀撅紙鍗虫垬鍦轰腑澶绫伙級
 	public virtual void Cast()
 	{
-		EventBroadcast.Instance.Broadcast<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, battleField.guid, skillConfig, caster.teamHero);
+		string guid = battleField.guid;
+		TeamHero teamHero = caster.teamHero;
+		EventBroadcast.Instance.Broadcast<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, guid, skillConfig, teamHero);
 
 		//	楂樹寒鎵�鏈夋湰娆℃妧鑳界浉鍏崇殑鐩爣
 		HighLightAllTargets();
@@ -645,9 +651,8 @@
 			var pack = packList[0];
 			packList.RemoveAt(0);
 
-			if (pack is CustomHB426CombinePack)
+			if (pack is CustomHB426CombinePack combinePack)
 			{
-				var combinePack = pack as CustomHB426CombinePack;
 				if (combinePack.startTag.Tag.StartsWith("Skill_"))
 				{
 					BattleDebug.LogError("other skill casting " + combinePack.startTag.Tag);
@@ -657,6 +662,11 @@
 					otherSkillAction.ForceFinish();
 					return;
 				}
+			}
+			else if (pack is CustomB421ActionPack actionPack)
+			{
+				actionPack.Distribute();
+				return;
 			}
 			PackageRegedit.Distribute(pack);
 		}
@@ -688,6 +698,11 @@
 					return;
 				}
 			}
+			else if (pack is CustomB421ActionPack actionPack)
+			{
+				actionPack.Distribute();
+				return;
+			}
 			PackageRegedit.Distribute(pack);
 		}
 

--
Gitblit v1.8.0