| | |
| | | fbTimeList = IpyGameDataPY.GetFuncEvalCfg("CrossRealmPKFB", 1)
|
| | |
|
| | | if fbStep == FB_State_Open:
|
| | | curPlayer.SetFaction(1)
|
| | | gameFB.SetGameFBDict(GameFBDict_FBPlayerID % 1, playerID)
|
| | | gameFB.SetPlayerGameFBDict(playerID, FBPDict_ResetPosX, curPlayer.GetPosX())
|
| | | gameFB.SetPlayerGameFBDict(playerID, FBPDict_ResetPosY, curPlayer.GetPosY())
|
| | |
| | | playerIDA = gameFB.GetGameFBDictByKey(GameFBDict_FBPlayerID % 1)
|
| | | playerIDB = gameFB.GetGameFBDictByKey(GameFBDict_FBPlayerID % 2)
|
| | | if not playerIDB and playerIDA != playerID:
|
| | | curPlayer.SetFaction(2)
|
| | | gameFB.SetGameFBDict(GameFBDict_FBPlayerID % 2, playerID)
|
| | | gameFB.SetPlayerGameFBDict(playerID, FBPDict_ResetPosX, curPlayer.GetPosX())
|
| | | gameFB.SetPlayerGameFBDict(playerID, FBPDict_ResetPosY, curPlayer.GetPosY())
|
| | |
| | | curPlayer.Sync_TimeTick(ChConfig.tttTowerTake, 0, max(notify_tick, 0), True)
|
| | |
|
| | | FBCommon.Notify_FBHelp(curPlayer, __GetFBHelpInfo())
|
| | | PlayerControl.DelLimitSuperBuff(curPlayer, tick)
|
| | | PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState()
|
| | | return
|
| | |
|
| | | def __GetFBHelpInfo():
|
| | |
| | | gameFB = GameWorld.GetGameFB()
|
| | | fbStep = gameFB.GetFBStep()
|
| | |
|
| | | if fbStep <= FB_State_Waiting and fbStep >= FB_State_Leave:
|
| | | if fbStep <= FB_State_Waiting or fbStep >= FB_State_Leave:
|
| | | return
|
| | |
|
| | | leavePlayerID = curPlayer.GetPlayerID()
|
| | |
| | | player = copyMapPlayerManager.GetPlayerByIndex(i)
|
| | | if player == None or player.IsEmpty():
|
| | | continue
|
| | | playerID = player.GetPlayerID()
|
| | | if playerID not in [playerIDA, playerIDB]:
|
| | | GameWorld.ErrLog("副本中玩家不在进入的玩家ID里,不处理! roomID=%s,playerID=%s" % (roomID, playerID))
|
| | | continue
|
| | | winner = player
|
| | | winnerID = player.GetPlayerID()
|
| | | GameWorld.Log("超时结算,玩家在线,直接获胜: roomID=%s,winnerID=%s" % (roomID, winnerID))
|
| | |
| | |
|
| | | if player.GetPlayerAction() == IPY_GameWorld.paDie or player.GetHP() <= 0:
|
| | | GameWorld.DebugLog("复活玩家...", player.GetPlayerID())
|
| | | ChPlayer.PlayerRebornByType(player, ChConfig.rebornType_System, tick)
|
| | | ChPlayer.PlayerRebornByType(player, ChConfig.rebornType_System, tick, isAddSuperBuff=False)
|
| | | __ResetPlayerState(gameFB, player, playerID)
|
| | | else:
|
| | | __ResetPlayerState(gameFB, player, playerID, False)
|
| | |
| | | GameWorld.Log("回合结束: roomID=%s,roundNum=%s,winnerID=%s,loserID=%s,updWinCnt=%s" % (roomID, roundNum, winnerID, loserID, updWinCnt))
|
| | | isOver = (updWinCnt >= IpyGameDataPY.GetFuncCfg("CrossRealmPKFB", 3))
|
| | | if not isOver:
|
| | | if winner:
|
| | | clearDeBuff = False
|
| | | # 胜利者马上清除负面buff,防止死亡导致回合表现异常,如中毒
|
| | | for buffType in [IPY_GameWorld.bfDeBuff, IPY_GameWorld.bfProcessDeBuff, IPY_GameWorld.bfActionBuff]:
|
| | | buffTuple = SkillCommon.GetBuffManagerByBuffType(winner, buffType)
|
| | | if buffTuple:
|
| | | buffState = buffTuple[0]
|
| | | buffCount = buffState.GetBuffCount()
|
| | | if buffCount:
|
| | | clearDeBuff = True
|
| | | buffState.Clear()
|
| | | GameWorld.DebugLog("胜者马上清除 buffType=%s,buffCount=%s" % (buffType, buffCount), winner.GetPlayerID())
|
| | | |
| | | if clearDeBuff:
|
| | | PlayerControl.PlayerControl(winner).RefreshAllState()
|
| | | |
| | | FBCommon.SetFBStep(FB_State_Reborn, tick)
|
| | | return
|
| | |
|