#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package GameWorldLogic.FBProcess.GameLogic_PersonalBoss  
 | 
#  
 | 
# @todo:¸öÈËBoss¡¢VIPBoss  
 | 
# @author hxp  
 | 
# @date 2019-05-23  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: ¸öÈËBoss¡¢VIPBoss  
 | 
# ±¾¸±±¾×öǰ¶Ë×Ô¶¨Ò峡¾°´¦Àí£¬ºó¶ËÎÞʵ¼ÊµØÍ¼  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2019-05-23 17:30"""  
 | 
#-------------------------------------------------------------------------------  
 | 
  
 | 
import FBCommon  
 | 
import GameWorld  
 | 
import PlayerBossReborn  
 | 
import PlayerNewFairyCeremony  
 | 
import PlayerActGarbageSorting  
 | 
import PlayerFairyCeremony  
 | 
import PlayerFeastTravel  
 | 
import IpyGameDataPY  
 | 
import ChConfig  
 | 
  
 | 
def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagType, tagID, valueList):  
 | 
    ## »ØºÏÕ½¶·ÇëÇó - µØÍ¼ÑéÖ¤  
 | 
      
 | 
    # Ö»ÄÜÒ»¹Ø¹ØÌôÕ½  
 | 
    passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)  
 | 
    if funcLineID != passLineID + 1:  
 | 
        GameWorld.ErrLog("Ö»ÄÜÌôÕ½ÏÂÒ»¹Ø! mapID=%s,funcLineID=%s,passLineID=%s,nextLineID=%s"   
 | 
                         % (mapID, funcLineID, passLineID, passLineID + 1), curPlayer.GetPlayerID())  
 | 
        return  
 | 
      
 | 
    ipyData = IpyGameDataPY.GetIpyGameData("PersonalBoss", funcLineID)  
 | 
    if not ipyData:  
 | 
        return  
 | 
      
 | 
    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  
 | 
      
 | 
    return True  
 | 
  
 | 
def OnTurnFightOver(curPlayer, mapID, funcLineID, tagType, tagID, valueList, fightRet):  
 | 
    ## »ØºÏÕ½¶·½áÊø  
 | 
    # @return: ÊÇ·ñÐèҪͬ²½GameServer, ½±ÀøÁбí, Í¬²½½á¹ûÐÅÏ¢  
 | 
    needSendGameServer = False  
 | 
    overInfoEx = {}  
 | 
    isWin = fightRet[0]  
 | 
      
 | 
    GameWorld.DebugLog("¸±±¾½áËã: mapID=%s,funcLineID=%s,isWin=%s" % (mapID, funcLineID, isWin))  
 | 
      
 | 
    ipyData = IpyGameDataPY.GetIpyGameData("PersonalBoss", funcLineID)  
 | 
    if not ipyData:  
 | 
        return  
 | 
      
 | 
    OnFBJoin(curPlayer, mapID, funcLineID)  
 | 
      
 | 
    if not isWin:  
 | 
        return  
 | 
    awardItemList = ipyData.GetFirstAwardItemList()  
 | 
          
 | 
    isFree = True  
 | 
    #Ôö¼Ó½øÈë´ÎÊý  
 | 
    FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_PersonalBoss, isFree=isFree)  
 | 
      
 | 
    #ÉèÖÃÐǼ¶£¬¼æÈݾÍÂß¼  
 | 
    grade = 5  
 | 
    GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, funcLineID, grade, False, [mapID])  
 | 
    OnFBPass(curPlayer, mapID, funcLineID, awardItemList)  
 | 
    return needSendGameServer, awardItemList, overInfoEx  
 | 
  
 | 
## ¿É·ñɨµ´  
 | 
def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):  
 | 
    passLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_FBPassLineID % mapID)  
 | 
    if passLineID < lineID:  
 | 
        GameWorld.DebugLog("δ»÷ɱ²»ÄÜɨµ´! mapID=%s,lineID=%s > passLineID(%s)" % (mapID, lineID, passLineID))  
 | 
        return  
 | 
      
 | 
    return True  
 | 
  
 | 
## É¨µ´½á¹û  
 | 
def OnPlayerFBSweepResult(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx):  
 | 
      
 | 
    GameWorld.DebugLog("ɨµ´: mapID=%s,lineID=%s,sweepCnt=%s" % (mapID, lineID, sweepCnt), curPlayer.GetPlayerID())  
 | 
    ipyData = IpyGameDataPY.GetIpyGameData("PersonalBoss", lineID)  
 | 
    if not ipyData:  
 | 
        return  
 | 
      
 | 
    awardItemList = []  
 | 
    for itemID, itemCount, isAuctionItem in ipyData.GetSweepAwardItemList():  
 | 
        awardItemList.append([itemID, itemCount * sweepCnt, isAuctionItem])  
 | 
          
 | 
    OnFBJoin(curPlayer, mapID, lineID, sweepCnt)  
 | 
    OnFBPass(curPlayer, mapID, lineID, awardItemList, sweepCnt, True)  
 | 
    return True  
 | 
  
 | 
def OnFBJoin(curPlayer, mapID, funcLineID, joinCount=1):  
 | 
    ## ¸±±¾²ÎÓë  
 | 
    FBCommon.OnFBJoin(curPlayer, mapID, funcLineID, joinCount)  
 | 
    return  
 | 
  
 | 
def OnFBPass(curPlayer, mapID, funcLineID, awardItemList=None, passCount=1, isSweep=False):  
 | 
    ## ¸±±¾¹ý¹Ø  
 | 
    FBCommon.OnFBPass(curPlayer, mapID, funcLineID, awardItemList, passCount)  
 | 
      
 | 
    PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_VIPBOSS, passCount)  
 | 
    PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, passCount)  
 | 
    PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, passCount)  
 | 
    PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_VIPBoss, passCount)  
 | 
    PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillBoss, passCount)  
 | 
      
 | 
    isPass = 1  
 | 
    overDict = {FBCommon.Over_itemInfo:awardItemList}  
 | 
    if isSweep:  
 | 
        overDict.update({FBCommon.Over_isSweep:1})  
 | 
    FBCommon.NotifyFBOver(curPlayer, mapID, funcLineID, isPass, overDict)  
 | 
    return  
 | 
  
 |