From fd865ddcd03a76ca2fb2794b2a8639e33492c661 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 30 一月 2026 11:51:30 +0800
Subject: [PATCH] 125 战斗 bug堆栈的一些防错

---
 Main/System/Battle/BattleField/BattleField.cs  |    4 +-
 Main/System/Battle/BattleUtility.cs            |   17 ++++++--
 Main/System/Battle/UIComp/BattleHeroInfoBar.cs |   44 +++++++++++++++++++++
 3 files changed, 58 insertions(+), 7 deletions(-)

diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index e6a8219..6435401 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -657,7 +657,7 @@
 
         foreach (var obj in blueTeam)
         {
-            if (obj is MinggeBattleObject)
+            if (obj == null || obj is not HeroBattleObject)
             {
                 continue;
             }
@@ -674,7 +674,7 @@
         {
             foreach (var obj in blueTeam)
             {
-                if (obj is MinggeBattleObject)
+                if (obj == null || obj is not HeroBattleObject)
                 {
                     continue;
                 }
diff --git a/Main/System/Battle/BattleUtility.cs b/Main/System/Battle/BattleUtility.cs
index 1bcfa37..f2021c7 100644
--- a/Main/System/Battle/BattleUtility.cs
+++ b/Main/System/Battle/BattleUtility.cs
@@ -114,16 +114,25 @@
 
         string result = string.Empty;
 
-        //  濡傛灉鏄棯閬挎垨鍏嶇柅 鍒欏彧鏄剧ず瀵瑰簲鏂囧瓧锛屼笉鏄剧ず鏁板瓧
-        if (damage.IsType(DamageType.Dodge) || damage.IsType(DamageType.Immune) || damage.IsType(DamageType.CompletelyDodge))
+        if (config != null)
         {
-            result += (char)config.prefix;
+            //  濡傛灉鏄棯閬挎垨鍏嶇柅 鍒欏彧鏄剧ず瀵瑰簲鏂囧瓧锛屼笉鏄剧ず鏁板瓧
+            if (damage.IsType(DamageType.Dodge) || damage.IsType(DamageType.Immune) || damage.IsType(DamageType.CompletelyDodge))
+            {
+                result += (char)config.prefix;
+            }
+            else
+            {
+                result = ConvertToArtFont(config, damage.damage);
+            }
         }
         else
         {
-            result = ConvertToArtFont(config, damage.damage);
+            result = damage.damage.ToString();
+            Debug.LogError("鎵句笉鍒板搴旂殑浼ゅ鏁板瓧閰嶇疆 attackType : " + damage.attackType);
         }
 
+
         return result;
     }
 
diff --git a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
index 4f7371b..c40229b 100644
--- a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
+++ b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
@@ -295,7 +295,49 @@
     /// </summary>
     public void UpdateDamage(BattleDmgInfo dmgInfo)
     {
-        // 鍔犲叆闃熷垪
+        // 楠岃瘉鏁版嵁鏈夋晥鎬э紝闃叉绌哄紩鐢�
+        if (dmgInfo?.battleHurtParam == null)
+            return;
+            
+        // 妫�鏌ュ彈鍑昏�呭璞℃湁鏁堟��
+        if (dmgInfo.battleHurtParam.hurter?.hurtObj != null)
+        {
+            var hurtObj = dmgInfo.battleHurtParam.hurter.hurtObj;
+            // 妫�鏌ュ璞℃槸鍚﹀凡琚攢姣�
+            if (hurtObj == null || hurtObj.Equals(null))
+            {
+                Debug.LogWarning($"[UpdateDamage] 鍙楀嚮鑰呭璞″凡琚攢姣侊紝璺宠繃浼ゅ鏇存柊");
+                return;
+            }
+            
+            // 楠岃瘉鏄惁鑳藉畨鍏ㄨ幏鍙� maxHp锛堥棿鎺ユ鏌� HeroBattleObject 鍐呴儴鐘舵�侊級
+            if (hurtObj is HeroBattleObject && hurtObj.GetMaxHp() <= 0)
+            {
+                Debug.LogWarning($"[UpdateDamage] 鍙楀嚮鑰� maxHp 鏃犳晥锛岃烦杩囦激瀹虫洿鏂�");
+                return;
+            }
+        }
+        
+        // 妫�鏌ユ柦娉曡�呭璞℃湁鏁堟��
+        if (dmgInfo.battleHurtParam.caster?.casterObj != null)
+        {
+            var casterObj = dmgInfo.battleHurtParam.caster.casterObj;
+            // 妫�鏌ュ璞℃槸鍚﹀凡琚攢姣�
+            if (casterObj == null || casterObj.Equals(null))
+            {
+                Debug.LogWarning($"[UpdateDamage] 鏂芥硶鑰呭璞″凡琚攢姣侊紝璺宠繃浼ゅ鏇存柊");
+                return;
+            }
+            
+            // 楠岃瘉鏄惁鑳藉畨鍏ㄨ幏鍙� maxHp
+            if (casterObj is HeroBattleObject && casterObj.GetMaxHp() <= 0)
+            {
+                Debug.LogWarning($"[UpdateDamage] 鏂芥硶鑰� maxHp 鏃犳晥锛岃烦杩囦激瀹虫洿鏂�");
+                return;
+            }
+        }
+        
+        // 鏁版嵁楠岃瘉閫氳繃锛屽姞鍏ラ槦鍒�
         damageUpdateQueue.Enqueue(dmgInfo);
     }
 

--
Gitblit v1.8.0