ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -420,6 +420,8 @@
                    else:
                        tfObj.PosNum = posNum                        
                    tfObj.AngreXP = batObj.GetXP()
                    tfObj.FightPower = batObj.GetFightPower() % ChConfig.Def_PerPointValue
                    tfObj.FightPowerEx = batObj.GetFightPower() / ChConfig.Def_PerPointValue
                    tfLineup.ObjList.append(tfObj)
                tfLineup.ObjCnt = len(tfLineup.ObjList)
                tfFaction.LineupList.append(tfLineup)
@@ -582,25 +584,26 @@
        lineupInfo = lineupDict.get("%s" % ShareDefine.Lineup_Main, {})
    return lineupInfo
def GetPlayerLineupFightPower(curPlayer, lineupID):
def GetPlayerLineupFightPower(curPlayer, lineupID=ShareDefine.Lineup_Main):
    ## 获取玩家阵容战力,一般用于直接获取阵容战力记录用
    return GetPlayerLineup(curPlayer, lineupID).fightPower
def GetPlayerLineup(curPlayer, lineupID):
def GetPlayerLineup(curPlayer, lineupID=ShareDefine.Lineup_Main, exclusiveMapID=0):
    ## 获取玩家阵容
    olPlayer = PlayerOnline.GetOnlinePlayer(curPlayer)
    lineup = olPlayer.GetLineup(lineupID)
    lineup = olPlayer.GetLineup(lineupID, exclusiveMapID=exclusiveMapID)
    if lineup.IsEmpty():
        GameWorld.DebugLogEx("玩家没有目标阵容默认取主阵容! lineupID=%s", lineupID, curPlayer.GetPlayerID())
        lineup = olPlayer.GetLineup(ShareDefine.Lineup_Main)
    return lineup
def GetPlayerLineupInfo(curPlayer, lineupID):
def GetPlayerLineupInfo(curPlayer, lineupID, exclusiveMapID=0):
    ## 获取玩家阵容信息,可用于战斗或查看缓存,因为可能取玩家的缓存进行对战,所以统一使用json格式,前端通用
    # @param lineupID: 阵容ID
    # @param exclusiveMapID: 专享阵容的地图ID,如定军阁
    # @return: 阵容全部信息json字典,前端通用格式
    
    playerID = curPlayer.GetPlayerID()
    lineup = GetPlayerLineup(curPlayer, lineupID)
    lineup = GetPlayerLineup(curPlayer, lineupID, exclusiveMapID)
    if lineup.IsEmpty():
        return {}
    
@@ -612,6 +615,7 @@
        itemIndex = hero.itemIndex
        heroLV = 1
        star = 0
        userData = "{}"
        if itemIndex >= 0 and itemIndex < curPack.GetCount():
            heroItem = curPack.GetAt(itemIndex)
            if heroItem and not heroItem.IsEmpty():
@@ -619,6 +623,7 @@
                star = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroStar)
                #breakLV = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroBreakLV)
                #awakeLV = heroItem.GetUserAttr(ShareDefine.Def_IudetHeroAwakeLV)
                userData = heroItem.GetUserData()
                
        skillIDlist = []
        skillIDlist += hero.heroSkillIDList
@@ -627,6 +632,7 @@
                                 "SkinID":hero.skinID,
                                 "LV":heroLV,
                                 "Star":star,
                                 "Data":userData,
                                 #"BreakLV":breakLV,
                                 #"AwakeLV":awakeLV,
                                 "FightPower":hero.fightPower,
@@ -1084,21 +1090,17 @@
    if not reqRet:
        return
    funcLineID = reqRet[1] if len(reqRet) > 1 else funcLineID
    GameWorld.DebugLogEx("    funcLineID=%s", funcLineID, playerID)
    
    fbIpyData = FBCommon.GetFBIpyData(mapID)
    fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, funcLineID, False)
    if fbIpyData:
        if not fbLineIpyData:
            GameWorld.DebugLogEx("不存在该副本功能线路! mapID=%s,funcLineID=%s", mapID, funcLineID)
            return
        #if not fbLineIpyData:
        #    GameWorld.DebugLogEx("不存在该副本功能线路! mapID=%s,funcLineID=%s", mapID, funcLineID)
        #    return
        if FBCommon.CheckCanEnterFBComm(curPlayer, mapID, funcLineID, fbIpyData, fbLineIpyData) != ShareDefine.EntFBAskRet_OK:
            return
        
    # 攻防方所使用的阵容ID
    atkLineupID, defLineupID = FBLogic.GetFBPlayerLineupID(curPlayer, mapID, funcLineID)
    if atkLineupID not in ShareDefine.LineupList or defLineupID not in ShareDefine.LineupList:
        return
    if CheckFightCD(curPlayer, tick, "TurnFightReqTick"):
        return
    
@@ -1106,9 +1108,10 @@
    playerServerID = GameWorld.GetPlayerServerID(curPlayer)
    guid = GameWorld.GetGUID()
    
    atkLineupInfo = GetPlayerLineupInfo(curPlayer, atkLineupID)
    atkLineupID = ShareDefine.Lineup_Main # 进攻方默认使用主阵容
    atkLineupInfo = GetPlayerLineupInfo(curPlayer, atkLineupID, mapID)
    if not atkLineupInfo:
        GameWorld.DebugLogEx("玩家没有该阵容数据! atkLineupID=%s", atkLineupID, playerID)
        GameWorld.DebugLogEx("玩家没有该阵容数据! atkLineupID=%s,mapID=%s", atkLineupID, mapID, playerID)
        return
    
    # 玩家
@@ -1121,6 +1124,7 @@
            PlayerControl.NotifyCode(curPlayer, "TagNoViewCache")
            return
        
        defLineupID = ChConfig.MapLineIDDict.get(mapID, ShareDefine.Lineup_Main)
        defLineupInfo = GetCacheLineupInfo(tagViewCache, defLineupID)
        if not defLineupInfo:
            GameWorld.DebugLogEx("目标玩家没有该阵容数据! tagPlayerID=%s,defLineupID=%s", tagPlayerID, defLineupID, playerID)
@@ -1274,7 +1278,7 @@
    
    for index, lineupID in enumerate(npcLineupIDList):
        turnFight.lineupIndex = index
        GameWorld.DebugLogEx("对战NPC阵容: index=%s, lineupID=%s", index, lineupID)
        GameWorld.DebugLogEx("对战NPC阵容: mapID=%s,funcLineID=%s,index=%s,lineupID=%s", mapID, funcLineID, index, lineupID)
        if index > 0:
            turnFight.nextTurnFight()
        turnFight.setFactionLineup(ChConfig.Def_FactionB, {1:GetNPCLineupInfo(lineupID, strongerLV, difficulty)})
@@ -1807,6 +1811,16 @@
        if not curSkill:
            continue
        skillID = curSkill.GetSkillID()
        # 每大回合重置能量
        if curSkill.GetEnergy():
            for eIndex in range(curSkill.GetEffectCount()):
                effect = curSkill.GetEffect(eIndex)
                if effect.GetEffectID() == ChConfig.PassiveEff_EnergySkill and effect.GetEffectValue(2) == 1:
                    curSkill.SetEnergy(0)
                    GameWorld.DebugLogEx("    每大回合重置技能能量! curID=%s,skillID=%s", curID, skillID)
                    break
        preTurnUseCnt = batObj.GetSkillTurnUseCnt(skillID)
        remainTime = curSkill.GetRemainTime()
        if remainTime <= 0: