hxp
6 天以前 a4f9a87ef7bbee984a7e43472f9f12f079b4235f
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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
TNic    @sÉddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl!Z!ddl"Z"ddl#Z#ddl$Z$ddl%Z%ddl&Z&ddl'Z'ddl(Z(ddl)Z)ddl*Z*ddl+Z+ddl,Z,ddl-Z-ddl.Z.ddl/Z/ddl0Z0e1Z2e3dƒ\Z4Z5Z6Z7Z8Z9d„Z:e1d„Z;d„Z<d„Z=d„Z>d„Z?d    „Z@d
„ZAd „ZBd „ZCd „ZDd„ZEd„ZFd„ZGd„ZHd„ZId„ZJeKd„ZLd„ZMe1e1eKgdgdeKd„ZNddeOdgd„ZPdZQe1e1e1e1e1dd„ZRd„ZSd„ZTd „ZUd!„ZVd"„ZWd#„ZXd$„ZYd%„ZZd&„Z[d'„Z\d(„Z]d)„Z^d*„Z_d+„Z`eKeOd,„ZaeOd-„Zbdddddd.„Zcd/„Zdd0„ZeeOgd1„Zfd2„Zgd3„Zhd4fd5„ƒYZid6„Zjd7„Zkd8„Zld9„Zmd:„Znd;„Zod<„Zpd=„Zqd>„Zrd?„Zsd@„ZtdA„ZudB„ZvdC„ZwdeKeKdD„Zxe1dE„ZydF„ZzdG„Z{gdH„Z|dI„Z}dJ„Z~e1dK„ZdL„Z€gdM„ZdN„Z‚dO„ZƒdP„Z„dQ„Z…dR„Z†dS„Z‡ddT„ZˆdU„Z‰dV„ZŠdW„Z‹dX„ZŒdS(YiÿÿÿÿNicCsrtjtd|jƒdfƒ}|dkrG|jƒjtjƒn
||ƒ|j    t
ƒ|j tj ƒdS(Ns AIType_%d.%stDoInit( t    GameWorldt GetExecFunctNPCAIt    GetAITypetNonet GetNPCAngrytInittChConfigtDef_Default_NPC_Angry_CounttSetIsNeedProcesstFalsetSetTickTypeCounttTYPE_NPC_Tick_Count(tcurNPCtcallFunc((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytInitNPCYs" 
 cCs2t|dƒr(t|jƒ|jƒƒS|jƒS(NtGetCurLV(thasattrtmaxRtGetLV(Rt    curPlayer((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetNPCLVhscCs5tjd|ƒ}|s1tr-tjƒ}n|S|S(NtNPC(t IpyGameDataPYtGetIpyGameDataNotLogR tIPY_NPC(tnpcIDt    npcDataEx((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt GetNPCDataPyns cCs
|jƒS(N(t
GetMAtkMin(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt
GetRealmLVwscCs |j|ƒS(N(t
SetMAtkMin(RtrealmLV((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt
SetRealmLVxscCs
|jƒS(N(t
GetWindDef(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetIsLVSuppressyscCsdS(Ni((R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetFightPowerLackAtkLimitzscCsdS(Ni((R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetSuppressFightPower|scCs|jt|tjƒƒS(N(t SetThunderDeftmint ShareDefinetDef_UpperLimit_DWord(Rtvalue((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSetSuppressFightPower~scCs
|jƒS(N(t
GetFireDef(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetCommendFightPowerscCs
|jƒS(N(t GetThunderAtk(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetDropOwnerType€scCs tj|ƒS(N(tGameObjt
GetFaction(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR2scCs
|jƒS(N(t GetPoisionAtk(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetSkillAtkRate‚scCs
|jƒS(N(t
GetFireAtk(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt GetFinalHurtƒscCs |j|ƒS(N(t
SetFireAtk(Rthurt((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt SetFinalHurt„scCs
|jƒS(N(t
GetWindAtk(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetSkillEnhance…scCs
|jƒS(N(t GetPoisionDef(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt GetNPCSeries†scCsdS(N((RtisReborntisDyn((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDoNPCAttrStrengthenˆsc Cs:tjƒjƒ}|jƒ}tjddƒ}tj|jƒƒ}t    j
j |iƒ}|||<|t    j
|<||}g}x[|j ƒD]M\}    }
||
kr¬qŽnt |    tƒrË|j|    ƒqŽ|t|    ƒ7}qŽWtjd||||fƒ|jƒ} x|D]} | j| ƒqWtj||ƒdS(Nt
FBRobotCfgis2¸ø»úÆ÷ÈËNPC¼¼ÄÜ: objID=%s,robotJob=%s,npcLV=%s, %s(Rt GetGameWorldt    GetLineIDtGetIDRtGetFuncEvalCfgtrandomtchoicetkeyst
PyGameDatatg_fbRobotJobDicttgettitemst
isinstancetinttappendtlisttDebugLogtGetSkillManagertLearnSkillByIDtFBLogictOnRandomRobotJob( RtnpcLVtlineIDtobjIDt jobSkillDicttrobotJobtlineRobotJobDictt skillInfoDictt skillIDListt    skillInfotneedLVt skillManagertskillID((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__OnFBRobotReborn‹s* 
 
   iic Csd} d} g} | | | fS(s¸øÍæ¼Ò»÷ɱNPCµôÂä½±Àø
    @param mapID: »÷ɱµÄNPCËùÔÚµØÍ¼ID£¬×¢Òâ´ÎµØÍ¼²¢²»Ò»¶¨ÊÇÍæ¼Òµ±Ç°µØÍ¼
    @param npcCountDict: Ö´Ðе¥´ÎʱËù»÷ɱµÄnpcÊýÁ¿×Öµä {npcID:count, ...}
    @param exp_rate: »÷ɱ¹ÖÎïÏíÊܵľ­Ñé±ÈÀý
    @param mailTypeKey: »ñÈ¡ÎïÆ·±³°ü¿Õ¼ä²»×ãʱ·¢Ë͵ÄÓʼþÄ£°åkey
    @param isMail: ÊÇ·ñÇ¿ÖÆ·¢ËÍÓʼþ£¬ÈôÊÇÔò²»¿¼ÂDZ³°ü¿Õ¼ä£¬·ñµÄ»°Ö»ÔÚ±³°ü¿Õ¼ä²»×ãʱ²Å·¢ËÍÓʼþ
    @param extraItemList: ¹Ì¶¨¸½¼ÓÎïÆ·ÁÐ±í£¬Èç¹ûÐèÖ´Ðжà´Î£¬Ôò´Ë¹Ì¶¨²ú³öÁбíÐèÔÚÍâ²ã´¦ÀíºÃ£¬Äڲ㲻×ö¶à´ÎÖ´Ðд¦Àí¡£[[itemID, itemCount, isAuctionItem], ...]
    @param prizeMultiple: ½±Àø±¶Öµ, ¶ÔËùÓн±ÀøÓÐЧ£¬µÈÓÚ»÷ɱ¶à´ÎNPC£¬¶à±¶¸½¼ÓÎïÆ·
    @param dropItemMapInfo: µôÂ䵨°åÐÅÏ¢ [dropPosX, dropPosY, ÊÇ·ñ½ö×Ô¼º¿É¼û, ¶ÑµþÎïÆ·ÊÇ·ñÉ¢¿ª]
    @param curGrade: ÆÀ¼¶
    @param isVirtualDrop: ÊÇ·ñ¸øÎïÆ·ÐéÄâµôÂä±íÏÖ
    i((RtmapIDt npcCountDicttexp_ratet mailTypeKeytisMailt extraItemListt prizeMultipletdropItemMapInfotcurGradet isVirtualDropttotalExpt
totalMoneyt jsonItemList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGiveKillNPCDropPrize£st ItemNoPickUpcCsdS(N((Rt giveItemListRtdropPosXtdropPosYtisDropDisperseRftextraVirtualItemList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDoGiveItemByVirtualDrop¶si@BRc    Cs’tjstjdƒgSd||f}|tjkrItj|}nfi}tjƒ}    x'tjjƒD]}
x |
D]} |    j    | ƒxït
|    j ƒƒD]Û} |    j | ƒ} | j ƒsÅqžn|dkrìtj| ƒ|krìqžn|dkr| jƒ|krqžn| jƒ}| jƒ}| jƒ}| jƒ}||krYg||<n||}|j|||gƒqžWqxWqkW|tj|<tjd||tjfƒg}x§|jƒD]™\}}|ræ||kræqÂnxr|D]j}|\}}}|r |r ||kr qín|dk}|dkrJ||krJqín|j|ƒqíWqÂW|sŽtjd|||||||fƒn|S(NsµØÍ¼»¹Î´Æô¶¯ºÃÔØÎïÆ·!s%s_%ss(»º´æ²ú³ö×°±¸ID: classLV_color=%s, %s, %sisWÕÒ²»µ½¿É²ú³öµÄ×°±¸ID: %sID=%s,classLV=%s,color=%s,isSuit=%s,placeList=%s,itemJobList=%s(RIt
InitPyItemRtErrLogtg_filterEquipDictt GetGameDataRtDef_PlaceEquipTypetvaluestFilterItemByTypetxrangetGetFilterItemCountt GetFilterItemt GetCanNPCDropRt
ItemCommontGetItemClassLVt GetItemColort
GetSuiteIDt GetJobLimitt GetEquipPlacet GetItemTypeIDROtLogRL(tfindIDtclassLVtcolortisSuitt    placeListt itemJobListtfindTypetkeytfilterItemIDDicttgameDatat itemTypeListtitemTypetititemDatatsuiteIDtitemJobt    itemPlacetitemIDt placeItemListt
itemIDListtitemInfot    curIsSuit((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GetEquipIDList½sZ         !      
"        cCs>tjddƒ}|dkr"dS|||dkr:dSdS(Niii ièi(RFtrandint(tcurTicktlastActionTicktcurTime((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytIsInActionTimes  cCs|jƒtjkrtStS(N(tGetGameNPCObjTypet IPY_GameWorldt
gnotSummontTrueR (R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt IsSummonNPCscCsIxBtd|jƒƒD]+}|j|ƒ}|jƒ}|jƒqWdS(Ni(trangetGetSummonCounttGetSummonNPCAtRtClear(RR—t    summonNPCtangry((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytClearSummonAngry_Players cCsD| st|dƒ rdS|jƒ}|dkr7dStj|ƒS(NtGetOwner(RR³RRt GetObjDetail(R°tcurSummonOwner((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetSummonOwnerDetel&s   cCs3t|ƒ}|stS|jƒtjkr/tStS(N(tGetNpcObjOwnerDetailR tGetGameObjTypeR¨t    gotPlayerRª(tnpcObjt ownerDetail((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetNpcObjOwnerIsPlayer7s  cCsU|jƒ}d}|tjkr0t|ƒ}n!|tjkrQtj|ƒ}n|S(N(R§RR¨R©R¶tgnotPett
PetControlt GetPetOwner(Rºt
npcObjTypeR»((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR·Hs cCs±|dkrdSt|dƒsN|jtjƒ}|rJtj|tjƒSdS|j    ƒ}|dkrjdStj|j
ƒ|ƒ}|dkr­|tjkr­|j ƒr­dS|S(NR³( RRt GetDictByKeyRt!Def_NPC_Dict_SummonMapNPCPlayerIDRtGetObjR¨R¹R³RDtIsEmpty(t
curobjTypet    curSummontsummonPlayerIDRµtcurSummonOwnerDetel((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetSummonNPCOwner\s   'c
CsÜtjƒ}|jƒ}|jƒ}d}x«|D]£}|j||d||dƒ}|seq1nxltd|jƒƒD]U}|j|ƒ}    tj    |    ƒdkr«q{n|    j
ƒt j krÆq{n|d7}q{Wq1W|S(Nii( RtGetMaptGetPosXtGetPosYt    GetPosObjR¬t GetObjCountt GetObjByIndexR1tGetHPR¸R¨R¹(
RtmatrixtgameMaptsrcPosXtsrcPosYtcurPlayerCounttcurPostmapObjR—tcurObj((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetPlayerCountInSightByMatrix}s     "cCsèg}|jƒ}xÏtd|ƒD]¾}|j|ƒ}|dkrIq"n|jƒtkraq"n|jƒ}|tjkr‚q"n|j    ƒr”q"nt
j |ƒdkr¯q"nt j |jƒ|ƒ}|sÓq"n|j|ƒq"W|S(Ni(tGetInSightObjCountR¬tGetInSightObjByIndexRt
GetVisibleR R¸R¨R¹RÄR1RÐRRÃRDRO(RtplayListt seeObjCountR—tseeObjt
seeObjTypet curTagPlayer((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetInSightPlayerList_NPCžs(    c Cssg}|jƒ}xZtd|ƒD]I}|j|ƒ}|dkrIq"n|jƒtkraq"n|jƒ}|tjkr‚q"n|j    ƒr”q"nt
j |ƒdkr¯q"n|j ƒ}||j ƒkrà|j |ƒq"n|sìq"n|jƒ}    tj||ƒ}
|
sq"n|
jƒ} |    dks"| dkr@q"n|    jƒ| jƒkr^q"n|j |
ƒq"W|S(Ni(RÚR¬RÛRRÜR R¸R¨R¹RÄR1RÐRDROtGetTeamRRÃt    GetTeamID( RR°t    checkTeamRÝtseePlayerCountR—RßRàtseeObjIDt curPlayTeamRát
curTagTeam((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetInSightPlayerList_SummonNPCÉs@        c Csªd}d}|dks$|dkr(tSx{td|jƒƒD]d}|j|ƒ}|dkreq>ntj|ƒdkr€q>n|jƒs’q>ntj    ||ƒrªq>ntj
|j ƒ|j ƒ|j ƒ|j ƒƒ}||krìq>ntj |jƒ|jƒƒ}    |    dkr3tjd|jƒƒq>ntj||    ƒsKq>ntj||    d|ƒd}
|
tjkr|q>n|d7}||ksž||kr>tSq>WtS(Nii s&curNPC = %s ²éÕÒ¶ÔÏó, »ñµÃ¶ÔÏóʵÀýʧ°Üi(RªR¬RÚRÛRR1RÐRÜRt    IsSameObjtGetDistRËRÌRÃRDR¸RŠtGetNPCIDt AttackCommontCheckCanAttackTagt
BaseAttacktGetTagRelationRtType_Relation_EnemyR ( Rt    checkDistt
checkCounttticktcounttmaxCountR—RßttagDistt seeObjDetailtrelation((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt&CheckCanAttackTagLimitCountInSight_NPCs<  0  
cCsgS(N((((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetDefaultMaxAngryNPCIDListdscCs9|jƒtjkrdS|jƒs5|jtƒndS(N(t GetCurActionR¨tlaNPCDietGetIsNeedProcessR
Rª(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSetNPCInBattleStatels
 cCsp|jƒg}|jƒ}xHt|jƒƒD]4}|j|ƒ}|sOq.n|j|jƒƒq.Wt|ƒS(N(t
GetAtkDistRRR¬t GetSkillCounttGetSkillByIndexROR(RtdistListR`tindextskill((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetNPCMaxAtkDist€s cCs»|jƒtg|jƒtg|jƒtg|jƒtgg}|rd|j|jƒtgƒn|jƒtj    kr•|j|j
ƒt gƒn|r·|j|j ƒtgƒn|S(N( t GetBuffStateR tGetDeBuffStatetGetProcessBuffStatetGetProcessDeBuffStateROtGetAuraR§R¨R½t GetPassiveBufRªtGetActionBuffManager(Rt getActionBufft getAuraBufftbuffRefreshList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetNPCBuffRefreshList•s$cCsN|jƒ|krdS|jƒ}|jƒ}|tjkr‘|j|ƒ|t|dƒkr|jtj    ƒ r|j
t|dƒƒndS|tj krè|j|ƒ||dkrä|jtj    ƒ rä|j
|dƒndS|tj kr-|jtj ƒ|jtj    ƒs)|j
|ƒndSt jd||jƒfƒdS(Nis.ChangeNPCMoveType unKnowType = %s, curNPC = %s(tGetCurMoveTypetGetSpeedt GetOrgSpeedR¨tmtRuntSetCurMoveTypeRNRÁRtDef_NPC_Dict_SpeedPertSetSpeedtmtSlowtmtNormalRRyRí(Rt changMoveTypetchangeSuperSpeedt curNPCSpeedtcurNPCBaseSpeed((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytChangeNPCMoveType¯s*   ) #c
CsOtjƒjƒ}|sdStjƒjƒ}    |j|ƒ|j|    ƒ|dkrd|j|ƒnt|ƒ|dkrŠ|j    |ƒn|dkr¬|j
t j |ƒn|dkrÈ|j |ƒn|dkrê|j
t j|ƒn|jƒt jkrt||jƒƒn|j||tƒt|ƒj|    ƒtj||    ƒ|S(Ni(Rt GetNPCManagertAddPlayerSummonNPCRBtGetTickt SetNPCTypeIDt SetBornTimet    SetAITypeRt SetLastTimetSetDictRRÂt SetSightLeveltDef_NPC_Dict_SummonRefreshIDtGetTypetntRobotRbRtRebornR t
NPCControltDoNPCRebornCommLogicRTtDoFBRebornSummonNPC(
tnpcIdtrebornXtrebornYtaiTypetlastTimetplayerIDt
sightLevelt    refreshIDRÆRõ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt SummonMapNpcÜs.   
    cCs‰tjƒ}|jƒ||_||_||_tjƒ}xEt|j    ƒƒD]1}|j
|ƒ}|sqqPnt j ||ƒqPWdS(N( tChPyNetSendPackttagMCSummonMapNPCR¯tNPCIDtPosXtPosYRtGetMapCopyPlayerManagerR¬tGetPlayerCounttGetPlayerByIndext NetPackCommont SendFakePack(tsummonIDt
rebornPosXt
rebornPosYtmapNPCt playerManagerRR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__NotifyMapPlayerSummonMapNPCs 
             cCs£g}|jƒ}|jƒ}tjd||fƒx6t|jƒƒD]"}|j|ƒ}|j|ƒqHWx|D]}t|ƒquW|j    ƒt
j kr®t j |ƒn|jtjƒ}|dkrâ|jtjdƒntj|ƒ}|r|jtjƒjƒƒntj|ƒrZtj|ƒ|tjddƒkrZtj|ƒqZntj|ƒ|j ƒtj!krÉtjƒj"ƒ}    t#j$j%|    iƒ}
|
j&|jƒdƒ|
t#j$|    <n|jtj'ƒ} | dkr_| t#j(kr_t#j(| } xY| D]N} | r
| jƒ|jƒkr
| j)| ƒ| sTt#j(j&| ƒnPq
q
Wnt*}|j|jtj+ƒ|jtj,ƒ|jtj-ƒ|ƒdS(NsSetDeadEx objID=%s,npcID=%sitCrossYaomoBossi(.RDRíRRQR¬R­R®ROt    SetDeadExR¸R¨tgotNPCRTt DoFB_NPCDeadRÁRRÂR(tNPCRealmRefreshtGetTagNPCRefreshtSetDeadRBR#t
IsGameBosstChNPCt OnNPCSetDeadRt
GetFuncCfgtPlayerCrossYaomoBosstOnCrossYaomoBossDeadRîtClearTeamPlayerHurtValueR+R,RCRIRJRKtpopt Def_NPC_Dict_PriWoodPilePlayerIDtg_playerPriWoodPileNPCDicttremoveRªtDef_NPCDead_ReasontDef_NPCDead_KillerTypetDef_NPCDead_KillerID(Rt summon_ListRXtnpcidRt curSummonNPCR°RÇt
refreshObjRWR[tpriWoodPilePlayerIDtpriWoodPileNPCListt
priWoodNPCt notifyClient((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRKsR              
c        Cs¦tjƒjƒ}tjƒjƒ}tjƒjƒ}t||||||||gƒ}tjƒjdddd|t|ƒƒtj    d|||||fƒdS(NitKillGameWorldBosssHBoss±»»÷ɱ: bossID=%s,mapID=%s,realMapID=%s,copyMapID=%s,killerIDList=%s(
RRBtGetMapIDt GetRealMapIDt GetCopyMapIDtstrtGetPlayerManagertGameServer_QueryPlayerResulttlenRQ(    tbossIDtkillPlayerNamet    hurtValuetisNotifyt killerIDListRct    realMapIDt    copyMapIDtkillMsg((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGameServer_KillGameWorldBossas$( c    Csœtjƒjƒ}tjƒjƒ}tjƒjƒ}t|||||gƒ}tjƒjddddd|t|ƒƒtj    d|||||fƒ|s˜|t
j kr7t
j |}tjƒjƒ}tjƒjƒ}t j ||||ƒ}|sdS|jƒ}tjƒjtj||fdƒq˜|t
jkrxtjƒ}tjƒjtj||fdƒq˜tjƒjtj|dƒndS(NitGameWorldBossStates%ssEBoss״̬±ä¸ü: bossID=%s,isAlive=%s,mapID=%s,realMapID=%s,copyMapID=%s(RRBRhRiRjRkRlRmRnRQRtDef_CrossZoneMapTableNameRtGetIpyGameDatat    GetZoneIDtSetGameWorldDictR)t,Def_Notify_WorldKey_GameWorldBossRebornCrosstDef_CrossDynamicLineMaptFBCommontGetCrossDynamicLineMapZoneIDt'Def_Notify_WorldKey_GameWorldBossReborn(    RotisAliveRcRtRutstateMsgt    tableNamet zoneIpyDatatzoneID((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGameServe_GameWorldBossStatejs,,      & & cCsdS(N((RRRct isCrossServer((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnPlayerKillBossƒsR.cBsJeZdTZd„Zed„Zed„Zd„Zdd„Z    dd„Z
dd„Z d    „Z d
„Z d „Zed „Zd „Zeed„Zd„Zd„Zd„Zejed„Zd„Zd„Zd„Zd„Zd„Zed„Zed„Zed„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-d(„Z.d)„Z/d*„Z0d+„Z1eed,„Z2d-„Z3eed.„Z4d/„Z5d0„Z6d1„Z7d2„Z8d3„Z9d4„Z:d5„Z;d6„Z<ged7„Z=d8„Z>d9„Z?d:„Z@d;„ZAd<„ZBd=„ZCd>„ZDd?„ZEeed@„ZFdA„ZGdB„ZHdC„ZIdD„ZJedE„ZKdF„ZLdG„ZMedTdH„ZNeddI„ZOdJ„ZPdKeedL„ZQdM„ZRdN„ZSddedO„ZTdP„ZUdQ„ZVdR„ZWdS„ZXRS(UcCsL||_d|_d|_i|_g|_g|_d|_d|_dS(Ni(    t_NPCControl__InstanceRt_NPCControl__LastHurtPlayert_NPCControl__Killert_NPCControl__AllKillerDictt_NPCControl__FeelPlayerListt_NPCControl__ownerPlayerListt_NPCControl__OwnerHurtTypet_NPCControl__OwnerHurtID(tselftiNPC((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__init__’s                                cCsú|j}|jƒ}|jƒ}||}||}    t|ƒ|kr^|t|ƒ|}nt|    ƒ|kr‡|    t|    ƒ|}    n||}
||    } tjƒ} | j|
| ƒ rð|rðtj|||ƒ} | jƒ}
| jƒ} n|
| fS(N(    RŠRËRÌtabsRRÊtCanMovetGameMaptGetEmptyPlaceInArea(R’tdestXtdestYtdisttfixPosRtposXtposYtdirXtdirYt    moveDestXt    moveDestYRÒt    resultPos((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetMoveNearPos¥s"      
 
 
 
  c Cs¡|j}|jƒ}|jƒ}tj|||||ƒ\}}    tjƒ}
|
j||    ƒ r—|r—tj||    dƒ} | jƒ}| jƒ}    n||    fS(Ni(    RŠRËRÌRtPosInLineByDistRÊR–R—R˜( R’tplayerXtplayerYR›RœRRRžR¡R¢RÒR£((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetMoveNearPosEx¾s      !  cCsR|j}tj||ƒ}|sEtjd|jƒ||fƒdS|j|ƒS(Ns.NPCÒÆ¶¯µ½Ä¿±êʧ°Ü,NPCID = %s Ä¿±êID=%d,Type=%d(RŠRRÃRŠtGetNametMoveToObj_Detel(R’RXtobjTypeRt tagObjDetel((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt    MoveToObjÒs      icCs•|j}|jƒ|jƒ}}tj||||ƒ}||kr|dkr|||||}|||||}n|j||ƒdS(Ni(RŠRËRÌRRìtMove(R’tdestPosXtdestPosYt sigleMoveDisRtcurPosXtcurPosYtcurDis((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytMoveToPosStepByStepäs    ic Cs½|j}tj|tjtjƒs(dS|jƒ}|jƒ}|jƒ}|jƒ}|dkr€t    |j
ƒddƒ}n|j ƒdkr
|j |j ƒƒ}|s±dStj|||jƒ|jƒƒ}    |jƒdkr
|    |jƒkr
|jƒdSn|j|||ƒ\}
} tj|
| dƒ} | jƒ}
| jƒ} |jƒtjkrtjƒjƒ|jƒdkr|j|
| ƒdSt|tjƒ|j|
| ƒS(Niii (RŠtOperControlManagertIsObjCanDoActionRtDef_Obj_ActState_ServerActR¨toalMoveRËRÌRRtGetRefreshPosCounttGetRefreshPosAttGetCurRefreshPointIndexRRìt GetMoveDisttMoveBackR¨R—R˜Rýt    laNPCMoveRBR#t GetActionTickt
SetDestPosR RR®( R’R¬t moveAreaDistRRRžR™Ršt curRefreshPostmoveDistR¡R¢R£((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRªôs:              $$
   " cCsÉ|j}tj|tjtjƒs(dStjƒ}|j    ƒ}|j
ƒ}|j ||ƒ}|sht S|j ƒdkr~t Sx«t|j ƒƒD]—}    |j|    ƒ}
|
jƒ} | tjkrÇq‘ntj|
jƒ| ƒ} | sëq‘n| jƒtjkr‘| jƒr‘| jƒ|jƒkr‘t Sq‘W||krH||krHt S|dkrlt|jƒdƒ}ntj|||ƒ} | j    ƒ}| j
ƒ}||ks±||krÅ|j||ƒtSt S(Niii(RŠR¶R·RR¸R¨R¹RRÊRËRÌRÍR RÎRRÏR¸RLRÃRDR§R©R³R(RR—R˜R®Rª(R’RRžt fixAreaDistRRÒtnpcPosXtnpcPosYR×R—RØt
curObjTypetcurTagR£R¡R¢((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt    FixTagPos?sD             9   cCs|j}|jƒ}|jƒ}tj||ƒ}|dkrFtjS|jƒdkr_tjStj    |||jƒ|jƒƒS(Ni(
RŠRËRÌRRÃRRtDef_NPCErrorMaxDistRDRì(R’ttagIDttagTypeRRRžttagObj((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt
GetTagDist}s       c
Cs%|j}|jƒ}|tjkr(tStj||ƒr>tS|jƒ}|jƒ}|j    ||ƒ}|dkrt j |ƒdkrtStj ||ƒ}|dkrÆtjd|jƒƒtStj||ƒsÜtStj||ƒsòtStj||d|ƒd}    |    tjkr!tStS(Nis&curNPC = %s ²éÕÒ¶ÔÏó, »ñµÃ¶ÔÏóʵÀýʧ°Ü(RŠR¸R¨tgotItemR RRëRDRt FindNPCAngryRR1t GetAngryValueRÃRŠRíRîtCanAttackByPathRïRðRñRRòRª(
R’RßRõRRàRçtnpcAngryt
angryValueRùRú((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__CheckAddToAngryList‘s.       ! cCsC|j}tj|ƒ r?t|ƒ r?|jƒtjkr?tStS(N(RŠRRQR2R+R,R Rª(R’R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt GetIsBossViewÀs    2cCs|j}t}|jƒdkr%|S|jƒjdƒ}| rT|j|ƒrT|Stjƒjƒ}tjƒj    ƒ}|j
ƒs7t j |ƒ}t jddƒ}    ||    kr¾|    |}
n*|tjkrât jddƒ}
nd}
|jƒ} x¢td| ƒD],} |j| ƒ} | dkr+qntj| ƒdkrFqn| jƒsXqn|j| |ƒspqntj|jƒ|jƒ| jƒ| jƒƒ}||jƒkr¸qntjtj |}| j!ƒtj"kr|
rÿ| j#ƒ|
krÿqn|tj$7}n|j%| |ttƒrt&}qqWnb|j'|j(ƒƒ}|j)ƒ} x>td| ƒD]-} |j*| ƒ} | dkrqhntj| ƒdkrªqhn| jƒs¼qhn|j| |ƒsÔqhntj+|ƒr |j,| jƒ| jƒ|ƒ r qhntj|jƒ|jƒ| jƒ| jƒƒ}tjtj |}| j!ƒtj"krt|tj$7}n|j%| |ttƒrht&}qhqhW|S(Niit AngryNPCCounti(-RŠR t
GetAtkTypeRtGetAngryValueTagt_NPCControl__IsValidAngryObjRRÊt GetMapFBTypeRhR×RtGetRecordMapIDRRER¨tfbtNullRTtGetAttentionPlayersCountR¬tGetAttentionPlayerByIndexRR1RÐRÜt _NPCControl__CheckAddToAngryListRìRËRÌtGetSightRtDef_NPCFirstSightAngryValuetDef_Screen_AreaR¸R¹tGetAngryNPCCounttDef_NPC_SeePlayerAddAngrytAddObjToAngryListRªR»R¼RÚRÛRQtGetIsInRefreshPoint(R’Rõt
isUpdAngryRt
needResorttcurAngrytmapTypeRct recordMapIDtmapAngryNPCCountDicttangryNPCCountLimitRæR—RßR›t addAngryValuet refreshPoint((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytAddInSightObjToAngryListÎsv          0   10 cCsq|s
dS|jƒtjkr8|jƒtjkr8dS|}|dkr]||jƒ7}n|j||ƒdS(N(R¸R¨RLR+tntFairyRt GetSkillAngryRç(R’tobjDetelRqtuseSkilltaddAngry((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytAddObjDetelToAngryList_ByAttack=s c
Cs|j}tj||ƒrtStj|ƒs2tS|jƒ}|jƒ}|rg|j||ƒ rgtSd}|t
j krßt |ƒt jkrßtj||ƒ}    |    rÜ|    jƒdkrÜtjƒj|    jƒƒ}qÜqßnt|dƒ}|jƒ}
|rËtjd|jƒ|fƒxÄt|jƒƒD]”} |j| ƒ} | dks0| jƒdkriq0n| jƒ} | |kr‹|dn|}tjd| | |fƒ|j|
| |||ƒq0Wn|j|
||||ƒtj|ƒdkr|jƒ r|jtƒntS(Niis,NPCÌí¼Ó¶ÓÎé³ðºÞ: teamID=%s,plusAngryValue=%ss%    i=%s,playerID=%s,addAngryValue=%s( RŠRRëR RîtCheckObjCanDoLogicR¸RDt_NPCControl__CheckCanAddAngryRR¨R¹R0RtDropOwnerType_MaxAngryRÃRätGetTeamManagertFindTeamRRRQRtGetMemberCountt    GetMembert GetPlayerIDt_NPCControl__AddAngryValueR1RÐRÿR
Rª(R’RØtplusAngryValuetcanPiletcheckRRÈtcurObjIDt addAngryTeamRRÔR—t curTeamPlayert teamPlayerIDRð((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRç]s>      $   "cCsŠ|j||ƒ}|dks3tj|ƒdkrZ|j|||tj|tjƒn,|r†tj|ƒ|}tj||ƒndS(Ni(RÑRR1RÒtAddAngryR)tDef_PerPointValuet SetAngryValue(R’RÔRRÈRRRÕt updAngryValue((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__AddAngryValue‘s!'c    Csp|j}tj||ƒ}|s<tjd||fƒtStj||ddƒd}|tj    krktS|j
ƒt j kr„t Stj|jƒt jƒ}tt j|ƒ}|s»t S|t jkrùtj||ƒràtStj||ƒsltSns|t jkrl|j
ƒt j kr!t Stt j|ƒ}|s=t Stj||ƒrStStj||ƒsltSnt S(Ns&###Ìí¼Ó³ðºÞ,ÎÞ·¨²éÕÒÄ¿±êʵÀý = %s , %si(RŠRRÃRŠR RðRñRRRòR§R¨R©RªRDRLRÉR¹RëRîtCheckPlayerAttackMode_Player(    R’RRÈRt curObjDetelRút curNPCDetelt curNPCOwnert curObjOwner((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__CheckCanAddAngry¥s<    cCs{|j}|jƒ}tƒ}t}|j|jƒƒ}x;td|jƒƒD]$}|j|ƒ}|j    ƒ}    |j
ƒ}
|    sˆqOnt j |    |
ƒ} | s¼|j |    |
ƒt}qOn|
tjkræ| jƒ|kræqOqæntj|| ƒs|j |    |
ƒt}qOn|j| jƒ| jƒ|ƒsQ|j |    |
ƒt}qOnt j| jƒ| jƒ|jƒ|jƒƒ} | |jƒkr¯|j |    |
ƒt}qOn|jƒs|j| ƒsæ|j |    |
ƒt}qOn| t|ƒkr|j |    |
ƒt}qOqnt j|ƒr,qOntj|| d|ƒ} | dt j!krO|j |    |
ƒt}qOqOqOW|S(Ni("RŠRRüR R»R¼R¬t GetAngryCountRÚtGetObjIDt
GetObjTypeRRÃt DeleteAngryRªR¨RLRíRîRïRèRËRÌRìRâRt CanSeeOtherRtGetNPC_Is_GateRðRñRRRò(R’RõRRÔtdefaultMaxAngryNPCIDListRêRñR—RÕtangryIDt    angryTypeRØR›Rú((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytRemoveDeathInAngryListåsb               !0     
c    Csß|j}|jƒ}||jƒ}||kr5dS|j|ƒ}|j||ƒpY|}|r²|jƒdkr²tj|ƒr²t    |ƒ r²|j
ƒdkr²|j ƒq²n|s¾|rÎ|j |ƒn |j |ƒdS(Ni(RŠRtGetLastResortTickRRòtGetMaxAngryTagRR1RÐR2RR¾tResorttSetLastResortTick(    R’RõtrefreshIntervalRéRRÔtlastTickt removeRsortRê((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytRefreshAngryList7s      4  cCs^|j}|jƒ}xBtd|jƒƒD]+}|j|ƒ}|j|ƒsUq+n|SWdS(Ni(RŠRR¬RRÚRÛR(R’Rt angryManagerR—Rë((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRZs     cCsU|dks|jƒdkr"dStj|ƒ}|dkrAdS|jƒrQdS|S(Ni(RRR1RÒt GetIsDisable(R’Rët curAngryValue((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__IsValidAngryObjos  cCs#|j}|jƒ}|jƒtS(N(RŠRR¯Rª(R’RRë((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt ClearNPCAngryƒs     
cCs#|j}|jƒ}|jƒtS(N(RŠtGetPlayerHurtListR¯Rª(R’Rt npcHurtList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytClearNPCHurtListŽs     
cCs|j}|jtjƒS(s¯NPCÊÇ·ñÉËѪ±£»¤ÖÐ
        ÒòΪÊÖÓαȽϻá³öÏÖÍøÂçÇл»µÄÇé¿ö£¬´Ëʱ»á¿ÉÄÜ»áÒýÆðµôÏßÖØÁ¬
        ËùÒÔÕë¶ÔÊÖÓÎ×öÁ˵ôÏß3·ÖÖÓÄÚÉËѪ±£»¤£¬·ÀÖ¹Íæ¼ÒÖØÁ¬ºóÉËѪ±»Çå¿Õ£¬ÌåÑé²»ºÃ£»
        (RŠRÁRtDef_NPC_Dict_InHurtProtect(R’R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytIsInHurtProtect•s    cCs@|j}t|t|ƒ}x|D]\}}|jƒq"WdS(N(RŠRRªR¯(R’tisClearAuraBuffRRt    buffStatet    canPileup((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt ClearAllBuff¢s
    cCs.|jƒ|jƒ|j|ƒ|j}tS(N(R*R-R3RŠRª(R’R0R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__ClearNPCAllState°s
 
 
     cCsx|j}|jtƒ|s:tj|ƒtj|ƒkrQ|jƒ|jƒn|jd|ƒ|st|j    ƒnt
S(NR>( RŠt_NPCControl__ClearNPCAllStateR R1RÐtGetMaxHPt_NPCControl__InitNPCSummont_NPCControl__NormalNPCInItCDtRefreshNPCStatet    Notify_HPRª(R’R>R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt ResetNPC_Init¿s     $
  cCs~|j}|jdƒ|jdƒ|jƒ}xHt|jƒƒD]4}|j|ƒ}|dkriqBn|jdƒqBWdS(Ni(    RŠt SetAttackTicktSetUseSkillTickRRR¬RRRtSetLastUseTick(R’Rt curNPCManagerR—t curNPCSkill((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__NormalNPCInItCDÚs        cCsg|j}g}x6t|jƒƒD]"}|j|ƒ}|j|ƒq"Wx|D]}t|ƒqOWdS(N(RŠR¬R­R®RORK(R’RtcurNPC_Summon_ListRR°Ra((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__InitNPCSummonïs     c    CsW|j}|jƒ}|j|ƒ}|jƒ}|jƒ}|jƒ}|jƒ}|jƒtjkr¥||ks||kr¥t|tj    ƒ|j
||ƒdSt ||j ƒƒs¾dS|d}||j ƒkrãd}n|j|ƒ|j|ƒ}|jƒ}|jƒ}||kr3||kr3dSt|tjƒ|j
||ƒdS(Nii(RŠtGetCurPatrolIndextGetPatrolPosAtRËRÌRR¨RR RR®R¦RÀtGetPatrolPosCounttSetCurPatrolIndex(    R’RõRt patrolIndext    patrolPost
patrolPosXt
patrolPosYt curNPC_PosXt curNPC_PosY((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt __PatrolMoves4         
       cCsÞ|j}|jƒdkr,|j|ƒdS|j|jƒƒ}|sKdSt|jƒdƒ}|jƒ}|jƒ}||}||}||}    ||}
|jƒ} |jƒ} |j    ƒ} t
|| | ƒ}t|| | ƒ}t
|    | | ƒ}    t|
| | ƒ}
||kr*|j ƒdS|    |
krD|j ƒdSt ||j ƒƒs]dStj||ƒ}tj|    |
ƒ}t|tjƒtjƒj|jƒ|jƒ||dƒ}|j|jƒ|jƒƒdS(Nii(RŠRFt_NPCControl__PatrolMoveR»R¼R(t GetMoveAreaRËRÌtGetAreaRR¾R¦RÀRFR¢R R¨RRRÊt LineNearToPosR®(R’RõRtPosMaptmoveAreaRRžt minMovePosXt maxMovePosXt minMovePosYt maxMovePosYtposMapXtposMapYt
posMapAreatnewPoint((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDoNormalNPCMove8sH       
 
 
 
 
 
cCstj|jƒƒS(N(Rt GetPsycoFunct)_NPCControl__Func_GetRandPosInRefreshArea(R’((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetRandPosInRefreshAreaxscCs¿|j}|jƒ}|s6tjd|jƒƒdS|jƒ}|jƒ}|jƒtj    krld}n |j
ƒ}t j |||ƒ\}}|dkrµ|dkrµ||gS||fS(NsK__Func_GetRandPosInRefreshArea GetRefreshPosAt error: return None! npcID=%si( RŠtGetRefreshPointRRyRíRËRÌR+R¨t ntFunctionNPCRQR—tGetNearbyPosByDis(R’RtposMapRYRZR[RtpoxY((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__Func_GetRandPosInRefreshAreas            
cCsF|j}tj|ƒ}|r-|jƒ}n|j|jƒƒ}|S(N(RŠRNRORaR»R¼(R’RRbRñ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRa˜s     cCs|j}|jƒ}|j|jƒ|jƒ|ƒr:tS|jƒtjkrŒ|j    ƒtj
krŒ|j|j ƒ|j ƒ|ƒrŒtSnt S(N(RŠRaRèRËRÌRªRýR¨R¿RRt GetDestPosXt GetDestPosYR (R’RRñ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytIsInRefreshArea¥s     !!cCs‚|s
tS||jƒ|jƒkr~||jƒ|jƒkr~||jƒ|jƒkr~||jƒ|jƒkr~tStS(N(R RËR½RÌRª(R’R²R³Rñ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRè¾scCs³|j}|jƒ}|dkratjd|dƒ}|j|ƒ}|jƒ}|jƒ}n|jƒ\}}|jƒsŒ|j    ƒnt
|t j t ƒ|j||ƒdS(Nii(RŠRFRFR¢RERËRÌR`R/R;R R¨RRªR®(R’Rt patrolCountRHRIRRž((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR¾Ïs         cCsb|j}|jtjd|jƒdƒƒ|jƒ\}}|j||tƒ|j|ƒdS(Nii(    RŠtSetCurRefreshPointIndexRFR¢RºR`R-R R/(R’RõRRRž((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt DoNPCRebornîs     # cCs’|j}|jtƒtj|tj|ƒƒ|jƒj|ƒ|jƒ|j    t
j dƒ|j    t
j dƒt j|ƒtj||ƒ|jƒ}t
j|ƒrÕtjd|ƒ}|rÕt|dƒqÕn|jƒ}x t|jƒƒD]Œ}|j|ƒ}| s"|jƒdkr&Pn|jƒt
jkrAqôntjd|jƒ|jƒ|j ƒfƒt!j"|||ƒqôW|j#ƒdS(NitBOSSInfois/NPC¸´»î£¬Ì×ÉϹ⻷: objID=%s,npcID=%s,skillID=%s($RŠR;RªR1tSetHPR6RR!t RebornNotifyR(RtDef_NPC_Dict_HPPerLogicMarkt!Def_NPC_Dict_RebornPreNotifyIndexRRt OnNPCRebornRTt DoFBRebornNPCRíRQRRR‡RRRRRtGetSkillTypeIDt GetSkillTypetDef_SkillType_AuraRRQRDt
GetSkillIDt
SkillShellt NPCUseSkillt_NPCControl__notifyAppear(R’RõRtcurNPCIDtipyDataR`RRö((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR/ús2     
   ,
cCsdS(N((R’((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__notifyAppear$s cCsdS(N((R’((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRo5sc Csû|j}|jƒ}tjddiƒ}tj||ƒ}|sFdS|\}}t|dtƒ}tj    |ƒdtj
|ƒ}    |j t j ƒ}
||
} xA| D]9} |    | kr½Pntjd||| gƒ|
d7}
q§W|jt j |
ƒdS(NtBossHPInformationitreverseidi(RŠRíRRERtGetDictValueByKeytsortedRªR1RÐR6RÁRRpt PlayerControlt WorldNotifyR(( R’tdropTypetownerIDRR{thpPerLogicNPCIDDictthpPerLogicListt    hpPerListtsysMarktnowHPPerthpPerLogicMarktlogicHPPerListthpPer((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt DoHPPerLogicDs$       
  cCs“|j}|jƒdkrdS|jƒdkrXtjd|jƒƒ|j|ƒn|jƒ||jƒ}|dkr‚dS|j|ƒdS(Nis¼ì²âµ½NPC¿ìËÙ¸´»î %si(RŠtGetRefreshTimeRÀRRQRDt SetActionTickRl(R’RõRt
remainTime((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDieTickms      c     Csè|jƒ}tjdƒ}||kr+dS||\}}|jtjƒ}|t|ƒkrcdSttj    |dƒƒ}||}    ||    kr–dS|j
tj|dƒt j ƒj ƒ}
tjd||||    |
||gƒdS(NtRebornPreNotifyNPCgLí@ii(Rít ReadChConfigtGetEvalChConfigRÁRRqRnRNtmathtceilR(RRBRhR‚Rƒ( R’RR‘RtpreRebornNotifyNPCDicttnotifyMinuteListt
notifyMarkt notifyIndextreaminMt notifyMinuteRc((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__DoNPCRebornPreNotifys   
 %cCsG|j}|jtjƒr)|jƒdS|j||ƒ|jƒdS(N(RŠRÁRtDef_Obj_Dict_TurnFightPosInfotRefreshTurnfightNPCAttrtRefreshNPCAttrStatetRefreshNPCActionState(R’t canSyncClientR>R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR9›s     
cCsb|j}|jtjƒ}i}|rU|jidtj6dtj6dtj6ƒnYt|j    ƒƒ}|sqdS|ji|j
ƒtj6|j ƒtj6|j ƒtj6ƒt jd|jƒ|j    ƒ|fƒtj|ƒ|jƒ|j|jtjdƒƒ|j|jtjdƒƒ|j|jtjdƒƒtj||jtjdƒƒdS(NieÍi€ðúl^ esheroAttrDict: ID:%s,NPCID:%s,%si(RŠRÁRtDef_Obj_Dict_LineupPlayerIDtupdatet
AttrID_Atkt
AttrID_Deft AttrID_MaxHPRRítGetAtktGetDefR6RRQRDR1tClearBattleEffecttResetNPCBattleStatet    SetMinAtkRKt    SetMaxAtktSetDeftSetMaxHP(R’RtlineupPlayerIDt heroAttrDictR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR ¦s.        
 
    & 
cCs™|j}|jƒ|jƒ|j|jƒƒ|j|jƒƒ|jƒtj    krlt
j ||ƒdSt ||ƒt j|ƒ}|j|ƒdS(N(RŠR«R¬RRtSetAtkIntervaltGetBaseAtkIntervalR§R¨R½R¾tRefurbishPetAttrR@RxtCalcBuffer_NPCBattleEffecttRefreshNPCSpeed(R’R£R>Rt allAttrList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR¡Ës    
 
 
  cCs­|j}|tjjtjdƒ}|sV|jtjƒr©|jtjdƒq©nSt|j    ƒt
j t dt t
j |ƒƒƒ}|j|ƒ|jtj|ƒdS(NigY@(RŠRtCalcAttr_BattleNolineRKtTYPE_Calc_AttrSpeedRÁRR(RNRR)tDef_MaxRateValueRtfloatR(R’R¸RtspeedPertspeed((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR·ós    3 cCs'|j}tj|ƒtj|ƒdS(N(RŠR¶tClearObjActionStateRxtCalcBuffer_ActionState(R’R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR¢    s     cCs;|j|ƒ}|j|ƒ}|s*|r7|jƒndS(N(tRefreshBuffStateNoTimelytRefreshBuffStateTimelyR¡(R’RõtrefreshAtrefreshB((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytRefreshBuffState    s cCsù|j}||jtjƒtjtjkr3dS|jtj|ƒt}tj||j    ƒ|ƒ}|pt|d}tj||j
ƒ|ƒ}|pŸ|d}tj||j ƒ|ƒ}|pÊ|d}t j ||ƒt j||ƒ}|pø|S(Ni(RŠt GetTickByTypeRtTYPE_NPC_Tick_BufftTYPE_NPC_Tick_Timet SetTickByTypeR t    BuffSkillt RefreshBuffRR    R t SkillCommontCheckAddAuraSkilltCheckAuraSkill(R’RõRtrefreshtresult((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRÁ"    s    &cCsÂ|j}||jtjƒtjtjkr3dS|jtj|ƒtj||jƒ|ƒtj||j    ƒ|ƒtj||j
ƒ|ƒ}|drª|j ƒnt j ||ƒ|dS(Nii(RŠRÆRtTYPE_NPC_Tick_Buff_TimelyRÈRÉRÊRËR
R RR¢RxtProcessPersistBuff(R’RõRRÐ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRÂA    s    
 cCs~|j}|jƒ}|jƒ|jƒ|jƒ|tjddƒkrjtjdd|jƒgƒn|j    ƒj
ƒdS(NtBossRebornServerBossiitBossRebornBossKilled( RŠRít!_NPCControl__SetFeelNPCPlayerListt_NPCControl__GiveObjPrizet_NPCControl__EventKillNpcRRTR‚RƒRR¯(R’RR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt __KillLogic_    s     
 
 
 
c Cs|j}g|_g}|s-|jƒ}ng}xÔt|jƒƒD]À}|j|ƒ}|j|ƒ}|svqFn|d}|d}|r¯||kr¯|j|ƒq¯n|rFtj    ||j
ƒ|j ƒƒ}    x-|    D]"}
|
|krÝ|j|
ƒqÝqÝWqFqFW||_dS(Nii( RŠRŽR+Rt GetHurtCountt    GetHurtAtt_NPCControl__GetTagByHurtObjROR‚tGetAreaTeamMemberRËRÌ( R’RR,teventPlayerListRthurtObjt hurtObjTypeRtcurTeamt
playerlistt
teamPlayer((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__SetFeelNPCPlayerList|    s.        
 
 !      cCsn|jr|j|jƒnxK|jD]@}|jrV|jjƒ|jƒkrVq&n|j|tƒq&WdS(N(RŒt_NPCControl__MissionOnKillNPCRŽRRª(R’t eventPlayer((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__EventKillNpc¦    s    $cCsdS(N((R’t
dropPlayerthurtTypethurtIDtownerPlayerListt isOnlySelfSee((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt __NPCDropItem¸    scCst|j}|jƒtj|dƒ|jƒ|jƒ}|tjkrYtj    |ƒdS|j
t ƒt |ƒdS(Ni( RŠt_NPCControl__KillLogicR1RnR5R§R¨R½R¾t
SetPetDeadR
R RK(R’RtcurNPC_GameNPCObjType((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt    SetKilled¿    s    
 
 
cCs |j}|jƒ}|stStj|ƒ}tj|ƒ|krZ|jtjdƒtS|j    ƒt
j krst S|j ƒrƒt S|jƒ}| s³||jƒtjdkrÈ|j|dƒt S||jƒtjkråt St||dƒ}tj|d|tƒ|j|ƒt S(NiiiÐgˆÃ@(RŠt GetHPRestoreR R1R6RÐR(RRpRýR¨t    laNPCNullRªR/tGetRestoreTimetDef_NPC_ProcessHP_TicktSetRestoreTimeRNRÌt
SkillAddHP(R’RõRt hpRestoreRatet curNPCMaxHPtlastRestoreTimet restoreValue((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytProcessHPRestoreâ    s,       $ cCsdS(N((R’Rõ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytProcessBattleHPRestore
sc    Cs¤|j}|jƒ}|jƒ|_tj|ƒ}|j|ƒ\|_}}}|||_|_    |r‡t
j d|||fƒn|j ƒt |jƒdkrd}d}g}    x8|jjƒD]'}
|jsã|
|_n|jsø|
|_n||
jƒkr|
jƒ}|
}n|rÕ|
jƒt|ƒkrÕtjd|
jƒƒ} tjdt|ƒƒ} | r| jƒnd} | r—| jƒnd}|| krÕt
j d| ||f|
jƒƒqÈqÕn|j|
ƒ|    j|
ƒqÈW|    |_|rn|tjtjtjgkrnt |    ƒdk}xX|    D].}
|j|
tj|
jƒ|
gd|ƒq9Wq÷|r÷|j||||    ƒq÷ng|dkr²|j|||ƒnE|tj krÔ|j!||ƒn#|r÷t
j"d|||fƒn|r‡i|j#ƒd6|d    6t
j$ƒj%ƒd
6t
j&ƒj'ƒd 6|rL|j(ƒndd 6|jj)ƒd 6|d6|d6}t*j+d|ƒnt,r t,|||ƒndS(Ns-__GiveObjPrize npcID=%s,hurtType=%s,hurtID=%sitRealmsWÍæ¼Ò´ó¾³½ç²»×㣬ÎÞ·¨»ñµÃBoss¹éÊô½±Àø! playerRealmLVLarge=%s,npcID=%s,npcRealmLVLarge=%siRës*NPC¹éÊôÒì³£:npcID=%s,hurtType=%s,hurtID=%sRXRoRcRWtteamIDtkillerIDRèRétKillBossRecord(-RŠRít"_NPCControl__FindLastTimeHurtObjExR‹RRQt_NPCControl__FindNPCKillerInfoRRR‘RRŠt _NPCControl__DoLastTimeHurtLogicRnRR}RŒRtGetOfficialRankRRRt
GetLvLargeRt#_NPCControl__KilledByPlayerSetPrizeRORtDef_NPCHurtTypePlayertDef_NPCHurtTypeTeamtDef_NPCHurtTypeSpecialt_NPCControl__NPCDropItemt!_NPCControl__KilledByTeamSetPrizetDef_NPCHurtTypeFamilyt#_NPCControl__KilledByFamilySetPrizeRyRDRÊRhRBRCRäRHtDataRecordPackt SendEventPacktOnNPCDie(R’RRt
isGameBossRàRèRéRçt maxPlayerLVRêRtplayerRealmIpyDatatnpcRealmIpyDatatplayerRealmLVLargetnpcRealmLVLargeRëtdataDict((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GiveObjPrize.
sj     
                             $ / *,!cCs?|j}|sdS|jƒ}|tjkr2dS|j}dS(N(R‹R¸R¨R¹RŠ(R’tlastHurtPlayerRÈR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__DoLastTimeHurtLogic{
s         cCsÉ|j}|jƒ}|jƒ}tjƒjƒ||f}|tjkr·tjj|ƒ\}}}}    |r{|j    ƒnd}
tj
d||j ƒ|
||    fƒ||||    fSd}d}    i}d}t |ƒ} |rûtj
d|| fƒn| tjkrœ|jƒ} | jƒ|r@tj
d| jƒƒnxËt| jƒƒD]B} | j| ƒ}|r—tj
d| |jƒ|jƒfƒn|j|d|ƒ\}}|dkræ|dkræ|rStj
dƒqSqSn|rG|jƒ}||kr|||<n|r4tj
d|| |fƒn|dtj|fS|rS|}|r|tj
d    || |j    ƒfƒn||tj|j    ƒfSqSWnr| tjkr|jƒ\}}|rÜ||tj|j    ƒfS|r|||jƒ<|dtj|jƒfSn|jrœ|jjƒ}|jj    ƒ}
|rXtj
d
|||
fƒn|
rvtjƒj|
ƒ}n| rœ||krœ|j||<qœn| tj krÑtj!}|r*tj
d |ƒq*nY| tj"kr*t#j$|ƒ}|dkr*tj%}|}    |r'tj
d |ƒq'q*n|dkr¹|rttj}|j    ƒ}    |r¶tj
d ||    fƒq¶q¹|r¹tj}|j ƒd}    |r¶tj
d||    fƒq¶q¹n||||    fS(NisKNPC±»»÷ɱ£¬¹éÊôÐÅÏ¢: key=%s,playerIDList=%s,teamID=%s,hurtType=%s,hurtID=%ss"NPC±»»÷ɱ, key=%s,dropOwnerType=%ss hurtCount=%ss(hurtIndex=%s,hurtValueType=%s,valueID=%stisLogs&    µ±Ç°ÉËѪ¶ÔÏ󳬳öÖ¸¶¨·¶Î§»òÒѾ­ËÀÍös;    ¹éÊô×î´óÉËÑªÍæ¼Ò: npcID=%s,dropOwnerType=%s,playerID=%ss9    ¹éÊô×î´óÉËѪ¶ÓÎé: npcID=%s,dropOwnerType=%s,teamID=%ss8    ¹éÊô×îºóÒ»»÷£¬npcID=%s,lastHurtPlayerID=%s,teamID=%ss    ÎÞ¹éÊô...npcID=%ss    ÕóÓª¹éÊô...factionID=%ss$    ¹éÊôĬÈ϶ÓÎé, npcID=%s,teamID=%ss&    ¹éÊôĬÈÏÍæ¼Ò, npcID=%s,playerID=%s(&RŠRíRDRRBRCRItg_npcKillerInfoRXRäRŠRHRR0RtDropOwnerType_MaxHurtR+tSortRÙRRÚt GetValueTypet
GetValueIDRÛRRRRût_NPCControl__GetMaxAngryInfoR‹RüRýtDropOwnerType_AlltDef_NPCHurtTypeAlltDropOwnerType_FactionRTtGetNPCItemProtectFactiontDef_NPCHurtTypeFaction(R’RRRRXR’t
killerDicttkillTeamRèRéRþt dropOwnerTypeR,R—t
maxHurtObjRRàR6tmaxAngryPlayert maxAngryTeamtlastHurtPlayerIDtprotectFaction((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__FindNPCKillerInfo‹
s¤            
)   #                         cCs’|jƒ}|sdS|jƒ}|jƒ}|tjkrAdStj||ƒ}|s]dS|jƒ}|sy|dfS|tj    ƒj
|ƒfS(s  »ñÈ¡×î´ó³ðºÞËù¹éÊôµÄÍæ¼Ò, ¶ÓÎé N(NN(NN(NN( RRRRR¨R¹RRÃRäRüRý(R’RëRt angryObjTypeRÉRþ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GetMaxAngryInfoù
s    
cCs>|j}|jtjƒ}tjƒj|ƒ}|s:dS|S(N(RŠRÁRtDef_PlayerKey_LastHurtRRltFindPlayerByIDR(R’RR6R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__FindLastTimeHurtObjEx s     c Cs|j}|jƒ}d}|dkrBtjd|jƒƒ|S|j|jƒƒ}|jƒ}|tj    krtj
|j ƒt j ƒ}    |    dkrÃ|r¿tjd||j ƒfƒn|Stj|    ƒdksí|    jƒt jkr|rtjd||j ƒfƒn|S|r}|j|    jƒ|    jƒ|ƒs|rvtjd||j ƒ|    jƒ|    jƒfƒn|Sn‡tj|jƒ|jƒ|    jƒ|    jƒƒtjkr|rtjd||j ƒ|jƒ|jƒ|    jƒ|    jƒfƒn|S|    df}|    dfS|tjkrv|j ƒ}
tjƒj|
ƒ} |rjtjd||
fƒn| dkr”|rtjd|
ƒn|S|r´tjd    | jƒƒnx»t| jƒƒD]§} | j| ƒ} | dksú| jƒdkr|rÇtjd
| ƒqÇqÇntj| ƒdksD| jƒt jkrp|rÇtjd | | jƒfƒqÇqÇn|rØ|j| jƒ| jƒ|ƒsa|rÇtjd | | jƒ| jƒ| jƒfƒqÇqÇqan‰tj|jƒ|jƒ| jƒ| jƒƒtjkra|rÇtjd | | jƒ|jƒ|jƒ| jƒ| jƒfƒqÇqÇnd| f}|SW|S|tjkr‰|S|S(NsÉËѪ¶ÔÏó´íÎó,npcID=%ss*ÕÒ²»µ½¸ÃÄ¿±êÉËÑªÍæ¼Ò: npcID=%s,playerID=%sis*¸ÃÄ¿±êÉËÑªÍæ¼ÒÒÑËÀÍö: npcID=%s,playerID=%ss<¸ÃÄ¿±êÉËÑªÍæ¼Ò²»ÔÚNPCÇøÓòÄÚ: npcID=%s,playerID=%s,pos(%s,%s)sO¸ÃÄ¿±êÉËÑªÍæ¼Ò³¬³öÖ¸¶¨¾àÀë: npcID=%s,playerID=%s,npcPos(%s,%s),playerPos(%s,%s)s Ä¿±êÉËѪ¶ÓÎé: npcID=%s,teamID=%ssÕÒ²»µ½Ä¿±ê¶ÓÎé, teamID=%ss¶ÓÎé³ÉÔ±Êý: GetMemberCount=%ss    i=%s, Î޸öÓÔ±£¡s$    i=%s, ¶ÓÔ±ÒÑËÀÍö£¡memPlayerID=%ss6    i=%s, ¶ÓÔ±²»ÔÚNPCÇøÓòÄÚ£¡memPlayerID=%s,pos(%s,%s)sI    i=%s, ¶ÓÔ±³¬³öÖ¸¶¨¾àÀ룡memPlayerID=%s,npcPos(%s,%s),playerPos(%s,%s)(NN( RŠRíRRRQR»R¼RRRRÃR R¨R¹RŠR1RÐtGetPlayerActiontpaDieRèRËRÌRìtDef_Team_GetExpScreenDistRRüRýRþRRÿRtDef_NPCHurtTypeNPC(R’R*tisCheckRefreshAreaRRRt hurtObjTupleRñtmaxHurtValueTypeRRþRàR—R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GetTagByHurtObj$ sŽ         * !    )!    ; 
  * !    )    !    ; cCs¥|j}|j|jƒt|ƒ}d}|jtjƒ|jƒkr]|jtjƒ}nt    j    |ƒ}|j
|t j d|ƒ|j |||jƒtƒdS(Nit
addSkillID(RŠt_NPCControl__GetExpRR RÁRR^RDR\R‚tAddExpR)tDef_ViewExpType_KillNPCt_NPCControl__KillNPCFuncExR(R’RRtadd_ExpR=t playerControl((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__KilledByPlayerSetPrizeŽ s    c    Cs÷|j}tj||jƒ|jƒd|jƒƒ}|sitjd|jƒ|j    ƒ||fƒdS|j
s‚|d|_
n|j s›|d|_ n|dj ƒ}d}d}g}    |jƒ}
tj|ƒ} x|D]} | r›| jƒt|ƒkr›tjd| jƒƒ} tjdt|ƒƒ}| rE| jƒnd}|r]|jƒnd}||kr›tjd||
|f| j ƒƒqßq›n| jƒ}||krÂ|}| }n|    j| ƒ|j| ƒ|j| ||tƒqßW|    |_tj|ƒ}|dkrb|\}    }xÊ|    D].} |j| tj| j ƒ| gd|ƒq-Wn‘| rÔ|tjtj tj!gkrÔt"|    ƒdk}xX|    D].} |j| tj| j ƒ| gd|ƒqŸWn|ró|j||||    ƒndS(NRsS½±Àø¹éÊô¶ÓÎ飬µ«ÊDz»´æÔÚ¿É»ñµÃ¸Ã½±ÀøµÄ¶ÓÔ±!npcID=%s,teamID=%s,hurtType=%s,hurtID=%siRýs[¶ÓÔ±Íæ¼Ò´ó¾³½ç²»×㣬ÎÞ·¨»ñµÃBoss¹éÊô½±Àø! playerRealmLVLarge=%s,npcID=%s,npcRealmLVLarge=%sRëi(#RŠR‚RÜRËRÌt_NPCControl__GetIsLogRRyRíRäR‹RŒRRRRQRRRRRRŠRROt_NPCControl__DoNormalTeamExpRARªRRTtGetFBEveryoneDropInfoR
RRR    Rn(R’RàRèRéRRát    maxHurtIDt    teamMaxLVRçRêRRRRRRRt curPlayerLVt fbOwnerInfoRë((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__KilledByTeamSetPrize« s\    -                                       /$ /cCsÇ|j}d}d}g}|j|jƒƒ}tjƒ}x£t|jƒƒD]}    |j|    ƒ}
|
spqOn|
j    ƒ|ksO|j
|
j ƒ|
j ƒ|ƒ rªqOn|
j ƒ} || krÑ| }|
}n|j|
ƒqOW||_|stjd|jƒ||fƒn|s&|j}n|sPtjd|jƒ||fƒdS|jse||_n|jsz||_n|jƒ} x$|D]} |j| || tƒqW|j||||ƒdS(NisI½±Àø¹éÊôÏÉÃË£¬µ«ÊDz»´æÔÚ¿É»ñµÃ¸Ã½±ÀøµÄ³ÉÔ±!npcID=%s,hurtType=%s,hurtID=%ss;½±Àø¹éÊôÏÉÃË£¬ÕÒ²»µ½µôÂäÍæ¼Ò!npcID=%s,hurtType=%s,hurtID=%s(RŠRR»R¼RR?RR@RAt GetFamilyIDRèRËRÌRRORRŠRíR‹RyRŒRRAR R
(R’RèRéRtmaxLVRçRêRñt copyPlayerMgrRtplayerRJRHR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__KilledByFamilySetPrizeæ sH     4                               c    Cs5|jƒ}|jƒ}tjƒjƒ}tjtjƒjƒƒ}|tj    krXdStj
ƒr¯|tj kr†t j ||ƒntj|ƒr«t|||tƒndS|tj krÑt j ||ƒn;t|ƒ|jƒtjdƒkr tj|tjƒntj|ƒr1t|||tƒndS(NtDailyQuestKillMonster(RíR¸RRÊRÜRRÝRhR¨RLt IsCrossServerRÞRTtDoFB_DropOwnerRRQR‰RªRRRRTt PlayerActTasktAddActTaskValuetActTaskType_KillNPCR (    R’RRRÿt
isTeamKillRt
defObjTypet    mapFBTypeRc((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__KillNPCFuncEx s&   %cCsZ|j}|jƒ}|tjkrCttj|ƒ}|rVdSn|tjkrVdSdS(N(RŠR§R¨R©RÉR¹t
gnotNormal(R’RtisFeelRRÀR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__MissionOnKillNPCE s     cCstj|jƒS(N(RRQRŠ(R’((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt
__GetIsLogT scCs“|j}|j|jƒt|ƒ}|s.dSd}|jtjƒ|jƒkrg|jtjƒ}nt    j    |ƒ}|j
|t j d|ƒdS(NiR=( RŠR>RRªRÁRR^RDR\R‚R?R)R@(R’RRRBR=RC((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__DoNormalTeamExpc s    cCsdS(Ni((R’tplayerLVtisTeamRP((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GetExp{ sc Csä|s
dS|j}|jƒ}    tj|ƒs4dn|    }
|tjkrkg|jD]} | jƒ^qSng} tj|||d||| gd|
d|d|ƒ} | dkrÄt
j dƒdS| j |j ƒ|jƒƒdS(Nit    ownerInfot    dropNPCIDRëR7sµôÂäÎïÆ·,ÎÞ·¨ÕÒµ½µØÍ¼µôÂäÎïÆ·(RŠRíRRQR    RRtChItemtAddMapDropItemRRRŠtSetByObjR¸RD(R’tcurItemRRžR„R…RëR7RR{ReRPtspecOwnerIDListt
curMapItem((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__MapCreateItem† s     76  cCs)tj|||d|ƒ}|s%dS|S(NR(t ItemControlertGetOutPutItemObj(R’RRœRöt isAuctionItemRçRi((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__CreateDropItem¦ si¸ c
Csˆ|j}d}d\}}t|ƒ}    |retjdtjƒjƒ|jƒ|jƒ|    fƒn|r£tjdtjƒjƒ|jƒ|jƒ|    fƒnO|    t    j
krµn=|    t    j krò|j ƒ}|ròt    j |jƒ}}qòn|sþ|r-tjd|||sdn    |jƒfƒn|snd    \}
} |j||dtƒ|jƒ} | r½| jƒ} | jƒ}
tj| |
ƒ} |s|r½tjd| |
| fƒq½n| }|
tjkrE| rE| rE|    t    j krt    j | jƒ}}qE| jƒr,t    j| jƒ}}qEt    j | jƒ}}n|sQ|rntjd||fƒqnn|j||||ƒ|S(
Nis6BossËÀÍö: lineID=%s,objID=%s,npcID=%s,dropOwnerType=%ss:¼ì²éBossËÀÍö: lineID=%s,objID=%s,npcID=%s,dropOwnerType=%ss%ownerType=%s, ownerID=%s, tagObjID=%sRés+×î´ó³ðºÞÄ¿±ê: ID=%s, Type=%s,maxAngryObj=%ss"angryObj, ownerType=%s, ownerID=%s(ii(NN(RŠRR0RRŠRBRCRDRíRtDropOwnerType_FamilytDropOwnerType_Contendt _NPCControl__RefreshContendOwnerRRR%RªRRRRÃR¨R¹RäRtUpdateDropOwner(R’RõR"tisDeadt checkCanDeadRRÎt    ownerTypeR…R)R0t maxAngryObjtmaxAngryR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytRefreshDropOwner¯ sN          /    /  /        cCs|j}|jtjƒ}|jtjƒ}| sC|tjkrGdStj|tj    ƒ}|sfdS|j
ƒs‡tj d|ƒdSt j |ƒdks±|jƒtjkrÆtj d|ƒdS|j|jƒƒ}|j|jƒ|jƒ|ƒstj d|ƒdS|S(Ns(¾ºÕù¹éÊôÍæ¼Ò²»¿É¼û£¬ÒƳý¹éÊô!playerID=%sis&¾ºÕù¹éÊôÍæ¼ÒËÀÍö£¬ÒƳý¹éÊô!playerID=%ss0¾ºÕù¹éÊôÍæ¼Ò²»ÔÚboss·¶Î§Àï£¬ÒÆ³ý¹éÊô!playerID=%s(RŠRÁRtDef_NPC_Dict_LastDropOwnerIDtDef_NPC_Dict_LastDropOwnerTypeRRRÃR¨R¹RÜRQR1RÐR5R6R»R¼RèRËRÌ(R’RR…RwtownerRñ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__RefreshContendOwnerê s&     *!cCs·|j}tjƒj|ƒ}|r¢|j|jƒƒ}|r_tjd||jƒfƒnxQt|jƒƒD])}|j    |ƒ}|dks¥|j ƒdkrÅ|rrtjd|ƒqrqrnt j |ƒdkr|rrtjd||j ƒfƒqrqrn|jƒs>|rrtjd||j ƒfƒqrqrn|rvtjd||jƒ|jƒ|j ƒfƒn|j|jƒ|jƒ|ƒrr|SqrWntjd|ƒdS(Ns$¶ÓÎé³ÉÔ±Êý: teamID=%s,memberCount=%sis    i=%s, ¶ÓԱΪ¿Õ!s&    i=%s, ¶ÓԱѪÁ¿Îª0!, memPlayerID=%ss%    i=%s, ¶ÓÔ±²»¿É¼û!, memPlayerID=%ss*    i=%s, ¶ÓÔ±×ø±ê(%s, %s)! memPlayerID=%ssÕÒ²»µ½¸Ã¶ÓÎé: teamID=%s(RŠRRüRýR»R¼RŠRþRRÿRRR1RÐRÜRËRÌRèRy(R’RþRuRRàRñR—R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GetMaxHurtTeamPlayer s4        2! cCs|j}|jƒ}t|ƒ}|tjtjtjtjgkrIdS|jtj    ƒ}|jtj
ƒ}    t j ƒj ƒ|jƒ|f}
|rå|    |ks¬||kråt jd|
|||    |fƒ|j||    ||ƒnidddf\} } } }|jtj    |ƒ|jtj
|ƒ|rLt jd|
||fƒng}|tjkrt j|tjƒ}|rU|jƒ}| sž|j|ƒrötj|} }|| |<|j||ƒ|tjkr|jtj|jƒƒqqtj|tj|d|ƒqUn=|tjkrDt jƒj |ƒ} | rUtj!d} }|rrt jd| j"ƒƒn|j#|j$ƒƒ}x·t%| j"ƒƒD] }| j&|ƒ}|dksÍ|jƒdkrí|ršt jd|ƒqšqšn|j'ƒt j ƒj'ƒkr£| s'|j|jƒƒr£t(j)||t*ƒr£|j+ƒr£|j||ƒ|| |jƒ<|r:t jd||jƒt,j-|tj.ƒfƒq:qštj|tj|d|ƒ}|rçt j/d||jƒfƒn|ršt jd    ||jƒ|j'ƒ|j0ƒ|j1ƒt(j)||t*ƒfƒqšqšWqUn|tj2krUtj2|} }|j#|j$ƒƒ}t j3ƒ}xÎt%|j4ƒƒD]·}|j5|ƒ}|s¸q—n|j6ƒ|kr
|j7|j0ƒ|j1ƒ|ƒr
|j+ƒr
|j||ƒq—tj|tj|d|ƒ}|r—t j/d
||jƒfƒq—q—Wn|r | rm| j8ƒnd}|tjkr´| d| |ft9j:|
<| sßt jd ƒqßn+|tj2krßid| |ft9j:|
<nt jd ||
| j;ƒ|| |fƒndS( Ns\¹éÊô±ä¸ü, Çå³ý¾É¹éÊô! key=%s,ownerType=%s,ownerID=%s,lastDropOwnerType=%s,lastDropOwnerID=%sis(Boss¹éÊô: key=%s,ownerType=%s,ownerID=%st    buffOwners¶ÓÎé³ÉÔ±Êý: %ss    i=%s, ³ÉÔ±²»´æÔÚ!s6    i=%s, ³ÉÔ±ÓйéÊôȨ! memPlayerID=%s,±³°üÊ£Óà¿Õ¸ñ=%ss'ɾ³ý¹éÊô¶ÓÔ±buff: teamID=%s,playerID=%ssS    i=%s, ³ÉÔ±ÎÞ¹éÊôȨ! memPlayerID=%s,copyMapID=%s,pos(%s,%s),CheckKillNPCByCnt=%ss-ɾ³ý·Ç¹éÊôÏÉÃ˳ÉÔ±buff: teamID=%s,playerID=%ssÉËѪ¹éÊôbossûÓйéÊôÍæ¼Ò!sKBoss±»»÷ɱ: npcID=%s,key=%s,playerIDList=%s,teamID=%s,hurtType=%s,hurtID=%s(<RŠRíR0RRRûRqRrRÁR{R|RRBRCRDRŠt_NPCControl__DelDropOwnerBuffRR(RRÃR¨R¹Rt HaveHurtValuet#_NPCControl__AddDropOwnerPlayerBufftDef_PlayerKey_ContendNPCObjIDRÊtDelBuffBySkillIDtDef_SkillID_DropOwnerBuffRRüRýR    RþR»R¼RRÿRjRîtCheckKillNPCByCntR RÜRƒtGetItemPackSpacetrptItemRQRËRÌR R?R@RARMRèRäRIRRH(R’RõRwR…RuRRR)tlastDropOwnerIDtlastDropOwnerTypeR’R'RàRèRéthurtListRR6RñR—RtisOkRORRPRþ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRt& s¤      $!     
"!    ,     ' ?'    #cCsb|j}tj|tjƒd}|s^tj|tj|d|ƒtjd|jƒƒndS(NiR€sÌí¼Ó¹éÊôbuff: playerID=%s(    RŠRÌt FindBuffByIDRR†tAddBuffBySkillType_NoRefurbishRRQR(R’RRõRtfindBuff((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__AddDropOwnerPlayerBuff• s     c
Cs>|j}|tjkrŒtj|tjƒ}|s7dStjd|ƒtj    |tj
|d|ƒ|tj kr:|j tj dƒq:n®|tjkr:tjƒj|ƒ}|sºdStjd|ƒxlt|jƒƒD]U}|j|ƒ}    |    dksÞ|    jƒdkrqÞntj    |    tj
|d|ƒqÞWndS(Nsɾ³ý¹éÊôÍæ¼Òbuff: playerID=%sR€isɾ³ý¹éÊô¶ÓÎébuff: teamID=%s(RŠRRRRÃR¨R¹RQRÊR…R†RrR(R„RRüRýRRþRÿRR(
R’R)RwR…RõRRRàR—R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__DelDropOwnerBuff s(    #c Cs`|j}|jtjƒ}|jtjƒ}|tjkrktj|tj    ƒ}|s[dS|j
|ƒnñ|tj krùtj ƒj |ƒ}|s™dSxÀt|jƒƒD]F}|j|ƒ}|dks¬|jƒdkråq¬n|j
|ƒq¬Wnc|tjkr\tjƒ}xEt|jƒƒD].}    |j|    ƒ}
|
sHq'n|j
|
ƒq'WndS(s ÑÓ³ÙµôÂä¹éÊôbuffÏûʧʱ¼ä Ni(RŠRÁRR{R|RRRÃR¨R¹t*_NPCControl__SetDropOwnerBuffDisappearTimeRRüRýRRþRÿRRR R?R@RA( R’RR…RwRRàR—RRORRP((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDelayDropOwnerBuffDisappearTimeµ s2     c Cs"|j}tjƒjtjƒ}|s+dStj|ƒ}tj||ƒ}|dkr\dSd}tj    ƒj
ƒ}|d}xt |j ƒƒD]‰}    |j |    ƒ}
|
jƒ} | jƒtjkrÍq‘n|jƒ|
jƒkréPn|
j|ƒ|
j|ƒ|j|    |
jƒƒPq‘WdS(s ÉèÖõôÂä¹éÊôbuffÏûʧʱ¼ä Ni'i((RŠRR{tGetSkillBySkillIDRR†RÌt GetBuffTypetGetBuffManagerByBuffTypeRBR#Rt GetBuffCounttGetBufftGetSkillRtRDt
GetOwnerIDtSetCalcStartTickt SetRemainTimetSync_RefreshBufft GetRemainTime( R’RRt    findSkilltbuffTypet    buffTuplet
RemainTimeRõtbuffStateManagerRtcurBufft    buffSkill((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__SetDropOwnerBuffDisappearTimeÕ s.     
   N(Yt__name__t
__module__RRŠR”RªR¤R¨R­RµRªRÊRÏRáR×R RòRøRçRRúRRt Def_NPCRefreshAngryValueIntervalR%RRÛR*R-R/R3R5R;R8R7ROR]R`R_RaRiRèR¾RlR/RzRoRŽR’t!_NPCControl__DoNPCRebornPreNotifyR9R R¡R·R¢RÅRÁRÂRíRÕR×R
RðRûRüRÖRRR!RRÛRR R RARäRERFR>t_NPCControl__MapCreateItemt_NPCControl__CreateDropItemRzRst!_NPCControl__GetMaxHurtTeamPlayerRtRƒRR”R“(((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR.Šs¤            K >        /     o     4        @    R#                                    6    @                                  *            )             %(                            *        #    +    !    M        n        j        ;    8    '                   ;        o             cCs±|jtjƒ}|r­tj|ƒ}|s1dSt|ƒ}|tjkrPdS|jƒ}tjd|jƒ||j    ƒf|ƒt
|ƒ}|j |tj |t ƒndS(Ns>Íæ¼Ò»÷ɱ¾ºÕù¹éÊôÕß! defPlayerID=%s,contendNPCObjID=%s,npcID=%s(RÁRR„Rt FindNPCByIDR0RrRRQRíR.RtRR (RtdefenderRõtcontendNPCObjIDRR)R6t
npcControl((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnPlayerKillNPCPlayerû s        cCsVtjƒ}||_||_||_||_t|jƒ|_tj    ||ƒdS(N(
R:ttagMCVirtualItemDropt
ItemTypeIDR=R>tUserDataRnt UserDataLenRBRC(RPRœRRžt userDataStrt    vItemDrop((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSendVirtualItemDrops                 cCs]tjƒj|ƒ}|sdS|jƒ}|s5dS|jƒ}|jƒ}t|||ƒS(Ni(RR{tFindNPCDataByIDtGetExpRt
CalcNPCExp(RRtnpcDatatbaseExpRVRa((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt    GetNPCExps   cCs(ttjdtjddƒƒƒ}|S(NtExpAttenuationi(tevaltFormulaControltGetCompileFormulaRRT(R¿RaRVtexp((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR½$s$cCsFtjtd|jƒdfƒ}|dkr2dS||||ƒdS(Ns AIType_%d.%stOnAttackDieByPlayer(RRRRR(RRRR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnPlayerAttackNPCDie/s" cCs—tjƒrtS|jƒ}|dkr]t||ƒ|kr]tj||jƒ|gƒtS|j    ƒr“t
j |t j ƒ r“tj|dƒtStS(NitGeRen_lhs_202580(RRSRªtGetMaxCollectCounttGetTodayCollectCountR‚t
NotifyCodetGetCollectCountLimitNotifyR tGetCollectAwardRƒtCheckPackHasSpaceR¨R‰(RRtcollectNPCIpyDatat limitMaxTime((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytCheckCanCollectByNPCID7s  !"cCs{d}tjddƒ}xL|D]D}||kr7qnx(|D] }||jtj|ƒ7}q>W|SW|jtj|ƒS(Nit
CollectNPCi(RREtNomalDictGetPropertyRtDef_PDict_CollNpcIDCollTime(RRt todayCollTimetcollectTimeShareIDListt    npcIDListt    collNPCID((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRÊKs   cCsÌ|jƒ}tjd|ƒ}|s(tS|jƒr8tSt|||ƒsNtSd}t|ƒ}| rµ|dkrµ||jƒkrµt    j
dƒd}|r±t j ||ƒntSt ||||ƒtS(NRÒiis²»ÔÊÐíͬʱ²É¼¯£¡tGeRen_liubo_436832(RíRRR tGetIsMissionCollectNPCRÑRªtGetCollectNPCPlayerIDRRRQR‚RËtDoCollectNPCBegin(RRRõRRÏtcanCollTogethertcollectPlayerIDR‰((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnCollectNPCBeginWs$   % cCsòd}| r.t||ƒ r.tjdƒdS|jtj|jƒƒ|jƒd}|jƒt    j
krut    j nt    j }t j|||d|jƒƒ|jƒr¿|jtj|ƒntj||jƒtjdƒtj||ƒdS(NisSetCollectNPC fail!ièt    prepareID(t SetCollectNPCRRyR(RtDef_PlayerKey_CollectNPCObjIDRDtGetPrepareTimeR+R¨t ntCollectiont pstCollectingtpstMissionCollectingR‚tSync_PrepareBegint GetLostHPPertDef_PlayerKey_CollectLostHPTickRît AddHurtValueRRRTtOnBeginCollect(RRRÏRõRÝt prepareTimet prepareType((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRÜss ' cCs•|jƒ}|jƒ}|jtjƒ}|rktjƒj|ƒ}|rk||krktjdƒt    Sn|j
tj|ƒ|j
tj |ƒt S(Ns?SetNPCColleced ÓÐÈËÔڲɼ¯ÇÒ²»ÊÇͬһ¸öÈË£¬Ôò²»¿ÉÖØÐÂÉèÖòɼ¯¶ÔÏó( RRDRÁRtDef_NPC_Dict_CollectPlayerIDRRlR3RQR R(RâRª(RRt curPlayerIDt curNPCObjIDtcurCollectPlayerIDtcurCollectPlayer((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRáˆs   cCsi|jtjƒ}|dkr"dStjƒj|ƒ}|setjd|ƒ|jtjdƒdS|S(Nis>GetCollectNPCID ÓÐcurCollectPlayerID=%s£¬µ«ÕÒ²»µ½¸ÃÍæ¼Ò£¬ÖØÖÃ!(RÁRRîRRlR3RQR((RRñRò((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRÛœs     cCst|jtjƒ}|dkr"dStj|ƒ}|rM|jtjdƒn|jtjdƒtj||ƒdS(Ni(    RÁRRâRR¯R(RîRTt OnExitCollect(RtcollectNPCObjIDR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytClearCollectNPC¯s cCsÜtjd|ƒ}|s-tjd|ƒdS|jƒr=dStj|||tƒtjƒr«t    j
|ƒ}idd6|j ƒd6|d6}tj t j||gƒnt|||ƒtj|||ƒt|ƒtS(NRÒs    ·ÇÌØ¶¨²É¼¯NPC...npcID=%sitResulttPlayerIDR<(RRzRRQRÚt PlayerStatetDoCollectingLostHPRªRSR‚tGetPlayerServerGroupIDRtSendMsgToClientServerR)tCrossServerMsg_CollectNPCOKtDoGiveCollectNPCAwardRTt OnCollectOKRõ(RRRõRÏt serverGroupIDtmsgInfo((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDoCollectNPCOKÀs  !
cCsM|dsdS|d}tjd|ƒ}|rIt|||dtƒndS(NRöR<RÒtcrossCollectOK(RRzRýRª(RtmsgDataRRÏ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRüÚs
 
cCsdS(N((RRRÏt
collectCntRtisSweep((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRýäsc CsIt}|dkr{g}t}tjƒ}xNt|jƒƒD]7}|j|ƒ}|jƒr=|j    |j
ƒƒq=q=Wn|s…dSg}xl|D]d}|j t j |ƒ}|rÁ| rÁq’ntjƒ}    |    jƒ||    _||    _|j    |    ƒq’W|sdStjƒ}
|
jƒ||
_t|
jƒ|
_tj||
ƒdS(N(R RRªRtIPY_DataRtGetCollectNPCCounttGetCollectNPCByIndexRÉRORíRÓRRÔR:ttagMCNPCIDCollectionCntR¯R<t CollectionCntttagMCNPCIDCollectionCntInfotNPCCollCntListRnt
CollNPCCntRBRC( RR×t    isSyncAllt
ipyDataMgrRR|tsyncListRt    collCountt collCntInfot npcIDCollInfo((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSyncCollNPCTimeçs:      
         
    cCs¨t|ƒi}xG|jƒD]9}|jtj|ƒrtj|tj|dƒqqWxGtdƒD]9}|jtj|ƒrgtj|tj|dƒqgqgWdS(Nii(    tCollNPCTimeOnDayRHRÓRtDef_PDict_DropCountTodayR‚tNomalDictSetPropertyR¬tDef_PDict_DropColorToday(RtitemDropLimitDayInfoRœR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt PlayerOnDay s
!!cCst|dgƒdS(Ni(tDoResetCollectNPCTimeByType(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRscCs×g}tjƒ}x¨t|jƒƒD]”}|j|ƒ}|jƒ}|rd|jƒ|krdq%n|jƒsvq%n|jt    j
|ƒs’q%nt j |t    j
|dƒ|j |ƒq%W|rÓt||ƒndS(s_ÖØÖòɼ¯Îï²É¼¯´ÎÊý
            ÖØÖÃÀàÐÍ: 0-²»ÖØÖã¬1-ÿÈÕ5µã£¬12-Áé²ÝÔ°ÖØÖã¬14-ÏɲÝÔ°ÖØÖÃ
    iN(RRRRRRítGetCollectResetTypeRÉRÓRRÔR‚RROR(Rt resetTypeListtresetNPCIDListRRR|R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRs    c    Cs i}|s|Stjƒ}tjdt|ƒƒg}xIt|jƒƒD]5}|j|ƒ}|jƒ}|dkrqLn|jƒ}||krqLn|j    |ƒd}    t
j |ƒ}
|j ƒ} |j ƒ} t
j|ƒ} d}|jƒtjks|jƒ rbd}    |jƒ}|dkrbtd||jƒƒ}td||ƒd}qbn||
| | | |    |g||<qLWtjdt|ƒƒ|S(NsGetNPCInfo...queryNPCIDList=%siiiès    npcInfoDict=%s(RR!RQRkR¬t GetNPCCountt GetNPCByIndexRDRíROR1RÐRËRÌR6RýR¨RþtIsAliveRRRÀ(tqueryNPCIDListRõt npcInfoDicttgameNPCManagert findNPCIDListRRtcurIDR{R‚tcurHPRRžtmaxHPtrefreshRemaindSecondt refreshTimetpassTick((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt
GetNPCInfo9s<        "  #cCsýtjƒ}|jƒ||_||_g|_x£|jƒD]•\}}|\}}}    }
} } } tjƒ}|jƒ||_||_    ||_
|    |_ |
|_ | |_ | |_| |_|jj|ƒq>Wt|jƒ|_tj||ƒdS(N(R:ttagMCNPCInfoListR¯tMapIDt    PlayerCntt NPCInfoListRLt tagMCNPCInfotObjIDR<tNPCHPtMaxHPR=R>tIsActivet RefreshSecondRORnt
NPCInfoCntRBRC(RRct    playerCntR#t npcInfoPackR&tnpcInfoR{R'R(RRžR‚R)((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt SyncNPCInfohs* 
             
                                c    Cs¼i}tjƒ}tjdt|ƒƒt|tƒrñxft|j|ƒƒD]œ}|j||ƒ}|j    ƒ}|dkr„qNn|j
ƒ}|r¨||kr¨qNn|j ƒt j ksN|jƒ rÐqNn|j|dƒd||<qNWn°x­t|jƒƒD]™}|j|ƒ}|j    ƒ}|dkr7qn|j
ƒ}|r[||kr[qn|j ƒt j ks|jƒ rƒqn|j|dƒd||<qWtjdt|ƒƒ|S(Ns!GetNPCCntInfo...queryNPCIDList=%siis    npcCntDict=%s(RR!RQRkRMRNRtGetNPCCountByGWIndextGetNPCByIndexByGWIndexRDRíRýR¨RþR!RKRR (    R"RõRut
npcCntDictR$RRR&R{((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt GetNPCCntInfo‡s8    "!   "cCs£tjƒ}|jƒ||_g|_xR|jƒD]D\}}tjƒ}|jƒ||_||_|jj    |ƒq5Wt
|jƒ|_ t j ||ƒdS(N(R:ttagMCNPCCntListR¯R.R0RLttagMCNPCCntInfoR<tCntRORnR7RBRC(RRcR>R9R`tnpcCntR:((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSyncNPCCntInfoµs 
         
        cCsdS(N((RRcRWRRœt    equipInfo((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSendGameServerGoodItemRecordÆscCsdS(N((Rt
clientDataRõ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnBuyCollectionCntÔscCsåtjƒj|ƒ}|j}tjddiƒj|ƒ}|sFdSd}|tj||ƒ7}|j    t
j |dƒ}|j ƒ}||kr±tj d||f|ƒdStjddiƒj|ƒ}    |    sCtjddiƒjt|ƒgƒ}
|
stj d|ƒdS|t|
ƒkr6|
d}    qC|
|}    n|    sMdStjdd    iƒjt|ƒtjƒ} i|d
6|t
j6} tj|| |    t
j| ƒ} | s¶dStj|t
j ||dƒtj|ƒdS( NtKillBossCntLimit1iisH¹ºÂòBOSS¿É»÷ɱ´ÎÊý, ÒÑ´ïµ½½ñÈÕ×î´ó¿É¹ºÂò´ÎÊý£¬hasBuyCnt=%s, canBuyCnt=%siis5ûÓÐÅäÖÿɹºÂòboss´ÎÊýÏûºÄ£¬ÎÞ·¨¹ºÂò! killBossMark=%siÿÿÿÿiR(RRlRAt KillBossMarkRRERKtPlayerGoldInvesttGetAddBossBuyCntRÓRtDef_PDict_Boss_KillCntBuyCntRRQRkRnR¨tTYPE_Price_Gold_MoneytDef_Cost_Reason_SonKeyR‚tPayMoneytDef_Cost_BuyKillBossCntRtCrossPlayerDatatSendMergePlayerDataNow(RRGRõRt killBossMarktbuyTimesVIPPriIDt    canBuyCntt    hasBuyCntR6tcostGoldt costGoldListt    moneyTypetinfoDicttisOK((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnBuyKillBossCntßs>      '  * cCss|j}|j}tjƒjtj|ƒ}|s8dStjƒjtj|dƒtjd|||fƒdS(Nis,ClientNPCShowEnd npcID=%s,endType=%s,tick=%s(    R<tEndTypeRt    GetGameFBtGetGameFBDictByKeyRtDef_FBDict_NPCShowEndTickt SetGameFBDictRQ(RRGRõRtendTypetendTick((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt OnNPCShowEnds        cCsZtjddƒ}tjƒjtjƒd}||krVtjddƒ}||kStS(Nt    BossShuntii(    RRTRRBtGetGameWorldDictByKeyR)tDef_Notify_WorldKey_ServerDayRER (RctbossShuntMaxServerDayt openServerDaytbossShuntMapIDList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytIsMapNeedBossShunts  
cCs^||f}tjj|iƒ}||jƒ|g||jƒ<|tj|<t||ƒdS(N(RItg_bossShuntPlayerInfoRKRäRtGameServer_WorldBossShuntInfo(RRcRWRRõR’tshuntPlayerDict((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytAddBossShuntRelatedPlayer#s    cCs||f}tjj|iƒ}t|||gƒ}tjƒjdddd|t|ƒƒtjd|||f|ƒdS(NitWorldBossShuntInfosE֪ͨGameServerµØÍ¼Boss·ÖÁ÷ÐÅÏ¢: mapID=%s,lineID=%s,shuntPlayerDict=%s(    RIRmRKRkRRlRmRnRQ(RcRWR’RotmsgStr((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRn,s  (cCs|s
dSdS(N((RRt attackCountR÷((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytUpdateNPCAttackCount4scCs5|d}|d}|d}t||||ƒdS(NR<t AttackCounttMaxCount(Rt(RRRRsR÷((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytCrossServerMsg_NPCAttackCount:s
 
 
 
cCs‘|s
dStjƒ}xR|D]J}|jtj|ƒ}tjƒ}||_||_|jj    |ƒqWt
|jƒ|_ t j ||ƒdS(N(R:ttagMCNPCAttackCountInfoRÓRtDef_PDict_NPCAttackCountttagMCNPCAttackCountR<RutNPCAttackCountListRORntCountRBRC(RR×t
clientPackRRst atkCountObj((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSyncNPCAttackCountBs           cCst||ƒdS(N(t__OnAttackedDropItem(tatkObjRRRõ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt OnNPCAttackedSs cCsdS(N((RR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR€\s(R¨RR‚R—RRxRÊRðt ChNetSendPackRÌRîRmRƒRTR”R¾RR¶R)RfR:RRBRtPlayerPrestigeSystGY_Query_BossFirstKillRÃtPlayerBossRebornRUtPlayerActCollectWordstPlayerTongTianLingRRtPlayerFeastWishtPlayerFeastTravelRKtPlayerWeekPartyRNtPlayerActLoginRURRøt
TurnAttackRIR1RRRFR–ttimetcopyRRR¬tNPCAttr_ParamDicttNPCAttr_AttrStrengthenListtNPCAttr_PlayerCntCoefficienttNPCAttr_NPCPlayerCntCoefficienttNPCAttr_DynNPCLVMaptNPCAttr_DynPCCoefficientMapRRRRR"R$R%R&R,R.R0R2R4R6R9R;R=R R@RbRpRªRwtDef_NPCMaxDropRateR¡R¦R«R²R¶R¼R·RÉRÙRâRêRûRüRRRR R9RIRKRwR‡R‰R.R³RºRÀR½RÇRÑRÊRßRÜRáRÛRõRRüRýRRRRR,R;R?RDRFRHR]ReRlRpRnRtRwRR‚R€(((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt<module>s                                                 
                                                                              E             
                !    !    +    >    ]             -(        J            ÿÿÿÿÿÿÿÿÿÿ{                                                            
 %              /     .              1