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
483
484
485
486
487
488
489
490
491
492
493
    Ùhc    @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/ddl0Z0ddl1Z1ddl2Z2ddl3Z3ddl4Z4e5Z6e7dƒ\Z8Z9Z:Z;Z<Z=d„Z>e5d„Z?d„Z@d„ZAd„ZBd„ZCd    „ZDd
„ZEd „ZFd „ZGd „ZHd„ZId„ZJd„ZKd„ZLd„ZMd„ZNeOd„ZPd„ZQe5e5eOgdgdeOd„ZRddeSdgd„ZTdZUe5e5e5e5e5dd„ZVd„ZWd„ZXd „ZYd!„ZZd"„Z[d#„Z\d$„Z]d%„Z^d&„Z_d'„Z`d(„Zad)„Zbd*„Zcd+„ZdeOeSd,„ZeeSd-„Zfdddddd.„Zgd/„Zhd0„ZieSgd1„Zjd2„Zkd3„Zld4fd5„ƒYZmd6„Znd7„Zod8„Zpd9„Zqd:„Zrd;„Zsd<„Ztd=„Zud>„Zvd?„Zwd@„ZxdA„ZydB„ZzdC„Z{deOeOdD„Z|e5dE„Z}dF„Z~dG„ZgdH„Z€dI„ZdJ„Z‚e5dK„ZƒdL„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.pytInitNPC\s" 
 cCs“t|dƒr(t|jƒ|jƒƒS|r‰tj|ƒr‰|jƒ}tjtj|ƒƒ}tj    d||ƒ}|r‰|jƒSn|jƒS(NtGetCurLVtNPCRealmStrengthen(
thasattrtmaxRtGetLVt PlayerControltGetRealmDifficultytGetNPCIDtGetDifficultyRealmLVt IpyGameDataPYtGetIpyGameDataNotLog(Rt    curPlayertnpcIDt needRealmLVtrealmNPCIpyData((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetNPCLVks  cCs5tjd|ƒ}|s1tr-tjƒ}n|S|S(NtNPC(RRR tIPY_NPC(Rt    npcDataEx((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt GetNPCDataPyws cCs
|jƒS(N(t
GetMAtkMin(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt
GetRealmLV€scCs |j|ƒS(N(t
SetMAtkMin(RtrealmLV((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt
SetRealmLVscCs
|jƒS(N(t
GetWindDef(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetIsLVSuppress‚scCsdS(Ni((R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetFightPowerLackAtkLimitƒscCsdS(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.pytGetCommendFightPowerˆscCs
|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.pyR9Š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 giveItemListRtdropPosXtdropPosYtisDropDisperseRmtextraVirtualItemList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDoGiveItemByVirtualDrop¿si@BR!c    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(RPt
InitPyItemRtErrLogtg_filterEquipDictt GetGameDataRtDef_PlaceEquipTypetvaluestFilterItemByTypetxrangetGetFilterItemCountt GetFilterItemt GetCanNPCDropRt
ItemCommontGetItemClassLVt GetItemColort
GetSuiteIDt GetJobLimitt GetEquipPlacet GetItemTypeIDRVtLogRS(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(RMtrandint(tcurTicktlastActionTicktcurTime((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytIsInActionTime s  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_Player%s 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.pytGetNpcObjOwnerIsPlayer@s  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¾Qs 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ºRKtIsEmpty(t
curobjTypet    curSummontsummonPlayerIDR¼tcurSummonOwnerDetel((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetSummonNPCOwneres   '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 GetObjByIndexR8tGetHPR¿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ËR8R×RRÊRKRV(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ËR8R×RKRVtGetTeamRRÊ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âRR8R×RãRt    IsSameObjtGetDistRÒRÓRÊRKR¿R‘Rt 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.pytGetDefaultMaxAngryNPCIDListmscCs9|jƒtjkrdS|jƒs5|jtƒndS(N(t GetCurActionR¯tlaNPCDietGetIsNeedProcessR
R±(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSetNPCInBattleStateus
 cCsp|jƒg}|jƒ}xHt|jƒƒD]4}|j|ƒ}|sOq.n|j|jƒƒq.Wt|ƒS(N(t
GetAtkDistRYR³t GetSkillCounttGetSkillByIndexRVR(RtdistListRgtindextskill((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 tGetDeBuffStatetGetProcessBuffStatetGetProcessDeBuffStateRVtGetAuraR®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¯tmtRuntSetCurMoveTypeRURÈRtDef_NPC_Dict_SpeedPertSetSpeedtmtSlowtmtNormalRR€R(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 GetNPCManagertAddPlayerSummonNPCRItGetTickt SetNPCTypeIDt SetBornTimet    SetAITypeRt SetLastTimetSetDictRRÉt SetSightLeveltDef_NPC_Dict_SummonRefreshIDtGetTypetntRobotRiRtRebornR t
NPCControltDoNPCRebornCommLogicR[tDoFBRebornSummonNPC(
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 playerManagerR R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__NotifyMapPlayerSummonMapNPC s 
             cCsg}|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|ƒrÉtjd|ƒ}    |    r‘|    jƒtjtjgkr‘t|dƒtjƒjtj |tjƒjƒƒnt!j"|ƒ|tj#ddƒkrÉt$j%|ƒqÉnt&j'|ƒ|j(ƒtj)kr8tjƒj*ƒ}
t+j,j-|
iƒ} | j.|jƒdƒ| t+j,|
<n|jtj/ƒ} | dkrÎ| t+j0krÎt+j0| } xY| D]N}|ry|jƒ|jƒkry| j1|ƒ| sÃt+j0j.| ƒnPqyqyWnt2}|j|jtj3ƒ|jtj4ƒ|jtj5ƒ|ƒdS(NsSetDeadEx objID=%s,npcID=%sitBOSSInfotCrossYaomoBossi(6RKRRRXR³R´RµRVt    SetDeadExR¿R¯tgotNPCR[t DoFB_NPCDeadRÈRRÉR.tNPCRealmRefreshtGetTagNPCRefreshtSetDeadRIR)t
IsGameBossRRtGetMapIDtDef_FBMapID_SealDemontDef_FBMapID_ZhuXianBosstGameServe_GameWorldBossStatet    GetGameFBt SetGameFBDicttMap_NPC_WorldBossDeadTicktChNPCt OnNPCSetDeadt
GetFuncCfgtPlayerCrossYaomoBosstOnCrossYaomoBossDeadRôtClearTeamPlayerHurtValueR1R2RJRPRQRRtpopt Def_NPC_Dict_PriWoodPilePlayerIDtg_playerPriWoodPileNPCDicttremoveR±tDef_NPCDead_ReasontDef_NPCDead_KillerTypetDef_NPCDead_KillerID(Rt summon_ListR_tnpcidR t curSummonNPCR·RÎt
refreshObjtipyDataR^RbtpriWoodPilePlayerIDtpriWoodPileNPCListt
priWoodNPCt notifyClient((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRR sZ    $ ,      
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(
RRIRYt GetRealMapIDt GetCopyMapIDtstrtGetPlayerManagertGameServer_QueryPlayerResulttlenRX(    tbossIDtkillPlayerNamet    hurtValuetisNotifyt killerIDListRjt    realMapIDt    copyMapIDtkillMsg((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGameServer_KillGameWorldBossjs$( 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(RRIRYRwRxRyRzR{R|RXRtDef_CrossZoneMapTableNameRtGetIpyGameDatat    GetZoneIDtSetGameWorldDictR0t,Def_Notify_WorldKey_GameWorldBossRebornCrosstDef_CrossDynamicLineMaptFBCommontGetCrossDynamicLineMapZoneIDt'Def_Notify_WorldKey_GameWorldBossReborn(    R}tisAliveRjR‚RƒtstateMsgt    tableNamet zoneIpyDatatzoneID((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR\ss,,      & & c CsAtjƒj|ƒ}|sdStjddƒ}tj||ƒ}|dkretj|}t    |j
|dƒdtj ƒ}t j |||ƒtj|}    |j
|    dƒd}
t j ||    |
ƒtjd||
|f|jƒƒi|d6|d6|
d6|d6|jƒd    6|jƒd
6} tjd | |ƒtj|tjd|gƒtj|ƒn|rodS|tjkrZtj|tjdƒtj|tjdƒtj |tj!ƒt"j#|tj$dƒt%j&|tj'dƒt(j)|tj*dƒt+j,|tj-dƒt.j/|tj0dƒt1j2|t1j3dƒt4j5|tj6dƒn©|tj7krtj|tj8dƒtj|tj9dƒtj |tj:ƒt"j#|tj;dƒt%j&|tj<dƒt(j)|tj=dƒt.j/|tj>dƒn|tj?krjtj |tj@ƒtj|tjAdƒtj|tjBdƒt.j/|tjCdƒng|tjDkrÑtj |tjEƒtj|tjFdƒtj|tjGdƒt.j/|tjHdƒn|tj?tjDgkrt4j5|tjIdƒntjJd |ƒ} | r-tKjL||ƒntMjN||ƒdS( NtKillBossCntLimitiis4¸üл÷ɱBoss´ÎÊý: index=%s, todayCnt=%s, totalCnt=%sR_R}ttouchCntttotalCnttAccIDtPlayerIDtAddKillBossCntt BOSSFirstKill(ORR‚tFindNPCDataByIDRRbtGetDictValueByKeyRRtDef_PDict_Boss_KillCntTotalR/tNomalDictGetPropertyR1RtNomalDictSetPropertytDef_PDict_Boss_KillCntRXt GetPlayerIDtGetAccIDtDataRecordPackt SendEventPackt PlayerSuccesstDoAddSuccessProgressR0tSuccType_FeastRedPack_KillBosst PlayerStatetSetBossStateExittDef_Boss_Func_WorldtSuccType_KillWorldBosst PlayerGubaotAddGubaoItemEffValuetGubaoEffType_KillWorldBosstPlayerActivitytAddDailyActionFinishCnttDailyActionID_WorldBOSStPlayerBossReborntAddBossRebornActionCnttDef_BRAct_WorldBOSStPlayerWeekPartytAddWeekPartyActionCnttDef_WPAct_WorldBOSStPlayerFeastTraveltAddFeastTravelTaskValuetDef_FeastTravel_WorldBosstPlayerActLogintAddLoginAwardActionCnttDef_LoginAct_WorldBOSSt PlayerActTasktAddActTaskValuetActTaskType_WorldBosstPlayerZhanlingtAddZhanlingValuetZhanlingType_HuanjinggetPlayerTongTianLingtAddTongTianTaskValuetTTLTaskType_WorldBosstDef_Boss_Func_HometSuccType_KillBossHomeBosstGubaoEffType_KillBossHometDailyActionID_BOSSHometDef_BRAct_BOSSHometDef_WPAct_BOSSHometDef_FeastTravel_BossHometActTaskType_BossHometDef_FBMapID_CrossPenglaitDailyActionID_CrossPenglaitSuccType_KillCrossPenglaiBosst!GubaoEffType_KillCrossPenglaiBosstActTaskType_CrossPenglaiBosstDef_FBMapID_CrossDemonLandtDailyActionID_CrossDemonLandtSuccType_KillCrossDemonLandBosst#GubaoEffType_KillCrossDemonLandBosstActTaskType_CrossDemonLandBosstTTLTaskType_CrossBossRtGY_Query_BossFirstKilltSetPlayerFirstKillBosstPlayerGoldInvestt
OnKillBoss( RRRjt isCrossServertnpcDatatkillBossCntLimitDictt
limitIndexttotalKeyR—R™tnewCnttdataDictRq((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnPlayerKillBossŒsp  " #R4cBsJeZdTZd„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.pytGetMoveNearPosExs      !  cCsR|j}tj||ƒ}|sEtjd|jƒ||fƒdS|j|ƒS(Ns.NPCÒÆ¶¯µ½Ä¿±êʧ°Ü,NPCID = %s Ä¿±êID=%d,Type=%d(RçRRÊR‘tGetNametMoveToObj_Detel(RïR_tobjTypeRt 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.pytMoveToPosStepByStep4s    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 GetMoveDisttMoveBackRRôRõRt    laNPCMoveRIR)t GetActionTickt
SetDestPosR&R!R ( RïR    t moveAreaDistRRúRûRöR÷t curRefreshPostmoveDistRþRÿR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRDs:              $$
   " 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çRRRRR¯RRRÑRÒRÓRÔR RÕR†RÖR¿RSRÊRKR®R°RºR/RRôRõR R±(RïRúRût fixAreaDistRRÙtnpcPosXtnpcPosYRÞRžRßt
curObjTypetcurTagRRþ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_NPCErrorMaxDistRKRó(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òRKRt FindNPCAngryRR8t GetAngryValueRÊR‘RRô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çRRXR9R1R2R R±(RïR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt GetIsBossViews    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 GetMapFBTypeRYR4RtGetRecordMapIDRRLR¯tfbtNullRbtGetAttentionPlayersCountR³tGetAttentionPlayerByIndexRR8R×Rãt _NPCControl__CheckAddToAngryListRóRÒRÓtGetSightRtDef_NPCFirstSightAngryValuetDef_Screen_AreaR¿RÀtGetAngryNPCCounttDef_NPC_SeePlayerAddAngrytAddObjToAngryListR±RRRáRâRXtGetIsInRefreshPoint(RïRût
isUpdAngryRt
needResorttcurAngrytmapTypeRjt recordMapIDtmapAngryNPCCountDicttangryNPCCountLimitRíRžRæRøt addAngryValuet refreshPoint((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytAddInSightObjToAngryListsv          0   10 cCsq|s
dS|jƒtjkr8|jƒtjkr8dS|}|dkr]||jƒ7}n|j||ƒdS(N(R¿R¯RSR1tntFairyRt GetSkillAngryRD(RïtobjDetelRtuseSkilltaddAngry((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¿RKt_NPCControl__CheckCanAddAngryRR¯RÀR7RtDropOwnerType_MaxAngryRÊRëtGetTeamManagertFindTeamRRRXR†tGetMemberCountt    GetMemberR¢t_NPCControl__AddAngryValueR8R×RR
R±(RïRßtplusAngryValuetcanPiletcheckRR%tcurObjIDt addAngryTeamRR1Ržt curTeamPlayert teamPlayerIDRM((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRD­s>      $   "cCsŠ|j||ƒ}|dks3tj|ƒdkrZ|j|||tj|tjƒn,|r†tj|ƒ|}tj||ƒndS(Ni(R.RR8R/tAddAngryR0tDef_PerPointValuet SetAngryValue(RïR1RaR%R^R_R2t 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±RKRSRÐRÀRòRôtCheckPlayerAttackMode_Player(    RïRaR%Rt curObjDetelRt 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çRRR RRR³t GetAngryCountR7tGetObjIDt
GetObjTypeRRÊt DeleteAngryR±R¯RSRRôRõRERÒRÓRóR?Rt CanSeeOtherR tGetNPC_Is_GateRöR÷RRRø(RïRûRR1tdefaultMaxAngryNPCIDListRGRNRžR2tangryIDt    angryTypeRßRøR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytRemoveDeathInAngryList5sb               !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çRtGetLastResortTickRyROtGetMaxAngryTagRR8R×R9RRtResorttSetLastResortTick(    RïRûtrefreshIntervalRFRR1tlastTickt removeRsortRG((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytRefreshAngryList‡s      4  cCs^|j}|jƒ}xBtd|jƒƒD]+}|j|ƒ}|j|ƒsUq+n|SWdS(Ni(RçRR³RpR7R8R(RïRt angryManagerRžRH((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR{ªs     cCsU|dks|jƒdkr"dStj|ƒ}|dkrAdS|jƒrQdS|S(Ni(RRqR8R/t GetIsDisable(RïRHt curAngryValue((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__IsValidAngryObj¿s  cCs#|j}|jƒ}|jƒtS(N(RçRR¶R±(RïRRH((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‰RRçR±(RïRŒR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__ClearNPCAllStates
 
 
     cCsx|j}|jtƒ|s:tj|ƒtj|ƒkrQ|jƒ|jƒn|jd|ƒ|st|j    ƒnt
S(NRE( Rçt_NPCControl__ClearNPCAllStateR R8R×tGetMaxHPt_NPCControl__InitNPCSummont_NPCControl__NormalNPCInItCDtRefreshNPCStatet    Notify_HPR±(RïRER((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt ResetNPC_Inits     $
  cCs~|j}|jdƒ|jdƒ|jƒ}xHt|jƒƒD]4}|j|ƒ}|dkriqBn|jdƒqBWdS(Ni(    Rçt SetAttackTicktSetUseSkillTickRYR³RR    RtSetLastUseTick(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µRVRR(RïRtcurNPC_Summon_ListR R·Ro((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¯R R&RR R­RtGetPatrolPosCounttSetCurPatrolIndex(    RïRûRt patrolIndext    patrolPost
patrolPosXt
patrolPosYt curNPC_PosXt curNPC_PosY((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt __PatrolMoveRs4         
       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çR¢t_NPCControl__PatrolMoveRRR/t GetMoveAreaRÒRÓtGetAreaRRR­RRMR©R&R¯R RRÑt LineNearToPosR (RïRûRtPosMaptmoveAreaRúRût minMovePosXt maxMovePosXt minMovePosYt maxMovePosYtposMapXtposMapYt
posMapAreatnewPoint((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDoNormalNPCMoveˆsH       
 
 
 
 
 
cCstj|jƒƒS(N(Rt GetPsycoFunct)_NPCControl__Func_GetRandPosInRefreshArea(Rï((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetRandPosInRefreshAreaÈscCs¿|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çtGetRefreshPointRR€RRÒRÓR1R¯t ntFunctionNPCR­RôtGetNearbyPosByDis(RïRtposMapRµR¶R·RútpoxY((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__Func_GetRandPosInRefreshAreaÏs            
cCsF|j}tj|ƒ}|r-|jƒ}n|j|jƒƒ}|S(N(RçRURVR½RR(RïRRpRN((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR½ès     cCs|j}|jƒ}|j|jƒ|jƒ|ƒr:tS|jƒtjkrŒ|j    ƒtj
krŒ|j|j ƒ|j ƒ|ƒrŒtSnt S(N(RçR½RERÒRÓR±RR¯RRRt GetDestPosXt GetDestPosYR (RïRRN((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ÒRRÓR±(RïRRRN((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyREscCs³|j}|jƒ}|dkratjd|dƒ}|j|ƒ}|jƒ}|jƒ}n|jƒ\}}|jƒsŒ|j    ƒnt
|t j t ƒ|j||ƒdS(Nii(RçR¢RMR©R¡RÒRÓR¼R‹R—R&R¯RR±R (RïRt patrolCountR¤R¥RúRû((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRs         cCsb|j}|jtjd|jƒdƒƒ|jƒ\}}|j||tƒ|j|ƒdS(Nii(    RçtSetCurRefreshPointIndexRMR©RR¼R3R R5(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(NiRPis/NPC¸´»î£¬Ì×ÉϹ⻷: objID=%s,npcID=%s,skillID=%s($RçR—R±R8tSetHPR’RR}t RebornNotifyR.RtDef_NPC_Dict_HPPerLogicMarkt!Def_NPC_Dict_RebornPreNotifyIndexR`t OnNPCRebornR[t DoFBRebornNPCRRXRRR\RYR†RR    tGetSkillTypeIDt GetSkillTypetDef_SkillType_AuraRRXRKt
GetSkillIDt
SkillShellt NPCUseSkillt_NPCControl__notifyAppear(RïRûRtcurNPCIDRqRgR RS((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR5Js2     
   ,
cCsdS(N((Rï((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__notifyAppearts cCsdS(N((Rï((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRÊ…sc 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çRRRLRRtsortedR±R8R×R’RÈRRËRt WorldNotifyR.( RïtdropTypetownerIDRRÖthpPerLogicNPCIDDictthpPerLogicListt    hpPerListtsysMarktnowHPPerthpPerLogicMarktlogicHPPerListthpPer((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt DoHPPerLogic”s$       
  cCs“|j}|jƒdkrdS|jƒdkrXtjd|jƒƒ|j|ƒn|jƒ||jƒ}|dkr‚dS|j|ƒdS(Nis¼ì²âµ½NPC¿ìËÙ¸´»î %si(RçtGetRefreshTimeRRRXRKt SetActionTickRÈ(RïRûRt
remainTime((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDieTick½s      c     Csè|jƒ}tjdƒ}||kr+dS||\}}|jtjƒ}|t|ƒkrcdSttj    |dƒƒ}||}    ||    kr–dS|j
tj|dƒt j ƒj ƒ}
tjd||||    |
||gƒdS(NtRebornPreNotifyNPCgLí@ii(Rt ReadChConfigtGetEvalChConfigRÈRRÌR|RUtmathtceilR.RRIRYRRÛ( RïRRéRtpreRebornNotifyNPCDicttnotifyMinuteListt
notifyMarkt notifyIndextreaminMt notifyMinuteRj((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 canSyncClientRER((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR•ë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_MaxHPR$RtGetAtktGetDefR’RRXRKR8tClearBattleEffecttResetNPCBattleStatet    SetMinAtkRRt    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çRRRRtSetAtkIntervaltGetBaseAtkIntervalR®R¯RÄRÅtRefurbishPetAttrRGRÓtCalcBuffer_NPCBattleEffecttRefreshNPCSpeed(RïRûRERt 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_BattleNolineRRtTYPE_Calc_AttrSpeedRÈRR.RURR0tDef_MaxRateValueRtfloatR(RïRRtspeedPertspeed((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRC    s    3 cCs'|j}tj|ƒtj|ƒdS(N(RçRtClearObjActionStateRÓtCalcBuffer_ActionState(RïR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRúU    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.pytRefreshBuffStatec    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 RefreshBuffRRRt SkillCommontCheckAddAuraSkilltCheckAuraSkill(RïRûRtrefreshtresult((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRr    s    &cCsÂ|j}||jtjƒtjtjkr3dS|jtj|ƒtj||jƒ|ƒtj||j    ƒ|ƒtj||j
ƒ|ƒ}|drª|j ƒnt j ||ƒ|dS(Nii(RçRRtTYPE_NPC_Tick_Buff_TimelyR R!R"R#RRRRúRÓtProcessPersistBuff(RïRûRR(((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR‘    s    
 cCs|j}|jƒ}|jƒ|jƒ|jƒtjƒjƒ}|jsTdn |jj    ƒ}t
j d|ƒ}|rÔ|t j t jgkrÔg|jD]}|jƒ^q}t|jƒ|dt|ƒn|t
jddƒkr tjdd|jƒgƒn|jƒjƒdS(NtRPitBossRebornServerBossitBossRebornBossKilled(RçRt!_NPCControl__SetFeelNPCPlayerListt_NPCControl__GiveObjPrizet_NPCControl__EventKillNpcRRÑRYRét GetPlayerNameRtGetIpyGameDataListNotLogRR[RZRìR¢R…R±RbRRÛRR¶(RïRRRjt
killerNamet bossIpyDatatplayerR((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‡R†t GetHurtCountt    GetHurtAtt_NPCControl__GetTagByHurtObjRVRtGetAreaTeamMemberRÒRÓ( RïRRˆteventPlayerListR thurtObjt 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ëR¢R±(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__KillLogicR8RÉR‘R®R¯RÄRÅt
SetPetDeadR
R RR(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 R8R’R×R.RRËRR¯t    laNPCNullR±R‹tGetRestoreTimetDef_NPC_ProcessHP_TicktSetRestoreTimeRUR$t
SkillAddHP(RïRûRt hpRestoreRatet curNPCMaxHPtlastRestoreTimet restoreValue((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytProcessHPRestore2
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=%siRIs*NPC¹éÊôÒì³£:npcID=%s,hurtType=%s,hurtID=%sR_R}RjR^tteamIDtkillerIDRFRGtKillBossRecord(-RçRt"_NPCControl__FindLastTimeHurtObjExRèRRXt_NPCControl__FindNPCKillerInfoRêRíRîRR‘t _NPCControl__DoLastTimeHurtLogicR|RR„RéRtGetOfficialRankR&RRt
GetLvLargeR¢t#_NPCControl__KilledByPlayerSetPrizeRVRìtDef_NPCHurtTypePlayertDef_NPCHurtTypeTeamtDef_NPCHurtTypeSpecialt_NPCControl__NPCDropItemt!_NPCControl__KilledByTeamSetPrizetDef_NPCHurtTypeFamilyt#_NPCControl__KilledByFamilySetPrizeR€RKRÑRYRIRJRëROR¤R¥tOnNPCDie(RïRRt
isGameBossR>RFRGREt maxPlayerLVRHRtplayerRealmIpyDatatnpcRealmIpyDatatplayerRealmLVLargetnpcRealmLVLargeRIRå((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çRRKRRIRJRPtg_npcKillerInfoRfRëR‘RORR7RtDropOwnerType_MaxHurtR‡tSortR7R†R8t GetValueTypet
GetValueIDR9R¢ReRfRXt_NPCControl__GetMaxAngryInfoRèRYRZtDropOwnerType_AlltDef_NPCHurtTypeAlltDropOwnerType_FactionR[tGetNPCItemProtectFactiontDef_NPCHurtTypeFaction(RïRmRRR_R™t
killerDicttkillTeamRFRGR\t dropOwnerTypeRˆRžt
maxHurtObjRR>R<tmaxAngryPlayert 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( R{RRqRrR¯RÀRRÊRëRYRZ(RïRHRwt angryObjTypeR&R\((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GetMaxAngryInfoI s    
cCs>|j}|jtjƒ}tjƒj|ƒ}|s:dS|S(N(RçRÈRtDef_PlayerKey_LastHurtRRztFindPlayerByIDR(RïRR<R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__FindLastTimeHurtObjExd 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çRRRRXRRRzRReRÊR{R¯RÀR‘R8R×tGetPlayerActiontpaDieRERÒRÓRótDef_Team_GetExpScreenDistRfRYRZR[R†R\R¢tDef_NPCHurtTypeNPC(RïR…tisCheckRefreshAreaRvRRt hurtObjTupleRNtmaxHurtValueTypeRR\R>RžRc((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GetTagByHurtObjt 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ÈRRlRKRjRtAddExpR0tDef_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(NRvsS½±Àø¹éÊô¶ÓÎ飬µ«ÊDz»´æÔÚ¿É»ñµÃ¸Ã½±ÀøµÄ¶ÓÔ±!npcID=%s,teamID=%s,hurtType=%s,hurtID=%siR[s[¶ÓÔ±Íæ¼Ò´ó¾³½ç²»×㣬ÎÞ·¨»ñµÃBoss¹éÊô½±Àø! playerRealmLVLarge=%s,npcID=%s,npcRealmLVLarge=%sRIi(#RçRR:RÒRÓt_NPCControl__GetIsLogRR€RRëRèRéR¢RRRXRbR&RRRcR‘RRVt_NPCControl__DoNormalTeamExpRœR±RìR[tGetFBEveryoneDropInfoRhReRfRgR|(RïR>RFRGRR?t    maxHurtIDt    teamMaxLVRERHRRmRRoRpRqRrt curPlayerLVt fbOwnerInfoRI((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çRRRRRER†RFRGt GetFamilyIDRERÒRÓRRVRìR‘RRèR€RéR¢RœR Rh(RïRFRGRtmaxLVRERHRNt copyPlayerMgrR R5R¥R£R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__KilledByFamilySetPrize6 sH     4                               c    Csd|jƒ}|jƒ}tjƒjƒ}tjtjƒjƒƒ}|tj    krXdStj
ƒr¯|tj kr†t j ||ƒntj|ƒr«t|||tƒndS|tj krÑt j ||ƒnjt|ƒ|jƒtjdƒkrtj|tjƒtj|tjƒntj|tjd|gƒtj|ƒr`t|||t ƒndS(NtDailyQuestKillMonsteri(!RR¿RRÑR9RR:RYR¯RSt IsCrossServerR;R[tDoFB_DropOwnerRRXRæR±R RRRbR°R±R0tDailyActionID_KillNPCR¿RÀtActTaskType_KillNPCR¦R§t%SuccType_FeastRedPack_KillSpecificNPCR (    RïRRR]t
isTeamKillRt
defObjTypet    mapFBTypeRj((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__KillNPCFuncExn s*   %cCs‚|j}|jƒ}|tjkrCttj|ƒ}|rVdSn|tjkrVdS|jƒ}tj    |t
j d|gƒdS(Ni( RçR®R¯R°RÐRÀt
gnotNormalRR¦R§R0tSuccType_KillSpecificNPC(RïRtisFeelRRÇRmR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__MissionOnKillNPC— s      cCstj|jƒS(N(RRXRç(Rï((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt
__GetIsLogª scCs“|j}|j|jƒt|ƒ}|s.dSd}|jtjƒ|jƒkrg|jtjƒ}nt    j    |ƒ}|j
|t j d|ƒdS(NiR˜( RçR™RR±RÈRRlRKRjRRšR0R›(RïRRRR˜Rž((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__DoNormalTeamExp¹ s    c CsG|j}d}tjƒjƒtjkr?tj||ƒ}n|dkrO|S|jƒ}t    j
|j ƒƒ}t j d||ƒ}|r¦|jƒ}|jƒ}    n|jƒ}|jƒ}    |dkrÎdS|sÚdn    |jƒ}
|r|södStj||ƒ} | sdS|| 9}nttjdt jddƒƒƒ} | S(NiRtExpAttenuationi(RçRRÑR9R¯R;R[t OnGetNPCExpRRRt GetSightLevelRRtGetExpRR¢RôtGetTeamPlayerHurtPertevaltFormulaControltGetCompileFormulaRb( RïtplayerLVtisTeamR5RtbaseExpRR(RR]R<thurtPertexp((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GetExpÑ s4           $c 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    dropNPCIDRIR=sµôÂäÎïÆ·,ÎÞ·¨ÕÒµ½µØÍ¼µôÂäÎïÆ·(RçRRRXRgRìR¢tChItemtAddMapDropItemRRR‘tSetByObjR¿RK(RïtcurItemRúRûRÜRÝRIR=RRÖRËR5tspecOwnerIDListt
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 isAuctionItemRERÏ((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=%sRFs+×î´ó³ðºÞÄ¿±ê: ID=%s, Type=%s,maxAngryObj=%ss"angryObj, ownerType=%s, ownerID=%s(ii(NN(RçRR7RR‘RIRJRKRRtDropOwnerType_FamilytDropOwnerType_Contendt _NPCControl__RefreshContendOwnerReR¢RR±R{RqRrRÊR¯RÀRëRftUpdateDropOwner(RïRûR~tisDeadt checkCanDeadRR+t    ownerTypeRÝR„R‹t maxAngryObjtmaxAngryRw((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_LastDropOwnerTypeReRRÊR¯RÀRãRXR8R×RR‘RRRERÒRÓ(RïRRÝRÝtownerRN((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__RefreshContendOwnerh 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çRRYRZRRR‘R[R†R\RR¢R8R×RãRÒRÓRER€(RïR\RÛRR>RNRžRc((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çRR7RRxRXR×RØRÈRáRâRRIRJRKR‘t_NPCControl__DelDropOwnerBuffRR.ReRÊR¯RÀR¢t HaveHurtValuet#_NPCControl__AddDropOwnerPlayerBufftDef_PlayerKey_ContendNPCObjIDR"tDelBuffBySkillIDtDef_SkillID_DropOwnerBuffRfRYRZRgR[RRR†R\RxRôtCheckKillNPCByCntR RãRŠtGetItemPackSpacetrptItemRXRÒRÓRjRERFRGR¨RERëRPRwRO(RïRûRÝRÝRÛRRR„tlastDropOwnerIDtlastDropOwnerTypeR™R‚R>RFRGthurtListRR<RNRžRctisOkRªR R5R\((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRÚ¤ s¤      $!     
"!    ,     ' ?'    #cCsb|j}tj|tjƒd}|s^tj|tj|d|ƒtjd|jƒƒndS(NiRæsÌí¼Ó¹éÊôbuff: playerID=%s(    RçR$t FindBuffByIDRRìtAddBuffBySkillType_NoRefurbishRRXR¢(RïRRûRtfindBuff((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__AddDropOwnerPlayerBuffs     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çRReRRÊR¯RÀRXR"RëRìRØR.RêRfRYRZR†R[R\RR¢(
RïR„RÝRÝRûRRR>RžRc((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__DelDropOwnerBuffs(    #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âReRRÊR¯RÀt*_NPCControl__SetDropOwnerBuffDisappearTimeRfRYRZR†R[R\RR¢RjRERFRG( RïRRÝRÝRR>RžRcRªR R5((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDelayDropOwnerBuffDisappearTime3s2     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 GetBuffTypetGetBuffManagerByBuffTypeRIR)R†t GetBuffCounttGetBufftGetSkillRÏRKt
GetOwnerIDtSetCalcStartTickt SetRemainTimetSync_RefreshBufft GetRemainTime( RïRRt    findSkilltbuffTypet    buffTuplet
RemainTimeRûtbuffStateManagerR tcurBufft    buffSkill((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__SetDropOwnerBuffDisappearTimeSs.     
   N(Yt__name__t
__module__RRçRñR±RRR
RRR'R,R>R4R RORURDR]RWRyRt Def_NPCRefreshAngryValueIntervalRR{R8R†R‰R‹RR‘R—R”R“R«R¹R¼R»R½RÅRERRÈR5RÕRÊRæRêt!_NPCControl__DoNPCRebornPreNotifyR•RøRùRRúRRRRKR.R0RhRNRYRZR/RaR`R|R_R9RdRiRkRœRBR R¡R™t_NPCControl__MapCreateItemt_NPCControl__CreateDropItemRàRÙt!_NPCControl__GetMaxHurtTeamPlayerRÚRéRçRúRù(((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR4Ús¤            K >        /     o     4        @    R#                                    6    @                                  *            )             %(                            *        #    +    !    M        n        j        ;    8    )         3         ;        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 FindNPCByIDR7RØR¢RXRR4RÚReR (RtdefenderRûtcontendNPCObjIDRR„R<t
npcControl((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnPlayerKillNPCPlayerys        cCsVtjƒ}||_||_||_||_t|jƒ|_tj    ||ƒdS(N(
R@ttagMCVirtualItemDropt
ItemTypeIDRCRDtUserDataR|t UserDataLenRHRI(R5R£RúRût userDataStrt    vItemDrop((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSendVirtualItemDropŒs                 cCsŸtjƒj|ƒ}|sdStjtj|ƒƒ}tjd||ƒ}|ra|jƒ}n |jƒ}|swdS|j    ƒ}|j    ƒ}t
|||ƒS(NiR( RR‚RœRRRRRR¿Rt
CalcNPCExp(RRRàRRRÆR]RÄ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt    GetNPCExp—s   cCs(ttjdtjddƒƒƒ}|S(NR¼i(RÁRÂRÃRRb(RÆRÄR]RÈ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR!§s$cCsFtjtd|jƒdfƒ}|dkr2dS||||ƒdS(Ns AIType_%d.%stOnAttackDieByPlayer(RRRRR(RRR R((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(RR­R±tGetMaxCollectCounttGetTodayCollectCountRt
NotifyCodetGetCollectCountLimitNotifyR tGetCollectAwardRŠtCheckPackHasSpaceR¯Rï(RRtcollectNPCIpyDatat limitMaxTime((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytCheckCanCollectByNPCIDºs  !"cCs{d}tjddƒ}xL|D]D}||kr7qnx(|D] }||jtj|ƒ7}q>W|SW|jtj|ƒS(Nit
CollectNPCi(RRLRŸRtDef_PDict_CollNpcIDCollTime(RRt todayCollTimetcollectTimeShareIDListt    npcIDListt    collNPCID((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR'Îs   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(RRRR tGetIsMissionCollectNPCR.R±tGetCollectNPCPlayerIDR¢RRXRR(tDoCollectNPCBegin(RRRûRR,tcanCollTogethertcollectPlayerIDRá((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnCollectNPCBeginÚs$   % 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 SetCollectNPCRR€R.RtDef_PlayerKey_CollectNPCObjIDRKtGetPrepareTimeR1R¯t ntCollectiont pstCollectingtpstMissionCollectingRtSync_PrepareBegint GetLostHPPertDef_PlayerKey_CollectLostHPTickRôt AddHurtValueR¢ReR[tOnBeginCollect(RRR,RûR9t prepareTimet prepareType((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR8ös ' cCs•|jƒ}|jƒ}|jtjƒ}|rktjƒj|ƒ}|rk||krktjdƒt    Sn|j
tj|ƒ|j
tj |ƒt S(Ns?SetNPCColleced ÓÐÈËÔڲɼ¯ÇÒ²»ÊÇͬһ¸öÈË£¬Ôò²»¿ÉÖØÐÂÉèÖòɼ¯¶ÔÏó( R¢RKRÈRtDef_NPC_Dict_CollectPlayerIDRRzRŽRXR 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ÈRRJRRzRŽRXR.(RRMRN((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR7s     cCst|jtjƒ}|dkr"dStj|ƒ}|rM|jtjdƒn|jtjdƒtj||ƒdS(Ni(    RÈRR>RRR.RJR[t OnExitCollect(RtcollectNPCObjIDR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytClearCollectNPC2s 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=%sitResultR™RB(RRˆRRXR6R©tDoCollectingLostHPR±R­RtGetPlayerServerGroupIDR¢tSendMsgToClientServerR0tCrossServerMsg_CollectNPCOKtDoGiveCollectNPCAwardR[t OnCollectOKRQ(RRRûR,t serverGroupIDtmsgInfo((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDoCollectNPCOKCs  !
cCsM|dsdS|d}tjd|ƒ}|rIt|||dtƒndS(NRRRBR/tcrossCollectOK(RRˆRWR±(RtmsgDataRR,((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRV]s
 
cCsdS(N((RRR,t
collectCntR\tisSweep((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRWgsc 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_DataR†tGetCollectNPCCounttGetCollectNPCByIndexR&RVRRŸRR0R@ttagMCNPCIDCollectionCntR¶RBt CollectionCntttagMCNPCIDCollectionCntInfotNPCCollCntListR|t
CollNPCCntRHRI( RR3t    isSyncAllt
ipyDataMgrR RqtsyncListRt    collCountt collCntInfot npcIDCollInfo((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSyncCollNPCTimejs:      
         
    cCs¨t|ƒi}xG|jƒD]9}|jtj|ƒrtj|tj|dƒqqWxGtdƒD]9}|jtj|ƒrgtj|tj|dƒqgqgWdS(Nii(    tCollNPCTimeOnDayRORŸRtDef_PDict_DropCountTodayRR R³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.pyRo›scCs×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(RR`R†RaRbRtGetCollectResetTypeR&RŸRR0RR RVRn(Rt resetTypeListtresetNPCIDListRiR RqR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRt s    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'RXRyR³t GetNPCCountt GetNPCByIndexRKRRVR8R×RÒRÓR’RR¯RtIsAliveRçRR(tqueryNPCIDListRût npcInfoDicttgameNPCManagert findNPCIDListR RtcurIDRÖRtcurHPRúRûtmaxHPtrefreshRemaindSecondt refreshTimetpassTick((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt
GetNPCInfo¼s<        "  #cCsýtjƒ}|jƒ||_||_g|_x£|jƒD]•\}}|\}}}    }
} } } tjƒ}|jƒ||_||_    ||_
|    |_ |
|_ | |_ | |_| |_|jj|ƒq>Wt|jƒ|_tj||ƒdS(N(R@ttagMCNPCInfoListR¶tMapIDt    PlayerCntt NPCInfoListRSt tagMCNPCInfotObjIDRBtNPCHPtMaxHPRCRDtIsActivet RefreshSecondRVR|t
NPCInfoCntRHRI(RRjt    playerCntR|t npcInfoPackRtnpcInfoRÖR€RRúRûRR‚((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt SyncNPCInfoës* 
             
                                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'RXRyRTRUR†tGetNPCCountByGWIndextGetNPCByIndexByGWIndexRKRRR¯RRzRRRxRy(    R{RûRƒt
npcCntDictR}R RRRÖ((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‡R‰RSttagMCNPCCntInfoRBtCntRVR|RRHRI(RRjR—R’RntnpcCntR“((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSyncNPCCntInfo8s 
         
        cCsdS(N((RRjR^RR£t    equipInfo((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSendGameServerGoodItemRecordIscCsdS(N((R t
clientDataRû((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnBuyCollectionCntWscCså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 (RRzRGt KillBossMarkRRLRRRÝtGetAddBossBuyCntRŸRtDef_PDict_Boss_KillCntBuyCntR¢RXRyR|R¯tTYPE_Price_Gold_MoneytDef_Cost_Reason_SonKeyRtPayMoneytDef_Cost_BuyKillBossCntR tCrossPlayerDatatSendMergePlayerDataNow(R R RûRt killBossMarktbuyTimesVIPPriIDt    canBuyCntt    hasBuyCntR<tcostGoldt costGoldListt    moneyTypetinfoDicttisOK((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnBuyKillBossCntbs>      '  * cCss|j}|j}tjƒjtj|ƒ}|s8dStjƒjtj|dƒtjd|||fƒdS(Nis,ClientNPCShowEnd npcID=%s,endType=%s,tick=%s(    RBtEndTypeRR]tGetGameFBDictByKeyRtDef_FBDict_NPCShowEndTickR^RX(R R RûRtendTypetendTick((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt OnNPCShowEnd“s        cCsZtjddƒ}tjƒjtjƒd}||krVtjddƒ}||kStS(Nt    BossShuntii(    RRbRRItGetGameWorldDictByKeyR0tDef_Notify_WorldKey_ServerDayRLR (RjtbossShuntMaxServerDayt openServerDaytbossShuntMapIDList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytIsMapNeedBossShunts  
cCs^||f}tjj|iƒ}||jƒ|g||jƒ<|tj|<t||ƒdS(N(RPtg_bossShuntPlayerInfoRRRëR¢tGameServer_WorldBossShuntInfo(RRjR^RRû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(    RPRÃRRRyRRzR{R|RX(RjR^R™RÅtmsgStr((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRįs  (cCs|s
dSdS(N((RRt attackCountRý((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytUpdateNPCAttackCount·scCs5|d}|d}|d}t||||ƒdS(NRBt AttackCounttMaxCount(RÊ(RR]RRÉRý((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_NPCAttackCountttagMCNPCAttackCountRBRËtNPCAttackCountListRVR|tCountRHRI(RR3t
clientPackRRÉt atkCountObj((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSyncNPCAttackCountÅs           cCst||ƒdS(N(t__OnAttackedDropItem(tatkObjRR Rû((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt OnNPCAttackedÖs cCsdS(N((R×R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRÖßs(‘R¯RRRôRRÓR"Röt ChNetSendPackR$RôRÓRŠR[RìRÅRRR0RÌR@R¤RHRR°R¦tPlayerPrestigeSysRÛRÂR³RctPlayerActCollectWordsRÅRªtPlayerFeastWishR¹RÝR¶RUR¼R¿RÂRR­R©t
TurnAttackRPR8R`RMRîttimetcopyRRlR³tNPCAttr_ParamDicttNPCAttr_AttrStrengthenListtNPCAttr_PlayerCntCoefficienttNPCAttr_NPCPlayerCntCoefficienttNPCAttr_DynNPCLVMaptNPCAttr_DynPCCoefficientMapRR R$R&R)R+R,R-R3R5R7R9R;R=R@RBRDR RGRiRwR±R~tDef_NPCMaxDropRateR¨R­R²R¹R½RÃR¾RÐRàRéRñRRRR RR&R?RORRR…R\RæR4RR R"R!R$R.R'R;R8R=R7RQR[RVRWRnRsRoRtR…R”R˜RRŸR¡RµR»RÂRÆRÄRÊRÍRÕRØRÖ(((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt<module>s$                                                     
                                                                              E             
                !    !    +    >    ]             -(        J            Nÿÿÿÿÿÿÿÿÿÿ©                                                           
 %              /     .              1