From 83ff2cfc367d3227449fa8414a25541374929ecb Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期四, 29 一月 2026 15:43:50 +0800
Subject: [PATCH] 125 战斗 命格复活支持

---
 Main/System/Battle/BattleUtility.cs |   52 +++++++++++++++++++++++++++-------------------------
 1 files changed, 27 insertions(+), 25 deletions(-)

diff --git a/Main/System/Battle/BattleUtility.cs b/Main/System/Battle/BattleUtility.cs
index bb5744e..6bde282 100644
--- a/Main/System/Battle/BattleUtility.cs
+++ b/Main/System/Battle/BattleUtility.cs
@@ -180,7 +180,7 @@
                 {
                     uint objId = targetList[0].ObjID;
                     BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)objId);
-                    return target.teamHero.positionNum;
+                    return target.GetPositionNum();
                 }
                 break;
             case 1:
@@ -191,7 +191,7 @@
                     BattleObject battleObject = caster.battleField.battleObjMgr.GetBattleObject((int)targetList[0].ObjID);
                     if (battleObject != null)
                     {
-                        returnIndex = battleObject.teamHero.positionNum;
+                        returnIndex = battleObject.GetPositionNum();
                     }
                     else
                     {
@@ -213,12 +213,12 @@
                 {
                     uint objId = targetList[0].ObjID;
                     BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)objId);
-                    returnIndex = target.teamHero.positionNum;
+                    returnIndex = target.GetPositionNum();
                 }
                 else
                 {
                     //  鐪嬬湅瀵归潰鍓嶆帓鏄惁閮芥椿鐫�
-                    List<BattleObject> front = new List<BattleObject>(from bo in targetObjList where !bo.IsDead() && bo.teamHero.positionNum < 3 select bo);
+                    List<BattleObject> front = new List<BattleObject>(from bo in targetObjList where !bo.IsDead() && bo.GetPositionNum() < 3 select bo);
                     if (front.Count > 0)
                     {
                         returnIndex = 1;
@@ -234,12 +234,12 @@
                 {
                     uint objId = targetList[0].ObjID;
                     BattleObject target = caster.battleField.battleObjMgr.GetBattleObject((int)objId);
-                    returnIndex = target.teamHero.positionNum;
+                    returnIndex = target.GetPositionNum();
                 }
                 else
                 {
                     //  鐪嬬湅瀵归潰鍚庢帓鏄惁閮芥椿鐫�
-                    List<BattleObject> back = new List<BattleObject>(from bo in targetObjList where !bo.IsDead() && bo.teamHero.positionNum >= 3 select bo);
+                    List<BattleObject> back = new List<BattleObject>(from bo in targetObjList where !bo.IsDead() && bo.GetPositionNum() >= 3 select bo);
                     if (back.Count > 0)
                     {
                         returnIndex = 4;
@@ -264,13 +264,13 @@
                     }
                     else
                     {
-                        returnIndex = Mathf.Min(returnIndex, target.teamHero.positionNum);
+                        returnIndex = Mathf.Min(returnIndex, target.GetPositionNum());
                     }
                 }
                 break;
             // 5    鑷繁锛岄粯璁ゅ彧閫夎嚜宸�
             case 5:
-                returnIndex = caster.teamHero.positionNum;
+                returnIndex = caster.GetPositionNum();
                 break;
             case 6:
                 //  璺熼殢涓绘妧鑳界殑鐩爣
@@ -359,7 +359,7 @@
             }
             battleField.recordPlayer.EnableForceFinish(false);
         }
-        catch (System.Exception ex)
+        catch (System.Exception)
         {
             battleField.recordPlayer.EnableForceFinish(false);
         }
@@ -411,8 +411,9 @@
         BattleHurtObj hurter = new BattleHurtObj();
         hurter.hurtObj = target;
         hurter.damageList = damageList;
-        hurter.fromHp = target.teamHero.curHp;
-        hurter.fromShieldValue = target.buffMgr.GetShieldValue();
+        hurter.fromHp = target.GetCurHp();
+        var buffMgr = target.GetBuffMgr();
+        hurter.fromShieldValue = buffMgr != null ? buffMgr.GetShieldValue() : 0; // 鍛芥牸娌℃湁鎶ょ浘
 
         // 鍒ゆ柇鏄惁鏄渶鍚庝竴鍑�
         bool isLastHit = hitIndex >= skillConfig.DamageDivide.Length - 1;
@@ -429,7 +430,7 @@
         else
         {
             // 闈炴渶鍚庝竴鍑伙細瀹㈡埛绔绠椾腑闂磋閲�
-            long maxHp = target.teamHero.maxHp;
+            long maxHp = target.GetMaxHp();
 
             if (isHealing)
             {
@@ -442,13 +443,13 @@
                 if (hurter.fromShieldValue >= currentHitDamage)
                 {
                     hurter.toHp = hurter.fromHp;
-                    target.teamHero.curHp = hurter.toHp; // 淇濇寔涓�鑷存��
+                    target.SetCurHp(hurter.toHp); // 淇濇寔涓�鑷存��
                 }
                 else
                 {
                     long remainingDamage = currentHitDamage - hurter.fromShieldValue;
                     hurter.toHp = Math.Max(0, hurter.fromHp - remainingDamage);
-                    target.teamHero.curHp = hurter.toHp; // 淇濇寔涓�鑷存��
+                    target.SetCurHp(hurter.toHp); // 淇濇寔涓�鑷存��
                 }
             }
         }
@@ -481,9 +482,10 @@
         caster.reflectHpList = reflectHpList;
 
         // 鑾峰彇鏂芥硶鑰呭綋鍓嶇姸鎬�
