From 19a7598ad9ae6e30a6e5096c104091ebe116d414 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 14 一月 2026 18:37:28 +0800
Subject: [PATCH] 125 战斗 修复内嵌技能中死亡播放技能的顺序问题(司马懿) 修复卑弥呼复活报错的问题

---
 Main/System/Battle/RecordPlayer/RecordAction.cs                     |   42 ++++
 Main/Core/NetworkPackage/DataToCtl/PackageRegeditEx.cs.meta         |   11 +
 Main/System/Battle/BattleObject/BattleObject.cs                     |    8 
 Main/System/Battle/Define/BattleDeadPack.cs                         |    4 
 Main/System/Battle/Skill/SkillBase.cs                               |  232 ++++++++++++++++++++---
 Main/System/Battle/Motion/MotionBase.cs                             |    6 
 Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs   |   97 +++++++++
 Main/System/Battle/Buff/BattleObjectBuffMgr.cs                      |   27 ++
 Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs |    8 
 Main/Core/NetworkPackage/DataToCtl/PackageRegeditEx.cs              |  145 ++++++++++++++
 10 files changed, 534 insertions(+), 46 deletions(-)

diff --git a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
index e85f647..2d0f79b 100644
--- a/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
+++ b/Main/Core/NetworkPackage/CustomServerPack/CustomHB426CombinePack.cs
@@ -366,6 +366,10 @@
             else
             {
                 pack.commonMark = true;
+                // 銆愪娇鐢� BattleField.recordPlayer銆�
+                // 鍘熷洜锛氳繖閲屾槸鍦–reateSkillAction闈欐�佹柟娉曚腑锛岃繕娌℃湁鍒涘缓SkillRecordAction
+                // 杩欎簺鍖呮槸鍦ㄦ壘鍒版妧鑳藉寘涔嬪墠閬囧埌鐨勶紝闇�瑕佹彁鍓嶅鐞嗘帀
+                // 姝ゆ椂娌℃湁RecordAction涓婁笅鏂囷紝搴旇浣跨敤BattleField鐨勪富RecordPlayer
                 PackageRegedit.Distribute(pack);
             }
         }
@@ -414,6 +418,10 @@
             else
             {
                 pack.commonMark = true;
+                // 銆愪娇鐢� BattleField.recordPlayer銆�
+                // 鍘熷洜锛氳繖閲屾槸鍦–reateSkillAction鏂规硶涓紝杩樻病鏈夊垱寤篠killRecordAction
+                // 杩欎簺鍖呮槸鍦ㄦ壘鍒版妧鑳藉寘涔嬪墠閬囧埌鐨勶紙濡侭uff鍖咃級锛岄渶瑕佹彁鍓嶅鐞�
+                // 姝ゆ椂娌℃湁RecordAction涓婁笅鏂囷紝搴旇浣跨敤BattleField鐨勪富RecordPlayer
                 PackageRegedit.Distribute(pack);
             }
         }
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegeditEx.cs b/Main/Core/NetworkPackage/DataToCtl/PackageRegeditEx.cs
new file mode 100644
index 0000000..f3f9343
--- /dev/null
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegeditEx.cs
@@ -0,0 +1,145 @@
+using UnityEngine;
+using System;
+
+/// <summary>
+/// PackageRegedit鐨勬墿灞曠被
+/// 鎻愪緵鏂扮殑鍖呭垎鍙戞帴鍙o紝鏀寔灏嗗寘鍒嗗彂鍒癛ecordAction鐨勫唴閮≧ecordPlayer
+/// 涓嶄慨鏀瑰師鏈夌殑PackageRegedit.Distribute鎺ュ彛锛岄噰鐢ㄦ柊鎺ュ彛缁曡繃
+/// </summary>
+public class PackageRegeditEx
+{
+    /// <summary>
+    /// 灏嗗寘鍒嗗彂鍒版寚瀹歊ecordAction鐨勫唴閮≧ecordPlayer
+    /// 杩欎釜鏂规硶鐢ㄤ簬澶勭悊RecordAction鍐呴儴浜х敓鐨勫寘锛堝鎶�鑳藉唴閮ㄧ殑Buff娣诲姞銆佸瓙鎶�鑳界瓑锛�
+    /// 
+    /// 浣跨敤鍦烘櫙锛�
+    /// 1. SkillBase涓�氳繃PackageRegedit.Distribute浜х敓鐨勫寘锛屽簲璇ヤ娇鐢⊿killRecordAction鐨刬nnerRecordPlayer
+    /// 2. 纭繚杩欎簺鍖呯殑鐢熷懡鍛ㄦ湡涓庣埗RecordAction缁戝畾
+    /// 3. ForceFinish鏃跺彲浠ヤ竴骞跺鐞�
+    /// </summary>
+    /// <param name="pack">瑕佸垎鍙戠殑鍖�</param>
+    /// <param name="parentRecordAction">鐖禦ecordAction锛屽寘搴旇鐢卞畠鐨刬nnerRecordPlayer绠$悊</param>
+    public static void DistributeToRecordAction(GameNetPackBasic pack, RecordAction parentRecordAction)
+    {
+        if (pack == null)
+        {
+            Debug.LogError("PackageRegeditEx.DistributeToRecordAction: pack is null");
+            return;
+        }
+
+        if (parentRecordAction == null)
+        {
+            // 濡傛灉娌℃湁鐖禦ecordAction锛屼娇鐢ㄥ師鏈夌殑鍒嗗彂閫昏緫锛堜細浣跨敤BattleField鐨勪富RecordPlayer锛�
+            Debug.LogWarning("PackageRegeditEx.DistributeToRecordAction: parentRecordAction is null, 浣跨敤榛樿鍒嗗彂");
+            PackageRegedit.Distribute(pack);
+            return;
+        }
+
+        // 鏍囪杩欎釜鍖呮槸鍦≧ecordAction鍐呴儴澶勭悊鐨�
+        // 杩欐牱鍙互鍦≒ackageRegedit鐨勫鐞嗛�昏緫涓瘑鍒苟浣跨敤姝g‘鐨凴ecordPlayer
+        pack.commonMark = true;
+
+        // 涓存椂淇濆瓨褰撳墠姝e湪澶勭悊鐨凴ecordAction涓婁笅鏂�
+        // 杩欐牱鍦―TC澶勭悊绫讳腑鍙互鑾峰彇鍒扮埗RecordAction锛屼粠鑰屼娇鐢ㄦ纭殑RecordPlayer
+        CurrentRecordActionContext.Push(parentRecordAction);
+
+        try
+        {
+            // 璋冪敤鍘熸湁鐨勫垎鍙戦�昏緫
+            PackageRegedit.Distribute(pack);
+        }
+        finally
+        {
+            // 鎭㈠涓婁笅鏂�
+            CurrentRecordActionContext.Pop();
+        }
+    }
+
+    /// <summary>
+    /// 鑾峰彇褰撳墠搴旇浣跨敤鐨凴ecordPlayer
+    /// 
+    /// 鍒ゆ柇閫昏緫锛�
+    /// 1. 濡傛灉鏈夊綋鍓峈ecordAction涓婁笅鏂囷紝浣跨敤RecordAction.innerRecordPlayer锛圧ecordAction鍐呴儴浜х敓鐨勶級
+    /// 2. 鍚﹀垯浣跨敤BattleField.recordPlayer锛堥《灞傚寘锛岀洿鎺ヤ粠鏈嶅姟鍣ㄦ潵鐨勶級
+    /// </summary>
+    /// <param name="battleField">鎴樺満</param>
+    /// <returns>搴旇浣跨敤鐨凴ecordPlayer</returns>
+    public static RecordPlayer GetTargetRecordPlayer(BattleField battleField)
+    {
+        if (battleField == null)
+        {
+            Debug.LogError("PackageRegeditEx.GetTargetRecordPlayer: battleField is null");
+            return null;
+        }
+
+        // 妫�鏌ユ槸鍚﹀湪RecordAction涓婁笅鏂囦腑
+        var currentRecordAction = CurrentRecordActionContext.Current;
+        if (currentRecordAction != null)
+        {
+            // 浣跨敤RecordAction鐨刬nnerRecordPlayer
+            // 鍘熷洜锛氳繖涓寘鏄湪RecordAction鍐呴儴浜х敓鐨勶紝搴旇鐢盧ecordAction绠$悊
+            var innerPlayer = currentRecordAction.GetInnerRecordPlayer();
+            if (innerPlayer != null)
+            {
+                return innerPlayer;
+            }
+            else
+            {
+                Debug.LogWarning($"PackageRegeditEx.GetTargetRecordPlayer: RecordAction {currentRecordAction.GetType().Name} 鐨� innerRecordPlayer 涓� null锛屼娇鐢� BattleField.recordPlayer");
+            }
+        }
+
+        // 浣跨敤BattleField鐨勪富RecordPlayer
+        // 鍘熷洜锛氳繖鏄《灞傚寘锛岀洿鎺ヤ粠鏈嶅姟鍣ㄦ潵鐨勶紝鎴栬�呮病鏈塕ecordAction涓婁笅鏂�
+        return battleField.recordPlayer;
+    }
+}
+
+/// <summary>
+/// 褰撳墠RecordAction涓婁笅鏂�
+/// 浣跨敤鏍堢粨鏋勭鐞嗗祵濂楃殑RecordAction涓婁笅鏂�
+/// 杩欐牱鍙互鍦ㄥ寘鍒嗗彂杩囩▼涓煡閬撳綋鍓嶅浜庡摢涓猂ecordAction鍐呴儴
+/// </summary>
+public static class CurrentRecordActionContext
+{
+    private static System.Collections.Generic.Stack<RecordAction> contextStack = 
+        new System.Collections.Generic.Stack<RecordAction>();
+
+    public static RecordAction Current
+    {
+        get
+        {
+            if (contextStack.Count > 0)
+            {
+                return contextStack.Peek();
+            }
+            return null;
+        }
+    }
+
+    public static void Push(RecordAction recordAction)
+    {
+        if (recordAction != null)
+        {
+            contextStack.Push(recordAction);
+        }
+    }
+
+    public static void Pop()
+    {
+        if (contextStack.Count > 0)
+        {
+            contextStack.Pop();
+        }
+    }
+
+    public static void Clear()
+    {
+        contextStack.Clear();
+    }
+
+    public static int Depth
+    {
+        get { return contextStack.Count; }
+    }
+}
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegeditEx.cs.meta b/Main/Core/NetworkPackage/DataToCtl/PackageRegeditEx.cs.meta
new file mode 100644
index 0000000..a8dbb3b
--- /dev/null
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegeditEx.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
index 288d3ea..f1ef77c 100644
--- a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -19,6 +19,9 @@
 
     protected bool hasDeathTriggerSkill = false;
 
