| | |
| | | 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()
|
| | |
| | | for i in xrange(copyMapPlayerManager.GetPlayerCount()):
|
| | | 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,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
|
| | |
|