From a38e02687f52e6d81e6fb6c1dcbf85ee76938325 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期三, 24 十二月 2025 14:23:43 +0800
Subject: [PATCH] 125 战斗 修复因为自己技能造成自身死亡的卡死问题
---
Main/System/Battle/Skill/SkillBase.cs | 35 +++++++++++++++++++++++++++++++++++
1 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index ab7da14..ef7132f 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -27,6 +27,9 @@
protected List<SkillRecordAction> otherSkillActionList = new List<SkillRecordAction>();
protected List<H0704_tagRolePackRefresh> dropPackList = new List<H0704_tagRolePackRefresh>();
protected List<HB405_tagMCAddExp> expPackList = new List<HB405_tagMCAddExp>();
+
+ protected List<BattleDeadPack> endDeadPackList = new List<BattleDeadPack>();
+
protected bool moveFinished = false;
public SkillBase fromSkill;
public bool isPlay = false;
@@ -48,6 +51,12 @@
tagUseSkillAttack = vNetData;
battleField = _battleField;
packList = _packList;
+
+ // 娉ㄥ唽姝e湪閲婃斁鐨勬妧鑳�
+ if (battleField != null && caster != null)
+ {
+ battleField.AddCastingSkill(caster.ObjID, this);
+ }
SafetyCheck();
#if UNITY_EDITOR
@@ -711,6 +720,12 @@
tempDropList.TryGetValue(objID, out BattleDrops battleDrops);
tempDeadPackList.TryGetValue(objID, out BattleDeadPack deadPack);
+ // 濡傛灉鐩爣姝e湪閲婃斁鎶�鑳斤紝璺宠繃姝讳骸澶勭悊锛堝欢杩熷埌鎶�鑳界粨鏉燂級
+ if (battleField != null && battleField.IsCastingSkill(target.ObjID))
+ {
+ deadPack = null;
+ }
+
bool clearSuckHp = tagUseSkillAttack.HurtList.ToList().IndexOf(hurt) != 0;
// ============ 鍙傛暟鎵撳寘 ============
@@ -736,8 +751,14 @@
// ============ 鑾峰彇涓存椂鏁版嵁(鎺夎惤銆佹浜$瓑) ============
int objID = (int)target.ObjID;
tempDropList.TryGetValue(objID, out BattleDrops battleDrops);
+
tempDeadPackList.TryGetValue(objID, out BattleDeadPack deadPack);
+ // 濡傛灉鐩爣姝e湪閲婃斁鎶�鑳斤紝璺宠繃姝讳骸澶勭悊锛堝欢杩熷埌鎶�鑳界粨鏉燂級
+ if (battleField != null && battleField.IsCastingSkill(target.ObjID))
+ {
+ deadPack = null;
+ }
// ============ 鍙傛暟鎵撳寘锛堝皢 tagSCUseSkillHurtEx 杞崲涓� tagSCUseSkillHurt锛�============
HB427_tagSCUseSkill.tagSCUseSkillHurt hurt = new HB427_tagSCUseSkill.tagSCUseSkillHurt
{
@@ -1062,6 +1083,14 @@
return false;
}
+ // 鎶�鑳藉畬鍏ㄧ粨鏉燂紝绉婚櫎鎶�鑳芥敞鍐屽苟瑙﹀彂寤惰繜鐨勬浜″垽瀹�
+ if (battleField != null && caster != null)
+ {
+ battleField.RemoveCastingSkill(caster.ObjID, this);
+
+ battleField.OnObjsDead(new List<BattleDeadPack>(tempDeadPackList.Values));
+ }
+
return true;
}
@@ -1075,6 +1104,12 @@
if (isFinished)
return;
+ // 绉婚櫎鎶�鑳芥敞鍐�
+ if (battleField != null && caster != null)
+ {
+ battleField.RemoveCastingSkill(caster.ObjID, this);
+ }
+
// 1. 寮哄埗缁撴潫鎶�鑳芥晥鏋�
skillEffect?.ForceFinished();
skillEffect = null;
--
Gitblit v1.8.0