+    // 鏍囪鏄惁宸茬粡鍒嗗彂浜嗘浜″悗鐨勫寘
+    protected bool hasDistributedPacksAfterDeath = false;
+
     public DeathRecordAction(BattleField _battleField, List<BattleDeadPack> _deadPackList, RecordAction _causingRecordAction = null)
         : base(RecordActionType.Death, _battleField, null)
     {
@@ -60,9 +63,13 @@
                     if (null != skillAction)
                     {
                         deathActionDict.Add(battleDeadPack, skillAction);
-                        //  姝讳骸瑙﹀彂鎶�鑳介兘璁剧疆WaitingPlay=true锛岀瓑寰呯埗鑺傜偣鍔ㄤ綔瀹屾垚
-                        //  濡傛灉DeathRecordAction鏈夌埗鑺傜偣锛堝鑷存浜$殑鎶�鑳斤級锛屽垯绛夊緟閭d釜鐖惰妭鐐�
-                        //  鍚﹀垯绛夊緟DeathRecordAction鏈韩
+                        
+                        // 銆愪娇鐢� BattleField.recordPlayer銆�
+                        // 鍘熷洜锛氭浜¤Е鍙戞妧鑳芥槸椤跺眰鐨凴ecordAction锛屼笉鏄湪鏌愪釜RecordAction鍐呴儴浜х敓鐨�
+                        // 铏界劧鍙兘鏄洜涓烘妧鑳藉鑷寸殑姝讳骸锛屼絾姝讳骸瑙﹀彂鐨勬妧鑳芥湰韬簲璇ユ槸鐙珛鐨�
+                        // 浣跨敤ImmediatelyPlay骞惰缃甒aitingPlay=true锛屽彲浠ヨ姝讳骸鎶�鑳界瓑寰呭鑷存浜$殑鎶�鑳藉畬鎴�
+                        // 濡傛灉DeathRecordAction鏈夌埗鑺傜偣锛堝鑷存浜$殑鎶�鑳斤級锛屽垯绛夊緟閭d釜鐖惰妭鐐�
+                        // 鍚﹀垯绛夊緟DeathRecordAction鏈韩
                         battleField.recordPlayer.ImmediatelyPlay(skillAction, causingRecordAction == null ? this : causingRecordAction, true);
                     }
                 }
