From c188e6980074a9fe5a9117a4e0d129112573c8b1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 01 九月 2025 20:03:15 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(修复主线战斗片段断点bug;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py |   39 ++++++++++++++++++---------------------
 1 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
index 6e2a448..157ee4a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -44,7 +44,7 @@
 import json
 
 TimelineSet = 10000 # 单回合最大时间轴
-PosNumMax = 10 # 最大站位编号
+PosNumMax = 7 # 最大站位编号
 ActionNumStart = -1 # 起始行动位置编号,一般是从1开始,如果有加主公、红颜等则扣除相应位置值,如从0或-1开始
 
 # 回合战斗流程状态
@@ -1054,15 +1054,12 @@
             batFaction = turnFight.getBatFaction(faction)
             batLineup = batFaction.getBatlineup(num)
             for posNum in range(batLineup.actionNum, PosNumMax + 1):
-                turnTimeline += 1 # 每个武将位算一个时间节点
-                if turnTimeline <= curTimeline:
-                    # 该时间节点已经处理过了
-                    GameWorld.DebugLog("该时间节点已经处理过了! turnTimeline=%s <= %s" % (turnTimeline, curTimeline))
-                    continue
-                
+                # 每个武将位算一个时间节点
+                #GameWorld.DebugLog("武将节点: faction=%s,posNum=%s,curTimeline=%s" % (faction, posNum, curTimeline))
                 if posNum not in batLineup.posObjIDDict:
                     batLineup.actionNum = posNum + 1
-                    curTimeline = turnFight.setTimeline(turnTimeline, True)
+                    curTimeline = turnFight.setTimeline(curTimeline + 1, True)
+                    #GameWorld.DebugLog("空位节点: faction=%s,posNum=%s,curTimeline=%s" % (faction, posNum, curTimeline))
                     continue
                 
                 objID = batLineup.posObjIDDict[posNum]
@@ -1071,11 +1068,11 @@
                 # 玩家自己阵营,预判可否行动
                 if checkBreakpoint and faction == ChConfig.Def_FactionA and batObj:
                     if batObj.CanAction():
-                        GameWorld.DebugLog("玩家武将已经行动过了,且有下一个可行动的武将,断点: curTimeline=%s,nextPosNum=%s" % (curTimeline, posNum))
+                        GameWorld.DebugLog("玩家阵容下一个可行动的武将,断点: curTimeline=%s,nextPosNum=%s" % (curTimeline, posNum))
                         return
                     
                 batLineup.actionNum = posNum + 1
-                curTimeline = turnFight.setTimeline(turnTimeline)
+                curTimeline = turnFight.setTimeline(curTimeline + 1)
                 TurnFightHeroTurnStart(turnFight, batObj, turnNum)
                 if not OnObjAction(turnFight, batObj):
                     continue
@@ -1083,23 +1080,23 @@
                 if not checkBreakpoint and faction == ChConfig.Def_FactionA:
                     checkBreakpoint = True
                     
+                break
+            
             if turnFight.actionIndex >= len(turnFight.actionSortList) - 1:
                 turnFight.actionIndex = 0
             else:
                 turnFight.actionIndex += 1
                 
         # 回合结束
-        turnTimeline += 1 # 每回合结束算一个时间节点
-        if curTimeline < turnTimeline:
-            curTimeline = turnFight.setTimeline(turnTimeline)
-            for faction, num in turnFight.actionSortList:
-                GameWorld.DebugLog("回合结束逻辑: turnNum=%s,faction=%s, num=%s" % (turnNum, faction, num))
-                batFaction = turnFight.getBatFaction(faction)
-                batLineup = batFaction.getBatlineup(num)
-                for objID in batLineup.posObjIDDict.values():
-                    batObj = batObjMgr.getBatObj(objID)
-                    TurnFightPerTurnBigEnd(turnFight, batObj, turnNum)
-                    
+        curTimeline = turnFight.setTimeline(curTimeline + 1) # 每回合结束算一个时间节点
+        for faction, num in turnFight.actionSortList:
+            GameWorld.DebugLog("回合结束逻辑: turnNum=%s,faction=%s, num=%s" % (turnNum, faction, num))
+            batFaction = turnFight.getBatFaction(faction)
+            batLineup = batFaction.getBatlineup(num)
+            for objID in batLineup.posObjIDDict.values():
+                batObj = batObjMgr.getBatObj(objID)
+                TurnFightPerTurnBigEnd(turnFight, batObj, turnNum)
+                
         if turnFight.checkOverByKilled():
             break
         

--
Gitblit v1.8.0