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