@@ -117,8 +124,25 @@
 
             if (completeNum == deadPackList.Count)
             {
+                // 姝讳骸澶勭悊瀹屾垚鍚庯紝鍒嗗彂姝讳骸鍚庣殑鍖�
+                if (!hasDistributedPacksAfterDeath)
+                {
+                    hasDistributedPacksAfterDeath = true;
+                    DistributePacksAfterDeath();
+                }
+                
                 isActionCompleted = true;
                 isFinish = true;
+            }
+        }
+        
+        // 纭繚鍦╥nnerRecordPlayer涓墽琛屾浜″悗鐨勫寘
+        if (hasDistributedPacksAfterDeath && causingRecordAction != null)
+        {
+            var innerPlayer = causingRecordAction.GetInnerRecordPlayer();
+            if (innerPlayer != null && innerPlayer.IsPlaying())
+            {
+                innerPlayer.Run();
             }
         }
     }
@@ -186,6 +210,13 @@
             }
         }
 
+        // 寮哄埗鍒嗗彂姝讳骸鍚庣殑鍖�
+        if (!hasDistributedPacksAfterDeath)
+        {
+            hasDistributedPacksAfterDeath = true;
+            DistributePacksAfterDeath();
+        }
+
         base.ForceFinish();
     }
 
@@ -208,6 +239,66 @@
         return hasDeathTriggerSkill;
     }
 
+    // 鍒嗗彂姝讳骸鍚庣殑鍖�
+    protected void DistributePacksAfterDeath()
+    {
+        // 閬嶅巻鎵�鏈夋浜″寘锛屽垎鍙戝畠浠殑 packListAfterDeath
+        foreach (var deadPack in deadPackList)
+        {
+            if (deadPack.packListAfterDeath != null && deadPack.packListAfterDeath.Count > 0)
+            {
+                BattleDebug.LogError($"DeathRecordAction.DistributePacksAfterDeath: 寮�濮嬪垎鍙戞浜″悗鐨勫寘锛屽叡 {deadPack.packListAfterDeath.Count} 涓寘");
+                
+                foreach (var pack in deadPack.packListAfterDeath)
+                {
+                    // 鑾峰彇鍖呯殑绫诲瀷鍜孶ID鐢ㄤ簬璋冭瘯
+                    string packType = pack.GetType().Name;
+                    ulong packUID = 0;
+                    var packUIDField = pack.GetType().GetField("packUID");
+                    if (packUIDField != null)
+                    {
+                        packUID = (ulong)packUIDField.GetValue(pack);
+                    }
+                    
+                    BattleDebug.LogError($"DeathRecordAction: 鍒嗗彂姝讳骸鍚庣殑鍖� - Type: {packType}, UID: {packUID}, causingRecordAction: {causingRecordAction?.GetType().Name}");
+                    
+                    // 鐗规畩澶勭悊 CustomHB426CombinePack锛氫娇鐢ㄥ叾鑷繁鐨� Distribute 鏂规硶
+                    if (pack is CustomHB426CombinePack combinePack)
+                    {
+                        BattleDebug.LogError($"DeathRecordAction: 姝讳骸鍚庣殑鍖呮槸 CustomHB426CombinePack锛屼娇鐢ㄥ叾 Distribute 鏂规硶");
+                        combinePack.Distribute();
+                    }
+                    // 鐗规畩澶勭悊 HB427_tagSCUseSkill锛氬垱寤烘妧鑳藉寘骞跺垎鍙�
+                    else if (pack is HB427_tagSCUseSkill skillPack)
+                    {
+                        BattleDebug.LogError($"DeathRecordAction: 姝讳骸鍚庣殑鍖呮槸 HB427_tagSCUseSkill锛屽垱寤� SkillRecordAction");
+                        var skillAction = CustomHB426CombinePack.CreateSkillAction(battleField.guid, new List<GameNetPackBasic>() { skillPack });
+                        if (skillAction != null)
+                        {
+                            battleField.PlayRecord(skillAction);
+                        }
+                    }
+                    else
+                    {
+                        // 銆愪娇鐢� causingRecordAction 鎴� battleField.recordPlayer銆�
+                        // 鍘熷洜锛氭浜″悗鐨勫寘搴旇鍥炲埌瀵艰嚧姝讳骸鐨勬妧鑳芥墍鍦ㄧ殑涓婁笅鏂�
+                        // 濡傛灉鏈� causingRecordAction锛堝鑷存浜$殑鎶�鑳斤級锛屽垯鍒嗗彂鍒板畠鐨� innerRecordPlayer
+                        // 鍚﹀垯鍒嗗彂鍒� battleField.recordPlayer锛堥《灞傦級
+                        if (causingRecordAction != null)
+                        {
+                            PackageRegeditEx.DistributeToRecordAction(pack, causingRecordAction);
+                        }
+                        else
+                        {
+                            // 濡傛灉娌℃湁 causingRecordAction锛岀洿鎺ュ垎鍙戯紙浣跨敤鍘熷鐨� PackageRegedit锛�
+                            PackageRegedit.Distribute(pack);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     public override bool CanStartExecution()
     {
         //  濡傛灉涓嶆槸WaitingPlay妯″紡锛岀洿鎺ュ彲浠ユ墽琛�
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index 40de9a9..58154a9 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -335,6 +335,10 @@
             if (isLastHit)
             {
                 DodgeFinishAction dodgeFinish = new DodgeFinishAction(battleField, this);
+                // 銆愪娇鐢� BattleField.recordPlayer銆�
+                // 鍘熷洜锛氶棯閬垮畬鎴愬姩浣滄槸鐩爣瑙掕壊鐨勭嫭绔嬭涓猴紝涓嶆槸鎶�鑳藉唴閮ㄤ骇鐢熺殑
+                // 铏界劧鏄湪Hurt杩囩▼涓Е鍙戯紝浣嗘槸闂伩鍔ㄤ綔鏈韩鏄洰鏍囩殑鍙嶅簲锛屽簲璇ョ敱涓籖ecordPlayer绠$悊
+                // 浣跨敤InsertRecord鍙互鎻掑埌闃熷垪鏈�鍓嶉潰锛屼繚璇侀棯閬胯〃鐜扮殑浼樺厛绾�
                 battleField.recordPlayer.InsertRecord(dodgeFinish);
             }
 
@@ -506,6 +510,10 @@
             teamHero.isDead = false;
             
         });
+        // 銆愪娇鐢� BattleField.recordPlayer銆�
+        // 鍘熷洜锛氬娲绘槸瑙掕壊鐨勭嫭绔嬭涓猴紝涓嶆槸鎶�鑳藉唴閮ㄤ骇鐢熺殑
+        // 澶嶆椿鍙兘鏄鍔ㄨЕ鍙戠殑锛堝姝讳骸鍚庢湇鍔″櫒鍙戞潵鐨勫娲诲寘锛夛紝搴旇鐢变富RecordPlayer绠$悊
+        // 浣跨敤InsertRecord鍙互鎻掑埌闃熷垪鏈�鍓嶉潰锛屼繚璇佸娲昏〃鐜扮殑浼樺厛绾�
         battleField.recordPlayer.InsertRecord(recordAction);
     }
 
diff --git a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
index 9c9ec73..d1ded5f 100644
--- a/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
+++ b/Main/System/Battle/Buff/BattleObjectBuffMgr.cs
@@ -154,10 +154,15 @@
             OnBuffChanged();
         });
 
+        // 銆愭牴鎹笂涓嬫枃閫夋嫨 RecordPlayer銆�
+        // 鍘熷洜锛欱uff绉婚櫎鍙兘鏄妧鑳芥晥鏋滅殑涓�閮ㄥ垎锛堟妧鑳藉唴閮ㄨЕ鍙戯級锛屼篃鍙兘鏄嫭绔嬬殑锛圔uff鑷劧鍒版湡锛�
+        // 濡傛灉鏈夊綋鍓峈ecordAction涓婁笅鏂囷紝鍒欎娇鐢╥nnerRecordPlayer锛岀‘淇滲uff绉婚櫎涓庢妧鑳界敓鍛藉懆鏈熺粦瀹�
+        // 鍚﹀垯浣跨敤BattleField鐨勪富RecordPlayer
+        var targetPlayer = PackageRegeditEx.GetTargetRecordPlayer(battleObject.battleField);
         if (insert)
-            battleObject.battleField.recordPlayer.ImmediatelyPlay(buffRemoveAction);
+            targetPlayer.ImmediatelyPlay(buffRemoveAction);
         else
-            battleObject.battleField.recordPlayer.PlayRecord(buffRemoveAction);
+            targetPlayer.PlayRecord(buffRemoveAction);
         
     }
 
@@ -187,10 +192,15 @@
                     OnBuffChanged();
                 });
 
