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
Æ4r[c@scddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZdad„Zd„Zddd„Zd„Zd„Zd„Zd    „Zd
„Zd „Zd „Zd „Zd„Zd„Zdd„Zdgd„Z d„Z!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-de.fd „ƒYZ/d!„Z0d"„Z1d#„Z2d$„Z3d%„Z4d&„Z5dgd'„Z6d(„Z7d)„Z8e9d*„Z:d+„Z;dd,„Z<dS(-iÿÿÿÿNicCsþg}d}t|ƒ}tj|ƒ}||krNtjd||fƒdStjd||fƒxq||D]e}x\|D]T}t|ƒ}t|ƒ}|dkr­q}nt|dƒtjd||fƒq}WqpWtj    ||ƒtjd|ƒdS(NtResetBossKilledCntVers,ÒѾ­ÖØÖùýboss±»»÷ɱ´ÎÊý!curVer=%s,maxVer=%ss*¿ªÊ¼ÖØÖÃboss±»»÷ɱ´ÎÊý!curVer=%s,maxVer=%sis/    ÖØÖÃboss±»»÷ɱ´ÎÊý: bossID=%s,Òѱ»É±´ÎÊý=%ss    ÖØÖóɹ¦: maxVer=%s(
tlentPlayerDBGSEventtGetDBGSTrig_ByKeyt    GameWorldtDebugLogtLogt__GetBossRecDataByIDt__GetKilledCntt__SetKilledCnttSetDBGSTrig_ByKey(t resetVerInfot
resetDBKeytmaxVertcurVertresetBossIDListtbossIDt bossPrizeRect    killedCnt((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt#CheckResetBossKilledCntOnServerInit=s&       c Csšt|ƒdkrdS|d}|dkr0dS|d}|d}|d}t|ƒdkrj|dnt}t|ƒdkrŒ|dnd}t|ƒ}t|ƒ}    tjd||||||    fƒ|rë|     rëtjdƒdSttjƒƒ}
t    |ƒ} t
| |
||ƒ|rYt | ƒ} t | | dƒtjd    || fƒn|r–t |dƒt||
ƒtd|gƒt|ƒndS(
Niiiiiisk»÷ɱÊÀ½çboss DoGameWorldBossOnKilled...bossID=%s,hurtValue=%s,mapID=%s,tick=%s,isMapNeedShunt=%s,isAlive=%ssPÐèÒª·ÖÁ÷µÄµØÍ¼boss±»»÷ɱ£¬µ«Êǵ±Ç°bossÈ«¾Ö״̬ΪËÀÍö״̬£¬²»ÔÙ¸üÐÂboss»÷ɱÐÅÏ¢£¡s5    addBossKillCnt: killPlayerName=%s,befKilledCnt=%s(RtTruetNonetIsMapNeedBossShuntt __GetIsAliveRRtintttimeRt__SetKillRecordRR    t __SetIsAlivetSetBossRefreshTimet Sync_BossInfotSendMapServerBossKilledCnt( tmsgListttickRtkillPlayerNamet    hurtValuet isAddKillCnttisNotifytmapIDtisMapNeedShunttisAlivet
killedTimeRt befKilledCnt((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoGameWorldBossOnKilled]s<
 
 
 
""             cs”xKtjD]@}||dkr
|r3||d<n|rF||d<nPq
q
Wttjƒƒ‰tjjd‡fd†ƒtjdtjƒdS(Niiitkeycstd|dˆ|dƒS(Niii(tmax(tasd(tcurTime(sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt<lambda>’ss'    PyGameData.g_sortBOSSRefreshList=%s(t
PyGameDatatg_sortBOSSRefreshListRRtsortRR(RR(t refreshTimetbossInfo((R.sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__UpdateBossRefreshList‰s  cCst|ƒdkrdS|d}|d}t|ƒdkrF|dnd}t|ƒdkrh|dnd}tjd|||||fƒ|dkrždSt|ƒ}|sÃt|||ƒn|rÜt|||ƒn|t|ƒkrt||ƒt    d|gƒndS(NiiiisPÊÀ½çboss DoGameWorldBossOnReborn...mapID=%s,lineID=%s,bossID=%s,state=%s,tick=%s(
RRRRRtDoRemoveBossShuntPlayerByNPCIDt__UpdBossLineStateRRR(RR RR'R%tlineIDR&((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoGameWorldBossOnRebornšs$
 
""    cCsÎ|dkrdStjj|gƒ}|rG||krG|j|ƒn'| rj||krj|j|ƒndS|tj|<|s”tjj|ƒn|tjkr¶tjj|ƒntj    dtjƒdS(Ns    bossÒÑËÀÍöÏß·±ä¸ü: %s(
RR0tg_bossShuntDeadLinetgettremovetappendtpoptg_bossShuntDeadLineChangeBossRR(RR8R'tbossDeadLineList((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR7¶s  cCs”tƒ}d}xEt|jƒƒD]1}|j|ƒ}|jƒ|kr"|}Pq"q"W|dkrtjd|ƒ|jƒ}|j    |ƒn|S(Ns)ÊÀ½çboss id=%s Î´ÕÒµ½ÒÑÓмǼ£¡Ìí¼ÓмǼ(
t__GetBossPrizeRecDataRtrangetCounttAtt    GetValue1RRtAddRect    SetValue1(RtrecTypeListDatatbossRectindextuniversalRecData((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRÏs      cCs|j|ƒdS(N(t    SetValue3(trecR((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR    äs cCs
|jƒS(N(t    GetValue3(RM((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRçscCs!tjƒjtj||ƒdS(N(Rt GetGameWorldtSetDicttChConfigtDef_WorldKey_BossIsAlive(RR'((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRíscCstjƒjtj|ƒS(N(RROt GetDictByKeyRQRR(R((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRôscCsªt|ƒ}|r!|jdƒng}|rJ|jd|||fƒn|jd||fƒt|ƒdkr}|d=ndj|ƒ}|j|ƒ|j|ƒdS(Ns|s%s_%s_%ss%s_%sii(t__GetKillRecordtsplitR=Rtjoint SetStrValue3t    SetValue2(RMR(t
playerNameR"t
killRecordtkillRecordList((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRüs 
  cCs
|jƒS(N(t GetStrValue3(RM((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRTscCs(tj}tjƒ}|j|ƒ}|S(N(t ShareDefinet!Def_UniversalGameRecType_BossInfoRtGetUniversalRecMgrt GetTypeList(trecTypetuniversalRecMgrRH((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRAs     cCsdS(N((R((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRsc CsÚttjƒƒ}tjƒ}tƒ}g|_xæt|jƒƒD]Ò}|j|ƒ}|j    ƒ}|spqCn|rˆ||krˆqCntj
ƒ}||_ t |j ƒ|_ t|ƒ|_t|jƒ|_|jƒ}    t|j ƒ}
td|
||    ƒ|_|jj|ƒqCWt|jƒ|_|s³tjƒ} x–td| jƒƒD]Y} | j| ƒ}|dksS|jƒ r‡qSntj|ƒrœqSnt j!||ƒqSWn#tj|ƒrÆdSt j!||ƒdS(Ni("RRtChPyNetSendPackttagGCGameWorldBossInfoRAt BossInfoListRBRCRDREttagBossInfoObjtBossIDRtIsAliveRTt
KillRecordRt    RecordLent    GetValue2t__GetBossRefreshTimeR,t RefreshSecondR=tBossCntRtGetPlayerManagertGetActivePlayerCounttGetActivePlayerAtRt    GetInitOKt PlayerControltGetIsTJGt NetPackCommont SendFakePack( t    curPlayertsyncBOSSIDListR.R4RHRJRKRt bossInfoObjR(R3t playerManagerti((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR5sD                 c sÅtjtj|ƒsdSttjƒƒ‰tˆ|ƒtˆƒtj    sëx~t
t j ƒj ƒƒD]d}t j ƒj|ƒ}|jƒ}t|ƒ}|jƒ}t|ƒ}tj    j|||gƒqdWtj    jd‡fd†ƒng}x·tj    D]¬}|\}}}t|ƒ}    |    r(qûntd|ˆ|ƒ}
|
dkrOPntj|ƒt|dƒ|j|ƒtjtj|dƒtjd|||
fƒqûW|rÁtd|ƒndS(NR+cstd|dˆ|dƒS(Niii(R,(R-(R.(sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR/vsiis>    Í¨ÖªMapServerÖØÉú: bossID=%s,killedTime=%s,rebornSecond=%s( RtSetWorldDictKeyRQtTYPE_WorldBossProcessTickRRtDoCheckWorldBossShuntInfotBossRebornWorldNotifyR0R1txranget IpyGameDataPYtIPY_DatatGetBOSSInfoCounttGetBOSSInfoByIndextGetNPCIDRRkRlR=R2RR,t PlayerGeTuitGeTuiBossRebornRtSendMapServerMsgExR]t'Def_Notify_WorldKey_GameWorldBossRebornRRR( R R{tipyDataRRR(R3RxR4R't rebornSecond((R.sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoCheckWorldBossReborngs@ 
                 cCstjtj|ƒsdSttjƒƒ}xktjD]`}|\}}}t|ƒ}|rbq5nt    d|||ƒ}|s…q5nt
j ||ƒq5WdS(Ni( RR|RQtTYPE_WorldBossGeTuiTickRRR0R1RR,R†t    GeTuiBoss(R R.R4RR(R3R'R‹((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytProcessBossGeTui–s cCsit|ƒ}|jƒ}t|ƒ}ttjƒƒ}td|||ƒ}t|ƒ}|ph|dkS(Ni(RRkRlRRR,R(RRR(R3R.R‹R'((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytGetBossIsAliveOrCanRebornªs    cCs•xŽttjƒjƒƒD]t}tjƒj|ƒ}|jƒ}t|ƒ}|sXqn|jƒ}|tj    krt
j t j |dƒqqWdS(Ni(R€RR‚RƒR„R…RtGetMapIDRQtDef_FBMapID_SealDemonRRˆR]R‰(R{RŠRR'R%((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__SendMapServerAliveBoss·s   cCsrt|ƒtjƒj|ƒtdƒr6t|ƒntjƒ}|jt    j
t j ƒ}|rnt |ƒndS(Ni(Rt PyDataManagertGetBossAttentionManagertNotifyBossAttentionInfoRtSync_BossShuntLineInfoRRORSRQt!Def_WorldKey_OperationActionStateR]tOperationActionName_BossReborntSync_BossRebornPoint(Rwt    gameWorldtstate((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt OnPlayerLoginÆs
    cCsMtƒtƒtdƒrItjtjtjƒtjtj    tj
ƒndS(Ni( RR“RRtSendCommMapServerMsgR]t#Def_Notify_WorldKey_BossShuntPlayerR0tg_bossShuntPlayerInfot%Def_Notify_WorldKey_BossShuntDeadLineR:(((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnMapServerInitOKÕs  c    Cs#t|ƒdkrdS|\}}}}}}}tjd||||||fƒtjdƒ}    |    smdStj}
tjƒ} | j|
ƒ} |    | j    ƒkrñt
t j ƒƒ} tjddƒddd}| j dƒ}|j ƒ}| ||kr| jdƒqñg}xWt| j    ƒƒD]C}| j |ƒ}|j ƒ}|jƒ}|j|||gƒq'W|jd|| gƒt|d    d
„d tƒ}|d }|jd    d „ƒ|rñ|dddkrñ| j|ddƒqñntjd|
|||||g|d|gƒdS(NisZ»÷ɱBossµôÂäºÃÎïÆ·: mapID=%s,npcID=%s,killerName=%s,itemID=%s, userData=%s, weightValue=%st DropRecordNumiii<iiÿÿÿÿR+cSs|dS(Ni((R-((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR/þstreverseicSs|dS(Ni((R-((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR/st(RRRRt
GetFuncCfgR]t-Def_UniversalGameRecType_BossDropGoodItemInfoR_R`RCRRRDtGetTimetDeleteR€t    GetValue5R=tsortedRR2tPlayerUniversalGameRectMapServer_UniversalGameRecR(RR tplayerIDt
killerNameR%tnpcIDtitemIDtuserDatat weightValuet maxRecordCntRaRbt
recordListR.t    rangeTimet firstRecDatat    fsaveTimetdropRecordListR{trecDatatsaveTimetcurWeightValuet
commonList((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnKillBossDropGoodItemàsB            
cCsUtjtj|ƒsdStjdƒi}xlttjƒjƒƒD]R}tjƒj    |ƒ}|j
ƒ}|j ƒ}d|krE|j ƒ||<qEqEWi}tj ƒ}xÇt|jƒƒD]³}|j|ƒ}|dksÀ|jƒ rôqÀntj|ƒr    qÀn|jƒ}    x[|jƒD]M\}
} | d|    koM| dknr"|j|
dƒd||
<q"q"WqÀWtjd|ƒtjƒ} x| jƒD]q} | tj}    x[|jƒD]M\}
} | d|    koì| dknrÁ|j|
dƒd||
<qÁqÁWq¡Wtjd|ƒx'|jƒD]\}
}t|
|ƒq4WdS(NsÊÀ½çbossÔÚÏßÈËÊýͳ¼Æt    onlineCntiis#    bossµÈ¼¶ÐÅÏ¢¶ÔÓ¦±¾·þÔÚÏßÈËÊý %ss)    bossµÈ¼¶ÐÅÏ¢¶ÔÓ¦±¾·þ¼°¿ç·þÔÚÏßÈËÊý %s(RR|RQtTYPE_WorldBossOnlineCntTickRR€RR‚RƒR„R…tGetRefreshTimet
GetLVLimitRoRpRqRRrRsRttGetLVtitemsR;t MergePlayertGetMergeServerOnlinePlayerInfotvaluestDef_MSOLPlayer_LVtSetBossOnlineHeroCnt(R tbossRebornDictR{RŠRtrefreshTimeStrt playerCntDictRzt
findPlayertfindLVtbossidtlvLimittmergeServerOnlinePlayerDictt
playerInfot curOnlineCnt((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytCalcGameWorldBossOnlineCntsB      $%  $%cCsßtjd|ƒ}|sdSt|ƒ\}}| sYt||ƒd||jƒkrh|}d}n1||jƒkr‰|}d}n|}|d7}|d|}tjtj    ||ƒt
j d||||fƒdS(s ÉèÖüÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýtBOSSInfoNidiisiÉèÖüÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊý Change:bossid=%s, beforeOnlineCnt = %s, newOnlieCnt = %s, unUpdataCnt=%s( RtGetIpyGameDatat__GetBossOnlineHeroCnttabst
GetDiffPertGetNoUpdataCntRR
R]t*Def_Notify_WorldKey_GameWorldBossOnlineCntRR(RÏtonlieCntRŠtbeforeOnlineCntt unUpdataCntt newOnlieCnttnewNum((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRÉ9s +        
cCs5tjtj|ƒ}|d|d}}||fS(s »ñÈ¡¼ÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýid(RRR]RÛ(RÏt    beforeNumRÜRÞ((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR×PscCsƒtjd|ƒ}|sdSt|ƒd}t|jƒƒ}tjtj||ƒt|||ƒt    j
d|||fƒdS(sÉèÖÃbossË¢ÐÂʱ¼äRÕNis:    ÉèÖÃbossË¢ÐÂʱ¼ä BossID=%s,onlineCnt=%s,refreshTime=%s( RRÖR×tevalRÁRR
tDef_BossRefreshTimeR5RR(RÏR(RŠR¿R3((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRVscCstjtj|ƒS(s»ñÈ¡bossË¢ÐÂʱ¼ä(RRRã(RÏ((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRlcscCsJtjƒj|ƒ}|j}|j}tjƒj|jƒ||ƒdS(N(    RRotGetPlayerByIndexRgtIsAddR”R•tUpdateBossAttentiont GetPlayerID(RJt
clientDataR RwRtisAdd((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnAttentionBossps
        tBossAttentionManagercBs>eZd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs i|_dS(N(tbossAttentionDict(tself((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__init__~s    cCs|jS(N(Rì(Rí((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytGetBossAttentionDict‚scCs||jkr•|j|}t|jƒ}|r>|||<n|j|dƒ|sq|jƒ|jj|ƒqót|ƒ|_t|jƒ|_n^|sŸdStj    ƒ}|jƒ||_
ti||6ƒ|_t|jƒ|_||j|<t j d|||fƒdS(Nis/¸üÐÂBOSS¹Ø×¢¼Ç¼ playerid=%s,bossid=%s,isAdd=%s( RìRât
RecordDataR>tcleartstrRtDataLentPyGameDataStructttagDBPyBossAttentiontPlayerIDRR(RítplayeridRÏRétbossAttentionDatat
recordDictt bossAttention((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRæ…s*  
 
     cCsÊtj|ƒrdS|jj|jƒƒ}|s5dSt|jƒ}tjƒ}g|_    xH|j
ƒD]:\}}tj ƒ}||_ ||_ |j    j|ƒqfWt|j    ƒ|_tj||ƒdS(N(RsRtRìR;RçRâRðRcttagGCBossAttentionInfotBossListRÄttagGCBossAttentionRgtAddStateR=RRnRuRv(RíRwt attentionDatat bttentionDicttpackDataRÏtaddStateR4((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR–¢s               cCskd}d}d}x1|jjƒD] }|d7}||jƒ7}q"Wtjd|ƒtj||ƒ|S(NR¥iisSaveBossAttention cnt :%s(RìRÇt    getBufferRRtCommFunct
WriteDWORD(RítsavaDatatcntDatatcntRÿ((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt GetSaveData·s
cCsºtj||ƒ\}}tjd|ƒi|_xt|ƒD]s}tjƒ}|jƒ||j    |||ƒ7}|j
}t t |j ƒƒtkr¨||j|<q?|jƒq?W|S(NsLoadBossAttention cnt :%s(Rt    ReadDWORDRRRìR€RôRõRñtreadDataRöttypeRâRðtlist(RítdatastpostdataslenRt_tdataR®((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytLoadPyGameDataÃs     
    (t__name__t
__module__RîRïRæR–R    R(((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRë|s                      cCs[tjddƒ}tjtjƒd}||krW|s>tStjdƒ}||kStS(Nt    BossShuntii(RR¦RRt Def_ServerDayRtGetFuncEvalCfgtFalse(R%tbossShuntMaxServerDayt openServerDaytbossShuntMapIDList((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR×s 
cCsB|\}}}||f}|tj|<tjtjtjƒdS(N(R0R RRžR]RŸ(RR R%R8tshuntPlayerDictR+((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytMapServer_WorldBossShuntInfoâs
  c Csâtjs dS|jƒ}t}xtjjƒD]Œ\}}|\}}xq|jƒD]c\}}|\}    }
} ||
krqTn||d<t}tjd|||    ||
| |fƒqTWq/W|rÞtjt    j
tjƒndS(NisbBoss·ÖÁ÷Íæ¼Ò¶ÓÎé±ä¸ü:mapID=%s,lineID=%s,npcID=%s,playerID=%s,teamID=%s,relatedTick=%s,updTeamID=%s( R0R t    GetTeamIDRRÄRRRRžR]RŸ( Rwt    updTeamIDt isNeedSyncMapR+RR%R8R®t    shuntInfoR°tteamIDt relatedTick((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerTeamChangeês"       
    %c    Csá||f}|tjkrdStj|}g}xM|jƒD]?\}}|d}||kr?|j|ƒ|j|ƒq?q?W|s›tjj|ƒn|rÝtjtjtjƒtj    d||||tjfƒndS(NisP    Çå³ýbossÏß··ÖÁ÷Íæ¼Ò: mapID=%s,lineID=%s,bossID=%s,removePlayerIDList=%s, %s(
R0R RÄR>R=RRžR]RŸR(    R%R8RR+RtremovePlayerIDListR®R"R°((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR6ÿs"  
      c CsOtjrK|ddkrKtjtjtjƒtdtjƒgt_n|ddkr_dSd}t    }x¾tj
j ƒD]­\}}|\}}xy|j ƒD]k\}}    |    \}
} } | s || |krØq nt }|j |ƒtjd|||
|| fƒq W|s{tj
j |ƒq{q{W|rKtjtjtj
ƒndS(Niii
i ¿sFBoss·ÖÁ÷ÒÆ³ý³¬Ê±Íæ¼Ò:mapID=%s,lineID=%s,npcID=%s,playerID=%s,teamID=%s(R0R?RRžR]R¡R:R—RRR RÄRR>RRŸ( R.R t    ProceTimeR!R+RR%R8R®R"R°R#R$((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR~s,   $c
Cstjs dS|jƒ}|jƒ}|jƒ}|jƒ}t}xŸtjjƒD]Ž\}}|\}}    ||kr‰||    kr‰qSn||krSt}|j    |ƒt
j d||    ||fƒ|sátjj    |ƒqáqSqSW|rt
j t jtjƒndS(NsJÇÐÍ¼ÒÆ³ýÆäËûµØÍ¼Ïß·boss·ÖÁ÷Íæ¼Ò: mapID=%s,lineID=%s,playerID=%s,teamID=%s(R0R RRçR‘tGetFBIDRRÄRR>RRRžR]RŸ(
RwR#R®t playerMapIDt playerLineIDR!R+RR%R8((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerChangeMap3s(           cCsU|stjjƒ}ntjƒ}|jƒg|_x]|D]U}tjƒ}||_tjj    |gƒ|_
t |j
ƒ|_ |jj |ƒq>Wt |jƒ|_|s.tjƒ}x“t|jƒƒD]Y}|j|ƒ}|dksÎ|jƒ rqÎntj|ƒrqÎntj||ƒqÎWn#tj|ƒrAdStj||ƒdS(N(R0R:tkeysRcttagGCBossShuntLineStateInfotCleartBossLineStateInfottagGCBossShuntLineStateRgR;t DeadLineListRt DeadLineCountR=RCRRoR€RpRqRRrRsRtRuRv(RwRxtbossShuntLineInfoRt bossLineStateRzR{((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR—Os2 
           cCsBtjƒ}|jtjtjƒ}|s<tjdƒdS|jtjƒ}|s`t    ƒ}n|swtjdƒdSt
j t
j ƒ}|||}t
j t
j |ƒ|||krÓtjddiƒ}g}x<|jƒD].\}}    |    d krqân|t|ƒ7}qâWtjd|ƒg}
xttjƒD]n\} } | \} }}| |krhq;nt| ƒ}|r€q;nd}| ||gtj| <|
j| ƒq;Wtjd|
ƒttjƒƒandtjdƒ}xR|D]J}||d    }||ko|knrétjdd
|gƒPqéqéWtƒdS( Ns Ôö¼Óboss¸´»îµã »î¶¯Î´¿ªÆôs" Ôö¼Óboss¸´»îµã Ã»ÓÐ×ܵãÊý£¡£¡£¡£¡tKillBossCntLimitiiscanRebornBossIDList=%ss$ boss¸´»î»î¶¯ ÖØÉúboss bossIDList=%stBossRebornNotifyidt BossFHPoint1(ii(RRORSRQR˜R]R™Rt Def_WorldKey_BossRebornNeedPointtSetBossRebornNeedPointRRtDef_BossRebornPointR
RRRÄR t    enumerateR0R1RR=RRtg_lastBossRebornTimeRst WorldNotifyRš(taddPointR›Rœt
totalPointtcurPointtupdPointtkillBossCntLimitDicttcanRebornBossIDListtbidlisttbkeyt
bossIDListR{R4RR(R3R'tneedNotifyPointPerListtpointPertnPoint((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytAddBossRebornPointqsV        cCs¤tjtjdƒtjdƒ}tgtjjƒD]}||kr5d^q5ƒ}t    tj
ddƒƒ}tjtj |ƒt j d|ƒtƒtƒdS(NitServerActivePlayerCntiis;    boss¸´»î»î¶¯¿ªÆôʱÉèÖÃ×òÈÕ»îÔ¾ÈËÊýyesterdayPlayerCnt=%s(RR
R:RR¦RR0tg_yesterdayPlayerLVDictRÇRâtGetFuncCompileCfgtDef_BRServerPlayerCntRRR9Rš(RÐtlvtyesterdayPlayerCnttserverActivePlayerCnt((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytResetBossRebornPoint§s4c    Csùtjdƒ}tjddƒ}tjtjƒ}t|ƒd}x`t|ƒD]R\}}|dkrndn ||d}||ko“|knrP|}PqPqPW|t|ƒkrÂ|dn||}tjƒj    t
j |ƒ|rõt ƒn|S(NtBossRebornTotalPointiiiiÿÿÿÿ( RRRRRNRR;RRORPRQR8Rš(    tisSyncttotalPointListt playerCntListtBRServerPlayerCntRJR{RtpreCntR?((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR9¶s &
cCsats
dStjddƒ}|t|dkr:dadS|t|kr]tjddƒndS(NR6iiÿÿÿÿit BossFHPoint2(R<RRRsR=(R.tnotifySecondList((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRÉscCstjƒ}tjtjƒ|_tjƒjt    j
ƒ}|sKt ƒ}n||_ tj ƒ}|sÙx“t|jƒƒD]Y}|j|ƒ}|dksy|jƒ r­qyntj|ƒrÂqyntj||ƒqyWn#tj|ƒrìdStj||ƒdS(N(RcttagGCBossRebornPointRRR:tPointRRORSRQR8R9t
TotalPointRoR€RpRqRRrRsRtRuRv(RwRR?RzR{((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRšÕs&       (=RR]RQRuRcRR¬RRÅRôR”RsRR0R†RR<RR*R5R9R7RR    RRRRRTRARRRRŒRRR“RR¢R¾RÔRÉR×RRlRêtobjectRëRRR%R6R~R+R—RJRRRR9RRš(((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt<module> sr                         ,                                         2    /                          .    +                       [                         "    6