1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/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