#!/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 EventReport import PlayerBossReborn import PlayerNewFairyCeremony import PlayerActGarbageSorting import PlayerFairyCeremony import PlayerFeastTravel import IpyGameDataPY import EventShell import NPCCommon import ChConfig ## ÊÇ·ñÄܹ»Í¨¹ý»î¶¯²éѯ½øÈë def OnEnterFBEvent(curPlayer, mapID, lineID, tick): return True ## ÊÇ·ñÐèÒª×ö½øÈ븱±¾Í¨Óüì²éÌõ¼þÂß¼­£¬Ä¬ÈÏÐèÒª¼ì²é def OnNeedCheckCanEnterFBComm(curPlayer, mapID, lineID): ## ½øÐÐÖеIJ»ÐèÒªÖØ¸´¼ì²é£¬·ÀÖ¹¶ÏÏßÖØÁ¬±»½ûÖ¹½øÈë if FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) == ChConfig.CustomMapStep_Fight: GameWorld.DebugLog("VIPBossÒѾ­ÔÚ½øÐÐÖУ¬±¾´Î½øÈë²»ÐèÒªÖØÐ¼ì²é!") return False return True ## ¿Í»§¶Ë½øÈë×Ô¶¨Ò峡¾° def OnEnterCustomScene(curPlayer, mapID, lineID): return ## ÅжϿɷñÕÙ»½Ä¾×®¹Ö def OnCanSummonPriWoodPile(curPlayer, mapID, lineID, npcID, count): if FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) != ChConfig.CustomMapStep_Fight: FBCommon.SetCustomMapStep(curPlayer, mapID, lineID, ChConfig.CustomMapStep_Fight) EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_PersonalBoss, 0, ChConfig.CME_Log_Start) # ¿ªÊ¼¼ÆÊ± tick = GameWorld.GetGameWorld().GetTick() curPlayer.SetDict(ChConfig.Def_PlayerKey_ClientCustomSceneStepTick, tick) FBCommon.UpdateCustomFBGrade(curPlayer, tick, FBCommon.GetFBLineGrade(mapID, lineID)) return True def OnCustomSceneProcess(curPlayer, mapID, lineID, tick): if FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) == ChConfig.CustomMapStep_Fight: FBCommon.UpdateCustomFBGrade(curPlayer, tick, FBCommon.GetFBLineGrade(mapID, lineID)) return ## ×Ô¶¨Ò峡¾°¸±±¾»÷ɱNPC def DoCustomScene_Player_KillNPC(curPlayer, curNPC, mapID, lineID): npcID = curNPC.GetNPCID() bossID = __GetPersonalBossID(lineID) GameWorld.DebugLog("¸öÈËboss³¡¾°»÷ɱNPC: npcID=%s,bossID=%s" % (npcID, bossID), curPlayer.GetPlayerID()) if npcID != bossID: return if FBCommon.GetCustomMapStep(curPlayer, mapID, lineID) != ChConfig.CustomMapStep_Fight: return grade = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneGrade) costTime = GameWorld.GetGameWorld().GetTick() - curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_ClientCustomSceneStepTick) GameWorld.DebugLog("¸öÈËboss¹ý¹Ø: grade=%s,costTime=%s" % (grade, costTime)) isFree = False curfbStar = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID]) # Ê״ιý¹Ø²»¿Û´ÎÊý if not curfbStar: isFree = True GameWorld.DebugLog(" Ê״ιý¹Ø£¡mapID=%s,lineID=%s" % (mapID, lineID), curPlayer.GetPlayerID()) if curfbStar < grade: GameWorld.DebugLog(" ¸üÐÂÆÀ¼¶£¡curfbStar=%s < grade=%s" % (curfbStar, grade), curPlayer.GetPlayerID()) GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, grade, False, [mapID]) FBCommon.Sync_FBPlayerFBInfoData(curPlayer, mapID) # ͬ²½ÐÅÏ¢ #Ôö¼Ó½øÈë´ÎÊý FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_PersonalBoss, isFree=isFree) FBCommon.DelFBEnterTicket(curPlayer, ChConfig.Def_FBMapID_PersonalBoss) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_VIPBOSS, 1) PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, 1) PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, 1) PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_VIPBoss, 1) PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillBoss) EventShell.EventRespons_FBEvent(curPlayer, 'passvipboss') npcCountDict = {bossID:1} dropItemMapInfo = [0, 0] jsonItemList = NPCCommon.GiveKillNPCDropPrize(curPlayer, mapID, npcCountDict, dropItemMapInfo=dropItemMapInfo, curGrade=grade, isVirtualDrop=True)[0] FBCommon.SetCustomMapStep(curPlayer, mapID, lineID, ChConfig.CustomMapStep_Over) isPass = 1 overDict = {FBCommon.Over_itemInfo:jsonItemList, FBCommon.Over_grade:grade, FBCommon.Over_costTime:costTime} FBCommon.NotifyFBOver(curPlayer, mapID, lineID, isPass, overDict) return def __GetPersonalBossID(lineID): ## VIPbossID ipyData = IpyGameDataPY.GetIpyGameData('PersonalBoss', lineID) if not ipyData: return 0 return ipyData.GetNPCID() ## ¿É·ñɨµ´ def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx): if mapID != ChConfig.Def_FBMapID_PersonalBoss: return curGrade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID]) if curGrade < 5: GameWorld.DebugLog("ûÓÐS¼¶²»ÄÜɨµ´! curGrade=%s" % curGrade) return return True ## ɨµ´½á¹û def OnPlayerFBSweepResult(curPlayer, mapID, lineID, sweepCnt, isFinish, dataEx): bossID = __GetPersonalBossID(lineID) grade = GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_PlayerFBStar_MapId, lineID, False, [mapID]) GameWorld.DebugLog("¸öÈËbossɨµ´: lineID=%s,bossID=%s,grade=%s,sweepCnt=%s" % (lineID, bossID, grade, sweepCnt), curPlayer.GetPlayerID()) PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_VIPBOSS, sweepCnt) PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, sweepCnt) PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, sweepCnt) PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_VIPBoss, sweepCnt) PlayerActGarbageSorting.AddActGarbageTaskProgress(curPlayer, ChConfig.Def_GarbageTask_KillBoss) EventShell.EventRespons_FBEvent(curPlayer, 'passvipboss') npcCountDict = {bossID:sweepCnt} jsonItemList = NPCCommon.GiveKillNPCDropPrize(curPlayer, mapID, npcCountDict, curGrade=grade)[0] isPass = 1 overDict = {FBCommon.Over_itemInfo:jsonItemList, FBCommon.Over_isSweep:1} FBCommon.NotifyFBOver(curPlayer, mapID, lineID, isPass, overDict) return True