From d3f814d81b74bfbdd6372a0ae0f319aa0ebc201b Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期日, 21 十二月 2025 17:50:53 +0800
Subject: [PATCH] 125 战斗 一键跳过防卡死处理

---
 Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs |   20 ++++++++-
 Main/System/Battle/Skill/SkillBase.cs                             |   70 ++++++++++++++++++++++++++++++++++
 Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs |   12 +++++-
 Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs |   12 ++++-
 4 files changed, 105 insertions(+), 9 deletions(-)

diff --git a/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs b/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs
index 271d5a7..6321135 100644
--- a/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs
@@ -62,10 +62,24 @@
 
 	public override void ForceFinish()
 	{
-		//姝e父寮�濮嬩箣鍚庡埌鐣岄潰鍑虹幇涔嬪墠閮界偣涓嶄簡 鎵�浠ヨ繖杈逛笉鐢ㄥ己鍒跺畬鎴� 鎺ュ彛鐣欑潃
+		if (!isRun)
+		{
+			isRun = true;
+			UniTaskExtension.DelayTime((GameObject)null, 1f, () =>
+			{
+				if (battleField ==null|| battleField.battleRootNode == null|| battleField.battleRootNode.battleStartNode == null)
+				{
+					return;
+				}
+				battleField.battleRootNode.battleStartNode.SetActive(false);
+				StartBattleCallback();
+			});
+		}
 
-		base.ForceFinish();
-		// 瀹屾垚灏卞紑濮嬫樉绀篣I
+		if (isFinish)
+			return;
+
+		// 杩欓噷鏃犳硶寮哄埗鎵ц 蹇呴』绛夊緟isFinish = true
 
 	}
 }
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
index b2019b3..bcd04bd 100644
--- a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -124,22 +124,30 @@
 
     public override void ForceFinish()
     {
+        if (isFinish)
+            return;
+
         isFinish = true;
 
+        // 寮哄埗缁撴潫鎵�鏈夋浜¤Е鍙戞妧鑳�
         foreach (var kv in deathActionDict)
         {
             kv.Value.ForceFinish();
         }
+        deathActionDict.Clear();
 
-        //  鐩存帴缁撴潫
+        // 娓呯悊鐘舵�佸瓧鍏革紝闃叉鍥炶皟缁х画绛夊緟
+        deadActionStatesDict.Clear();
+
+        //  鐩存帴缁撴潫鎵�鏈夋浜″璞�
         foreach (var deadPack in deadPackList)
         {
             BattleObject deadObj = battleField.battleObjMgr.GetBattleObject((int)deadPack.deadPack.ObjID);
             if (null != deadObj)
             {
                 PerformDrop(deadObj);
+                deadObj.SetDeath();
             }
-            deadObj.SetDeath();
         }
 
         base.ForceFinish();
diff --git a/Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs b/Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs
index 449150f..18819ca 100644
--- a/Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs
@@ -31,10 +31,16 @@
 
 	public override void ForceFinish()
 	{
-		//姝e父寮�濮嬩箣鍚庡埌鐣岄潰鍑虹幇涔嬪墠閮界偣涓嶄簡 鎵�浠ヨ繖杈逛笉鐢ㄥ己鍒跺畬鎴� 鎺ュ彛鐣欑潃
+		if (isFinish)
+			return;
 
+		// 纭繚闂伩鐘舵�佹纭粨鏉�
+		if (battleObject != null && !isRun)
+		{
+			battleObject.OnDodgeEnd();
+		}
+
+		isRun = true;
 		base.ForceFinish();
-		// 瀹屾垚灏卞紑濮嬫樉绀篣I
-
     }
 }
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 8e36377..072fbf4 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -1074,16 +1074,84 @@
         if (isFinished)
             return;
 
+        // 1. 寮哄埗缁撴潫鎶�鑳芥晥鏋�
         skillEffect?.ForceFinished();
+        skillEffect = null;
         
+        // 2. 寮哄埗缁撴潫鎵�鏈夊瓙鎶�鑳藉姩浣�
         otherSkillActionList.ForEach(action => action.ForceFinish());
         otherSkillActionList.Clear();
+
+        // 3. 娓呯悊 DOTween 鍔ㄧ敾锛堥槻姝㈢Щ鍔ㄥ洖璋冨湪鎴樻枟缁撴潫鍚庢墽琛岋級
+        if (caster != null && caster.heroRectTrans != null)
+        {
+            DG.Tweening.DOTween.Kill(caster.heroRectTrans);
+        }
+
+        // 4. 閲嶇疆鏂芥硶鑰呯姸鎬�
+        if (caster != null)
+        {
+            // 閲嶇疆浣嶇疆鍒板師鐐�
+            if (caster.heroRectTrans != null)
+            {
+                caster.heroRectTrans.anchoredPosition = Vector2.zero;
+            }
+            
+            // 閲嶇疆鏈濆悜
+            if (caster.heroGo != null)
+            {
+                Vector3 scale = caster.heroGo.transform.localScale;
+                scale.x = Mathf.Abs(scale.x);
+                caster.heroGo.transform.localScale = scale;
+            }
+
+            // 鍙栨秷骞诲奖鏁堟灉
+            caster.motionBase?.ShowIllusionShadow(false);
+            
+            // 鎾斁寰呮満鍔ㄧ敾锛堝鏋滆繕娲荤潃锛�
+            if (!caster.teamHero.isDead)
+            {
+                caster.motionBase?.ResetForReborn(false);
+            }
+
+            // 娓呯悊鍔ㄧ敾鍥炶皟
+            caster.motionBase?.CancelControledAnimation();
+        }
+
+        // 5. 鎭㈠ UI 鐘舵��
+        if (battleField != null)
+        {
+            // 鎭㈠鎵�鏈夎鑹茬殑鏄剧ず灞傜骇鍜岃鏉�
+            var allList = battleField.battleObjMgr?.allBattleObjDict?.Values;
+            if (allList != null)
+            {
+                foreach (BattleObject bo in allList)
+                {
+                    bo.layerMgr?.SetFront();
+                    bo.heroInfoBar?.SetActive(true);
+                }
+            }
+            
+            // 鍏抽棴鎶�鑳介伄缃�
+            if (battleField.battleRootNode != null && battleField.battleRootNode.skillMaskNode != null)
+            {
+                battleField.battleRootNode.skillMaskNode.SetActive(false);
+            }
+        }
 
         isFinished = true;
         moveFinished = true;
         isPlay = true;
 
-        // 澶勭悊鎵�鏈夊墿浣欏寘
+        // 6. 澶勭悊鎵�鏈夊墿浣欏寘锛堝寘鎷� buff 鍖咃級
+        // 鍏堝鐞� buffCollections
+        foreach (var buff in buffCollections)
+        {
+            PackageRegedit.Distribute(buff);
+        }
+        buffCollections.Clear();
+
+        // 澶勭悊鍓╀綑鐨� packList
         while (packList.Count > 0)
         {
             var pack = packList[0];

--
Gitblit v1.8.0