From d7f44d8d871a90c818bdb3ffe9a60af875b7100a Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 30 九月 2025 10:12:23 +0800 Subject: [PATCH] 135 【挑战】战锤秘境-服务端(白骨盈野;副本基础;副本扫荡;广告奖励支持;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py | 37 +++++++++++++++++++++++++++---------- 1 files changed, 27 insertions(+), 10 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 111c080..8491e7f 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py @@ -36,6 +36,7 @@ import TurnPassive import TurnSkill import TurnBuff +import FBCommon import CommFunc import ObjPool import FBLogic @@ -750,7 +751,7 @@ heroID = heroInfo.get("HeroID", 0) skinID = heroInfo.get("SkinID", 0) lv = heroInfo.get("LV", 1) - specialty, atkDistType, country, sex = 0, 1, 0, 1 + specialty, atkDistType, country, sex, job = 0, 1, 0, 1, 0 heroIpyData = IpyGameDataPY.GetIpyGameData("Hero", heroID) if heroID else None if heroIpyData: objName = heroIpyData.GetName() @@ -758,6 +759,7 @@ atkDistType = heroIpyData.GetAtkDistType() country = heroIpyData.GetCountry() sex = heroIpyData.GetSex() + job = heroIpyData.GetJob() if lineupPlayerID: fightPower = heroInfo.get("FightPower", 0) @@ -789,6 +791,7 @@ batObj.SetSpecialty(specialty) batObj.SetCountry(country) batObj.SetSex(sex) + batObj.SetJob(job) batObj.SetHero(heroID, skinID) skillManager = batObj.GetSkillManager() @@ -860,6 +863,15 @@ GameWorld.DebugLog("回合制战斗请求: mapID=%s,funcLineID=%s,tagType=%s,tagID=%s,valueList=%s" % (mapID, funcLineID, tagType, tagID, valueList), curPlayer.GetPlayerID()) + fbIpyData = FBCommon.GetFBIpyData(mapID) + fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, funcLineID, False) + if fbIpyData: + if not fbLineIpyData: + GameWorld.DebugLog("不存在该副本功能线路! mapID=%s,funcLineID=%s" % (mapID, funcLineID)) + return + if FBCommon.CheckCanEnterFBComm(curPlayer, mapID, funcLineID, fbIpyData, fbLineIpyData) != ShareDefine.EntFBAskRet_OK: + return + reqRet = FBLogic.OnTurnFightRequest(curPlayer, mapID, funcLineID, tagType, tagID, valueList) if not reqRet: return @@ -875,10 +887,15 @@ # NPC else: - ret = FBLogic.GetFBNPCLineupInfo(curPlayer, mapID, funcLineID) - if not ret: - return - npcLineupIDList, strongerLV, difficulty = ret + npcLineupIDList, strongerLV, difficulty = [], 0, 0 + if fbLineIpyData: + npcLineupIDList = fbLineIpyData.GetLineupIDList() + + if not npcLineupIDList: + ret = FBLogic.GetFBNPCLineupInfo(curPlayer, mapID, funcLineID) + if not ret: + return + npcLineupIDList, strongerLV, difficulty = ret OnTurnFightVSNPC(curPlayer, mapID, funcLineID, atkLineupID, npcLineupIDList, strongerLV, difficulty) return @@ -1405,7 +1422,7 @@ #GameWorld.DebugLog(" 永久buff不处理! curID=%s,index=%s,skillID=%s" % (curID, index, skillID)) continue calcTimeline = buff.GetCalcTime() - passTurn = __calcPassturn(calcTimeline, nowTimeline, False) + passTurn = __calcPassturn(calcTimeline, nowTimeline, True) if passTurn <= 0: #GameWorld.DebugLog(" passTurn <= 0 passTurn=%s,calcTimeline=%s,nowTimeline=%s,skillID=%s" % (passTurn, calcTimeline, nowTimeline, skillID)) continue @@ -1424,7 +1441,7 @@ def __calcPassturn(calcTimeline, nowTimeline, equalOK): ## 计算已经过了的回合数 - # @param equalOK: 时间节点相同时是否算1回合,一般技能可以算,buff不算 + # @param equalOK: 时间节点相同时是否算1回合,一般技能可以算,buff可算可不算,具体看需求调整 calcTurnNum = calcTimeline / TimelineSet calcTimeNode = calcTimeline % TimelineSet nowTurnNum = nowTimeline / TimelineSet @@ -1514,7 +1531,7 @@ % (curID, tagID, skillID, hurtValue, lostHP, curBatObj.GetHP())) return -def OnObjAction(turnFight, curBatObj): +def OnObjAction(turnFight, curBatObj, isExtra=False): ## 战斗单位行动 if not curBatObj: return @@ -1530,12 +1547,12 @@ # 是否可行动状态判断 canAction = curBatObj.CanAction() if not canAction: - GameWorld.DebugLog("★回合%s %s 当前状态不可行动!" % (turnNum, objName)) + GameWorld.DebugLog("★回合%s %s 当前状态不可行动! isExtra=%s" % (turnNum, objName, isExtra)) return atk = curBatObj.GetAtk() curXP = curBatObj.GetXP() - GameWorld.DebugLog("★回合%s %s 行动 : atk=%s,curHP=%s/%s,curXP=%s" % (turnNum, objName, atk, curHP, curBatObj.GetMaxHP(), curXP)) + GameWorld.DebugLog("★回合%s %s %s行动 : atk=%s,curHP=%s/%s,curXP=%s" % (turnNum, objName, "额外" if isExtra else "", atk, curHP, curBatObj.GetMaxHP(), curXP)) turnFight.syncObjAction(turnNum, objID) TurnPassive.OnTriggerPassiveEffect(turnFight, curBatObj, ChConfig.TriggerWay_HeroActionStart) -- Gitblit v1.8.0