xdh
2019-01-22 bf0562bdddb65952b4e59c4911fa26c6996b748d
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ElderBattlefield.py
@@ -35,6 +35,7 @@
import SkillShell
import EventReport
import SkillCommon
import PlayerWeekParty
import random
import time
@@ -69,8 +70,10 @@
FB_Step_Over,  # 副本结束
) = range(3)
def OnLogin(curPlayer):
    OnElderBattlefieldFBResult(curPlayer, True)
def OnFBPlayerOnLogin(curPlayer):
    mapID = GameWorld.GetMap().GetMapID()
    if mapID != ChConfig.Def_FBMapID_ElderBattlefield:
        OnElderBattlefieldFBResult(curPlayer, True)
    return
def OnElderBattlefieldStateChange(state, tick):
@@ -156,6 +159,10 @@
        return
    curPlayer.Sync_TimeTick(IPY_GameWorld.tttTowerTake, 0, closeFB_RemainTick, True) 
    
    if not FBCommon.GetHadSetFBPropertyMark():
        lineID = GameWorld.GetGameWorld().GetPropertyID() - 1
        FBCommon.SetFBPropertyMark(lineID)
    if not FBCommon.GetHadDelTicket(curPlayer):
        FBCommon.SetHadDelTicket(curPlayer)
        if FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_ElderBattlefield):
@@ -164,7 +171,10 @@
            GameWorld.GetGameWorld().SetGameWorldDict(FBPlayerDict_TotalExp % playerID, 0)
            GameWorld.GetGameWorld().SetGameWorldDict(FBPlayerDict_TotalExpPoint % playerID, 0)
            EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_ElderBattlefield, 0, ChConfig.CME_Log_Start)
            PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_ElderBattlefield, 1)
    else:
        rebornBuffLV = GameWorld.GetGameFB().GetPlayerGameFBDictByKey(playerID, FBPlayerDict_RebornBuffLV)
        __DoAddRebornBuff(curPlayer, rebornBuffLV, tick)
    DoFBHelp(curPlayer, tick)
    return
@@ -198,7 +208,9 @@
    for buffID in buffIDList:
        BuffSkill.DelBuffBySkillID(curPlayer, buffID, tick)
    
    skillBuffID = IpyGameDataPY.GetFuncCfg('ElderBattlefieldRobot', 3)
    BuffSkill.DelBuffBySkillID(curPlayer, skillBuffID, tick)
    FBCommon.UpdFBLineNPCStrengthenLV(curPlayer.GetPlayerID(), True)
    return
@@ -219,6 +231,7 @@
    gameFB = GameWorld.GetGameFB()
    gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_ContKillCntEx, 0)
    gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_EnemyID, 0)
    gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_RebornBuffLV, 0)
    return
@@ -303,6 +316,10 @@
    lineID = GameWorld.GetGameWorld().GetPropertyID() - 1
    if lineID not in robotCfgDict:
        return
    robotMaxLV = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_NPCStrengthenMaxLV)
    if GameWorld.GetMapCopyPlayerManager().GetPlayerCount() <= 0 or not robotMaxLV:
        #GameWorld.DebugLog("没玩家,不刷机器人! ")
        return
    rmarkList = IpyGameDataPY.GetFuncEvalCfg('ElderBattlefieldRobot', 5)
    curNPCCnt = 0
    robotCntDict = {}
@@ -367,11 +384,14 @@
def OnElderBattlefieldFBResult(curPlayer, isLogin=False):
    # 玩家处理上古战场结算信息
    curStage = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ElderBattlefieldStage, 0)
    if not curStage:
        return
    GameWorld.DebugLog('    玩家处理上古战场结算信息 , isLogin=%s' % isLogin, curPlayer.GetPlayerID())
    lineID = 0  #GameWorld.GetGameWorld().GetPropertyID() -1
    fbRewardDict = FBCommon.GetFBLineReward(ChConfig.Def_FBMapID_ElderBattlefield, lineID)
    
    curStage = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ElderBattlefieldStage, 0)
    itemList = fbRewardDict.get(curStage, [])
    succIDList = PlayerSuccess.GetCanGetAwardSuccByType(curPlayer, [ShareDefine.SuccType_ElderBattlefieldKill, ShareDefine.SuccType_ElderBattlefieldConKill])
    succAwardDict = PlayerSuccess.GiveSuccAward(curPlayer, succIDList, False)
@@ -386,7 +406,7 @@
    emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
    mapID = GameWorld.GetMap().GetMapID()
    if mapID != ChConfig.Def_FBMapID_ElderBattlefield or isLogin or emptySpace < needSpace:
        PlayerControl.SendMailByKey("ElderBattlefieldMail", [curPlayer.GetPlayerID()], rewardItemList)
        PlayerControl.SendMailByKey("ElderBattlefieldMail" if mapID == ChConfig.Def_FBMapID_ElderBattlefield else 'ElderBattlefieldMail2', [curPlayer.GetPlayerID()], rewardItemList)
    else:
        for itemID, itemCnt, isBind in rewardItemList:
            ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem], event=["ElderBattlefield", False, {}])
