ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_TrialTower.py
@@ -18,19 +18,15 @@
import FBCommon
import GameWorld
import IPY_GameWorld
import PlayerControl
import NPCCustomRefresh
import ChPyNetSendPack
import ItemControler
import EventShell
import NetPackCommon
import ShareDefine
import IpyGameDataPY
import PlayerRune
import ItemCommon
import ChConfig
import ChPlayer
import PlayerSuccess
import PlayerActivity
import PlayerBillboard
@@ -38,7 +34,6 @@
import PlayerActLogin
import EventReport
import PlayerBossReborn
import GameObj
import random
import math
@@ -84,38 +79,44 @@
    GameWorld.DebugLog(' 更新符印塔已通关数 %s' % passlv)
    return
## 获取BossID
def __GetTrialBossID(fbLevel= -1):
    gameFB = GameWorld.GetGameFB()
    if fbLevel == -1:
        fbLevel = gameFB.GetGameFBDictByKey(FBDict_Level)
    ipyData = GetTowerIpyData(fbLevel)
def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagType, tagID, valueList):
    ## 回合战斗请求 - 地图验证
    playerID = curPlayer.GetPlayerID()
    ipyData = GetTowerIpyData(funcLineID)
    
    if not ipyData:
        GameWorld.ErrLog("__GetTrialBossID() can not find %s in TrialTowerNPC.txt" % fbLevel)
        return 0
    return ipyData.GetNPCID()
## 杀怪
#  @param curPlayer
#  @param curNPC 被杀的怪
#  @param tick
#  @return None
def DoFB_Player_KillNPC(curPlayer, curNPC, tick):
    gameFB = GameWorld.GetGameFB()
    if gameFB.GetFBStep() != FB_State_Fighting:
        return
    bossID = __GetTrialBossID()
    if bossID != curNPC.GetNPCID():
        return
        GameWorld.ErrLog("符印塔关卡不存在: funcLineID=%s" % (funcLineID), playerID)
        return False
    
    # 是否已过关
    if funcLineID <= __GetTrialLevelCurPassLV(curPlayer):
        GameWorld.DebugLog("符印塔本关已过关, 无法挑战! funcLineID=%s" % funcLineID, playerID)
        return False
    
    fbLevel = gameFB.GetGameFBDictByKey(FBDict_Level)
    # 过关全服广播
    bossID = ipyData.GetNPCID()
    if tagID != bossID or tagType != ChConfig.TurnBattle_TagType_NPC:
        GameWorld.ErrLog("目标bossID错误,无法挑战! mapID=%s,funcLineID=%s,bossID=%s,tagType=%s,tagID=%s"
                         % (mapID, funcLineID, bossID, tagType, tagID), curPlayer.GetPlayerID())
        return False
    return True
def OnTurnFightOver(curPlayer, mapID, funcLineID, tagType, tagID, valueList, fightRet):
    ## 回合战斗结束
    # @return: 是否需要同步GameServer, 奖励列表, 同步结果信息
    needSendGameServer = False
    awardItemList = []
    overInfoEx = {}
    fbLevel = funcLineID
    ipyData = GetTowerIpyData(fbLevel)
    if not ipyData:
        return
    FBCommon.OnFBJoin(curPlayer, mapID, funcLineID)
    isWin = fightRet[0]
    if not isWin:
        return
    
    floorCnt = IpyGameDataPY.GetFuncCfg('TowerRuneType', 2)
@@ -123,31 +124,31 @@
        # 记录过关
        EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_TrialTower, 0, ChConfig.CME_Log_End, 0, 1)
        
    # 过关全服广播
    if ipyData.GetIsNotify():
        IPY_Data = IpyGameDataPY.IPY_Data()
        maxLevel = IPY_Data.GetRuneTowerByIndex(IPY_Data.GetRuneTowerCount()-1).GetID()
        sysMark = 'RuneTowerInfo_1' if fbLevel == maxLevel else 'GeRen_liubo_471172'
        PlayerControl.WorldNotify(0, sysMark,
                                  [curPlayer.GetPlayerName(), fbLevel / 100])
        PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetPlayerName(), fbLevel / 100])
    #更新关卡
    SetTrialLevelCurPassLV(curPlayer, fbLevel)
    # 给过关奖励
    prizeDict = __GiveFBPassPrize(curPlayer, fbLevel)
    # 过关时间
    costTime = tick - GameWorld.GetGameFB().GetFBStepTick()
    prizeDict[FBCommon.Over_costTime] = costTime
    __SendTrialTowerOverInfo(curPlayer, fbLevel, True, prizeDict)
    
    #任务
    EventShell.EventRespons_TrialTowerCnt(curPlayer, fbLevel)
    #EventShell.EventRespons_TrialTowerCnt(curPlayer, fbLevel)
    
    SyncTrialLevelInfo(curPlayer) # 同步最新关卡信息
    __SetFBToFreeTime(tick)
    #每日任务
    PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_Tower)
    return
    FBCommon.OnFBPass(curPlayer, mapID, funcLineID)
    overInfoEx.update(prizeDict)
    return needSendGameServer, awardItemList, overInfoEx
## 给过关奖励
def __GiveFBPassPrize(curPlayer, fbLevel):
@@ -397,39 +398,3 @@
    PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_TowerSweep, 1)
    PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_TowerSweep, 1)
    return True
def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagType, tagID, valueList):
    ## 回合战斗请求 - 地图验证
    playerID = curPlayer.GetPlayerID()
    ipyData = GetTowerIpyData(funcLineID)
    if not ipyData:
        GameWorld.ErrLog("符印塔关卡不存在: funcLineID=%s" % (funcLineID), playerID)
        return False
    # 是否已过关
    if funcLineID <= __GetTrialLevelCurPassLV(curPlayer):
        GameWorld.DebugLog("符印塔本关已过关, 无法挑战! funcLineID=%s" % funcLineID, playerID)
        return False
    return True
def OnTurnFightOver(curPlayer, mapID, funcLineID, tagPlayerID, valueList, fightRet):
    ## 回合战斗结束
    # @return: 是否需要同步GameServer, 奖励列表, 发放方式(0-不发放, 1-TurnAttack模块统一发放, 2-功能自己决定发放逻辑)
    needSendGameServer = False
    awardItemList = []
    awardWay = 2
    isWin = fightRet[0]
    if not isWin:
        return needSendGameServer, awardItemList, awardWay
    return needSendGameServer, awardItemList, awardWay
    return