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