@@ -459,6 +479,7 @@
# @remarks 用于通知阵营比分条
def DoFBHelp(curPlayer, tick):
    gameWorld = GameWorld.GetGameWorld()
    lineID = gameWorld.GetLineID()
    playerID = curPlayer.GetPlayerID()
    score = gameWorld.GetGameWorldDictByKey(FBPlayerDict_Score % playerID)
    stageScoreList = IpyGameDataPY.GetFuncEvalCfg('ElderBattlefieldCfg', 4)
@@ -478,6 +499,7 @@
    helpDict['topPlayerID'] = topPlayerID
    #helpDict[FBCommon.Help_lineID] = GameWorld.GetGameWorld().GetLineID()
    helpDict['enemyID'] = GameWorld.GetGameFB().GetPlayerGameFBDictByKey(playerID, FBPlayerDict_EnemyID)
    helpDict[FBCommon.Help_robotJob] = PyGameData.g_fbRobotJobDict.get(lineID, {})
    GameWorld.DebugLog("DoFBHelp %s" % helpDict, playerID)
    FBCommon.Notify_FBHelp(curPlayer, helpDict)
    return
@@ -496,6 +518,7 @@
def DoFBOnKill_Player(atkobj, defender, tick):
    gameFB = GameWorld.GetGameFB()
    atkIsPlayer = atkobj.GetGameObjType() == IPY_GameWorld.gotPlayer
    baseCnt = IpyGameDataPY.GetFuncCfg('ElderBattlefieldSys', 2)
    addScore = 0
    if atkIsPlayer:
        playerID = atkobj.GetPlayerID()
@@ -511,7 +534,7 @@
        gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_ContKillCntEx, contKillCntEx)
        #连杀广播
        ckillSysList = IpyGameDataPY.GetFuncCfg('ElderBattlefieldSys', 1)
        baseCnt = IpyGameDataPY.GetFuncCfg('ElderBattlefieldSys', 2)
        perCnt = IpyGameDataPY.GetFuncCfg('ElderBattlefieldSys', 3)
        if contKillCntEx >= baseCnt and contKillCntEx % perCnt == 0:
            sysIndex = min((contKillCntEx - baseCnt) / perCnt, len(ckillSysList) - 1)
@@ -535,7 +558,7 @@
            if atkIsPlayer:
                PlayerControl.FBNotify('AncientBattlefield_7', [atkobj.GetName(), defender.GetName(), defContKillCntEx])
            else:
                PlayerControl.FBNotify('AncientBattlefield_robot', [atkobj.GetNPCID(), atkobj.GetObjID(), defender.GetName(), defContKillCntEx])
                PlayerControl.FBNotify('AncientBattlefield_robot', [atkobj.GetNPCID(), atkobj.GetID(), defender.GetName(), defContKillCntEx])
        gameFB.SetPlayerGameFBDict(tagPlayerID, FBPlayerDict_ContKillCntEx, 0)
        #记录仇人
        if atkIsPlayer:
@@ -663,18 +686,20 @@
    rebornBuffLV = GameWorld.GetGameFB().GetPlayerGameFBDictByKey(playerID, FBPlayerDict_RebornBuffLV)
    if rebornBuffLV >= IpyGameDataPY.GetFuncCfg('ElderBattlefieldRobot', 4):
        return
    skillBuffID = IpyGameDataPY.GetFuncCfg('ElderBattlefieldRobot', 3) + rebornBuffLV
    __DoAddRebornBuff(curPlayer, rebornBuffLV+1, tick)
    return
def __DoAddRebornBuff(curPlayer, rebornBuffLV, tick):
    skillBuffID = IpyGameDataPY.GetFuncCfg('ElderBattlefieldRobot', 3) + rebornBuffLV - 1
    skillBuff = GameWorld.GetGameData().GetSkillBySkillID(skillBuffID)
    if not skillBuff:
        GameWorld.Log("上古复活加buff   找不到技能%s" % skillBuffID)
        return
    GameWorld.GetGameFB().SetPlayerGameFBDict(playerID, FBPlayerDict_RebornBuffLV, rebornBuffLV+1)
    playerID = curPlayer.GetID()
    GameWorld.GetGameFB().SetPlayerGameFBDict(playerID, FBPlayerDict_RebornBuffLV, rebornBuffLV)
    buffType = SkillCommon.GetBuffType(skillBuff)
    BuffSkill.DoAddBuff(curPlayer, buffType, skillBuff, tick)
    return
## 设置玩家随机坐标点
def __SetPlayerRandomPos(curPlayer):