From 4c55d01385dec553dceeb3f5481ea70be727cb39 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 09 九月 2025 11:47:38 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(修复切换小队未清除buff可能引起的报错; 优化切换小队重置:暂时仅保留当前血量、怒气、死亡状态,其他重置;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py | 39 ++++++++++++++++++++++++++++++++++++--- 1 files changed, 36 insertions(+), 3 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 8858954..dde3b29 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py @@ -183,7 +183,7 @@ self.nextTurnFight(msgDict) return - def nextTurnFight(self, msgDict={}): + def nextTurnFight(self, msgDict={}, resetByNextTeam=False): ## 一般用于玩家发起的战斗,在需要保留玩家阵容属性及状态的情况下,重置回合进入下一场战斗 self.turnNum = 1 self.enterLogic = False @@ -193,6 +193,8 @@ self.timeline = 0 self.startTime = time.time() self.costTime = 0 + if resetByNextTeam: + ResetByNextTeam(self) return def haveNextLineup(self): @@ -758,6 +760,37 @@ return +def ResetByNextTeam(turnFight): + ## 切换下一小队时重置相关,目前设置仅保留血量、怒气、已被击杀的不复活,其他重置 + + batFaction = turnFight.getBatFaction(ChConfig.Def_FactionA) + if not batFaction: + return + GameWorld.DebugLog("切换小队重置玩家阵容武将...") + batLineup = batFaction.getBatlineup(1) # 只处理玩家阵容 + batObjMgr = BattleObj.GetBatObjMgr() + for objID in batLineup.posObjIDDict.values(): + batObj = batObjMgr.getBatObj(objID) + if not batObj: + continue + objName = GetObjName(batObj) + if not batObj.IsAlive(): + GameWorld.DebugLog(" 已被击杀不处理! %s" % (objName)) + continue + GameWorld.DebugLog(" 重置武将: %s, HP:%s/%s, XP:%s" % (objName, batObj.GetHP(), batObj.GetMaxHP(), batObj.GetXP())) + + # 清除buff + buffMgr = batObj.GetBuffManager() + buffMgr.ClearBuff() + + # 重置CD + + # 重刷属性、被动 + TurnBuff.RefreshBuffAttr(batObj) + TurnPassive.RefreshPassive(batObj) + + return + #// B4 10 回合制战斗 #tagCMTurnFight # #struct tagCMTurnFight @@ -839,7 +872,7 @@ turnFight.lineupIndex = index GameWorld.DebugLog("对战NPC阵容: index=%s, lineupID=%s" % (index, lineupID)) if index > 0: - turnFight.nextTurnFight() + turnFight.nextTurnFight(resetByNextTeam=True) turnFight.setFactionLineup(ChConfig.Def_FactionB, {1:GetNPCLineupInfo(lineupID, strongerLV, difficulty)}) turnFight.sortActionQueue() turnFight.startFight() @@ -1011,7 +1044,7 @@ if nextLineupID: GameWorld.DebugLog("---开始进入下一小队: lineupIndex=%s,nextLineupID=%s,%s" % (turnFight.lineupIndex, nextLineupID, turnFight.lineupIDList)) - turnFight.nextTurnFight() + turnFight.nextTurnFight(resetByNextTeam=True) # 切换小队时,玩家阵容不需要处理,保留状态 turnFight.setFactionLineup(ChConfig.Def_FactionB, {1:GetNPCLineupInfo(nextLineupID, turnFight.strongerLV, turnFight.difficulty)}) turnFight.sortActionQueue() -- Gitblit v1.8.0