+            // 銆愭牴鎹笂涓嬫枃閫夋嫨 RecordPlayer銆�
+            // 鍘熷洜锛欱uff娣诲姞鍙兘鏄妧鑳芥晥鏋滅殑涓�閮ㄥ垎锛堟妧鑳藉唴閮ㄨЕ鍙戯級锛屼篃鍙兘鏄嫭绔嬬殑
+            // 濡傛灉鏈夊綋鍓峈ecordAction涓婁笅鏂囷紝鍒欎娇鐢╥nnerRecordPlayer
+            // 鍚﹀垯浣跨敤BattleField鐨勪富RecordPlayer
+            var targetPlayer = PackageRegeditEx.GetTargetRecordPlayer(battleObject.battleField);
             if (insert)
-                battleObject.battleField.recordPlayer.ImmediatelyPlay(buffMountAction);
+                targetPlayer.ImmediatelyPlay(buffMountAction);
             else
-                battleObject.battleField.recordPlayer.PlayRecord(buffMountAction);
+                targetPlayer.PlayRecord(buffMountAction);
         }
         else
         {
@@ -231,10 +241,15 @@
                     OnBuffChanged();
                 });
 
+            // 銆愭牴鎹笂涓嬫枃閫夋嫨 RecordPlayer銆�
+            // 鍘熷洜锛欱uff鎵归噺娣诲姞鍙兘鏄妧鑳芥晥鏋滅殑涓�閮ㄥ垎锛屼篃鍙兘鏄嫭绔嬬殑
+            // 濡傛灉鏈夊綋鍓峈ecordAction涓婁笅鏂囷紝鍒欎娇鐢╥nnerRecordPlayer
+            // 鍚﹀垯浣跨敤BattleField鐨勪富RecordPlayer
+            var targetPlayer = PackageRegeditEx.GetTargetRecordPlayer(battleObject.battleField);
             if (insert)
-                battleObject.battleField.recordPlayer.ImmediatelyPlay(buffMountAction);
+                targetPlayer.ImmediatelyPlay(buffMountAction);
             else
-                battleObject.battleField.recordPlayer.PlayRecord(buffMountAction);
+                targetPlayer.PlayRecord(buffMountAction);
         }
 
         // 澶勭悊鍙埛鏂版暟鎹殑buff (IsAdd == 0)
diff --git a/Main/System/Battle/Define/BattleDeadPack.cs b/Main/System/Battle/Define/BattleDeadPack.cs
index 6313df2..0998770 100644
--- a/Main/System/Battle/Define/BattleDeadPack.cs
+++ b/Main/System/Battle/Define/BattleDeadPack.cs
@@ -1,6 +1,7 @@
 
 
 using System;
+using System.Collections.Generic;
 
 public class BattleDeadPack
 {
@@ -8,6 +9,9 @@
 
     public CustomHB426CombinePack deadTriggerSkill;
 
+    // 瀛樺偍姝讳骸鍖呬箣鍚庣殑鎵�鏈夊寘锛岃繖浜涘寘闇�瑕佺瓑寰呮浜″畬鎴愬悗鍐嶅垎鍙�
+    public List<GameNetPackBasic> packListAfterDeath = new List<GameNetPackBasic>();
+
     public bool isPlaySkill = false;
 
     public bool IsOwnSkill(HB427_tagSCUseSkill hB427_TagSCUseSkill)
diff --git a/Main/System/Battle/Motion/MotionBase.cs b/Main/System/Battle/Motion/MotionBase.cs
index 3a580cc..f8299ba 100644
--- a/Main/System/Battle/Motion/MotionBase.cs
+++ b/Main/System/Battle/Motion/MotionBase.cs
@@ -65,7 +65,6 @@
 
         PlayAnimation(MotionName.idle, true);
         SetupAnimationHandlers();
-        skillTrack = null;
         
         if (skelAnim.gameObject != null)
             illusionShadow = skelAnim.gameObject.AddMissingComponent<SkeletonIllusionShadow>();
@@ -175,8 +174,6 @@
         return ExecuteSkillAnim(skillConfig, skillBase, onComplete, targetAnim, true, isSubSkill);
     }
 
-    private Spine.TrackEntry skillTrack = null;
-
 
     private Spine.TrackEntry ExecuteSkillAnim(SkillConfig skillConfig, SkillBase skillBase, Action onComplete,
         Spine.Animation targetAnim, bool hasAnim, bool isSubSkill)
@@ -220,6 +217,7 @@
             }
         }
         
+        Spine.TrackEntry skillTrack = null;
         
         if (hasAnim)
         {
@@ -619,7 +617,6 @@
 
         currentTrack = null;
 
-        skillTrack = null;
         
         playingSkillAnim = false;
         PlayAnimation(MotionName.idle, true);
@@ -677,7 +674,6 @@
             skeleton.SetToSetupPose();
             // skeleton.UpdateWorldTransform();
         }
-        skillTrack = null;
         // 10. 鎾斁寰呮満鍔ㄧ敾
         PlayAnimation(MotionName.idle, true);
         skeletonAnim.LateUpdate();
diff --git a/Main/System/Battle/RecordPlayer/RecordAction.cs b/Main/System/Battle/RecordPlayer/RecordAction.cs
index 237218a..51e7167 100644
--- a/Main/System/Battle/RecordPlayer/RecordAction.cs
+++ b/Main/System/Battle/RecordPlayer/RecordAction.cs
@@ -27,11 +27,29 @@
     //  鑷韩鍔ㄤ綔鏄惁瀹屾垚锛堜笉鍖呮嫭瀛愯妭鐐圭殑瀹屾垚鐘舵�侊級
     protected bool isActionCompleted = false;
 
+    //  ===== 鍐呴儴RecordPlayer鏈哄埗 =====
+    //  鍐呴儴RecordPlayer锛氱敤浜庢挱鏀剧敱姝ecordAction鍐呴儴浜х敓鐨凴ecordAction
+    //  褰揜ecordAction鍐呴儴浜х敓鏂扮殑RecordAction鏃讹紙濡侾ackageRegedit.Distribute瑙﹀彂鐨勶級锛�
+    //  杩欎簺RecordAction搴旇鐢卞綋鍓峈ecordAction鐨刬nnerRecordPlayer绠$悊锛岃�屼笉鏄疊attleField鐨勪富RecordPlayer
+    //  杩欐牱鍙互淇濊瘉锛�
+    //  1. 鍐呴儴浜х敓鐨凴ecordAction鐢熷懡鍛ㄦ湡涓庣埗RecordAction缁戝畾
+    //  2. ForceFinish鏃跺彲浠ヤ竴骞跺鐞嗗唴閮ㄧ殑RecordAction
+    //  3. 涓嶄細骞叉壈BattleField涓籖ecordPlayer鐨勬挱鏀鹃槦鍒�
+    protected RecordPlayer innerRecordPlayer;
+
     public RecordAction(RecordActionType _actionType, BattleField _battleField, BattleObject _battleObj)
     {
         actionType = _actionType;
         battleField = _battleField;
         battleObject = _battleObj;
+
+        //  鍒濆鍖栧唴閮≧ecordPlayer
+        //  姣忎釜RecordAction閮芥湁鑷繁鐨凴ecordPlayer鏉ョ鐞嗗唴閮ㄤ骇鐢熺殑RecordAction
+        if (_battleField != null)
+        {
+            innerRecordPlayer = new RecordPlayer();
+            innerRecordPlayer.Init(_battleField);
+        }
     }
 
     public virtual void Played()
@@ -123,6 +141,13 @@
             return false;
         }
         
