hxp
2018-12-21 4e328db29a24481792019ef364db1e70fe65f497
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
¬„\c@sÏddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZdad„Zd„Zddd„Zd„Zd„Zd„Zd    „Zd
„Zd „Zd „Zd „Zd„Zd„Zdd„Z d„Z!dgd„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„Z0d e1fd!„ƒYZ2d"„Z3d#„Z4d$„Z5d%„Z6d&„Z7d'„Z8dgd(„Z9d)„Z:d*„Z;e<d+„Z=d,„Z>dd-„Z?dd.„Z@d/„ZAd0„ZBd1„ZCd2„ZDd3„ZEd4„ZFd5„ZGdS(6iÿÿÿÿ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&       cCsÅt|ƒdkrdS|d}|dkr0dS|d}|d}|d}t|ƒdkrj|dnt}t|ƒdkrŒ|dnd}t|ƒ}t|ƒ}    tjd||||||    fƒ|rë|     rëtjdƒdStt    j    ƒƒ}
t
|ƒ} t | |
||ƒ|rYt | ƒ} t | | dƒtjd    || fƒn|r–t|dƒt||
ƒtd|gƒt|ƒntjd
dƒ} || krÁ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=%stFairyGrabBossID(RtTruetNonetIsMapNeedBossShuntt __GetIsAliveRRRtintttimeRt__SetKillRecordRR    t __SetIsAlivetSetBossRefreshTimet Sync_BossInfotSendMapServerBossKilledCntt IpyGameDataPYtGetFuncEvalCfgtOnFamilyKillHorsePetRobBoss(tmsgListttickRtkillPlayerNamet    hurtValuet isAddKillCnttisNotifytmapIDtisMapNeedShunttisAlivet
killedTimeRt befKilledCntthorsePetRobBossIDList((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoGameWorldBossOnKilled`sB
 
 
 
""               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((R3sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__UpdateBossRefreshLists  c    CsXt|ƒdkrdS|d}|d}t|ƒdkrF|dnd}t|ƒdkrh|dnd}tjd|||||fƒ|dkrždStjdƒ}||k}t|ƒ}|sÞt|||ƒn|rút||||ƒn|t    |ƒkr,t
||ƒt d|gƒn|rT|t j krTt j j|ƒndS(Niiiis?ÊÀ½çboss״̬±ä¸ü: mapID=%s,lineID=%s,bossID=%s,state=%s,tick=%st    BossShunt(RRRRR R!RtDoRemoveBossShuntPlayerByNPCIDt__UpdBossLineStateRRRR5tg_familyOwnerBossInfotpop(    R#R$RR+R)tlineIDtbossShuntMapIDListtisBossShuntMapR*((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnGameWorldBossStateChangeœs,
 
""     cCs™|dkrdStjj|iƒ}|j|ƒ|kr>dS|||<|tj|<|s_dS|tjkrtjj|ƒntjdtjƒdS(Ns    ·ÖÁ÷BossÏß·״̬±ä¸ü: %s(RR5tg_bossShuntLineStatetgettg_bossShuntStateChangeBosstappendRR(RR@R+R*tbossLineStateDict((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR=¾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(RU((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(RRWt GetDictByKeyRYRZ(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__GetKillRecordtsplitRGRtjoint SetStrValue3t    SetValue2(RUR,t
playerNameR&t
killRecordtkillRecordList((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRs 
  cCs
|jƒS(N(t GetStrValue3(RU((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR\scCs(tj}tjƒ}|j|ƒ}|S(N(t ShareDefinet!Def_UniversalGameRecType_BossInfoRtGetUniversalRecMgrt GetTypeList(trecTypetuniversalRecMgrRP((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRIs     cCsdS(N((R((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR"scCs/tjƒj|ƒ}|j}t||ƒdS(N(RtGetPlayerManagertGetPlayerByIndext
BossIDListR(RRt
clientDataR$t    curPlayert
bossIDList((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnQueryBossInfo>s     c 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| ƒ}|dks\|jƒ rq\ntj |ƒr¥q\nt!j"||ƒq\Wn#tj |ƒrÏdSt!j"||ƒdS(Ni(#RRtChPyNetSendPackttagGCGameWorldBossInfoRIt BossInfoListRJRKRLRMttagBossInfoObjtBossIDRtIsAliveR\t
KillRecordRt    RecordLent    GetValue2t__GetBossRefreshTimeR1t RefreshSecondt    RefreshCDRGtBossCntRRktGetActivePlayerCounttGetActivePlayerAtRt    GetInitOKt PlayerControltGetIsTJGt NetPackCommont SendFakePack( RotsyncBOSSIDListR3R9RPRRRSRt bossInfoObjR,R8t playerManagerti((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRHsF                     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(NR0cstd|dˆ|dƒS(Niii(R1(R2(R3(sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR4Šsiis>    Í¨ÖªMapServerÖØÉú: bossID=%s,killedTime=%s,rebornSecond=%s( RtSetWorldDictKeyRYtTYPE_WorldBossProcessTickRRtDoCheckWorldBossShuntInfotBossRebornWorldNotifyR5R6txrangeR tIPY_DatatGetBOSSInfoCounttGetBOSSInfoByIndextGetNPCIDRRzR{RGR7RR1t PlayerGeTuitGeTuiBossRebornRtSendMapServerMsgExRet'Def_Notify_WorldKey_GameWorldBossRebornRRR( R$R‰tipyDataRRR,R8R†R9R+t rebornSecond((R3sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytDoCheckWorldBossReborn{s@ 
                 cCstjtj|ƒsdSttjƒƒ}xktjD]`}|\}}}t|ƒ}|rbq5nt    d|||ƒ}|s…q5nt
