ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/TurnAttack.py
@@ -36,6 +36,8 @@
import ItemControler
import PassiveBuffEffMng
import FBLogic
import ShareDefine
import PlayerTask
# 回合战斗流程状态
(
@@ -85,6 +87,12 @@
    if tagPlayerID:
        if playerID == tagPlayerID:
            GameWorld.DebugLog("不能打自己!", playerID)
            return
    fbIpyData = FBCommon.GetFBIpyData(mapID)
    fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, funcLineID)
    if fbIpyData or fbLineIpyData:
        if FBCommon.CheckCanEnterFBComm(curPlayer, mapID, funcLineID, fbIpyData, fbLineIpyData) != ShareDefine.EntFBAskRet_OK:
            return
        
    if not FBLogic.OnTurnFightRequest(curPlayer, mapID, funcLineID, tagPlayerID, valueList):
@@ -180,15 +188,24 @@
    if overRet != None:
        needSendGameServer, awardItemList, awardWay = overRet
        
    if isWin and ipyData:
    isFirstPass = None
    if isWin and ipyData:
        passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)
        if funcLineID == passLineID + 1:
            isFirstPass = True
            PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_FBPassLineID % mapID, funcLineID)
            FBCommon.Sync_FBPlayerFBInfoData(curPlayer, mapID)
        else:
            isFirstPass = False
        if awardWay == 1 and not awardItemList:
            # 山寨测试先默认都是首次奖励,正式后需删除
            awardItemList = ipyData.GetAwardItemListFirst()
            awardItemList = ipyData.GetAwardItemListFirst() if isFirstPass else ipyData.GetAwardItemList()
            
    if awardItemList == None:
        awardItemList = []
        
    GameWorld.DebugLog("奖励物品: %s" % awardItemList)
    GameWorld.DebugLog("奖励物品: %s, isFirstPass=%s" % (awardItemList, isFirstPass))
    if awardWay == 1 and awardItemList:
        ItemControler.GivePlayerItemOrMail(curPlayer, awardItemList, event=["TurnFight", False, {"mapID":mapID, "funcLineID":funcLineID}])
        
@@ -198,6 +215,11 @@
    overMsg = {"isWin":isWin, "itemInfo":FBCommon.GetJsonItemList(awardItemList), "totalHurt":factionTotalHurtDict.get(1, 0)}
    playbackID and overMsg.update({"playbackID":playbackID})
    SyncTurnFightState(curPlayer, mapID, funcLineID, tagPlayerID, FightState_Award, turnNum, turnMax, overMsg)
    # 其他...
    PlayerTask.AddTaskValue(curPlayer, ChConfig.TaskType_FBChallenge, 1, [mapID])
    if isWin:
        PlayerTask.UpdTaskValue(curPlayer, ChConfig.TaskType_FBPass)
    return
def GetPlayerFactionInfoByCache(playerID):
@@ -238,9 +260,12 @@
    factionA, factionB, mainRolePlace = 1, 2, 1
    objRetA = __SummonFactionObjs(factionA, mainRolePlace, factionInfoA, sightLevel, posX, posY)
    objRetB = __SummonFactionObjs(factionB, mainRolePlace, factionInfoB, sightLevel, posX, posY)
    objA, petObjListA, factionSyncInfoA = objRetA if objRetA else (None, [])
    objB, petObjListB, factionSyncInfoB = objRetB if objRetB else (None, [])
    objA, petObjListA, factionSyncInfoA = objRetA if objRetA else (None, [], {})
    objB, petObjListB, factionSyncInfoB = objRetB if objRetB else (None, [], {})
    if not objA or not objB:
        fightObjList = petObjListA + [objA] + petObjListB + [objB]
        for gameObj in fightObjList:
            TurnFightObjOverReset(gameObj, tick)
        return
    playerIDA = objA.GetDictByKey(ChConfig.Def_NPC_Dict_MirrorPlayerID) # 可能为0,非玩家镜像时为0
    playerIDB = objB.GetDictByKey(ChConfig.Def_NPC_Dict_MirrorPlayerID) # 可能为0,非玩家镜像时为0