+        //  妫�鏌ュ唴閮≧ecordPlayer鏄惁杩樺湪鎾斁
+        //  鍘熷洜锛氬唴閮ㄤ骇鐢熺殑RecordAction蹇呴』鍏ㄩ儴鎾斁瀹屾垚鍚庯紝褰撳墠RecordAction鎵嶇畻瀹屾垚
+        if (innerRecordPlayer != null && innerRecordPlayer.IsPlaying())
+        {
+            return false;
+        }
+        
         //  妫�鏌ユ墍鏈夊瓙鑺傜偣鏄惁瀹屾垚
         foreach (var child in childActionList)
         {
@@ -137,13 +162,21 @@
 
     public virtual void Run()
     {
-
+        //  鍏堣繍琛屽唴閮≧ecordPlayer
+        //  鍘熷洜锛氬唴閮ㄤ骇鐢熺殑RecordAction闇�瑕佸厛鎵ц锛岀‘淇濆唴閮ㄩ�昏緫鎸夋纭『搴忔挱鏀�
+        //  渚嬪锛氭妧鑳藉唴閮ㄤ骇鐢熺殑Buff娣诲姞銆佸瓙鎶�鑳界瓑閮界敱innerRecordPlayer绠$悊
+        innerRecordPlayer?.Run();
     }
 
     public virtual void ForceFinish()
     {
         isFinish = true;
         isActionCompleted = true;
+        
+        //  寮哄埗缁撴潫鍐呴儴RecordPlayer
+        //  鍘熷洜锛歊ecordAction琚獸orceFinish鏃讹紝鍏跺唴閮ㄤ骇鐢熺殑鎵�鏈塕ecordAction涔熷繀椤诲己鍒剁粨鏉�
+        //  杩欐牱鎵嶈兘淇濊瘉鏁翠釜RecordAction鏍戠殑瀹屾暣鎬у拰涓�鑷存��
+        innerRecordPlayer?.ForceFinish();
         
         //  寮哄埗缁撴潫鎵�鏈夊瓙鑺傜偣
         for (int i = childActionList.Count - 1; i >= 0; i--)
@@ -166,6 +199,13 @@
         return battleField.guid;
     }
 
+    //  鑾峰彇鍐呴儴RecordPlayer
+    //  鐢ㄤ簬澶栭儴浠g爜闇�瑕佸皢RecordAction娣诲姞鍒版RecordAction鐨勫唴閮ㄦ挱鏀惧櫒鏃朵娇鐢�
+    public virtual RecordPlayer GetInnerRecordPlayer()
+    {
+        return innerRecordPlayer;
+    }
+
     public virtual bool NeedWaitSibling()
     {
         return true;
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index f07de9d..938659f 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -28,9 +28,6 @@
     protected List<H0704_tagRolePackRefresh> dropPackList = new List<H0704_tagRolePackRefresh>();
     protected List<HB405_tagMCAddExp> expPackList = new List<HB405_tagMCAddExp>();
 
-    protected List<SkillRecordAction> waitingCastSkillRecordAction = new List<SkillRecordAction>();
-
-
     protected bool moveFinished = false;
     public SkillBase fromSkill;
     public bool isPlay = false;
@@ -500,44 +497,48 @@
         skillEffect = SkillEffectFactory.CreateSkillEffect(this, caster, skillConfig, tagUseSkillAttack);
         skillEffect.Play(OnHitTargets);
         ProcessSubSkill();
-        HandleWaitingCastSkill();
 
         isPlay = true;
     }
 
     protected void ProcessSubSkill()
     {
+        // 鎸塸ackUID鎺掑簭鎵�鏈夊瓙鎶�鑳�
+        var allSubSkills = new List<(ulong packUID, SkillRecordAction action)>();
+        
         foreach (var subSkillPack in tagUseSkillAttack.subSkillList)
         {
             SkillRecordAction recordAction = CustomHB426CombinePack.CreateSkillAction(battleField.guid, new List<GameNetPackBasic>() { subSkillPack });
-            recordAction.fromSkill = this;
-            //  瀛愭妧鑳借缃甒aitingPlay=true锛岀瓑寰呯埗鎶�鑳藉姩浣滃畬鎴�
-            waitingCastSkillRecordAction.Add(recordAction);
-            battleField.recordPlayer.ImmediatelyPlay(recordAction, parentRecordAction, true);
+            if (recordAction != null)
+            {
+                recordAction.fromSkill = this;
+                allSubSkills.Add((subSkillPack.packUID, recordAction));
+            }
         }
         tagUseSkillAttack.subSkillList.Clear();
+        
         foreach (var subCombinePack in tagUseSkillAttack.subSkillCombinePackList)
         {
             SkillRecordAction recordAction = CustomHB426CombinePack.CreateSkillAction(battleField.guid, subCombinePack.packList);
-            recordAction.fromSkill = this;
-            //  瀛愭妧鑳借缃甒aitingPlay=true锛岀瓑寰呯埗鎶�鑳藉姩浣滃畬鎴�
-            waitingCastSkillRecordAction.Add(recordAction);
+            if (recordAction != null)
+            {
+                recordAction.fromSkill = this;
+                ulong packUID = subCombinePack.packList.Count > 0 ? GetPackUID(subCombinePack.packList[0]) : 0;
+                allSubSkills.Add((packUID, recordAction));
+            }
         }
         tagUseSkillAttack.subSkillCombinePackList.Clear();
 
-        waitingCastSkillRecordAction.OrderBy(recordAction => recordAction.hB427_TagSCUseSkill.packUID);
+        // 鎸塸ackUID鎺掑簭
+        allSubSkills.Sort((a, b) => a.packUID.CompareTo(b.packUID));
 
-        
-    }
-
-    protected void HandleWaitingCastSkill()
-    {
+        // 渚濇娣诲姞鍒皉ecordPlayer锛屾瘡涓瓑寰呭墠涓�涓畬鎴�
         RecordAction waitingRecordAction = null;
-
-        for (int i = 0; i < waitingCastSkillRecordAction.Count; i++)
+        foreach (var (packUID, recordAction) in allSubSkills)
         {
-            var recordAction = waitingCastSkillRecordAction[i];
-
+            // 銆愪娇鐢� BattleField.recordPlayer銆�
+            // 鍘熷洜锛氬瓙鎶�鑳芥槸鐙珛鐨凷killRecordAction锛屽簲璇ユ槸椤跺眰RecordAction锛岀敱BattleField鐨勪富RecordPlayer绠$悊
+            // 閫氳繃璁剧疆鐖跺瓙鍏崇郴鍜學aitingPlay锛屽彲浠ユ帶鍒跺瓙鎶�鑳界殑鎵ц鏃舵満
             if (waitingRecordAction != null)
             {
                 //  姣忎釜閮藉簲璇ョ瓑鍓嶄竴涓粨鏉熷悗
@@ -561,19 +562,19 @@
     // 鎶�鑳戒腑鎽囧紑濮嬪洖璋冿細閫氱煡鎶�鑳芥晥鏋滃鐞嗕腑鎽囧紑濮�
     public virtual void OnMiddleFrameStart(int times)
     {
-        skillEffect?.OnMiddleFrameStart(times); // 淇锛氭坊鍔犵┖鍊兼鏌�
+        skillEffect.OnMiddleFrameStart(times); // 淇锛氭坊鍔犵┖鍊兼鏌�
     }
 
     // 鎶�鑳戒腑鎽囩粨鏉熷洖璋冿細閫氱煡鎶�鑳芥晥鏋滃鐞嗕腑鎽囩粨鏉�
     public virtual void OnMiddleFrameEnd(int times, int hitIndex)
     {
-        skillEffect?.OnMiddleFrameEnd(times, hitIndex); // 淇锛氭坊鍔犵┖鍊兼鏌�
+        skillEffect.OnMiddleFrameEnd(times, hitIndex); // 淇锛氭坊鍔犵┖鍊兼鏌�
     }
 
     // 鎶�鑳藉悗鎽囧紑濮嬪洖璋冿細閫氱煡鎶�鑳芥晥鏋滃鐞嗗悗鎽囧紑濮�
     public virtual void OnFinalFrameStart()
     {
-        skillEffect?.OnFinalFrameStart(); // 淇锛氭坊鍔犵┖鍊兼鏌�
+        skillEffect.OnFinalFrameStart(); // 淇锛氭坊鍔犵┖鍊兼鏌�
     }
 
     // 鎶�鑳藉悗鎽囩粨鏉熷洖璋冿細閫氱煡鎶�鑳芥晥鏋滃鐞嗗悗鎽囩粨鏉�
@@ -899,7 +900,10 @@
         if (refreshPack != null)
         {
             // 鍒嗗彂HP鍒锋柊鍖�
-            PackageRegedit.Distribute(refreshPack);
+            // 銆愪娇鐢� parentRecordAction.innerRecordPlayer銆�
+            // 鍘熷洜锛欻P鍒锋柊鍖呮槸鎶�鑳藉唴閮ㄤ骇鐢熺殑锛屽簲璇ョ敱褰撳墠SkillRecordAction鐨刬nnerRecordPlayer绠$悊
+            // 杩欐牱鍙互纭繚HP鍒锋柊涓庢妧鑳界殑鐢熷懡鍛ㄦ湡缁戝畾锛孎orceFinish鏃朵竴骞跺鐞�
+            PackageRegeditEx.DistributeToRecordAction(refreshPack, parentRecordAction);
             packList.Remove(refreshPack);
         }
     }
@@ -910,13 +914,123 @@
         List<BattleDeadPack> deadPackList = BattleUtility.FindDeadPack(packList);
         if (deadPackList.Count <= 0) return;
 
+        // 鎵惧埌鏈�澶х殑姝讳骸鍖� packUID锛堝寘鎷浜″寘鍜屾浜¤Е鍙戞妧鑳斤級
+        ulong maxDeathPackUID = 0;
+        foreach (var deadPack in deadPackList)
+        {
+            if (deadPack.deadPack != null && deadPack.deadPack.packUID > maxDeathPackUID)
+            {
+                maxDeathPackUID = deadPack.deadPack.packUID;
+            }
+            
+            if (deadPack.deadTriggerSkill != null)
+            {
+                var skillPack = deadPack.deadTriggerSkill.GetMainHB427SkillPack();
+                if (skillPack != null && skillPack.packUID > maxDeathPackUID)
+                {
+                    maxDeathPackUID = skillPack.packUID;
+                }
+            }
+        }
+        
+        // 濡傛灉鎵惧埌浜嗘浜″寘锛屾敹闆嗘墍鏈� packUID > maxDeathPackUID 鐨勫寘
+        if (maxDeathPackUID > 0)
+        {
+            BattleDebug.LogError($"SkillBase.HandleDead: 鎵惧埌姝讳骸鍖咃紝maxDeathPackUID = {maxDeathPackUID}锛屽紑濮嬫敹闆嗘浜″悗鐨勫寘");
+            
+            // 1. 鏀堕泦 packList 涓� packUID 澶т簬姝讳骸鍖呯殑鍖�
+            List<GameNetPackBasic> packsToRemove = new List<GameNetPackBasic>();
+            foreach (var pack in packList)
+            {
+                ulong packUID = GetPackUID(pack);
+                if (packUID > maxDeathPackUID)
+                {
+                    BattleDebug.LogError($"SkillBase.HandleDead: 浠巔ackList鏀堕泦姝讳骸鍚庣殑鍖� - Type: {pack.GetType().Name}, UID: {packUID}");
+                    foreach (var deadPack in deadPackList)
+                    {
+                        deadPack.packListAfterDeath.Add(pack);
+                    }
+                    packsToRemove.Add(pack);
+                }
+            }
+            
+            // 浠� packList 涓Щ闄よ繖浜涘寘
+            foreach (var pack in packsToRemove)
+            {
+                packList.Remove(pack);
+            }
+            
+            // 2. 鏀堕泦 subSkillList 涓� packUID 澶т簬姝讳骸鍖呯殑瀛愭妧鑳�
+            if (tagUseSkillAttack.subSkillList != null && tagUseSkillAttack.subSkillList.Count > 0)
+            {
+                var subSkillsToRemove = new List<HB427_tagSCUseSkill>();
+                foreach (var subSkillPack in tagUseSkillAttack.subSkillList)
+                {
+                    ulong subSkillUID = GetPackUID(subSkillPack);
+                    if (subSkillUID > maxDeathPackUID)
+                    {
+                        BattleDebug.LogError($"SkillBase.HandleDead: 浠巗ubSkillList鏀堕泦姝讳骸鍚庣殑鍖� - Type: {subSkillPack.GetType().Name}, UID: {subSkillUID}");
+                        foreach (var deadPack in deadPackList)
+                        {
+                            deadPack.packListAfterDeath.Add(subSkillPack);
+                        }
+                        subSkillsToRemove.Add(subSkillPack);
+                    }
+                }
+                
+                // 浠� subSkillList 涓Щ闄よ繖浜涘瓙鎶�鑳�
+                foreach (var subSkill in subSkillsToRemove)
+                {
+                    tagUseSkillAttack.subSkillList.Remove(subSkill);
+                }
+            }
+            
+            // 3. 鏀堕泦 subSkillCombinePackList 涓� packUID 澶т簬姝讳骸鍖呯殑缁勫悎鍖�
+            if (tagUseSkillAttack.subSkillCombinePackList != null && tagUseSkillAttack.subSkillCombinePackList.Count > 0)
+            {
+                var combinePacksToRemove = new List<CustomHB426CombinePack>();
+                foreach (var subCombinePack in tagUseSkillAttack.subSkillCombinePackList)
+                {
+                    // 鎵惧埌缁勫悎鍖呬腑鐨勬渶灏� packUID锛堢粍鍚堝寘鐨� packUID 浠ョ涓�涓寘涓哄噯锛�
+                    ulong combinePackUID = 0;
+                    if (subCombinePack.packList != null && subCombinePack.packList.Count > 0)
+                    {
+                        combinePackUID = GetPackUID(subCombinePack.packList[0]);
+                    }
+                    
+                    if (combinePackUID > maxDeathPackUID)
+                    {
+                        BattleDebug.LogError($"SkillBase.HandleDead: 浠巗ubSkillCombinePackList鏀堕泦姝讳骸鍚庣殑鍖� - UID: {combinePackUID}, 鍖呭惈 {subCombinePack.packList.Count} 涓瓙鍖�");
+                        // 灏嗙粍鍚堝寘涓殑鎵�鏈夊寘閮芥坊鍔犲埌 packListAfterDeath
+                        foreach (var pack in subCombinePack.packList)
+                        {
+                            foreach (var deadPack in deadPackList)
+                            {
+                                deadPack.packListAfterDeath.Add(pack);
+                            }
+                        }
+                        combinePacksToRemove.Add(subCombinePack);
+                    }
+                }
+                
+                // 浠� subSkillCombinePackList 涓Щ闄よ繖浜涚粍鍚堝寘
+                foreach (var combinePack in combinePacksToRemove)
+                {
+                    tagUseSkillAttack.subSkillCombinePackList.Remove(combinePack);
+                }
+            }
+        }
+
         CheckAfterDeadhPack();
 
         // 淇锛氬厛鏀堕泦瑕佸垹闄ょ殑鍖咃紝閬垮厤鍦╢oreach涓慨鏀归泦鍚�
         var dropPacksToRemove = new List<H0704_tagRolePackRefresh>(dropPackList);
         foreach (var _dropPack in dropPacksToRemove)
         {
-            PackageRegedit.Distribute(_dropPack);
+            // 銆愪娇鐢� parentRecordAction.innerRecordPlayer銆�
+            // 鍘熷洜锛氭帀钀藉寘鏄妧鑳芥晥鏋滅殑涓�閮ㄥ垎锛屽簲璇ョ敱褰撳墠SkillRecordAction绠$悊
+            // 鎺夎惤鍖呯殑鍒嗗彂涓庢妧鑳藉畬鎴愮粦瀹氾紝纭繚鍦ㄦ妧鑳紽orceFinish鏃舵纭鐞�
+            PackageRegeditEx.DistributeToRecordAction(_dropPack, parentRecordAction);
             packList.Remove(_dropPack);
         }
 
@@ -991,6 +1105,48 @@
         for (int i = 0; i < itemList.Count; i++)
             dropAssign[i % deadCount].Add(itemList[i]);
         return dropAssign;
+    }
+
+    // 鑾峰彇鍖呯殑 packUID
+    protected ulong GetPackUID(GameNetPackBasic pack)
+    {
+        if (pack == null) return 0;
+        
+        if (pack is HB422_tagMCTurnFightObjDead deadPack)
+            return deadPack.packUID;
+        
+        if (pack is CustomHB426CombinePack combinePack)
+        {
+            var mainSkillPack = combinePack.GetMainHB427SkillPack();
+            return mainSkillPack?.packUID ?? 0;
+        }
+        
+        if (pack is HB427_tagSCUseSkill skillPack)
+            return skillPack.packUID;
+        
+        if (pack is HB428_tagSCBuffRefresh buffRefresh)
+            return buffRefresh.packUID;
+        
+        if (pack is HB429_tagSCBuffDel buffDel)
+            return buffDel.packUID;
+        
+        if (pack is HB419_tagSCObjHPRefresh hpRefresh)
+            return hpRefresh.packUID;
+        
+        if (pack is HB405_tagMCAddExp expPack)
+            return expPack.packUID;
+        
+        if (pack is H0704_tagRolePackRefresh dropPack)
+            return dropPack.packUID;
+        
+        // 灏濊瘯閫氳繃鍙嶅皠鑾峰彇 packUID
+        var packUIDField = pack.GetType().GetField("packUID");
+        if (packUIDField != null)
+        {
+            return (ulong)packUIDField.GetValue(pack);
+        }
+        
+        return 0;
     }
 
     // 鍒嗛厤缁忛獙鍊硷細灏嗙粡楠屽寘骞冲潎鍒嗛厤缁欐瘡涓浜″璞�
@@ -1198,7 +1354,10 @@
             SkillRecordAction recordAction = CustomHB426CombinePack.CreateSkillAction(battleField.guid, new List<GameNetPackBasic>() { subSkillPack });
             recordAction.fromSkill = this;
             otherSkillActionList.Add(recordAction);
-            //  瀛愭妧鑳借缃甒aitingPlay=true锛岀瓑寰呯埗鎶�鑳藉姩浣滃畬鎴�
+            
+            // 銆愪娇鐢� BattleField.recordPlayer銆�
+            // 鍘熷洜锛氬嵆浣垮湪ForceFinished涓紝瀛愭妧鑳戒篃鏄《灞俁ecordAction锛屽簲璇ョ敱涓籖ecordPlayer绠$悊
+            // 杩欎簺瀛愭妧鑳戒細绔嬪嵆琚獸orceFinish锛屼絾浠嶉渶瑕佹纭殑鎾斁鍣ㄤ笂涓嬫枃
             battleField.recordPlayer.ImmediatelyPlay(recordAction, parentRecordAction, true);
         }
         tagUseSkillAttack.subSkillList.Clear();
@@ -1207,7 +1366,9 @@
             SkillRecordAction recordAction = CustomHB426CombinePack.CreateSkillAction(battleField.guid, subCombinePack.packList);
             recordAction.fromSkill = this;
             otherSkillActionList.Add(recordAction);
-            //  瀛愭妧鑳借缃甒aitingPlay=true锛岀瓑寰呯埗鎶�鑳藉姩浣滃畬鎴�
+            
+            // 銆愪娇鐢� BattleField.recordPlayer銆�
+            // 鍘熷洜锛氬嵆浣垮湪ForceFinished涓紝瀛愭妧鑳戒篃鏄《灞俁ecordAction锛屽簲璇ョ敱涓籖ecordPlayer绠$悊
             battleField.recordPlayer.ImmediatelyPlay(recordAction, parentRecordAction, true);
         }
         tagUseSkillAttack.subSkillCombinePackList.Clear();
