| #!/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  | 
|   |