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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
õœ½[c@sÍddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZedƒ\ZZZZZZedƒ\ZZZZZZ Z!Z"Z#Z$Z%Z&Z'Z(Z)dZ*dZ+dZ,dZ-dZ.d    Z/d
Z0d Z1d Z2d Z3dZ4ia5ia6ia7ia8ia9ia:ia;ga<d„Z=d„Z>d„Z?d„Z@d„ZAd„ZBd„ZCd„ZDd„ZEd„ZFd„ZGd„ZHd„ZIeJd„ZKeLd„ZMd„ZNd„ZOd „ZPd!„ZQd"„ZRd#„ZSd$„ZTd%„ZUd&„ZVd'„ZWd(„ZXd)„ZYd*„ZZd+„Z[d,„Z\d-„Z]eLd.„Z^d/„Z_d0„Z`d1„Zad2„Zbd3„Zcd4„Zdd5„ZeeLd6d7„Zfd8„Zgd9„Zhd:„Zid;„Zjd<„Zkd=„Zld>„Zmd?„Znd@„ZodA„ZpdB„ZqdC„ZrdD„ZsdE„ZtdF„ZudG„ZvdH„ZwdS(IiÿÿÿÿNiisFBD_CountryFightpower_%st FBD_BossSteptFBD_KillBossCntsBossHurt_%s_%s_%ssBossHPPerMark_%s_%ssFBD_AllHurtValue_%ssFBD_AllHurtPoint_%stFBD_LastRefreshBossTicktFBD_EndDelayStartTimetFBPlayerDict_CountrytFBPlayerDict_GongXuncCstjƒrdSt|ƒdS(N(t    GameWorldt IsMergeServertSync_MergeBossAwardRecord(t    curPlayer((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytDoMergeBossPlayerLoginns 
cCs tjdƒS(Nt MergeBoss_Cfg(t ReadChConfigtGetEvalChConfig(((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytGetMergeBossCfgwscCsÄtjƒstjdƒdStjƒjtjƒ}||krVtjd|ƒdS|tjkrÀtj    dƒtj
ƒ}|j ƒ}|t kr°tj    dƒt |ƒntj|ƒndS(Ns"·Ç¿ç·þ²»´¦Àí¿ç·þbossÕ½³¡×´Ì¬±ä¸ü£¡s1OnMergeBossStateChange ÒÑÊǸÃÖµ£¬²»´¦Àí£¡value=%ss ¿ªÊ¼¹Ø±Õ¸±±¾!sÕ½¶·½áËãÇ¿ÖÆ¹Ø±Õ¸±±¾£¬Ç¿ÖƽáËã!(RRtDebugLogt GetGameWorldtGetGameWorldDictByKeyt ShareDefinetDef_Notify_WorldKey_MergeBosstChConfigtDef_Action_ClosetLogt    GetGameFBt    GetFBSteptFB_State_Fightt__MergeBossOvertGameWorldProcesstCloseFB(tvaluetticktcurStatetgameFBtfbStep((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnMergeBossStateChange~s          cCs3tjƒjtjƒ}|s"tStjdƒtS(Ns×¼±¸¿ªÆô¿ç·þboss¸±±¾£¡(RRRRRtFalseRtTrue(RR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyt    OnCanOpen›s
 cCst|ƒdS(N(t__OnOpen(R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnOpenFB¦s
cCs(tjdƒtƒtjt|ƒdS(NsMergeBoss __OnOpen ...(RRt __ResetFBDatatFBCommont    SetFBSteptFB_State_MapPrepare(R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR&®s  cCs(tjdƒtƒtjt|ƒdS(NsMergeBoss __OnClose ...(RRR(R)R*t FB_State_Over(R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyt    __OnCloseÅs cCsktjdƒiaiaiaiaiaiaiaga    tj
ƒ}|j ƒ|j ƒt jƒdS(NsMergeBoss __ResetFBData ...(RRtg_lastHurtPlayerNameDicttg_lastHurtPlayerIDDicttg_bossFactionHurtDictt g_curBossDicttg_buffOwnerNPCDicttg_bossBuffCntDicttg_factionBuffDicttg_joinPlayerIDListRtClearGameFBDicttClearAllPlayerGameFBDictR)t
ClearFBNPC(R ((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR(Îs
 
 
 
cCstS(N(R$(R    tmapIDtlineIDR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnEnterFBEventïscCsKtjƒjƒtjkr"tjStjƒjƒtjkrDtjStjS(N(RRt GetOpenStatet IPY_GameWorldtfbosOpentcmeNotInFbDefineTimet
fbosClosedt    cmeAccept(taskR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnChangeMapAskös
cCsktjtƒtƒ}t|ƒdkr.dn|d}tj|d|d|ƒ}|jƒ|jƒfS(Niiii(    trandomtchoiceRtDef_EnterPosListtlentGameMaptGetEmptyPlaceInAreatGetPosXtGetPosY(R    R9tlineIdRtenterPostdisttposPoint((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnGetFBEnterPoss"cCstjdƒt||ƒdS(Ns DoEnterFB...(RRt__DoPlayerJoinMergeBoss(R    R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyt    DoEnterFBs  c
Csµ|jƒ}tjƒ}|jƒ}tƒ}|td}|tkrit||td|||ƒnH|t    krŽt||||t
ƒn#|t krgt |t d||jƒdƒ}|jtjd|t
ƒ|j|tƒ}|t}    |dkrG|t|    ƒkrGtjd||ƒt|||    |d|tƒq±tjd|ƒt||ƒnJ|tkr±tjd||jƒƒ|jtjd|tdt
ƒndS(Nièis    ÒÑ´æÔÚÕóÓª£¬ÉèÖÃÕóÓª%sis    ²»´æÔÚÕóÓª£¬·ÖÅäÕóÓª!s&·Ç¿ç·þboss»î¶¯Ê±¼ä½øÈëµØÍ¼...fbStep=%s(t GetPlayerIDRRRRtDef_Time_MapPrepareNotifyR+tEnterFBInPreparetDef_Time_MapPreparetFB_State_MapPrepareNotifyR$RtmaxtDef_Time_Fightt GetFBStepTickt Sync_TimeTickR=t tttFlagTaketGetPlayerGameFBDictByKeyRtDef_CountryInfoRGRtSetPlayerCampInfoR#t__DistributeCountryByEntertFB_State_FreeTimet tttLeaveMaptDef_FBLeaveTime(
R    RtplayerIDR R!t mergeBossCfgtmapPrepareNotifyt
notifyTicktpCountryt countryInfo((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRQs0          %
! $cCs¢|jƒ}|tkr(tj|ƒntjƒ}|\}}}    }
|j|ƒ|j|jƒt|ƒ|jtj    ƒj
ƒƒ|j |
dƒ|j |
dƒt j|    d|    ddƒ} tj|| jƒ| jƒƒtj|||ƒ|rtj||ƒn|jt|ƒ} |r„| |jƒ} t| tjƒ} |jt|| ƒtjd||jƒ| f|ƒntjd|| f|ƒdS(Niiis7ÉèÖÃÍæ¼ÒÕóÓª: country=%s,fightPower=%s,updFightPower=%ss-ÉèÖõôÏßÍæ¼ÒÕóÓª: country=%s,nowFightPower=%s(RSR5tappendRRt
SetFactiontSetPlayerGameFBDictRtSetFBRebornMapIDtGetMaptGetMapIDtSetFBRebornPosXtSetFBRebornPosYRHRItResetPlayerPosRJRKt SkillCommontAddBuffBySkillTypet PlayerControlt
NotifyCodetGetGameFBDictByKeytFBDict_CountryFightpowert GetFightPowertminRtDef_UpperLimit_DWordt SetGameFBDictR(R    tcountryRiRtisAddFightPowerRdR t
buffTypeIDt    notifyMsgt    gatherPostbornPosROt nowFightPowert updFightPower((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR_As0        cCs\t|||jƒdƒ}|jtjd|tƒ|rX|jtjd|tƒndS(Ni(RXRZR[R=t tttWaitStartR$t tttAddUpTime(R    tdownTimeR Rt    notifyEffRg((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRUms
cCst||ƒdS(N(t__DoPlayerExitFB(R    R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytDoExitFB{s cCst||ƒdS(N(R‰(R    R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytDoPlayerLeaveFB„s cCsdS(N((R    R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR‰scCs€tjƒ}|jƒ}|tkr1t|ƒnK|tkrJt|ƒn2|tkrct|ƒn|t    kr|t
|ƒndS(N( RRRR+t__DoLogic_MapPrepareRWt__DoLogic_MapPrepareNotifyRt__DoLogic_FightRat__DoLogic_FreeTime(RR R!((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyt    OnProcess–s          cCsUtjƒ}xBt|jƒƒD].}|j|ƒ}|s@qnt||ƒqWdS(N(RtGetMapCopyPlayerManagertxrangetGetPlayerCounttGetPlayerByIndextDoFBHelp(Rt playManagertitplayer((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyt__Sync_FBPlayerHelp¨s cCs{tjƒ}|jtƒ}tƒt}t|ƒ}i}x´td|dƒD]Ÿ}x[tj    ƒD]M}|d}    |d}
|jt
|    |
|fƒ} | t d|    |
|f<qaW|jt |ƒ} |jt |ƒ} | tj| ||<qNW|j|jƒtƒ}i|d6td6t d6|d6|d6|d    6td
6td 6}tjd t|ƒ|jƒƒtj||ƒdS( Niis%s_%s_%stBossSteptBossInfot BossHurtDictt TotalHurtDicttGongXuntTickt FactionBufft BuffCntDicts DoFBHelp %s(RRRwtFBDict_BossStepRR^RGR’R1tvaluestFBDict_BossCountryHurtR0tFBDict_AllBossCountryHurttFBDict_AllBossCountryHurtPointRtDef_PerPointValueR]RSRR4R3RtstrR)t Notify_FBHelp(R    RR tbossStepRitgroupCnttfactionTotalHurtDictt    factionIDtnpcInfotobjIDtnpcIDt    hurtValuet allHurtValuet allHhurtPointtgongXunthelpDict((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR•¶s*   
 
 cCs}tƒ}|td}|td}t|||ƒ|tjƒjƒ|krVdStjt    j
|ƒtj t |ƒdS(Niè( RRVRTt__PrepareTimeWorldNotifyRRRZR)tSync_Player_TimeTickR=R†R*RW(RRet
mapPrepareRf((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRŒØs    cCs‡tƒ}|td}t||ƒ|tjƒjƒ|krDdStjt|ƒt    |ƒt
|ƒtj t j |tdƒdS(Niè(RRTR¶RRRZR)R*Rt__RefreshNextBosst__DistributeCountryR·R=R\RY(RReRf((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRës     
 
cCsŠtƒ}tjƒ}|jtƒ}|t}|t}|d}|t|ƒksf|t|ƒkr{tjd|ƒdS||d\}}||d}    t    j
||    d|t j ƒ|j t|ƒ|j tdƒ|d}
t|
ƒdkr†t|    ƒdkr†|    d} |
d} t|td||jƒdƒ} | d}ttjdƒƒ}||d\}}tj||ƒndS(Nis"ÕÒ²»µ½boss½×¶Î£¨%s£©¶ÔӦˢÐÂÐÅÏ¢£¡iiÿÿÿÿièi`êtMergeBoss_Notify(RRRRwR¢tDef_BossRefreshMarkListtDef_BossRefreshNPCIDListRGtErrLogtNPCCustomRefresht SetNPCRefreshRtDef_SuperFBBossAngryCountR|tFBDict_KillBossCntRXRYRZtevalR t GetChConfigRutFBNotify(RReR t curBossSteptbossRefreshMarkListtbossRefreshNPCIDListtnextSteptrMarktmaxCntt    npcIDListt bigNPCIDListR°tbigNPCIDt
remainTicktremainMtMergeBoss_NotifyListtmsgMarkt msgParamList((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR¹s0     
 
 
$
$
 
%
c Cs¼tjdƒtjƒ}tjƒ}|jƒ}g}xHt|ƒD]:}|j|ƒ}|seqDn|j|jƒ|gƒqDW|j    dt
ƒt |ƒ}t ƒt }t |ƒ}    tj||    ƒ}
tjd||    fƒtjdt|
ƒƒxvt|    ƒD]h}x_|
|D]S} | |kr-qn|| d}|dkrMqnt||d|||ƒqWqWxEtd|    dƒD]0}|jt|ƒ} tjd|| fƒq„WdS(Ns===¿ªÊ¼·ÖÕóÓª===treverses    µ±Ç°¸±±¾ÈËÊý£º%s£¬ ·ÖΪ%s×és    ·Ö×é½á¹û£º%sis    ×é%s×ÜÕ½Á¦£º%s(RRRR‘R“R’R”RjRytsortR$RGRR^R)t GetGroupListR¨tNoneR_RwRx( RR R–t playerCounttplayerFightPowerListR—R    tmaxCountRiR«tgroupIndexListt playerIndextgTFP((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRº's:         #c    Cs#tjƒ}tƒt}t|ƒ}g}xAtd|dƒD],}|jt|ƒ}|j||gƒq?W|j    ƒtj
dt |ƒƒt|ƒdkr³|dd}nt j d|dƒ}||krêtjd|ƒdStj
d||jƒƒt||||d|ƒdS(Nis    µ±Ç°ËùÓÐÕóÓªÕ½Á¦Ã÷ϸ£º%sis    ·ÖÅäÕóÓª²»´æÔÚ£¡£º%ss"    Ð½øÈëÍæ¼Ò¼ÓÈëÕ½Á¦×îµÍÕóÓª£º%s(RRRR^RGR’RwRxRjRÕRR¨RDtrandintR¾RSR_(    R    RR RiR«tfightPowerListt    groupTypet
fightPowert joinGroupType((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR`Ys$   
 cCs tjƒ}tƒ}|||jƒ}tjƒjtjƒ}|t|tƒkr    |t|}||ddkr    |d}tj    ƒj
ƒdkræ|dkrÁt j d|dgƒqæ|dkræt j d|gƒqæntjƒj tj|dƒq    ndS(Niièii<tCampaign_liubo_75078sCampaign_liubo_367085 (RRRRZRwRtMap_FBDict_NotifyStartRGtDef_NotifyStartListRtGetCurGameWorldIndexRuRÅR|(t prepareTimeRR Ret remaindTickt notifyIndext notifySecondt remaindSecond((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR¶ys     
  #cCst|ƒ|tjƒjƒtƒtdk}t}t}tjƒjtƒ}|rÄ||krÄtj    ƒj
ƒdk}tƒt d}|||k}tj d||||||fƒn|sÖ|sÖ|rýtj d|||fƒt |ƒndS(NièisYÑÓ³Ù½áÊøµÈ´ý£ºtick(%s) - endDelayStartTime(%s) =(%s)! maxDelayTime=%s! isItemAllPickUp=%ss<½áÊø»î¶¯: isTimeOver=%s,isItemAllPickUp=%s,isEndDelayTime=%s(t __RefreshBossRRRZRRYR#RwtFBDict_EndDelayStartTimetGetMapItemManagertGetMapItemCounttDef_EndDelayTimeRR(Rt
isTimeOvertisItemAllPickUptisEndDelayTimetendDelayStartTimet maxDelayTime((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRŽ”s 
'         cCs
tƒ}tjƒtjƒ}tƒt}t|ƒ}g}xetd|dƒD]P}|jt    |ƒ}|jt
|ƒ}|t j |}    |j |    |gƒqRW|jdtƒg}
x!|D]\} }|
j |ƒqÃWtjdt|ƒƒtjdƒ} i} tjƒ}x€t|jƒƒD]l}|j|ƒ}|dks+|jƒr^q+n|jƒ}|tkr+tj |ƒtjd|ƒq+q+WxtD]ú}|j|ƒ}d}|j|tƒ}||
krñ|
j|ƒd}ntj| |ƒ}|rt ||t|ƒn|j|t!ƒ}||g| |<|r¢it"j#t"j$6|d6|d6}tj%||ƒ|j&t'j(d|t)d    tƒq¢q¢Wtj*ƒj+ƒ}i|d
6| d 6}tjd t|ƒƒtj,t j-d|t.ƒtj/t0|ƒdS( NiRÔs »î¶¯×ܽáË㣺ÕóÓª×ÜÉ˺¦ÅÅÐÐÁбí%stMergeBoss_GongXunAllHurts     g_joinPlayerIDList append %sit TotalHurtListRžiètMapIDt PlayerScoresËùÓÐÍæ¼ÒÕóÓªÅÅÃû¼°»ñµÃ¹¦Ñ«%s(1RR)R8RRR^RGR’RwR¥R¦RR§RjRÕR$RR¨R R R‘R“R”R×tIsEmptyRSR5tFindPlayerByIDR]RtindextGetOrderValueByDictt__AddPlayerGongXunRRtScoreType_MergeBosst ScoreTypeNametNotify_FB_OverR[R=RbRcRnRotSendBroadcastMergetDef_MergeBossResultR#R*Ra(RReR RiR«tfactionTotalHurtListR­R²t allHurtPointtallHurttfactionHurtOrderListR±t gongXunDicttplayerScoreDicttcopyMapPlayerManagerR—R˜RdR    tordert
addGongXunR´t overMsgDictR9tdataDict((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR«sb    
         (cCs?tƒ}|tjƒjƒ|tdkr1dSt|ƒdS(Niè(RRRRZRcR-(RRe((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRüs
    $
cCs2t|tƒtjd|tfƒt|ƒdS(Ns%OnCloseNPCRefresh mark=%s,bossDict=%s(RìR$RRR1R™(t refreshMarkR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnCloseNPCRefreshs 
c    Cstjƒ}|jtƒ}| r6||dkr6dS|jt|ƒtjƒ}x¬t|jƒƒD]˜}|j|ƒ}|j    ƒsŒqent
j |ƒs¡qen|j    ƒ}|j ƒ}||t j|ƒt j|ƒ|jƒ|jƒgtd||f<qeWt|ƒdS(Ni's%s_%s(RRRwtFBDict_LastRefreshBossTickR|t GetNPCManagerR’t GetNPCCountt GetNPCByIndextGetIDRt
IsGameBosstGetNPCIDtGameObjtGetHPtGetMaxHPRJRKR1t__CheckOutTimeBuff(    RtisForceR tlastTicktgameNPCManagerRütcurNPCR¯R°((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRìs$     *
cCst||ƒ S(N(t__CanAttackPlayer(R    t curTagPlayer((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytCheckPlayersRelation_IsFriend6scCs t||ƒS(N(R (R    R!((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytDoCanAttackTeamer?scCs2tjƒjƒtkrtS|jƒ|jƒkS(N(RRRRR#t
GetFaction(R    R!((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR HscCs%|jƒ}|jƒ}t||ƒS(N(RRt__GetNPCItemProtectFaction(RR¯R°((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytGetNPCItemProtectFactionQs  c
Cs©tjdƒ}||krdStjƒ}tƒt}t|ƒ}d}d}xRtd|dƒD]=}|jt    |||fƒ}    |    |krd|    }|}qdqdW|S(NtMergeBoss_BossBuffii(
R R RRRR^RGR’RwR¤(
R¯R°R'R RiR«tprotectFactiontmaxHurtR­R±((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR%Ws      c    Csˆtjƒ}tƒ}|t}|jtƒ}|t|ƒkrDdS|jƒ}||d}||krndSt||j    ƒ|ƒdS(Ni(
RRRR½RwR¢RGRt__AddFactionHurtR$(    R    RthurtHPR ReRÈRÆR°RÌ((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytDoFB_Player_HurtNPCrs     
  cCs÷tjƒ}|jƒ}|jƒ}t|||f}|j|ƒ}||}t|tjƒ}|j    ||ƒt
|}    t |}
|j|    ƒ} |j|
ƒ} | tj | |} | tj }| tj }|j    |    |ƒ|j    |
|ƒdS(N( RRRRR¤RwRzRR{R|R¥R¦R§(RR­taddHurtR R¯R°t bossHurtKeyt nowHurtValuet updHurtValuet
allHurtKeytallHurtPointKeyR±t    hurtPointR²t updHurtPoint((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR*‰s$   
 
 
  icCsÇtjƒ}|r|jƒn|}|dkr4dS|j|tƒ}||}t|tjƒ}|j|t|ƒ|s›tj    d||||fƒn|rÃ|rÃt
|tj ƒj ƒƒndS(NisD    ¸øÀëÏßÍæ¼Ò¼Ó¹¦Ñ«£ºplayerID=%s,nowGongXun=%s,add=%s,updGongXun=%s( RRRSR]RRzRR{RlRR•RtGetTick(R    R t isSyncFBHelpt curPlayerIDR Rdt
nowGongXunt
updGongXun((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRþ¥s  
     cCsmt|ƒdkrdStjd||t|ƒfƒtƒ}t||||ƒtjd||fƒdS(Nis<OnBossHurtListClear objID=%s, npcID=%s, len(sortHurtList)=%ss7ϵͳɱËÀboss£ºobjID=%s,npcID=%s; ¹ã²¥×Ó·þ·¢·ÅÅÅÐн±Àø£¡(RGRRRt%__SendBroadcastMergeClient_BossKilled(R¯R°t sortHurtListRe((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnBossHurtListClearºs        cCstjd||t|ƒfƒtƒ}tjƒ}|jtƒ}|dkratjdƒdS|t}|t    }|t|ƒks™|t|ƒkrªtjdƒdS||dd}||d}    ||    krçtjdƒdSd||f}
|
t
krt
|
} d| d<n|t } t j d    ƒ} | j|iƒ}tjƒ}x t|dƒD]\}}|j|jƒ}|s‹qand}|r¬tj||ƒ}n|| krÔtj|d
||gƒn|dkrat||ƒqaqaWt||ƒ}tjd||fd ƒ}|rJ|rJtjd ||||gƒnt||||ƒ|jtƒ}|d}|jt|ƒtjd |||fƒtjƒjƒ}t|ƒ||krÌdS|t|ƒkrþtjdƒ|jt |ƒntjdƒt!|ƒdS(Ns=OnBossKilledHurtList objID=%s, npcID=%s, len(sortHurtList)=%sis    curBossStep <= 0sU    curBossStep > len(bossRefreshMarkList) or curBossStep > len(bossRefreshNPCIDList)is    npcID not in npcIDLists%s_%sitMergeBoss_GongXunKillBosstCampaign_liubo_635889ttCampaign_liubo_758177s-»÷ɱboss£ºstep=%s,bossID=%s,updKillBossCnt=%ss&    ËùÓÐbossÒѾ­»÷ɱÍ꣬½øÈëÑÓ³Ù½áË㣡s*    ±¾½×¶ÎbossÈ«²¿É±Í꣬ˢÐÂÏÂÒ»½×¶Îboss£¡("RRRGRRRwR¢RR¼R½R1tDef_BossAwardMaxOrderR R tgettGetPlayerManagert    enumerateRûRdRýRuRvRþR%R.RÅR:RÂR|RR5R™RíR¹(R¯R°R;ReR RÆRÇRÈRËRÌtbossKeytbossInfotmaxOrderRt bossAddGXDictt    playerMngR t
hurtPlayerR    R R­tlastHurtPlayerNametnowKillBossCnttupdKillBossCntR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnBossKilledHurtListÌsp           
 
$    
 
 
 
 
c CsÅg}|t}|| }x|D]}|j|jƒq!Wtjd||fdƒ}|}    tjƒjƒ}
i|
d6|d6|d6|    d6} tjt    j
d| t ƒtj dt | ƒƒdS(Ns%s_%siRøtNPCIDt
LastHurtIDt OrderIDLists¹ã²¥×Ó·þboss±»»÷ɱ£ºdataDict=%s(RARjRdR/RBRRnRoRRtDef_MergeBossKilledR#RR¨( R¯R°ReR;t playerIDListRGtawardPlayerListRJtlastHurtPlayerIDthurtOrderPlayerIDListR9R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR:s
 
 "cCsp|jƒ}|jƒ}|jƒ}|td||f<|jƒtd||f<tjd||f|ƒdS(Ns%s_%ss-DoFB_Player_KillNPC ×îºóÒ»»÷objID=%s,npcID=%s(RRRSR/t GetPlayerNameR.RR(R    RRR¯R°Rd((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytDoFB_Player_KillNPC5s   cCsdS(N((R    tdefenderR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytDoFBOnKill_PlayerGscCs‘tjƒjƒtkrdS|jdƒ}|jƒ}|tjkrJdS|jdƒ|j    ƒ}tj
d||j ƒƒt ||t ƒdS(NisOnPickUpItem addGongXun=%s(RRRRtGetEffectByIndext GetEffectIDRtDef_Effect_ItemGiveGongXuntGetEffectValuetGetCountRRSRþR$(R    tcurItemRtcurEffteffIDR ((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyt OnPickUpItemOs cCsN|s
dS|jƒ}|tjkr)dS|jƒ}|jƒ}tjdƒ}||kr`dS||}|d}    |d}
t|
jƒdt    ƒ} |d} t
j |ƒdt
j |ƒ} t jƒ}t||f}|j|ƒ}| |}xB|D]:}| |krPnt||    |
|| |ƒ|d7}qüW|j||ƒdS(NR'iiRÔiid(tGetGameObjTypeR=tgotNPCRRR R tsortedtkeysR$RRRRRtFBDict_BossHPPerMarkRwt__SummonBossBuffR|(tattackerRYtcurSkillRt
tagObjTypeR¯R°R't bossBuffInfot
radiusListt    hpPerDictt    hpPerListt
maxBuffCnttnowHPPerR t hpPerMarkKeythpPerLogicMarktlogicHPPerListthpPer((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytDoBeAttackOvercs6    
 
 
 
  
  cCs™|jƒ}|jƒ}d||f}tj|dƒ}t|||ƒ}t|dƒ}|dkr†tjd|||fƒdStƒt    }    |j