@@ -1298,7 +1459,10 @@
             {
                 if (pack is CustomB421ActionPack actionPack)
                     actionPack.Distribute();
-                PackageRegedit.Distribute(pack);
+                // 銆愪娇鐢� parentRecordAction.innerRecordPlayer銆�
+                // 鍘熷洜锛欶orceFinished鏃跺墿浣欑殑鍖呬篃鏄妧鑳藉唴閮ㄤ骇鐢熺殑锛屽簲璇ョ敱innerRecordPlayer绠$悊
+                // 杩欐牱鍙互纭繚鍗充娇寮哄埗缁撴潫锛屽寘鐨勫鐞嗕篃鍦ㄦ纭殑涓婁笅鏂囦腑
+                PackageRegeditEx.DistributeToRecordAction(pack, parentRecordAction);
             }
         }
     }
@@ -1408,7 +1572,10 @@
             }
             else
             {
-                PackageRegedit.Distribute(pack);
+                // 銆愪娇鐢� parentRecordAction.innerRecordPlayer銆�
+                // 鍘熷洜锛氭妧鑳芥墽琛岃繃绋嬩腑鐨勫寘锛圔uff銆佸睘鎬у埛鏂扮瓑锛夋槸鎶�鑳芥晥鏋滅殑涓�閮ㄥ垎
+                // 搴旇鐢盨killRecordAction鐨刬nnerRecordPlayer绠$悊锛岀‘淇濅笌鎶�鑳界敓鍛藉懆鏈熶竴鑷�
+                PackageRegeditEx.DistributeToRecordAction(pack, parentRecordAction);
             }
         }
 
@@ -1476,7 +1643,10 @@
 
         foreach (var pack in buffPacks)
         {
-            PackageRegedit.Distribute(pack);
+            // 銆愪娇鐢� parentRecordAction.innerRecordPlayer銆�
+            // 鍘熷洜锛欱uff鍖呮槸鎶�鑳芥晥鏋滅殑鏍稿績缁勬垚閮ㄥ垎锛屽簲璇ョ敱SkillRecordAction绠$悊
+            // 鍗充娇鏄己鍒跺垎鍙戠殑鎯呭喌锛屼篃瑕佷繚鎸佸湪姝g‘鐨凴ecordAction涓婁笅鏂囦腑
+            PackageRegeditEx.DistributeToRecordAction(pack, parentRecordAction);
         }
     }
 

--
Gitblit v1.8.0