-        long casterFromHp = skillBase.caster.teamHero.curHp;
-        long casterMaxHp = skillBase.caster.teamHero.maxHp;
-        long casterFromShield = skillBase.caster.buffMgr.GetShieldValue();
+        long casterFromHp = skillBase.caster.GetCurHp();
+        long casterMaxHp = skillBase.caster.GetMaxHp();
+        var buffMgr = skillBase.caster.GetBuffMgr();
+        long casterFromShield = buffMgr != null ? buffMgr.GetShieldValue() : 0; // 鍛芥牸娌℃湁鎶ょ浘
 
         caster.fromHp = casterFromHp;
         caster.fromShieldValue = casterFromShield;
@@ -517,7 +519,7 @@
 
         caster.toHp = casterToHp;
         caster.toShieldValue = casterToShield;
-        skillBase.caster.teamHero.curHp = caster.toHp; // 淇濇寔涓�鑷存��
+        skillBase.caster.SetCurHp(caster.toHp); // 淇濇寔涓�鑷存��
         
         return caster;
     }
@@ -807,7 +809,7 @@
         
         BattleDebug.LogError(
             $"{logColor}========== 琛�閲忎竴鑷存�ч獙璇� [{context}] {resultStr} ==========</color>\n" +
-            $"鐩爣: {hurter.hurtObj.teamHero.name} (ObjID:{hurter.hurtObj.ObjID})\n" +
+            $"鐩爣: {hurter.hurtObj.GetName()} (ObjID:{hurter.hurtObj.ObjID})\n" +
             $"鍑绘暟: 绗瑊hurtParam.hitIndex + 1}鍑� (鏈�鍚庝竴鍑�)\n" +
             $"鏈嶅姟鍣ㄦ渶缁堣閲�: {serverFinalHp}\n" +
             $"瀹㈡埛绔绠楄閲�: {clientFinalHp}\n" +
@@ -817,7 +819,7 @@
             $"鍒濆琛�閲�: {hurter.fromHp}\n" +
             $"鏈浼ゅ/娌荤枟: {(hurter.damageList != null ? hurter.damageList.Sum() : 0)}\n" +
             $"鏈�缁堣閲�: {clientFinalHp}\n" +
-            $"鏈�澶ц閲�: {hurter.hurtObj.teamHero.maxHp}\n" +
+            $"鏈�澶ц閲�: {hurter.hurtObj.GetMaxHp()}\n" +
             $"\n" +
             $"---- 鎶ょ浘鍙樺寲杩囩▼ ----\n" +
             $"鍒濆鎶ょ浘: {hurter.fromShieldValue}\n" +
@@ -829,7 +831,7 @@
         if (!isConsistent)
         {
             Debug.LogWarning(
-                $"[琛�閲忛獙璇佸け璐 鐩爣:{hurter.hurtObj.teamHero.name} " +
+                $"[琛�閲忛獙璇佸け璐 鐩爣:{hurter.hurtObj.GetName()} " +
                 $"鏈嶅姟鍣�:{serverFinalHp} vs 瀹㈡埛绔�:{clientFinalHp} " +
                 $"宸紓:{clientFinalHp - serverFinalHp}"
             );
@@ -860,7 +862,7 @@
         // 搴旂敤鍚歌
         if (totalSuckHp > 0)
         {
-            expectedHp = Math.Min(caster.casterObj.teamHero.maxHp, expectedHp + totalSuckHp);
+            expectedHp = Math.Min(caster.casterObj.GetMaxHp(), expectedHp + totalSuckHp);
         }
         
         // 搴旂敤鍙嶄激
@@ -885,7 +887,7 @@
         
         BattleDebug.LogError(
             $"{logColor}========== 鏂芥硶鑰呰閲忛獙璇� [{context}] {resultStr} ==========</color>\n" +
-            $"鏂芥硶鑰�: {caster.casterObj.teamHero.name} (ObjID:{caster.casterObj.ObjID})\n" +
+            $"鏂芥硶鑰�: {caster.casterObj.GetName()} (ObjID:{caster.casterObj.ObjID})\n" +
             $"鍑绘暟: 绗瑊hurtParam.hitIndex + 1}鍑� (鏈�鍚庝竴鍑�)\n" +
             $"棰勬湡鏈�缁堣閲�: {expectedHp}\n" +
             $"瀹為檯鏈�缁堣閲�: {clientFinalHp}\n" +
@@ -896,7 +898,7 @@
             $"鍚歌鎬婚噺: {totalSuckHp}\n" +
             $"鍙嶄激鎬婚噺: {totalReflectHp}\n" +
             $"鏈�缁堣閲�: {clientFinalHp}\n" +
-            $"鏈�澶ц閲�: {caster.casterObj.teamHero.maxHp}\n" +
+            $"鏈�澶ц閲�: {caster.casterObj.GetMaxHp()}\n" +
             $"\n" +
             $"---- 鎶ょ浘鍙樺寲杩囩▼ ----\n" +
             $"鍒濆鎶ょ浘: {caster.fromShieldValue}\n" +
@@ -909,7 +911,7 @@
         if (!isConsistent)
         {
             Debug.LogWarning(
-                $"[鏂芥硶鑰呰閲忚绠楅敊璇痌 {caster.casterObj.teamHero.name} " +
+                $"[鏂芥硶鑰呰閲忚绠楅敊璇痌 {caster.casterObj.GetName()} " +
                 $"棰勬湡:{expectedHp} vs 瀹為檯:{clientFinalHp} " +
                 $"宸紓:{clientFinalHp - expectedHp}"
             );

--
Gitblit v1.8.0