hxp
10 天以前 c188e6980074a9fe5a9117a4e0d129112573c8b1
129 【战斗】战斗系统-服务端(修复主线战斗片段断点bug;)
1个文件已修改
39 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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