cehua_wcy
2018-08-27 c6f03d29b8c78ea2298276ddb808bd2289baa9b3
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
127
128
129
130
131
ËÊ{[c@slddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    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<d-„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
    cCs†tƒtƒtdƒrItjtjtjƒtjtj    tj
ƒnt j ddƒ}t |ƒd}tjtj||ƒdS(NitDogzFBRefreshCfgi(RR“RRtSendCommMapServerMsgR]t#Def_Notify_WorldKey_BossShuntPlayerR0tg_bossShuntPlayerInfot%Def_Notify_WorldKey_BossShuntDeadLineR:Rt
GetFuncCfgt__GetBossOnlineHeroCntRˆt%Def_Notify_WorldKey_BossOnlineHeroCnt(Rt    onlineCnt((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R£R]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ÔÚÏßÈËÊýͳ¼ÆR¦iis#    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      $%  $%cCstjd|ƒ}|sdSt|ƒ\}}| sYt||ƒd||jƒkrh|}d}n1||jƒkr‰|}d}n|}|d7}|d|}tjtj    ||ƒ|tj
ddƒkrðt j tj ||ƒnt jd||||fƒdS(    s ÉèÖüÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýtBOSSInfoNidiiRžisiÉèÖüÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊý Change:bossid=%s, beforeOnlineCnt = %s, newOnlieCnt = %s, unUpdataCnt=%s(RtGetIpyGameDataR¤tabst
GetDiffPertGetNoUpdataCntRR
R]t*Def_Notify_WorldKey_GameWorldBossOnlineCntR£RRˆR¥R(RÒtonlieCntRŠtbeforeOnlineCntt unUpdataCntt newOnlieCnttnewNum((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRÌ=s$+        
cCs5tjtj|ƒ}|d|d}}||fS(s »ñÈ¡¼ÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýid(RRR]RÝ(RÒt    beforeNumRÞRà((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR¤VscCsƒ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.pyR\scCstjtj|ƒS(s»ñÈ¡bossË¢ÐÂʱ¼ä(RRRå(RÒ((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRliscCsJtjƒj|ƒ}|j}|j}tjƒj|jƒ||ƒdS(N(    RRotGetPlayerByIndexRgtIsAddR”R•tUpdateBossAttentiont GetPlayerID(RJt
clientDataR RwRtisAdd((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnAttentionBossvs
        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ïtdatastpostdataslenR
t_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.pyR6s"  
      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¡R!RéR‘tGetFBIDRRÇRR>RRRŸR]R (
RwR%R²t playerMapIDt playerLineIDR#R+RR%R8((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerChangeMap9s(           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—Us2 
           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ÇRt    enumerateR0R1RR=RRtg_lastBossRebornTimeRst WorldNotifyRš(taddPointR›Rœt
totalPointtcurPointtupdPointtkillBossCntLimitDicttcanRebornBossIDListtbidlisttbkeyt
bossIDListR{R4RR(R3R'tneedNotifyPointPerListtpointPertnPoint((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytAddBossRebornPointwsV        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_BRServerPlayerCntRRR;Rš(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RRRRPRR=RRORPRQR:Rš(    tisSyncttotalPointListt playerCntListtBRServerPlayerCntRJR{R
tpreCntRA((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR;¼s &
cCsats
dStjddƒ}|t|dkr:dadS|t|kr]tjddƒndS(NR8iiÿÿÿÿ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<tPointRRORSRQR:R;t
TotalPointRoR€RpRqRRrRsRtRuRv(RwRRARzR{((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRšÛs&       c
Csf|\}}|r'tjƒj|ƒnd}|r>| r>dS|sHdStjƒ}g|_xH|jƒD]:\}}tjƒ}||_    ||_
|jj |ƒqjWt |jƒ|_ |s?tjƒ}x“t|jƒƒD]Y}    |j|    ƒ}|dksß|jƒ rqßntj|ƒr(qßntj||ƒqßWn#tj|ƒrRdStj||ƒdS(N(RRotFindPlayerByIDRRcttagGCDogzNPCRefreshTimetInfoListRÇttagDogzTimeInfoObjtNPCIDRmR=RtCntR€RpRqRrRsRtRuRv(
RR²trefreshTimeDictRwRtnpcidtrTimettimeInfoRzR{((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytSync_DogzNPCRefreshTimeòs6 !                (>RR]RQRuRcRR°RRÈRöR”RsRR0R†RR>RR*R5R9R7RR    RRRRRTRARRRRŒRRR“RR§RÂR×RÌR¤RRlRìtobjectRíRR R'R6R~R-R—RLRTRR;RRšRj(((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt<module> st                         ,                                         2    /                         .    +                       [                         "    6