ƒ|j ƒ}
} x¤t |ƒD]–} t j|
| |d|dƒ} | j
ƒ| j ƒ}}tj|    ||ƒ}|sq¹n|jƒ}|jƒ}|td||f<|d7}q¹W|t|<t|ƒtjdttƒƒtjdttƒƒdS(Ns%s_%sis3¸Ãboss²ú³öbuff¸öÊýÒÑÂú£¡objID=%s,npcID=%s,maxCnt=%sisg_buffOwnerNPCDict=%ssg_bossBuffCntDict=%s(RRR3RBRzRXRRRt Def_BuffNPCIDRJRKR’RHtGetEmptyPlaceInAreaExt    NPCCommont SummonMapNpcR2R™R¨(RRnt    summonCntRËRR¯R°t
buffCntKeyt
nowBuffCntt    buffNPCIDtposXtposYR—tpositiontbuffPosXtbuffPosYtbuffNPCt buffNPCObjIDt buffNPCNPCID((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRi‰s4       
 
cCs tƒtS(N(RtDef_BuffCollectTime(R    R((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytGetFBPrepareTime´scCstjƒjƒtkS(N(RRRR(R    RR((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyt OnCanCollect½sc
Cs{tjd|jƒƒ|jƒ}|s,dS|jƒtjkrEdStjƒj|j    ƒƒ}|sjdS|j
ƒ}|j ƒ}t ƒt }||kr¶tjd||fƒdSd||f}|tkrâtjdƒn3t|}tj|dƒ}    td|    dƒt|<t||ƒt|t ƒttƒtj||ƒtjdttƒƒtjdttƒƒdS(    NsOnCollectOK...s6OnCollectOK ·ÇbuffNPCID£¬²»´¦Àí£¡npcID=%s,buffNPCID=%ss%s_%ss#OnCollectOK ÕÒ²»µ½buffËùÊôµÄbossID!iis    g_buffOwnerNPCDict=%ss    g_bossBuffCntDict=%s(RRRSt GetActionObjRdR=ReRRtGetIndexRRRRxR2R¾R3RBRXt__DoFactionRandomAddBuffRþtDef_BuffGongXunR$tChNPCt OnCollectEndR¨(
R    R°RttagObjRR¯Rt ownerNPCKeytbossBuffCntKeytbuffCnt((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyt OnCollectOKÆs6      
 c    Cs“|jƒ}|jƒ}tjdƒ}tj|ƒ}|s@dStjƒj|ƒ}|s_dS|jƒ}|j    ƒ}|d}    t
tj dƒƒ}
|t j kr«tnt} | rÁ|
dn|
d} | \} }| drütj| d| dƒntjd|| |f|jƒƒtj|ƒ}tjƒ}xt|jƒƒD]ô}|j|ƒ}|snqMn|jƒ}|jƒ}| r¯||kr¯tjd|ƒqMn| rÙ||krÙtjd|ƒqMntj|||ƒtj||||ƒ|dr*tj||d|dƒntjd    ||fƒqMW|jƒ}t ƒt!}t"|ƒ}tjd
|t#t$ƒfƒxätd|dƒD]Ï}| r¹||kr¹q›n| rÒ||krÒq›nt$j%|iƒ}xi|j&ƒD][}tjƒj|ƒ}| s%||jƒkrñ|j'|ƒtjd ||fƒqñqñW||g||<|t$|<q›Wtjd t#t$ƒƒt(|ƒdS( NtMergeBoss_BossBuffListiètMergeBoss_BossBuffNotifyiis>¸øÕóÓªËæ»ú¼Óbuff! addBuffID=%s,isSelf=%s,curPlayerfactionID=%ss(    ²»ÊÇ×Ô¼ºÕóÓª²»¼Óbuff£¡tagPlayerID=%ss$    ×Ô¼ºÕóÓª²»¼Óbuff£¡tagPlayerID=%ss:    ¸øÕóÓªÍæ¼Ò¼Óbuff£ºtagPlayerID=%s,tagPlayerFactionID=%ss7¸üÐÂËùÓÐÕóÓªbuffǰ: skillTypeID=%s,g_factionBuffDict=%ss    pop factionID=%s,buffID=%ss(¸üÐÂËùÓÐÕóÓªbuffºó: g_factionBuffDict=%s()R$RWR R RtGetResultByRandomListt GetGameDatatGetSkillBySkillIDt GetSkillTypet GetLastTimeRÃRÄRtDef_CanAttackSkill_ListR#R$RuRÅRRSRst GetBuffTypeR‘R’R“R”Rt    BuffSkilltDelBuffBySkillIDt    DoAddBuffRvtGetSkillTypeIDRR^RGR¨R4RBRgtpopR(R    RtcurPlayerfactionIDt curPlayerNametmergeBoss_BossBuffListt    addBuffIDRkt    skillTypetlastTimet
lastSecondtbossBuffNotifytisSelft
notifyListt fbNotifyInfotplayerNotifyInfotbuffTypet playerManagerRüR˜t tagPlayerIDttagPlayerFactionIDt skillTypeIDRiR«R­tfactionBuffDicttbuffIDtskill((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyRîsz    
 
       
            
cCszxstjƒD]e\}}xL|jƒD]>\}}|\}}||}||kr&|j|ƒq&q&W|t|<q WdS(N(R4titemsR£(RR­t buffInfoDictR¶tbuffInfot addBuffTickR©tpassTick((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyREs 
 cCstS(N(R$(((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnPlayerRebornYscCsAtj|jƒ|jƒdƒ}|j|jƒ|jƒƒdS(Ni(RHRItGetFBRebornPosXtGetFBRebornPosYtResetPosRJRK(R    t rebornPlaceRRO((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnResetFBRebornPlacePos_s!c
Csz|jtjƒ}|dkr8tjd|jƒƒdS|dkr^tjd|jƒƒdStjdƒ}t|ƒ}t    j
|t j |ƒ}||kr±t j|dƒdSt j|tjdƒx¢|D]š}|d \}}}t|ƒdkr|dnd}    |    r7tj|||td    d
tigƒqÎtj||||t j gtd    d
tigƒqÎWt|ƒdS( Nis ÒѾ­ÁìÈ¡¹ý¿ç·þbossÊ״βÎÓë½±Àø£¡is ²»¿ÉÁìÈ¡¹ý¿ç·þbossÊ״βÎÓë½±Àø£¡tMergeBoss_FirstJoinAwardtGeRen_chenxin_998371iiteventtMergeBossFirstJoin(tNomalDictGetPropertyRt(Def_PDict_MergeBoss_FirstJoinAwardRecordRRRSR R RGt
ItemCommontGetItemPackSpaceR=trptItemRuRvtNomalDictSetPropertyt ItemControlertGivePlayerAppointItemR$tGivePlayerItemR(
R    tfirstJoinAwardStatetfirstJoinAwardItemListt    needSpacet
emptySpacetitemtitemIDt    itemCounttisBindt    isAppoint((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pytOnGetMergeBossFirstJoinAwardfs.     "(
cCs?tjƒ}|jƒ|jtjƒ|_tj||ƒdS(N(    tChPyNetSendPackttagMCMergeBossAwardRecordtClearRÇRRÈtFirstJoinAwardStatet NetPackCommont SendFakePack(R    t
recordPack((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyR†s
 
(xRRR R=R¿RRuRRÚRÞRÍRÉRsR)RHRzRŸRRRDtranget FB_State_OpenR+RWRRaR,RåtDef_NotifyEndListRVRTRYRcR^R¼R½RARxRˆRŽRðRFRxR¢RÂR¤RhR¥R¦RRíRRR/R.R0R1R2R3R4R5R
RR"R%R'R&R-R(R;RCRPRRRQR$R_R#RURŠR‹R‰RR™R•RŒRR¹RºR`R¶RŽRRRRìR"R#R R&R%R,R*RþR<RNR:RXRZRcRwRiR‰RŠR•RRR½RÂRÙR(((su.\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\GameWorldLogic\FBProcess\GameLogic_MergeBoss.pyt<module>s                   
9                                         !                     + ,                                     "            $    2                 Q         
$                                                S                    &    +                    (    W