j ||ƒq5WdS(Ni( RRŠRYtTYPE_WorldBossGeTuiTickRRR5R6RR1R“t    GeTuiBoss(R$R3R9RR,R8R+R˜((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytProcessBossGeTuiªs cCsit|ƒ}|jƒ}t|ƒ}ttjƒƒ}td|||ƒ}t|ƒ}|ph|dkS(Ni(RRzR{RRR1R(RRR,R8R3R˜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’RtGetMapIDRYtDef_FBMapID_SealDemonRR•ReR–(R‰R—RR+R)((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt__SendMapServerAliveBossËs   cCs|t|ƒtjƒj|ƒtdƒr6t|ƒntjƒ}|jt    j
t j ƒ}|rnt |ƒnt|ƒdS(Ni(Rt PyDataManagertGetBossAttentionManagertNotifyBossAttentionInfoRtSync_BossShuntLineInfoRRWR[RYt!Def_WorldKey_OperationActionStateRetOperationActionName_BossReborntSync_BossRebornPointtSync_DogzNPCRefreshTime(Rot    gameWorldtstate((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt OnPlayerLoginÚs
 
cCs¨tƒtƒtdƒrItjtjtjƒtjtj    tj
ƒnt j ddƒ}t |ƒd}tjtj||ƒtjr¤tjtjtjƒndS(NitDogzFBRefreshCfgi(RR RRtSendCommMapServerMsgRet#Def_Notify_WorldKey_BossShuntPlayerR5tg_bossShuntPlayerInfot&Def_Notify_WorldKey_BossShuntLineStateRDR t
GetFuncCfgt__GetBossOnlineHeroCntR•t%Def_Notify_WorldKey_BossOnlineHeroCntt"g_familyKillHorsePetRobBossCntDictt0Def_Notify_WorldKey_FamilyKillHorsePetRobBossCnt(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ÿÿÿÿR0cSs|dS(Ni((R2((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR4streverseicSs|dS(Ni((R2((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR4st(RRRR R±Ret-Def_UniversalGameRecType_BossDropGoodItemInfoRgRhRKRRRLtGetTimetDeleteRŽt    GetValue5RGtsortedRR7tPlayerUniversalGameRectMapServer_UniversalGameRecR(R#R$tplayerIDt
killerNameR)tnpcIDtitemIDtuserDatat weightValuet maxRecordCntRiRjt
recordListR3t    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ŠRYtTYPE_WorldBossOnlineCntTickRRŽR RRR‘R’tGetRefreshTimet
GetLVLimitRkRR€RRR‚RƒtGetLVtitemsREt MergePlayertGetMergeServerOnlinePlayerInfotvaluestDef_MSOLPlayer_LVtSetBossOnlineHeroCnt(R$tbossRebornDictR‰R—RtrefreshTimeStrt playerCntDictRˆt
findPlayertfindLVtbossidtlvLimittmergeServerOnlinePlayerDictt
playerInfot curOnlineCnt((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytCalcGameWorldBossOnlineCnt+sB      $%  $%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
Ret*Def_Notify_WorldKey_GameWorldBossOnlineCntR±RR•R³R(RâtonlieCntR—tbeforeOnlineCntt unUpdataCntt newOnlieCnttnewNum((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRÜVs$+        
cCs5tjtj|ƒ}|d|d}}||fS(s »ñÈ¡¼ÆËãbossË¢ÐÂʱ¼äÓõÄÔÚÏßÈËÊýid(RRReRí(Rât    beforeNumRîRð((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR²osc        Cs&tjd|ƒ}|sdSt|ƒd}|jƒ}tjtjƒ}|dkr½|r½t|ƒdkr½tgtj    j
ƒD]0}|d|ko¦|dknrd^qƒ}ntj dƒ}t |j ƒƒ}tjtj||ƒt|||ƒtjd||||fƒdS(sÉèÖÃbossË¢ÐÂʱ¼äRèNiiitFirstDayActivePlayerCntsJ    ÉèÖÃbossË¢ÐÂʱ¼ä BossID=%s,onlineCnt=%s,yesterdayCnt=%s,refreshTime=%s(R RéR²RÕRRt Def_ServerDayRR5tg_yesterdayPlayerLVDictRÚR±tevalRÔR
tDef_BossRefreshTimeR:RR(    RâR,R—R¶tLVLimitt openServerDaytlvt yesterdayCntR8((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRus $OcCstjtj|ƒS(s»ñÈ¡bossË¢ÐÂʱ¼ä(RRRø(Râ((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR{ˆscCsJtjƒj|ƒ}|j}|j}tjƒj|jƒ||ƒdS(N(    RRkRlRvtIsAddR¡R¢tUpdateBossAttentiont GetPlayerID(RRRnR$RoRtisAdd((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnAttentionBoss•s
        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( RR÷t
RecordDataR?tcleartstrRtDataLentPyGameDataStructttagDBPyBossAttentiontPlayerIDRR(RtplayeridRâRtbossAttentionDatat
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(R‚RƒRRERÿR÷RRrttagGCBossAttentionInfotBossListR×ttagGCBossAttentionRvtAddStateRGRR~R„R…(RRot attentionDatat bttentionDicttpackDataRâtaddStateR9((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(RRÚt    getBufferRRtCommFunct
WriteDWORD(RtsavaDatatcntDatatcntR((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    ReadDWORDRRRRŽR R RtreadDataR ttypeR÷Rtlist(RtdatastpostdataslenRt_tdataRÂ((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytLoadPyGameDataès     
    (t__name__t
__module__RRRþR£R R*(((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR¡s                      cCs[tjddƒ}tjtjƒd}||krW|s>tStjdƒ}||kStS(NR;ii(R R±RRRõRR!tFalse(R)tbossShuntMaxServerDayRúRA((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRüs 
cCsB|\}}}||f}|tj|<tjtjtjƒdS(N(R5R¯RR­ReR®(R#R$R)R@tshuntPlayerDictR0((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytMapServer_WorldBossShuntInfos
  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( R5R¯t    GetTeamIDR-R×RRRR­ReR®( Rot    updTeamIDt isNeedSyncMapR0R/R)R@RÂt    shuntInfoRÄtteamIDt relatedTick((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerTeamChanges"       
    %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(
R5R¯R×R?RGRR­ReR®R(    R)R@RR0R/tremovePlayerIDListRÂR4RÄ((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR<$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(R5RFRR­ReR°RDR¤RR-R¯R×RR?RR®( R3R$t    ProceTimeR3R0R/R)R@RÂR4RÄR5R6((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(R5R¯R1RÿRžtGetFBIDR-R×RR?RRR­ReR®(
RoR5RÂt playerMapIDt playerLineIDR3R0R/R)R@((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnPlayerChangeMapXs(           c Cs§|stjjƒ}ntjƒ}|jƒg|_x¯|D]§}tjj|iƒ}g}g}x4|jƒD]&\}}|j    |ƒ|j    |ƒqrWtj
ƒ}    ||    _ ||    _ ||    _ t|    j ƒ|    _|jj    |    ƒq>Wt|jƒ|_|s€tjƒ}
x“t|
jƒƒD]Y} |
j| ƒ}|dks |jƒ rTq ntj|ƒriq ntj||ƒq Wn#tj|ƒr“dStj||ƒdS(N(R5RDtkeysRrttagGCBossShuntLineStateInfotCleartBossLineStateInfoRER×RGttagGCBossShuntLineStateRvt
LineIDListt    StateListRt    LineCountRKRRkRŽRR€RRR‚RƒR„R…( RoR†tbossShuntLineInfoRRHt
lineIDListt    stateListR@Rªt bossLineStateRˆR‰((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR¤ts@ 
                    cs™tjƒ}|jtjtjƒ}|s<tjdƒdS|jtjƒ}|s`t    ƒ}n|swtjdƒdSt
j t
j ƒ}|||}t
j t
j |ƒ|||kr*t
j t
jƒ}t
j t
j|dƒtjddiƒ}g}xH|jƒD]:\}    }
|
tjtjgkr5q n|t|    ƒ7}q Wtjd|ƒg} xttjƒD]n\} } | \}}}||krqpnt|ƒ}|rµqpnd}|||gtj| <| j|ƒqpWttjƒƒ‰tjjd‡fd†ƒtjd    | ƒˆandtjd
ƒ}xR|D]J}||d }||kok|knr@tjdd |gƒPq@q@Wt ƒdS( Ns Ôö¼Óboss¸´»îµã »î¶¯Î´¿ªÆôs" Ôö¼Óboss¸´»îµã Ã»ÓÐ×ܵãÊý£¡£¡£¡£¡itKillBossCntLimitscanRebornBossIDList=%siR0cstd|dˆ|dƒS(Niii(R1(R2(R3(sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR4Èss$ boss¸´»î»î¶¯ ÖØÉúboss bossIDList=%stBossRebornNotifyidt BossFHPoint1(!RRWR[RYR¥ReR¦Rt Def_WorldKey_BossRebornNeedPointtSetBossRebornNeedPointRRtDef_BossRebornPointR
tDef_BossRebornCntR R!R×tDef_Boss_Func_WorldtDef_Boss_Func_HomeR$t    enumerateR5R6RRGRRR7tg_lastBossRebornTimeR‚t WorldNotifyR§(taddPointR©Rªt
totalPointtcurPointtupdPointt    rebornCnttkillBossCntLimitDicttcanRebornBossIDListtbidlisttbkeyRpR‰R9RR,R8R+tneedNotifyPointPerListtpointPertnPoint((R3sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytAddBossRebornPoints^           cCs·tjtjdƒtjtjdƒtjdƒ}tgtjj    ƒD]}||krHd^qHƒ}t
tj ddƒƒ}tjtj |ƒt jd|ƒtƒtƒdS(NitServerActivePlayerCntiis;    boss¸´»î»î¶¯¿ªÆôʱÉèÖÃ×òÈÕ»îÔ¾ÈËÊýyesterdayPlayerCnt=%s(RR
RORPR R±RR5RöRÚR÷tGetFuncCompileCfgtDef_BRServerPlayerCntRRRNR§(RãRûtyesterdayPlayerCnttserverActivePlayerCnt((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 R!RRReRRSRRWRXRYRMR§(    tisSyncttotalPointListt playerCntListtBRServerPlayerCntRRR‰RtpreCntRW((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRNés &
cCsats
dStjddƒ}|t|dkr:dadS|t|kr]tjddƒndS(NRKiiÿÿÿÿit BossFHPoint2(RTR R!R‚RU(R3tnotifySecondList((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyRüscCstjƒ}tjtjƒ|_tjƒjt    j
ƒ}|sKt ƒ}n||_ tjtj ƒ|_tjƒ}|sîx“t|jƒƒD]Y}|j|ƒ}|dksŽ|jƒ rÂqŽntj|ƒr×qŽntj||ƒqŽWn#tj|ƒrdStj||ƒdS(N(RrttagGCBossRebornPointRRROtPointRRWR[RYRMRNt
TotalPointRPt    RebornCntRkRŽRR€RRR‚RƒR„R…(RoRRWRˆR‰((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR§s(       c Csftj}|sdSttjƒƒ}tjƒ}g|_xk|jƒD]]\}}|\}}td|||ƒ}tj    ƒ}    ||    _
||    _ |jj |    ƒqGWt |jƒ|_|s?tjƒ}
x“t|
jƒƒD]Y} |
j| ƒ}|dksß|jƒ rqßntj|ƒr(qßntj||ƒqßWn#tj|ƒrRdStj||ƒdS(Ni(R5tg_dogzNPCRefreshTimeDictRRRrttagGCDogzNPCRefreshTimetInfoListR×R1ttagDogzTimeInfoObjtNPCIDR|RGRtCntRRkRŽRR€RRR‚RƒR„R…( RotrefreshTimeDictR3RtnpcidttimeinfotlastRefreshTimet nextNeedTimet
remainTimettimeInfoRˆR‰((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR¨ s6                    cCsŠtjƒj|ƒ}|s0tjd|ƒdS|jƒ}tjj|dƒdtj|<tjt    j
tjƒtj dtjƒdS(Ns!ÕÒ²»µ½¸ÃÏÉÃËÃû: killFamilyName=%siisÆï³èÕù¶áÏÉÃË»÷ɱBossÊýͳ¼Æ: %s( RtGetFamilyManagertFindFamilyByNametErrLogtGetIDR5R´RER•ReRµR(tkillFamilyNametfamilytfamilyID((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyR"Bs  cCs,ttjddƒƒ}tjtjƒ}tjtj    ƒ}t
|||ƒ}d}t j ƒ}x‘t |jƒƒD]}}|j|ƒ}|dkst|jƒ r¨qtntj|ƒr½qtn|jƒsÏqtn|jƒ|krçqtn|d7}qtWt jtj|ƒt jd|||||fƒdS(NRiiis]ͬ²½Æï³èÕù¶áÓÐЧ²ÎÓëÈËÊý: playerCount=%s,minLV=%s,funcLimitLV=%s,curWorldLV=%s,diffWorldLV=%s(RR R±R‚tGetFuncLimitLVRetGameFuncID_HorsePetRobBossRRt"Def_Notify_WorldKey_WorldAverageLvR1RRkRŽRR€RRRƒt GetFamilyIDRÖR•t.Def_Notify_WorldKey_HorsePetRobBossPlayerCountR(t diffWorldLVt funcLimitLVt
curWorldLVtminLVt playerCountRˆR‰Rà((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt(SyncMapServer_HorsePetRobBossPlayerCountPs*      cCs#it_tjtjtjƒdS(N(R5R´RR•ReRµ(tisOpen((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnHorsePetRobBossActionChangeos    c
CsGtjdt|ƒƒt|tƒ r=t|ƒdkr=dS|\}}|tj|<tjdtjƒtj    ddƒ}x!|D]}|tjkrƒdSqƒWtj    ddƒ}g}x[tjj
ƒD]J}xA|j
ƒD]3}x*|D]"}    |    |krè|j |    ƒqèqèWqÛWqÈWtjd|ƒt j d||ƒit_dS(NsÆï³èÕù¶ábossÉËÑªÍæ¼Òͬ²½: %sisÉËÑªÍæ¼Ò»ã×Ü: %sRis+½áËãÆï³èÕù¶á²ÎÓë½±Íæ¼Ò: joinPlayerIDList=%stFairyGrabBossJoin(RRR    t
isinstanceR$RR5t!g_horsePetRobBossHurtPlayerIDInfoR R!RÚRGtPlayerCompensationt SendMailByKey(
tmsgInfoRtfamilyHurtPlayerIDListDictR.t
needBossIDtjoinAwardItemListtjoinPlayerIDListtfamilyHurtPlayerIDDictt playerIDListRÂ((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt#MapServer_HorsePetRobBossHurtPlayerys*"         cCs't|tƒsdStjj|ƒdS(N(R—tdictR5R>tupdate(R›((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytMapServer_FamilyOwnerBossInfo—sc Cs tjƒj|ƒ}tjƒ}g|_x¸tjjƒD]§\}}|\}}}    }
tj    ƒ}||_
|t j |_ |t j |_|t j |_|t j |_|    |_|
|_t|jƒ|_|jj|ƒq:Wt|jƒ|_tj||ƒdS(N(RRkRlRrttagGCAllFamilyBossHurtInfoListt NPCHurtInfoR5R>R×ttagGCFamilyBossHurtInfoRyRetDef_PerPointValuetCurHPtCurHPExtMaxHPtMaxHPExtFamilyIDt
FamilyNameRtNameLenRGtNPCCountR„R…( RRRnR$RothurtPackRÄthurtInfotcurHPtmaxHPt firstFamilyIDtfirstFamilyName((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnQueryAllFamilyBossHurt¨s$                  cCs·tjƒj|ƒ}|jƒ}|j}|jƒ}|dkrFdS|j|ƒ}|dkredS|jƒt    j
krŽtj d|ƒdSt j |jƒd|jƒ|gƒdS(NsÆÕͨ³ÉÔ±ÎÞ·¨ÕÙ¼¯£¡tFairyGrabBossHelp(RRkRlRÿRyt    GetFamilyRt
FindMembert GetFamilyLVtIPY_GameServert    fmlMemberRR‚t FamilyNotifyR…tGetName(RRRnR$RoRÂRÄt    curFamilyt    curMember((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pytOnCallupFamilyMemberToBossÄs        %(HRReRYR„RrRRÀR™R RØR R¡R‚RR5R“R½RRTRR/R:RCR=RR    RRRRR\RIRRqRRR™RœRR R«R·RÒRçRÜR²RR{RtobjectRRR0R7R<RŒR=R¤RbRhR-RNRR§R¨R"R“R•R¢R¥R¸RÃ(((sP.\ServerPython\CoreServerGroup\GameServer\Script\GameWorldLogic\GameWorldBoss.pyt<module> sˆ                           /     "                                         
3    /                         .    +                      [                         )    ;           "