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/BattleObject/BattleObjMgr.cs |   45 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/Main/System/Battle/BattleObject/BattleObjMgr.cs b/Main/System/Battle/BattleObject/BattleObjMgr.cs
index 145cdac..5913231 100644
--- a/Main/System/Battle/BattleObject/BattleObjMgr.cs
+++ b/Main/System/Battle/BattleObject/BattleObjMgr.cs
@@ -14,6 +14,10 @@
 
     public Dictionary<int, BattleObject> allBattleObjDict = new Dictionary<int, BattleObject>();
 
+    public MinggeBattleObject redMingge = null;
+
+    public MinggeBattleObject blueMingge = null;
+
     protected BattleField battleField;
 
     public void Init(BattleField _battleField, TeamBase _redTeam, TeamBase _blueTeam)
@@ -48,8 +52,24 @@
                 BattleObject battleObj = BattleObjectFactory.CreateBattleObject(battleField, posNodeList, teamHero, _Camp);
                 battleObj.SetActive(active);
                 allBattleObjDict.Add(battleObj.ObjID, battleObj);
-                campDict.Add(teamHero.positionNum, battleObj);
+                campDict.Add(battleObj.GetPositionNum(), battleObj);
                 battleObj.SetSpeedRatio(battleField.speedRatio);
+            }
+        }
+
+        if (teamBase.teamMingge != null)
+        {
+            BattleObject minggeObj = BattleObjectFactory.CreateMinggeBattleObject(battleField, teamBase, _Camp);
+            allBattleObjDict.Add(minggeObj.ObjID, minggeObj);
+            campDict.Add(minggeObj.GetPositionNum(), minggeObj);
+            minggeObj.SetSpeedRatio(battleField.speedRatio);
+            if (_Camp == BattleCamp.Red)
+            {
+                redMingge = minggeObj as MinggeBattleObject;
+            }
+            else
+            {
+                blueMingge = minggeObj as MinggeBattleObject;
             }
         }
     }
@@ -60,6 +80,17 @@
         {
             return battleObj;
         }
+
+        if (blueMingge != null && blueMingge.ObjID == objId)
+        {
+            return blueMingge;
+        }
+
+        if (redMingge != null && redMingge.ObjID == objId)
+        {
+            return redMingge;
+        }
+
         return null;
     }
 
@@ -114,11 +145,11 @@
             {
                 if (battleObj.Camp == BattleCamp.Red)
                 {
-                    redCampDict.Remove(battleObj.teamHero.positionNum);
+                    redCampDict.Remove(battleObj.GetPositionNum());
                 }
                 else
                 {
-                    blueCampDict.Remove(battleObj.teamHero.positionNum);
+                    blueCampDict.Remove(battleObj.GetPositionNum());
                 }
                 allBattleObjDict.Remove((int)objID);
                 BattleObjectFactory.DestroyBattleObject((int)objID, battleObj);
@@ -166,6 +197,8 @@
         DestroyTeam(redCampDict);
         DestroyTeam(blueCampDict);
         allBattleObjDict.Clear();
+        redMingge = null;
+        blueMingge = null;
     }
 
     public void Run()
@@ -290,7 +323,7 @@
                 //鏆傛椂娌℃湁鍙敜鐗�
                 // 鏀惧湪绗�7鏍肩殑BOSS鍚庢帓鐨勩�傘�備綅缃斁鍦ㄦ涓棿
                 // a)鍓嶆帓,1銆�2銆�3鍙蜂负鍓嶆帓,鍓嶆帓鍏ㄩ儴闃典骸鍚�,4銆�5銆�6鍙峰嵆鏄墠鎺掍篃鏄悗鎺� 7鍏跺疄涔熸槸鍚庢帓
-                List<BattleObject> frontList = new List<BattleObject>(from BO in returnList where BO.teamHero.positionNum < 3 && !BO.IsDead() select BO);
+                List<BattleObject> frontList = new List<BattleObject>(from BO in returnList where BO.GetPositionNum() < 3 && !BO.IsDead() select BO);
                 if (frontList.Count == 0)
                 {
                     frontList.AddRange(returnList);
@@ -298,7 +331,7 @@
                 returnList = frontList;                
                 break;
             case SkillTargetRangeType.Back:
-                List<BattleObject> backList = new List<BattleObject>(from BO in returnList where BO.teamHero.positionNum >= 3 && !BO.IsDead() select BO);
+                List<BattleObject> backList = new List<BattleObject>(from BO in returnList where BO.GetPositionNum() >= 3 && !BO.IsDead() select BO);
                 if (backList.Count == 0)
                 {
                     backList.AddRange(returnList);
@@ -336,7 +369,7 @@
                         loweastHpObj = returnList[i];
                         continue;
                     }
-                    if (returnList[i].teamHero.curHp < loweastHpObj.teamHero.curHp)
+                    if (returnList[i].GetCurHp() < loweastHpObj.GetCurHp())
                     {
                         loweastHpObj = returnList[i];
                     }

--
Gitblit v1.8.0