From 64d526e0f5b9f49fe5bd6dcf043f5071d996e7ad Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 24 四月 2026 11:04:29 +0800
Subject: [PATCH] 125 战斗 修复步练师的被动bug

---
 Main/System/Battle/Motion/MotionBase.cs |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/Main/System/Battle/Motion/MotionBase.cs b/Main/System/Battle/Motion/MotionBase.cs
index 56be39a..12d5ef5 100644
--- a/Main/System/Battle/Motion/MotionBase.cs
+++ b/Main/System/Battle/Motion/MotionBase.cs
@@ -45,6 +45,13 @@
     private bool playingSkill = false;
 
     private bool _playingSkillWithAnim = false;
+#if UNITY_EDITOR
+    //  [鍗℃璇婃柇] 璁板綍鏄皝鎶� playingSkillWithAnim 閿佷负 true銆佸湪鍝竴甯э紝渚� SkillBase.ReportStuckIfNeeded 浣跨敤銆�
+    //  涓嶅仛 Run() 鍐� watchdog锛堥伩鍏嶅埛灞忥級锛涘彧鍦� SkillBase 鑷韩鍙戠幇鍗℃鏃朵竴娆℃�ф妸杩欎簺淇℃伅鎵撳嚭鏉ャ��
+    private int _pswaSetTrueFrame = -1;
+    private int _pswaSetTrueSkillId = 0;
+    private string _pswaSetTrueStack = null;
+#endif
     private bool playingSkillWithAnim
     {
         get => _playingSkillWithAnim;
@@ -58,6 +65,19 @@
                 // 姣忔鍙樻洿鎵撳嵃鏍堬紝瀹氫綅鍒板簳鏄皝鎶� playingSkillWithAnim 璁� true 浜嗐�佽皝娓�/涓嶆竻
                 BattleDebug.LogError($"[MotionBase owner={owner} hash={GetHashCode()}] playingSkillWithAnim {_playingSkillWithAnim} -> {value}\n"
                     + UnityEngine.StackTraceUtility.ExtractStackTrace());
+            }
+            //  [鍗℃璇婃柇] 缁存姢閿佺殑鎸佹湁鑰呬俊鎭紙涓婁竴杞殑瀛楁琚洖婊氫簡锛岃繖閲屾槸鏈�灏忓繀瑕侀泦鍚堬級
+            if (value && !_playingSkillWithAnim)
+            {
+                _pswaSetTrueFrame = UnityEngine.Time.frameCount;
+                _pswaSetTrueStack = UnityEngine.StackTraceUtility.ExtractStackTrace();
+                // skillId 鐢� ExecuteSkillAnim 绱ф帴鐫�璧嬪�硷紙setter 杩欓噷鎷夸笉鍒帮級
+            }
+            else if (!value && _playingSkillWithAnim)
+            {
+                _pswaSetTrueFrame = -1;
+                _pswaSetTrueSkillId = 0;
+                _pswaSetTrueStack = null;
             }
 #endif
             _playingSkillWithAnim = value;
@@ -335,6 +355,10 @@
             activeSkillTracks[trackIndex] = skillTrack;
 
             playingSkillWithAnim = true;
+#if UNITY_EDITOR
+            //  [鍗℃璇婃柇] setter 閲屾嬁涓嶅埌 skillId锛岃繖閲岃ˉ涓婏紝渚� SkillBase.ReportStuckIfNeeded dump
+            _pswaSetTrueSkillId = skillConfig != null ? skillConfig.SkillID : 0;
+#endif
         }
         
         playingSkill = true;
@@ -857,6 +881,11 @@
 #if UNITY_EDITOR
     /// <summary>鍗℃璇婃柇鐢細鏆撮湶 playingSkillWithAnim 鏍囧織浣嶃��</summary>
     public bool PlayingSkillWithAnimForDebug => playingSkillWithAnim;
+
+    //  [鍗℃璇婃柇] 缁� SkillBase 鍗℃鎶ュ憡鐢細璋佹妸 playingSkillWithAnim 閿佷负 true銆佸湪鍝竴甯с��
+    public int PlayingSkillAnimOwnerSkillIdForDebug => _pswaSetTrueSkillId;
+    public int PlayingSkillAnimOwnerFrameForDebug => _pswaSetTrueFrame;
+    public string PlayingSkillAnimOwnerStackForDebug => _pswaSetTrueStack;
 #endif
 
     public bool CanStartDeath()

--
Gitblit v1.8.0