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
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
±3nhc    @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/ddl0Z0ddl1Z1ddl2Z2ddl3Z3ddl4Z4ddl5Z5ddl6Z6ddl7Z7ddl8Z8ddl9Z9ddl:Z:ddl;Z;ddl<Z<ddl=Z=ddl>Z>ddl?Z?ddl@Z@ddlAZAeBZCeDdƒ\ZEZFZGZHZIZJd„ZKeBd„ZLd„ZMd„ZNd„ZOd„ZPd    „ZQd
„ZRd „ZSd „ZTd „ZUd„ZVd„ZWd„ZXd„ZYd„ZZd„Z[e\d„Z]d„Z^d„Z_ddeBd„Z`eBeBe\gdgde\d„Zaddebdgd„ZcdZdeBeBeBeBeBdd„Zed „Zfd!„Zgd"„Zhd#„Zid$„Zjd%„Zkd&„Zld'„Zmd(„Znd)„Zod*„Zpd+„Zqd,„Zrd-„Zse\ebd.„Ztebd/„Zudddddd0„Zvd1„Zwd2„Zxd3„Zyddd4„Zzd5„Z{d6„Z|ebgd7„Z}d8„Z~d9„Zd:fd;„ƒYZ€d<„Zd=„Z‚d>„Zƒd?„Z„d@„Z…dA„Z†dB„Z‡dC„ZˆdD„Z‰dE„ZŠdF„Z‹dG„ZŒdH„ZdI„ZŽdJ„Zde\e\dK„ZddL„Z‘eBdM„Z’dN„Z“dO„Z”gdP„Z•dQ„Z–dR„Z—eBdS„Z˜dT„Z™gdU„ZšdV„Z›dW„ZœdX„ZdY„ZždZ„ZŸd[„Z d\„Z¡dd]„Z¢d^„Z£d_„Z¤d`„Z¥da„Z¦dS(biÿÿÿÿ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.pytInitNPCis" 
 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.pytGetNPCLVxs  cCs5tjd|ƒ}|s1tr-tjƒ}n|S|S(NtNPCEx(RRR t    IPY_NPCEx(Rt    npcDataEx((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt GetNPCDataEx„s 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scCs&t|jƒƒ}|r"|jƒSdS(Ni(R$RtGetFightPowerLackAtkLimit(RR#((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR,scCs,t|jƒƒ}|r"|jƒS|jƒS(N(R$RtGetSuppressFightPowert GetThunderDef(RR#((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR-“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.pyR:™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žscCs_|jƒ}tjd|ƒ}|s(dSd}d}tjƒ}|jƒr¦tj|ƒrvtjƒj    t
j ƒ}q¦|j t jƒ}|s¦tjd|ƒdSn|jƒ}|dkrÙtjƒj    t
jƒ}nÛ|dkrú|j t jƒ}nº|dkr|j t jƒ}n™|dkr`|j t jƒ}    |j t jƒ}
tj|    |
ƒ}nT|d    kr´tj|jƒƒ} tjd
|| ƒ} | r«| jƒ}q´d}n|dkr,|jƒt jt jgkr,d} |jt j ƒ}|rtj!|t"j#ƒ} n| r,| jƒ}q,n|j$ƒrPt%||jƒƒ}n|dkr~| r~tjd ||fƒdSt&j'||ƒ}d |kr©|d }nt(||||ƒ}|j)|ƒ|sÕdS|r|j*ƒ|kr|j+|t,ƒnt-j.|ƒ}t-j/|ƒ}x—|j0ƒD]‰\}}t1|d |ƒsl|dkr+t2||ƒq+q+n|dkr‹t-j3||ƒq+t4|t j5ƒ}t6|d |ƒ|ƒq+Wt-j.|ƒ}||kr0|rìt-j7||ƒq0|r0t8|||ƒ}t-j7||ƒ|j9ƒ|j:ƒq0n|r[|jƒt j;kr[t<||ƒndS(s½NPCÊôÐÔÔöÇ¿, NPCÊôÐԳɳ¤ÓÉÁ½¸öÒòËØ¾ö¶¨
    1.NPC³É³¤µÈ¼¶£¬³É³¤µÈ¼¶¾ö¶¨³É³¤ÊôÐÔ£¬Óë³É³¤±í½áºÏʹÓÃ
            ¿ÉÉèÖõØÍ¼NPCµÈ¼¶¶¯Ì¬³É³¤£¬µ«ÊÇÒѾ­Ë¢Ð³öÀ´µÄNPCµÈ¼¶²»±ä£¬¶¯Ì¬µÈ¼¶±ä¸üºóˢеÄNPCµÈ¼¶²Å»áʹÓÃ×îеȼ¶
            
    2.Íæ¼ÒÈËÊýÒòËØ£¬¾ö¶¨NPCÊôÐԵĶîÍâ³É³¤ÏµÊý£¬¿Éµ¥¶ÀʹÓ㬻òÕߺÍ1Ò»ÆðʹÓÃ
            ¿ÉÉèÖÃÂíÉÏË¢ÐÂNPCÊôÐÔ
            ³ýѪÁ¿Í⣬ÆäËûÊôÐÔ»á¸ù¾Ý¶¯Ì¬ÒòËØÖ±½Ó±ä¸ü
            ÑªÁ¿»á¸ù¾ÝѪÁ¿°Ù·Ö±È¶¯Ì¬±ä¸üÖÁÏàÓ¦µÄ°Ù·Ö±È
    t NPCStrengthenNisCNPCÅäÖÃÁ˰´Íæ¼ÒÈËÊý³É³¤ÀàÐÍ£¬µ«ÊÇÎÞ·¨»ñÈ¡µ½¶ÔÓ¦µÄÍæ¼ÒÈËÊý£¡npcID=%siiiiiRsSNPCÅäÖÃÁ˳ɳ¤µÈ¼¶ÀàÐÍ£¬µ«ÊÇÎÞ·¨»ñÈ¡µ½¶ÔÓ¦µÄ³É³¤µÈ¼¶Öµ£¡npcID=%s,lvStrengthenType=%stLVsSet%st
FightPowertMaxHP(ii(ii(=RRRRt    GetGameFBtGetIsStrengthenByPlayerCountt FamilyRobBosstIsHorsePetRobBosst GetGameWorldtGetGameWorldDictByKeyR1t.Def_Notify_WorldKey_HorsePetRobBossPlayerCounttGetGameFBDictByKeyRtDef_FB_NPCStrengthenPlayerCnttErrLogtGetLVStrengthenTypet"Def_Notify_WorldKey_WorldAverageLvtDef_FB_NPCStrengthenMaxLVtDef_FB_NPCStrengthenAverageLVtDef_FB_NPCStrengthenMinLVtrandomtrandintRRt GetSightLevelRtGetTypetntPriWoodPilePVEtntPriWoodPilePVPRt GetDictByKeyt Def_NPC_Dict_PriWoodPilePlayerIDtGetObjt IPY_GameWorldt    gotPlayertGetCmpNPCBaseLVRtFBLogictGetFBNPCStrengthenAttrtGetNPCStrengthenAttrDicttupdateRtSetCurLVR R9tGetMaxHPtGetHPtitemsRR4tSetMaxHPR0R2tgetattrtSetHPtintt    Notify_HPt Notify_MaxHPtntRobott__OnFBRobotReborn(RtisReborntisDynRtstrengthenIpyDatat strengthenLVtstrengthenPlayerCnttgameFBtlvStrengthenTypet    randMinLVt    randMaxLVR(RtownertsummonPlayerIDt npcFBAttrDicttattrDicttbefMaxHPtbefHPtattrKeytstrengthenValuetaftMaxHPtaftHP((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDoNPCAttrStrengthen s–
            *       
c 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(RRNt    GetLineIDtGetIDRtGetFuncEvalCfgRYtchoicetkeyst
PyGameDatatg_fbRobotJobDicttgetRlt
isinstanceRptappendtlisttDebugLogtGetSkillManagertLearnSkillByIDRetOnRandomRobotJob( RtnpcLVtlineIDtobjIDt jobSkillDicttrobotJobtlineRobotJobDictt skillInfoDictt skillIDListt    skillInfotneedLVt skillManagertskillID((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRts* 
 
   c
CsØ|jƒ}tjddƒ}||kr.dS||}g}x[|jƒD]M\}}||kriqKnt|tƒrˆ|j|ƒqK|t|ƒ7}qKWtj    d|||fƒx|D]}    |j
|    ƒq½WdS(NtXMZZRobotSkillis¸øNPC¼¼ÄÜ: job=%s,npcLV=%s, %s( R–RRŒRlR’RpR“R”RR•R—(
RtjobR™R£RœRŸR R¡R¢R¤((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__DoGiveVSPlayerNPCSkill0s   
  icBCs| r| riStjƒj|ƒ}|s1iStjdƒ}|sJiSi}|t}|t}|t}    |t}
t    j
|ƒ} |rs|s¨t j d|ƒ}n|s²iSt j|ƒ} | sËiSt|ƒ} t|ƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| jƒ}| j ƒ}| j!ƒ}| j"ƒ} | j#ƒ}!| j$ƒ}"| j%ƒ}#| j&ƒ}$| j'ƒ}%|j(ƒ}&|j)ƒ}'|j*ƒ}(|j+ƒ})|j,ƒ}*|j-ƒ}+|j.ƒ},|j/ƒ}-|j0ƒ}.|j1ƒ}/|j2ƒ}0|j3ƒ}1t4t5j6d|dƒƒ}2t4t5j6d|dƒƒ}3t4t5j6d|dƒƒ}4|j7ƒ}5|j8|5gƒ}6xS|6D]K\}7}8t9t4t5j6d    |7|5f|8ƒƒƒ}9|9t:ƒ|7<|9||7<qW|1rst9|%|1d
ƒ|d <qsn|rýtj;ƒj<ƒ}:t=j>|:ƒ};d |:}<|    j8|:iƒ}=|= rà|;|    krà|    |;}=d |;}<n||
kr|
|}=d |}<nx÷|=j?ƒD]æ\}7}>|7|kr5||7}?nF|7dkrJ| }?n1d|7}@t@||@ƒsiqntA||@ƒƒ}?tB|>tCƒr¢tjD|>|dƒ}An@tB|>tEƒrÜd|<|7f}<t4t5j6|<|>ƒƒ}And}At9|?|Aƒ||7<qWn|S(NtNPCAttrStrengthenRFtNPCParam_AtkReplyCoefficienttAtkReplyCoefficienttNPCParam_MonterHurtt
MonterHurttNPCParam_LostHPPerSecondtLostHPPerSecondsNPCStrengthen_%s_%sgˆÃ@RHsMapCoefficient_%ssNPCCoefficient_%sRIsGet%sis%s_%s(FRt GetGameDatatFindNPCDataByIDt ReadChConfigtGetEvalChConfigtNPCAttr_ParamDicttNPCAttr_AttrStrengthenListtNPCAttr_PlayerCntCoefficienttNPCAttr_NPCPlayerCntCoefficientR9RkRRRtGetPlayerLVIpyDataR<R>t
GetReMaxHPtGetReAtktGetReDeftGetReHitt    GetReMisst GetReAtkSpeedtGetReSkillAtkRatetGetReDamagePertGetReDamReducetGetReIgnoreDefRatetGetReLuckyHitRatet GetReLuckyHittGetReBleedDamaget GetReIceAtkt GetReIceDeft GetRePetAtktGetRePetSkillAtkRatetGetRePetDamPertGetReFinalHurttGetReFinalHurtReducetGetRePotionReplyt GetRePotionCDtGetReFightPowert
GetHitTimetGetDefCoefficienttGetAtkCoefficienttGetAdjustCoefficienttGetAtkIntervalt
GetHitRatet GetMissRatet GetMonterNumtGetIceAtkCoefficienttGetIceDefCoefficienttGetMaxEnduranceTimetGetFightPowerCoefficienttevaltFormulaControltGetCompileFormulatGetLVStrengthenMarkR‘RptlocalstGetMaptGetMapIDtFBCommontGetRecordMapIDRlRRnR’tdicttGetDictValueByRangeKeytstr(BRRxRyRwtnpcDatatattrStrengthenInfoRt    paramDicttattrStrengthenDicttplayerCntCoefficienttnpcIDPlayerCntCoefficientt    baseMaxHPtplayerCurLVIpyDatat SkillAtkRatet    FinalHurttReMaxHPtReAtktReDeftReHittReMisst
ReAtkSpeedtReSkillAtkRatet ReDamagePert ReDamReducetReIgnoreDefRatetReLuckyHitRatet
ReLuckyHitt ReBleedDamagetReIceAtktReIceDeftRePetAtktRePetSkillAtkRatet RePetDamPert ReFinalHurttReFinalHurtReducet RePotionReplyt
RePotionCDt ReFightPowertHitTimetDefCoefficienttAtkCoefficienttAdjustCoefficientt AtkIntervaltHitRatetMissRatet    MonterNumtIceAtkCoefficienttIceDefCoefficienttMaxEnduranceTimetFightPowerCoefficientRªR¬R®tLVStrengthenMarktattrStrengthenListR„tstrengthenFormatR…tmapIDt    dataMapIDt
formulaKeytplayerCntAttrCoefficienttcoefficientDictt    attrValuet attrFuncNamet coefficient((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRgDsÆ
 
 
 
                                       ( 
 
 
        
ic 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((RRt 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 giveItemListRtdropPosXtdropPosYtisDropDisperseR!textraVirtualItemList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDoGiveItemByVirtualDropÓsi@BtNPCc    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(Rt
InitPyItemRRStg_filterEquipDictR¯RtDef_PlaceEquipTypetvaluestFilterItemByTypetxrangetGetFilterItemCountt GetFilterItemt GetCanNPCDropRt
ItemCommontGetItemClassLVt GetItemColort
GetSuiteIDt GetJobLimitt GetEquipPlacet GetItemTypeIDR“tLogRl(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(RYRZ(tcurTicktlastActionTicktcurTime((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytIsInActionTimes  cCs|jƒtjkrtStS(N(tGetGameNPCObjTypeRbt
gnotSummontTrueR (R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt IsSummonNPC.scCsIxBtd|jƒƒD]+}|j|ƒ}|jƒ}|jƒqWdS(Ni(trangetGetSummonCounttGetSummonNPCAtRtClear(RRQt    summonNPCtangry((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytClearSummonAngry_Player9s cCsD| st|dƒ rdS|jƒ}|dkr7dStj|ƒS(NtGetOwner(RRkRRt GetObjDetail(RhtcurSummonOwner((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetSummonOwnerDetelCs   cCs3t|ƒ}|stS|jƒtjkr/tStS(N(tGetNpcObjOwnerDetailR tGetGameObjTypeRbRcRb(tnpcObjt ownerDetail((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetNpcObjOwnerIsPlayerTs  cCsU|jƒ}d}|tjkr0t|ƒ}n!|tjkrQtj|ƒ}n|S(N(R`RRbRaRntgnotPett
PetControlt GetPetOwner(Rqt
npcObjTypeRr((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRoes cCs±|dkrdSt|dƒsN|jtjƒ}|rJtj|tjƒSdS|j    ƒ}|dkrjdStj|j
ƒ|ƒ}|dkr­|tjkr­|j ƒr­dS|S(NRk( RRR_Rt!Def_NPC_Dict_SummonMapNPCPlayerIDRRaRbRcRkR‹tIsEmpty(t
curobjTypet    curSummonRRmtcurSummonOwnerDetel((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGetSummonNPCOwnerys   '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( RRàtGetPosXtGetPosYt    GetPosObjRdt GetObjCountt GetObjByIndexR9RkRpRbRc(
RtmatrixtgameMaptsrcPosXtsrcPosYtcurPlayerCounttcurPostmapObjRQtcurObj((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(tGetInSightObjCountRdtGetInSightObjByIndexRt
GetVisibleR RpRbRcRyR9RkRRaR‹R“(RtplayListt seeObjCountRQtseeObjt
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ŒRdRRRŽR RpRbRcRyR9RkR‹R“tGetTeamRRat    GetTeamID( RRht    checkTeamRtseePlayerCountRQR‘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(RbRdRŒRRR9RkRŽRt    IsSameObjtGetDistR~RRaR‹RpRDRt AttackCommontCheckCanAttackTagt
BaseAttacktGetTagRelationRtType_Relation_EnemyR ( Rt    checkDistt
checkCounttticktcounttmaxCountRQR‘ttagDistt seeObjDetailtrelation((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt&CheckCanAttackTagLimitCountInSight_NPC$s<  0  
cCs
tjƒS(N(tGameLogic_FamilyInvadetGetDefaultMaxAngryNPCIDList(((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR®scCs9|jƒtjkrdS|jƒs5|jtƒndS(N(t GetCurActionRbtlaNPCDietGetIsNeedProcessR
Rb(R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSetNPCInBattleState‰s
 cCsp|jƒg}|jƒ}xHt|jƒƒD]4}|j|ƒ}|sOq.n|j|jƒƒq.Wt|ƒS(N(t
GetAtkDistR–Rdt GetSkillCounttGetSkillByIndexR“R(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 tGetDeBuffStatetGetProcessBuffStatetGetProcessDeBuffStateR“tGetAuraR`RbRtt GetPassiveBufRbtGetActionBuffManager(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 GetOrgSpeedRbtmtRuntSetCurMoveTypeRpR_RtDef_NPC_Dict_SpeedPertSetSpeedtmtSlowtmtNormalRRSR(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 GetNPCManagertAddPlayerSummonNPCRNtGetTickt SetNPCTypeIDt SetBornTimet    SetAITypeRt SetLastTimetSetDictRRxt SetSightLeveltDef_NPC_Dict_SummonRefreshIDR\RsRtRtRebornR t
NPCControltDoNPCRebornCommLogicRetDoFBRebornSummonNPC(
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( tChPyNetSendPackttagMCSummonMapNPCRgtNPCIDtPosXtPosYRtGetMapCopyPlayerManagerRdtGetPlayerCounttGetPlayerByIndext NetPackCommont SendFakePack(tsummonIDt
rebornPosXt
rebornPosYtmapNPCt playerManagerR·R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__NotifyMapPlayerSummonMapNPC!s 
             cCstjƒj|ƒ}|j}tj|ƒ}|s7dS|jƒtjtjgkrYdS|j    tj
ƒ}|j ƒ|krdSt |ƒdS(N( RtGetPlayerManagerRñtObjIDt FindNPCByIDR\RR]R^R_R`t GetPlayerIDt    SetDeadEx(R·t
clientDataR¦RR›RR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnRecyclePriWoodPile8s    
cCsStjƒj|ƒ}|j}|j}|j}|j}t|||||ƒdS(N(RRúRñRìtCounttHPtHPExtSummonPriWoodPile(R·RÿR¦RRR§thpthpEx((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnSummonPriWoodPileQs                c    Cs.tj|ƒ}tj|ƒ}|rctj|||||ƒsctjd||||fƒdSn|dkr~d\}}n|jƒ}|tj    kr©gtj    |<ntj    |}d}    t
|ƒ}
t ||    |
ƒ} tj d|||    |
| ||fƒ| dkrdStj ƒ} x
t| ƒD]ü} | jƒ}|j|ƒ|j|jƒƒt|ƒ|jtj|ƒtj|jƒ|jƒdƒ}|j|jƒ|jƒtƒt|ƒjdtƒ|sÛ|r|t j!|}t"j#||ƒt"j$||ƒn|j%ƒ|j&|ƒq*WdS(    s ÕÙ»½Ë½ÓÐרÊôľ׮¹Ö
    s3ÎÞ·¨ÕÙ»½Ä¾×®¹Ö!mapID=%s,lineID=%s,npcID=%s,count=%sNiiisPÕÙ»½Ä¾×®: npcID=%s,count=%s,maxCount=%s,nowCount=%s,summonCount=%s,hp=%s,hpEx=%sRu(ii('RtGetCustomMapIDtGetCustomLineIDRetOnCanSummonPriWoodPileRRSRýRtg_playerPriWoodPileNPCDicttlenR0R•RÓR9RÔRÖRÛR[RRÚRR`tGameMaptGetEmptyPlaceInAreaR~RRÝR RÞt ResetNPC_InitRbR1tDef_PerPointValueR9RoRmt NotifyAppearR“(RRR§RRRRšRætplayerPriWoodNPCListR¨tnowCountt summonCountt
npcManagert_Rht    summonPosthpTotal((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRZsH            
! 
cCs\|jƒ}|tjkrdStjj|ƒ}x$|D]}|sJq8nt|ƒq8WdS(N(RýRR tpopRþ(RRæRRh((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytClearPriWoodPile’s  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|ƒrîtjd|ƒ}    |    r¶|    jƒtjtjgkr¶t|dƒtjƒjtj |tjƒjƒƒt!|ƒtj"kr¶t#j$|ƒq¶nt%j&|ƒ|tj'ddƒkrît(j)|ƒqînt*j+|ƒt,j-|ƒt.j-|ƒ|j/ƒtj0krwtjƒj1ƒ}
t2j3j4|
iƒ} | j5|jƒdƒ| t2j3|
<n|jtj6ƒ} | dkr | t2j7kr t2j7| } xY| D]N}|r¸|jƒ|jƒkr¸| j8|ƒ| st2j7j5| ƒnPq¸q¸Wnt9}t:j;ƒ}|j<|ƒ}|rtt=}t>j?ƒ}|g|_@tA|j@ƒ|_B|jC|ƒn|j|jtjDƒ|jtjEƒ|jtjFƒ|ƒ|jG|ƒdS(NsSetDeadEx objID=%s,npcID=%sitBOSSInfotCrossYaomoBossi(HR‹RRR•RdReRfR“RþRpRbtgotNPCRet DoFB_NPCDeadR_RRxRÚtNPCRealmRefreshtGetTagNPCRefreshtSetDeadRNRÕt
IsGameBossRRRátDef_FBMapID_SealDemontDef_FBMapID_ZhuXianBosstGameServe_GameWorldBossStateRJt SetGameFBDicttMap_NPC_WorldBossDeadTickR8tDropOwnerType_FamilyRLtClearFamilyOwnerBossHurttChNPCt OnNPCSetDeadt
GetFuncCfgtPlayerCrossYaomoBosstOnCrossYaomoBossDeadRŸtClearTeamPlayerHurtValuetNPCHurtManagertDeletePlayerHurtListt
NPCHurtMgrR\RsRŠRRR‘RR`R tremoveRbt
TurnAttacktGetTurnFightMgrtgetNPCTurnFightR t ChNetSendPackttagNPCDisappearRìR Rt
addBatPacktDef_NPCDead_ReasontDef_NPCDead_KillerTypetDef_NPCDead_KillerIDt
delNPCGUID(Rt summon_ListR›tnpcidR·t curSummonNPCRhRt
refreshObjtipyDataRšRžtpriWoodPilePlayerIDtpriWoodPileNPCListt
priWoodNPCt notifyClientttfMgrt    turnFightt
clientPack((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRþ¡st    $ )            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(
RRNRát GetRealMapIDt GetCopyMapIDRæRútGameServer_QueryPlayerResultR R•(    tbossIDtkillPlayerNamet    hurtValuetisNotifyt killerIDListRt    realMapIDt    copyMapIDtkillMsg((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytGameServer_KillGameWorldBossòs$( 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(RRNRáRKRLRæRúRMR R•RtDef_CrossZoneMapTableNameRtGetIpyGameDatat    GetZoneIDtSetGameWorldDictR1t,Def_Notify_WorldKey_GameWorldBossRebornCrosstDef_CrossDynamicLineMapRâtGetCrossDynamicLineMapZoneIDt'Def_Notify_WorldKey_GameWorldBossReborn(    RNtisAliveRRSRTtstateMsgt    tableNamet zoneIpyDatatzoneID((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR%ûs,,      & & c Csçtjƒj|ƒ}|sdStjddƒ}tj||ƒ}|dkrutj|}t    |j
|dƒdtj ƒ}t j |||ƒtj|}    |j
|    dƒd}
t j ||    |
ƒtj||ƒtjd||
|f|jƒƒi|d6|d6|
d6|d6|jƒd    6|jƒd
6} tjd | |ƒtj|tjd|gƒtj|ƒn|rdS|tjkr–tj|tjdƒtj|tj dƒt!j"|tj#ƒt$j%|tj&dƒt'j(|tj)dƒt*j(|tj)dƒt+j,|tj-dƒt.j/|tj0dƒt1j2|tj3dƒt4j5|tj6dƒt7j8|t7j9dƒt:j;|tj<dƒnÕ|tj=krktj|tj>dƒtj|tj?dƒt!j"|tj@ƒt$j%|tjAdƒt'j(|tjBdƒt*j(|tjBdƒt+j,|tjCdƒt.j/|tjDdƒt4j5|tjEdƒn|tjFkrÒt!j"|tjGƒtj|tjHdƒtj|tjIdƒt4j5|tjJdƒng|tjKkr9t!j"|tjLƒtj|tjMdƒtj|tjNdƒt4j5|tjOdƒn|tjFtjKgkr}tPjQ|tjRƒt:j;|tjSdƒn|jTƒtjUkr¨tPjQ|tjVƒntjWd |ƒ} | rÓtXjY||ƒntZj[||ƒdS( NtKillBossCntLimitiis4¸üл÷ɱBoss´ÎÊý: index=%s, todayCnt=%s, totalCnt=%sR›RNttouchCntttotalCnttAccIDtPlayerIDtAddKillBossCntt BOSSFirstKill(\RR¯R°RR,tGetDictValueByKeyRRtDef_PDict_Boss_KillCntTotalR0tNomalDictGetPropertyR2RtNomalDictSetPropertytDef_PDict_Boss_KillCntt BossHurtMngtNotifyAttackBossCntR•RýtGetAccIDtDataRecordPackt SendEventPackt PlayerSuccesstDoAddSuccessProgressR1tSuccType_FeastRedPack_KillBosst PlayerStatetSetBossStateExittDef_Boss_Func_WorldtSuccType_KillWorldBosst PlayerGubaotAddGubaoItemEffValuetGubaoEffType_KillWorldBosstPlayerActivitytAddDailyActionFinishCnttDailyActionID_WorldBOSStPlayerBossReborntAddBossRebornActionCnttDef_BRAct_WorldBOSStPlayerFairyCeremonytAddFCPartyActionCnttDef_PPAct_WorldBosstPlayerNewFairyCeremonytPlayerWeekPartytAddWeekPartyActionCnttDef_WPAct_WorldBOSStPlayerFeastTraveltAddFeastTravelTaskValuetDef_FeastTravel_WorldBosstPlayerActLogintAddLoginAwardActionCnttDef_LoginAct_WorldBOSSt PlayerActTasktAddActTaskValuetActTaskType_WorldBosstPlayerZhanlingtAddZhanlingValuetZhanlingType_HuanjinggetPlayerTongTianLingtAddTongTianTaskValuetTTLTaskType_WorldBosstDef_Boss_Func_HometSuccType_KillBossHomeBosstGubaoEffType_KillBossHometDailyActionID_BOSSHometDef_BRAct_BOSSHometDef_PPAct_BossHometDef_WPAct_BOSSHometDef_FeastTravel_BossHometActTaskType_BossHometDef_FBMapID_CrossPenglaitDailyActionID_CrossPenglaitSuccType_KillCrossPenglaiBosst!GubaoEffType_KillCrossPenglaiBosstActTaskType_CrossPenglaiBosstDef_FBMapID_CrossDemonLandtDailyActionID_CrossDemonLandtSuccType_KillCrossDemonLandBosst#GubaoEffType_KillCrossDemonLandBosstActTaskType_CrossDemonLandBosstPlayerActGarbageSortingtAddActGarbageTaskProgresstDef_GarbageTask_CrossBosstTTLTaskType_CrossBosst    GetIsBosstDef_NPCType_Boss_DarktDef_GarbageTask_KillBossRtGY_Query_BossFirstKilltSetPlayerFirstKillBosstPlayerGoldInvestt
OnKillBoss( RRRt isCrossServerRçtkillBossCntLimitDictt
limitIndexttotalKeyRgRLtnewCnttdataDictRB((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnPlayerKillBosss€  " #RÞcBsSeZdUZd„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<d7„Z=ged8„Z>d9„Z?d:„Z@d;„ZAd<„ZBd=„ZCd>„ZDd?„ZEd@„ZFeedA„ZGdB„ZHdC„ZIdD„ZJdE„ZKedF„ZLdG„ZMdH„ZNedUdI„ZOeddJ„ZPdK„ZQdLeedM„ZRdN„ZSdO„ZTddedP„ZUdQ„ZVdR„ZWdS„ZXdT„ZYRS(VcCsL||_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__ss                                cCsú|j}|jƒ}|jƒ}||}||}    t|ƒ|kr^|t|ƒ|}nt|    ƒ|kr‡|    t|    ƒ|}    n||}
||    } tjƒ} | j|
| ƒ rð|rðtj|||ƒ} | jƒ}
| jƒ} n|
| fS(N(    RÁR~RtabsRRàtCanMoveR R(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~RRtPosInLineByDistRà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ÁRRaRDtGetNametMoveToObj_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~RRRž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_ServerActRbtoalMoveR~RRR³tGetRefreshPosCounttGetRefreshPosAttGetCurRefreshPointIndexRRžt GetMoveDisttMoveBackRÝR RR¯t    laNPCMoveRNRÕ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.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íRbRîRRàR~RR€R RR9R‚RpRRaR‹R`RaRkR0R³R RRãRb(RÉRÒRÓt fixAreaDistRR„tnpcPosXtnpcPosYR‰RQRŠ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~RRRaRRtDef_NPCErrorMaxDistR‹Rž(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ÁRpRbtgotItemR RRR‹Rt FindNPCAngryRR9t GetAngryValueRaRDRRŸtCanAttackByPathR R¡R¢RR£Rb(
RÉR‘R¦RR’R™tnpcAngryt
angryValueRªR«((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__CheckAddToAngryListrs.       ! cCsC|j}tj|ƒ r?t|ƒ r?|jƒtjkr?tStS(N(RÁRR"R:R\RsR Rb(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 GetMapFBTypeRáR RâRãRRŒRbtfbtNullR,tGetAttentionPlayersCountRdtGetAttentionPlayerByIndexRR9RkRŽt _NPCControl__CheckAddToAngryListRžR~RtGetSightRtDef_NPCFirstSightAngryValuetDef_Screen_AreaRpRctGetAngryNPCCounttDef_NPC_SeePlayerAddAngrytAddObjToAngryListRbRðRñRŒRR"tGetIsInRefreshPoint(RÉR¦t
isUpdAngryRt
needResorttcurAngrytmapTypeRt recordMapIDtmapAngryNPCCountDicttangryNPCCountLimitR˜RQR‘RÐt addAngryValuet refreshPoint((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytAddInSightObjToAngryList¯sv          0   10 cCsœ|s
dS|jƒtjkr8|jƒtjkr8dS|}|dkr]||jƒ7}n|jƒtjkrˆ|tj    |ƒ7}n|j
||ƒdS(N( RpRbRR\tntFairyRt GetSkillAngryRcRt GetAddAngryR(RÉtobjDetelRPtuseSkilltaddAngry((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytAddObjDetelToAngryList_ByAttacks 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ŸtCheckObjCanDoLogicRpR‹t_NPCControl__CheckCanAddAngryRRbRcR8RtDropOwnerType_MaxAngryRaR–tGetTeamManagertFindTeamRRR•R9tGetMemberCountt    GetMemberRýt_NPCControl__AddAngryValueR9RkR±R
Rb(RÉRŠtplusAngryValuetcanPiletcheckRRýtcurObjIDt addAngryTeamRR    RQt 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(RRR9RtAddAngryR1Rt SetAngryValue(RÉR    R9RýR6R7R
t updAngryValue((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__AddAngryValuers!'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ÁRRaRDR R¡R¢RRR£R`RbRaRbR‹RR}RcRRŸtCheckPlayerAttackMode_Player(    RÉR9Rý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ñRdt GetAngryCountRtGetObjIDt
GetObjTypeRRat DeleteAngryRbRbRRRŸR RR~RRžRRÆt CanSeeOtherR¹tGetNPC_Is_GateR¡R¢RRR£(RÉR¦RR    tdefaultMaxAngryNPCIDListRR%RQR
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ÁRtGetLastResortTickRPR&tGetMaxAngryTagRR9RkR:RÆRótResorttSetLastResortTick(    RÉR¦trefreshIntervalRRR    tlastTickt removeRsortR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytRefreshAngryLists      4  cCs^|j}|jƒ}xBtd|jƒƒD]+}|j|ƒ}|j|ƒsUq+n|SWdS(Ni(RÁRRdRGRRR(RÉRt angryManagerRQR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRR;s     cCsU|dks|jƒdkr"dStj|ƒ}|dkrAdS|jƒrQdS|S(Ni(RRHR9Rt GetIsDisable(RÉRt curAngryValue((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__IsValidAngryObjPs  cCs#|j}|jƒ}|jƒtS(N(RÁRRgRb(RÉRR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt ClearNPCAngryds     
cCs#|j}|jƒ}|jƒtS(N(RÁtGetPlayerHurtListRgRb(RÉRt npcHurtList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytClearNPCHurtListos     
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.pytIsInHurtProtectvs    cCs@|j}t|t|ƒ}x|D]\}}|jƒq"WdS(N(RÁRÄRbRg(RÉtisClearAuraBuffRRÃt    buffStatet    canPileup((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt ClearAllBuffƒs
    cCsH|jƒ|jƒ|j|ƒ|j}tj|ƒtj|ƒtS(N(R]R`RfRÁR0tClearPlayerHurtListR2Rb(RÉRcR((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(NRu( RÁt_NPCControl__ClearNPCAllStateR R9RkRjt_NPCControl__InitNPCSummont_NPCControl__NormalNPCInItCDtRefreshNPCStateRqRb(RÉRuR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR¢s     $
  cCs~|j}|jdƒ|jdƒ|jƒ}xHt|jƒƒD]4}|j|ƒ}|dkriqBn|jdƒqBWdS(Ni(    RÁt SetAttackTicktSetUseSkillTickR–RdR´RµRtSetLastUseTick(RÉRt curNPCManagerRQt 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ÁRdReRfR“Rþ(RÉRtcurNPC_Summon_ListR·RhR@((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~RRÅRbRÌRÒRÈRã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 __PatrolMoveås4         
       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ÁRwt_NPCControl__PatrolMoveRðRñR0t GetMoveAreaR~RtGetAreaRRóR_RõRYRZRÒRbRÌ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ÁtGetRefreshPointRRSRR~RR\Rbt ntFunctionNPCR‚R tGetNearbyPosByDis(RÉRtposMapRŠR‹RŒRÒtpoxY((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__Func_GetRandPosInRefreshAreab    s            
cCsF|j}tj|ƒ}|r-|jƒ}n|j|jƒƒ}|S(N(RÁRR R’RðRñ(RÉRRAR%((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’RR~RRbR¯RbRôRÅRÈt 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òRRb(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ÁRwRYRZRvR~RR‘RbRRÒRbRÈRbRã(RÉRt patrolCountRyRzRÒ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ÁtSetCurRefreshPointIndexRYRZRï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ƒt|ƒt
jkr÷tj|ƒq÷qún|jƒ}x t|jƒƒD]Œ}|j|ƒ}| sG|jƒdkrKPn|jƒt
j krfqnt!j"d|j#ƒ|jƒ|j$ƒfƒt%j&|||ƒqW|j'ƒdS(NiRis/NPC¸´»î£¬Ì×ÉϹ⻷: objID=%s,npcID=%s,skillID=%s((RÁRRbR9RoRjRRTt RebornNotifyRÚRtDef_NPC_Dict_HPPerLogicMarkt!Def_NPC_Dict_RebornPreNotifyIndexR*t OnNPCRebornRet DoFBRebornNPCRR"RRR%R8R(RLtFamilyOwnerBossOnRebornR–R9R´RµtGetSkillTypeIDt GetSkillTypetDef_SkillType_AuraRR•R‹t
GetSkillIDt
SkillShellt NPCUseSkillt_NPCControl__notifyAppear(RÉR¦RtcurNPCIDRBR£R·R+((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRßÝ    s6     
    ,
cCsB|j}|jƒ}tjƒj|ƒ}|s>|jƒdSdS(N(RÁR‹R4R5R6R(RÉRR›RH((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.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ÁRRRŒRRltsortedRbR9RkRjR_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ÁtGetRefreshTimeRõRR•R‹t SetActionTickR(RÉR¦Rt
remainTime((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDieTickR
s      c     Csè|jƒ}tjdƒ}||kr+dS||\}}|jtjƒ}|t|ƒkrcdSttj    |dƒƒ}||}    ||    kr–dS|j
tj|dƒt j ƒj ƒ}
tjd||||    |
||gƒdS(NtRebornPreNotifyNPCgLí@ii(RR±R²R_RR R RptmathtceilRÚRRNRáRR°( RÉRR¾RtpreRebornNotifyNPCDicttnotifyMinuteListt
notifyMarkt notifyIndextreaminMt notifyMinuteR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__DoNPCRebornPreNotifyf
s   
 %cCsG|j}|jtjƒr)|jƒdS|j||ƒ|jƒdS(N(RÁR_RtDef_Obj_Dict_TurnFightPosInfotRefreshTurnfightNPCAttrtRefreshNPCAttrStatetRefreshNPCActionState(RÉt canSyncClientRuR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRl€
s     
cCsb|j}|jtjƒ}i}|rU|jidtj6dtj6dtj6ƒnYt    |j
ƒƒ}|sqdS|ji|j ƒtj6|j ƒtj6|j ƒtj6ƒtjd|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_LineupPlayerIDRhR1tDef_Effect_AtktDef_Effect_DeftDef_Effect_MaxHPR$RtGetAtktGetDefRjRR•R‹R9tClearBattleEffecttResetNPCBattleStatet    SetMinAtkR‘t    SetMaxAtktSetDefRm(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ÖRËRÇtSetAtkIntervaltGetBaseAtkIntervalR`RbRtRutRefurbishPetAttrRˆR¨tCalcBuffer_NPCBattleEffecttRefreshNPCSpeed(RÉRÎRuRt allAttrList((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR̽
s    
 
 
  c
Csö|j}tjtjƒjƒƒ}tjƒ}tjd||ƒ}|sOdSt    ||ƒ|j
ƒ}|j ƒ}|j ƒ}t ttjddƒƒƒ}    tjd|jƒ||    fƒtj||    ƒtj||    ƒ|jƒ|jƒdS(s¢ÖúÕ½»úÆ÷ÈËÖ»ÉèÖÃѪÁ¿ÊôÐÔ
                        ÑªÁ¿Ëã·¨£¬£¨ÖúÕ½Íæ¼Ò=ÖúÕ½»úÆ÷ÈË£©£ºÃ¿¸ö¸±±¾ÅäÖÃÉ˺¦*£¨ÖúÕ½Íæ¼ÒÕ½Á¦/¸±±¾¹æ¶¨Õ½Á¦£©*ϵÊýÖµ  ÏµÊýÖµÔݶ¨Îª50
        t FBHelpBattleNtHelpBattleRobotis3ÉèÖÃÖúÕ½»úÆ÷ÈËÊôÐÔ: objID=%s,fightPower=%s,maxHP=%s(RÁRâRãRRàRátGetFBPropertyMarkRRYR4tGetFightPowerMintGetRobotBaseHurttGetRobotHPCoefficientRpRÛtGetFuncCompileCfgR•R‹R9RmRoRqRr(
RÉt
fightPowerRRt
funcLineIDRBt fbFightPowertbaseHurtt hpCoefficienttmaxHP((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSetHelpBattleRobotRebornAttrã
s"          
 
cCsÞ|j}|tjjtjdƒ}|sV|jtjƒr©|jtjdƒq©nSt|j    ƒt
j t dt t
j |ƒƒƒ}|j|ƒ|jtj|ƒtjƒjƒtjkrÚt||j    ƒƒndS(NigY@(RÁRtCalcAttr_BattleNolineR‘tTYPE_Calc_AttrSpeedR_RÊRÚRpRÆR1tDef_MaxRateValueRtfloatRËRRàRátDef_FBMapID_GatherSoultNPCSpeedChangeNotify(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ëtClearObjActionStateR¨tCalcBuffer_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 RefreshBuffRºR»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_TimelyRRRRR¼R½RÀRÍR¨tProcessPersistBuff(RÉR¦RR    ((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRûM s    
 cCsL|j}|jƒ}|jƒ|jƒ|jƒtjƒjƒ}|jsTdn |jj    ƒ}t
j d|ƒ}|r|t j t jgkrt|ƒt jkrÀtj||jƒ}ng|jD]}|jƒ^qÊ}t|jƒ|dt|ƒn|t
jddƒkr8tjdd|jƒgƒn|jƒjƒdS(NtRitBossRebornServerBossitBossRebornBossKilled(RÁRt!_NPCControl__SetFeelNPCPlayerListt_NPCControl__GiveObjPrizet_NPCControl__EventKillNpcRRàRáRÃt GetPlayerNameRtGetIpyGameDataListNotLogRR$R#R8R(RLtFamilyOwnerBossOnKilledRÈRÆRýRVRbR,RR°RRg(RÉRRRt
killerNamet bossIpyDatatplayerRR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt __KillLogick s"     
 
 
"
c Cs |j}g|_tj|ƒ}|s6|jƒ}ng}xÔt|jƒƒD]À}|j|ƒ}|j|ƒ}|sqOn|d}|d}|r¸||kr¸|j|ƒq¸n|rOt    j
||j ƒ|j ƒƒ}    x-|    D]"}
|
|kræ|j|
ƒqæqæWqOqOW||_dS(Nii( RÁRÅR0R^R9t GetHurtCountt    GetHurtAtt_NPCControl__GetTagByHurtObjR“RtGetAreaTeamMemberR~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ýRb(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__KillLogicR9RoRiR`RbRtRut
SetPetDeadR
R Rþ(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 R9RjRkRÚRRŸR¯Rbt    laNPCNullRbRbtGetRestoreTimetDef_NPC_ProcessHP_TicktSetRestoreTimeRpRt
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=%sR›RNRRštteamIDtkillerIDR(R)tKillBossRecord(-RÁRt"_NPCControl__FindLastTimeHurtObjExRÂRR"t_NPCControl__FindNPCKillerInfoRÄRÇRÈRRDt _NPCControl__DoLastTimeHurtLogicR RR7RÃRtGetOfficialRankR&RRt
GetLvLargeRýt#_NPCControl__KilledByPlayerSetPrizeR“RÆtDef_NPCHurtTypePlayertDef_NPCHurtTypeTeamtDef_NPCHurtTypeSpecialt_NPCControl__NPCDropItemt!_NPCControl__KilledByTeamSetPrizetDef_NPCHurtTypeFamilyt#_NPCControl__KilledByFamilySetPrizeRSR‹RàRáRNRŠR–RŽRtRutOnNPCDie(RÉRRt
isGameBossR R(R)R't maxPlayerLVR*RtplayerRealmIpyDatatnpcRealmIpyDatatplayerRealmLVLargetnpcRealmLVLargeR+R¿((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GiveObjPrizeG sj     
                             $ / *,!cCsk|j}|sdS|jƒ}|tjkr2dS|j}tj|t|ƒƒtj    ||j
ƒƒdS(N( RÂRpRbRcRÁt    PlayerViptDoAddVIPKillLVExpR RtAddZhenQiByKillNPCtGetSP(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    ƒ}    |rtj
d ||    fƒqq |r¶tj}|j ƒd}    |rtj
d||    fƒqq tj&ƒj'ƒtj(kr t)j*ƒ}|r|jƒ}    |||    <tj}qq 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ÁRR‹RRNRŠRtg_npcKillerInfoRR–RDRŽRR8RtDropOwnerType_MaxHurtR^tSortRR9Rt GetValueTypet
GetValueIDRRýRGRHR0t_NPCControl__GetMaxAngryInfoRÂR1R2tDropOwnerType_AlltDef_NPCHurtTypeAlltDropOwnerType_FactionRetGetNPCItemProtectFactiontDef_NPCHurtTypeFactionRàRáRôRâtGetCurSingleFBPlayer(RÉRORRR›RLt
killerDicttkillTeamR(R)R>t dropOwnerTypeR_RQt
maxHurtObjRR RætmaxAngryPlayert maxAngryTeamtlastHurtPlayerIDtprotectFactionR((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( RRRRHRIRbRcRRaR–R1R2(RÉRRNt 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_LastHurtRRútFindPlayerByIDR(RÉRRæR((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ÁRRRR•RðRñR`RRGRaRaRbRcRDR9RktGetPlayerActiontpaDieRR~RRžtDef_Team_GetExpScreenDistRHR1R2R3R9R4RýtDef_NPCHurtTypeNPC(RÉRltisCheckRefreshAreaR\RRt hurtObjTupleR%tmaxHurtValueTypeRR>R RQR;((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GetTagByHurtObjJ 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<R‹R:RtAddExpR1tDef_ViewExpType_KillNPCt_NPCControl__KillNPCFuncExRý(RÉRRtadd_ExpRt 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(NR\sS½±Àø¹éÊô¶ÓÎ飬µ«ÊDz»´æÔÚ¿É»ñµÃ¸Ã½±ÀøµÄ¶ÓÔ±!npcID=%s,teamID=%s,hurtType=%s,hurtID=%siR=s[¶ÓÔ±Íæ¼Ò´ó¾³½ç²»×㣬ÎÞ·¨»ñµÃBoss¹éÊô½±Àø! playerRealmLVLarge=%s,npcID=%s,npcRealmLVLarge=%sR+i(#RÁRRR~Rt_NPCControl__GetIsLogRRSRR–RÂRÃRýRRR"RDR&RRRERDRR“t_NPCControl__DoNormalTeamExpRƒRbRÆRetGetFBEveryoneDropInfoRJRGRHRIR (RÉR R(R)RR!t    maxHurtIDt    teamMaxLVR'R*RRORRQRRRSRTt 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ïR9RðRñt GetFamilyIDRR~RRR“RÆRDRRÂRSRÃRýRƒR RJ(RÉR(R)RtmaxLVR'R*R%t copyPlayerMgrR·RRŒRŠR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__KilledByFamilySetPrize sH     4                               c    Csw|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ƒkr2tj|tjƒtj|tjƒtj|tjƒnt j!|tj"d|gƒtj|ƒrst|||t#ƒndS(NtDailyQuestKillMonsteri($RRpRRàRRâRãRáRbRt IsCrossServerRRetDoFB_DropOwnerRR"RÀRbR RRR,R€RR1tDailyActionID_KillNPCR¯R°tDef_GarbageTask_KillNPCR“R”tActTaskType_KillNPCRvRwt%SuccType_FeastRedPack_KillSpecificNPCR (    RÉRRR?t
isTeamKillRt
defObjTypet    mapFBTypeR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__KillNPCFuncExDs,   %cCs‚|j}|jƒ}|tjkrCttj|ƒ}|rVdSn|tjkrVdS|jƒ}tj    |t
j d|gƒdS(Ni( RÁR`RbRaR}Rct
gnotNormalRRvRwR1tSuccType_KillSpecificNPC(RÉRtisFeelRRwRDR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__MissionOnKillNPCns      cCstj|jƒS(N(RR"RÁ(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€RRbR_RR<R‹R:RRR1R‚(RÉRRR„RR…((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àRRbRRet OnGetNPCExpRRRR[RRtGetExpRRýRŸtGetTeamPlayerHurtPerRÛRÜRÝR,( RÉtplayerLVtisTeamRRtbaseExpRR(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    dropNPCIDR+RçsµôÂäÎïÆ·,ÎÞ·¨ÕÒµ½µØÍ¼µôÂäÎïÆ·(RÁRRR"RIRÆRýtChItemtAddMapDropItemRRRDtSetByObjRpR‹(RÉtcurItemRÒRÓR±R²R+RçRR«R¯RtspecOwnerIDListt
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ÉRRVR§t isAuctionItemR'R³((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ƒnt    j
|||||ƒ}
|
sßt j
||||ƒ}
n|
r÷|
\}}}nŒ|    t j krFtj||||ƒ} | rƒ| \}} t j| }}qƒn=|    t jkrƒ|jƒ}|rƒt j|jƒ}}qƒn|s|r¾tjd|||sªdn    |jƒfƒn|sÿd    \} }|j||dtƒ|jƒ}|rN|jƒ}|jƒ} tj|| ƒ}|s.|rNtjd|| |fƒqNn|}| tjkrÖ|rÖ| rÖ|    t jkr˜t j|jƒ}}qÖ|jƒr½t j|jƒ}}qÖt j|jƒ}}n|sâ|rÿtjd||fƒqÿn|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=%sRs+×î´ó³ðºÞÄ¿±ê: ID=%s, Type=%s,maxAngryObj=%ss"angryObj, ownerType=%s, ownerID=%s(ii(NN( RÁRR8RRDRNRŠR‹RR0tRefreshHurtListR2RR(RLtRefreshFamilyOwnerNPCHurtRLtDropOwnerType_Contendt _NPCControl__RefreshContendOwnerRGRýRXRbRRRHRIRaRbRcR–RHtUpdateDropOwner(RÉR¦RUtisDeadt checkCanDeadRRt    ownerTypeR²Rkt maxHurtInfoR®t ownerFamilyIDRrt maxAngryObjtmaxAngryRN((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytRefreshDropOwners^          /    /   /        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_LastDropOwnerTypeRGRRaRbRcRŽR•R9RkRwRxRðRñRR~R(RÉRR²RÂR~R%((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__RefreshContendOwnerEs&     *!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ÁRR1R2RðRñRDR3R9R4RRýR9RkRŽR~RRRS(RÉR>RÀRR R%RQR;((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt__GetMaxHurtTeamPlayerbs4        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ƒntj|ƒ}|tjkr!t j|tjƒ}|r^|jƒ}| s§|j|ƒrÿtj|} }|| |<|j||ƒ|tjkr|jtj|jƒƒqqtj|tj|d|ƒq^n=|tj krMt j!ƒj"|ƒ} | r^tj#d} }|r{t jd| j$ƒƒn|j%|j&ƒƒ}x·t'| j$ƒƒD] }| j(|ƒ}|dksÖ|jƒdkrö|r£t jd|ƒq£q£n|j)ƒt j ƒj)ƒkr¬| s0|j|jƒƒr¬t*j+||t,ƒr¬|j-ƒr¬|j||ƒ|| |jƒ<|rCt jd||jƒt.j/|tj0ƒfƒqCq£tj|tj|d|ƒ}|rðt j1d||jƒfƒn|r£t jd    ||jƒ|j)ƒ|j2ƒ|j3ƒt*j+||t,ƒfƒq£q£Wq^n|tj4kr^tj4|} }|j%|j&ƒƒ}t j5ƒ}xÎt'|j6ƒƒD]·}|j7|ƒ}|sÁq n|j8ƒ|kr|j9|j2ƒ|j3ƒ|ƒr|j-ƒr|j||ƒq tj|tj|d|ƒ}|r t j1d
||jƒfƒq q Wn|r| rv| j:ƒnd}|tjkr½| d| |ft;j<|
<| sèt jd ƒqèn+|tj4krèid| |ft;j<|
<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ÁRR8RR^R0R(R½R_RÈRÉRRNRŠR‹RDt_NPCControl__DelDropOwnerBuffRRÚR0R^RGRaRbRcRýt HaveHurtValuet#_NPCControl__AddDropOwnerPlayerBufftDef_PlayerKey_ContendNPCObjIDRtDelBuffBySkillIDtDef_SkillID_DropOwnerBuffRHR1R2RIR3RðRñR9R4RLRŸtCheckKillNPCByCntR RŽR=tGetItemPackSpacetrptItemR•R~RRLRïRðRñRRR–RR]RŽ(RÉR¦RÂR²RÀRRRktlastDropOwnerIDtlastDropOwnerTypeRLRiR R(R)thurtListRRæR%RQR;tisOkR‘R·RR>((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ÁRt FindBuffByIDRRÒtAddBuffBySkillType_NoRefurbishRR•Rý(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ÁRRGRRaRbRcR•RRÑRÒR½RÚRÐRHR1R2R9R3R4RRý(
RÉRkRÂR²R¦RRR RQR;((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ÉRGRRaRbRct*_NPCControl__SetDropOwnerBuffDisappearTimeRHR1R2R9R3R4RRýRLRïRðRñ( RÉRR²RÂRR RQR;R‘R·R((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDelayDropOwnerBuffDisappearTimes2     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ÒRt GetBuffTypetGetBuffManagerByBuffTypeRNRÕR9t GetBuffCounttGetBufftGetSkillR¤R‹t
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__SetDropOwnerBuffDisappearTime0s.     
   N(Zt__name__t
__module__RRÁRËRbRÙRÝRâRêRßRÿRRR R R&R-RR5R/RPRt Def_NPCRefreshAngryValueIntervalRXRRRR]R`RbRfRiRRkRjR€RŽR‘RR’RšRRóRRßRªRžR»R¿t!_NPCControl__DoNPCRebornPreNotifyRlRËRÌRïRàRÍRþRúRûR-RRRJR0R;R<RRCRBRbRARRFRKRMRƒR$R‡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.pyRÞks¦            K >        /     o     4        @    R#                                    6    @                                  ,            )             2&                            *    *        #    +    !    M        u        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ÐRRüR8R½RýR•RRÞR¿RGR (RtdefenderR¦tcontendNPCObjIDRRkRæt
npcControl((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnPlayerKillNPCPlayerVs        cCsVtjƒ}||_||_||_||_t|jƒ|_tj    ||ƒdS(N(
RêttagMCVirtualItemDropt
ItemTypeIDRíRîtUserDataR t UserDataLenRòRó(RRVRÒRÓt userDataStrt    vItemDrop((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSendVirtualItemDropis                 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    GetNPCExpts   cCs(ttjdtjddƒƒƒ}|S(NR¤i(RÛRÜRÝRR,(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”RbtGetMaxCollectCounttGetTodayCollectCountRt
NotifyCodetGetCollectCountLimitNotifyR tGetCollectAwardR=tCheckPackHasSpaceRbRÕ(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(RRŒRnRtDef_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(NRiis²»ÔÊÐíͬʱ²É¼¯£¡tGeRen_liubo_436832(RRRR tGetIsMissionCollectNPCRRbtGetCollectNPCPlayerIDRýRR•RR tDoCollectNPCBegin(RRR¦RRtcanCollTogethertcollectPlayerIDR¶((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}tj    |tj
ƒ}|r¢t dt |t j|tt jƒƒƒ}n|jƒtjkrÀtjntj}tj|||d|jƒƒ|jƒr
|jtj|ƒntj||jƒtjdƒtj||ƒdS(NisSetCollectNPC fail!ièt    prepareID(t SetCollectNPCRRSRÚRtDef_PlayerKey_CollectNPCObjIDR‹tGetPrepareTimeRVtGetPrivilegeValuetVIPPrivilege_CollTimeReduceRateRRpR1RòRóR\Rbt ntCollectiont pstCollectingtpstMissionCollectingRtSync_PrepareBegint GetLostHPPertDef_PlayerKey_CollectLostHPTickRŸt AddHurtValueRýRGRetOnBeginCollect(RRRR¦Rt prepareTimetcollTimeReduceRatet prepareType((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRÓs  0' cCs•|jƒ}|jƒ}|jtjƒ}|rktjƒj|ƒ}|rk||krktjdƒt    Sn|j
tj|ƒ|j
tj |ƒt S(Ns?SetNPCColleced ÓÐÈËÔڲɼ¯ÇÒ²»ÊÇͬһ¸öÈË£¬Ôò²»¿ÉÖØÐÂÉèÖòɼ¯¶ÔÏó( RýR‹R_RtDef_NPC_Dict_CollectPlayerIDRRúRuR•R RÚR#Rb(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_RR2RRúRuR•RÚ(RR5R6((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ÚR2Ret OnExitCollect(RtcollectNPCObjIDR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytClearCollectNPCs 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(NRs    ·ÇÌØ¶¨²É¼¯NPC...npcID=%sitResultRiRì(RRYRR•RRytDoCollectingLostHPRbR”RtGetPlayerServerGroupIDRýtSendMsgToClientServerR1tCrossServerMsg_CollectNPCOKtDoGiveCollectNPCAwardRet OnCollectOKR9(RRR¦Rt serverGroupIDtmsgInfo((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytDoCollectNPCOK#s  !
cCsM|dsdS|d}tjd|ƒ}|rIt|||dtƒndS(NR:RìRtcrossCollectOK(RRYR?Rb(RtmsgDataRR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR>=s
 
c    Cs tjƒj|ƒ}|jƒ}|j}|jtjƒsPtjd|ƒdSt    j
|ƒ}t    j |ƒ}tj d|||f|ƒ|s¥tjd|ƒdSt j||||ƒsÞtjd|||f|ƒdStjd|ƒ}|r    t|||ƒndS(Ns%·Ç×Ô¶¨Ò峡¾°ÖУ¬ÎÞ·¨»ñÈ¡¶¨Òå²É¼¯½±Àø!s)ǰ¶Ë³¡¾°²É¼¯: mapID=%s,lineID=%s,npcID=%ssÎÞ×Ô¶¨Ò峡¾°µØÍ¼ID£¬²»ÔÊÐí²É¼¯!s5×Ô¶¨Ò峡¾°µØÍ¼²»ÔÊÐí²É¼¯! mapID=%s,lineID=%s,npcID=%sR(RRúRñRýRìR_RtDef_PlayerKey_ClientCustomSceneRSRRR    RDRetOnCustomSceneCollectOKRRR?(    R·RÿR¦RRæRRRšR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnGetCustomSceneCollectAwardNs&     cCsftjd|||fƒ|dkr*dS|jƒr:dSt}|jƒ}|dkr-t||ƒ}td||ƒ}    t||    ƒ}|dkr³tjd|||fƒdS|jt    j
|ƒ}
|
|} t j |t    j
|| ƒt ||gƒtjd|||
| fƒ|||k}ng} |jƒ} |jƒ}|rT|jƒd krÚ|jt    jƒ}|j|iƒ}|jt    j
|ƒ}
|
|kr½| j||
ƒntjd||
| fƒqTt|jt    j|ƒdt    jƒ}||kr | j||ƒnt j |t    j||ƒtjd    || fƒn| s½|jƒ}tj|| |ƒ}tjd
|| |fƒtj|ƒ}|r½| j|ƒq½ntjd | ƒg}| rêxZ| D]R\}}}tj||||tjgƒrá|jtj|||gƒƒqáqáW|sû|jƒrÔt j!ƒ}||_"xN| D]F\}}}t j#ƒ}||_$||_%||_&|j'j|ƒqeWt(|j'ƒ|_%t)j*||ƒnt+j,|| ƒqûntj-d |ƒt.j/|t0j1||gƒ|r3t2j3|t    j4ƒn|sbt+j5||ƒ|rbt+j6|ƒqbn|S(Ns4¸ø²É¼¯½±Àø: npcID=%s,collectCnt=%s,crossCollectOK=%sisF    ¸ÃNPCÒÑ´ïµ½×î´ó²É¼¯´ÎÊý: npcID=%s,todayCollTime=%s,limitMaxTime=%ssI    Ôö¼Ó²É¼¯´ÎÊý: npcID=%s,todayCollTime=%s,curCollTime=%s,updCollTime=%si isL    ²ÝÔ°²É¼¯¶¨Öƽ±Àø: fairyDomainVisitCnt=%s,curCollTime=%s,awardItemList=%sis7    ²É¼¯´ÎÊý¶¨Öƽ±Àø: collTotalTime=%s,awardItemList=%ssS    ³£¹æ²É¼¯ÎïÆ·È¨ÖØÁбí: alchemyDiffLV=%s,collectAwardCfg=%s,giveItemWeightList=%ss"    ×îÖղɼ¯½±Àø: awardItemList=%ss²É¼¯ÎïÆ·Ã»Óн±Àø£¡npcID=%s(i i(7RR•RR R R RR0RnRRRRotSyncCollNPCTimeRtGetCollectAppointAwardtGetCollectResetTypetDef_PDict_FairyDomainVisitCntR‘R“t Def_PDict_CollNpcIDCollTimeTotalR2tGetAlchemyDiffLVR=t GetWeightItemListByAlchemyDiffLVtGetResultByWeightListR·tGivePlayerItemRbRÕt GetJsonItemtGetNotifyCollectResultRêttagMCCollectAwardItemInfot CollectNPCIDttagMCCollectAwardItemtItemIDRt IsAuctionItemt AwardItemListR RòRótGameLogic_CrossGrasslandtRecordGrasslandAwardRSRvRwR1tSuccType_CollectR¯R°tDef_GarbageTask_CrossCollecttDecCustomSceneNPCCounttDoCheckUpdateGrasslandEnd(RRRt
collectCntRDtisSweept    isMaxTimeRRt canCollectCntt curCollTimet updCollTimet awardItemListtcollectAwardCfgtcollectAppointAwardCfgtfairyDomainVisitCnttgrasslandCollectAppointCfgt collTotalTimet alchemyDiffLVtgiveItemWeightListt giveItemInfoR*RVt    itemCountR¹t    awardPackt    awardItem((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR?esŽ     
   &  !&                   cCsdS(N((RtaddExptaddMoneyt    addZhenQitsyncItemInfoListt collectNPCID((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSyncCollectionItemInfoÁ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 RRbRtIPY_DataR9tGetCollectNPCCounttGetCollectNPCByIndexR R“RRnRRRêttagMCNPCIDCollectionCntRgRìt CollectionCntttagMCNPCIDCollectionCntInfotNPCCollCntListR t
CollNPCCntRòRó( RRt    isSyncAllt
ipyDataMgrR·RBtsyncListRt    collCountt collCntInfot npcIDCollInfo((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRIÄs:      
         
    cCs¨t|ƒi}xG|jƒD]9}|jtj|ƒrtj|tj|dƒqqWxGtdƒD]9}|jtj|ƒrgtj|tj|dƒqgqgWdS(Nii(    tCollNPCTimeOnDayRŽRnRtDef_PDict_DropCountTodayRRoRdtDef_PDict_DropColorToday(RtitemDropLimitDayInfoRVRG((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.pyR†õ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(RRxR9RyRzRRKR RnRRRRoR“RI(Rt resetTypeListtresetNPCIDListRR·RBR((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR‹ú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ÓR•RæRdt GetNPCCountt GetNPCByIndexR‹RR“R9RkR~RRjR¯RbR°tIsAliveR¼RRõ(tqueryNPCIDListR¦t npcInfoDicttgameNPCManagert findNPCIDListR·RtcurIDR«R`tcurHPRÒRÓRîtrefreshRemaindSecondt refreshTimetpassTick((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt
GetNPCInfos<        "  #cCsýtjƒ}|jƒ||_||_g|_x£|jƒD]•\}}|\}}}    }
} } } tjƒ}|jƒ||_||_    ||_
|    |_ |
|_ | |_ | |_| |_|jj|ƒq>Wt|jƒ|_tj||ƒdS(N(RêttagMCNPCInfoListRgtMapIDt    PlayerCntt NPCInfoListRlt tagMCNPCInfoRûRìtNPCHPRIRíRîtIsActivet RefreshSecondR“R t
NPCInfoCntRòRó(RRt    playerCntR’t npcInfoPackR•tnpcInfoR«R–RîRÒRÓR`R—((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt SyncNPCInfoEs* 
             
                                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ÓR•RæR’RpR9tGetNPCCountByGWIndextGetNPCByIndexByGWIndexR‹RR¯RbR°RR‘RŽR(    R‘R¦RTt
npcCntDictR“R·RR•R«((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt GetNPCCntInfods8    "!   "cCs£tjƒ}|jƒ||_g|_xR|jƒD]D\}}tjƒ}|jƒ||_||_|jj    |ƒq5Wt
|jƒ|_ t j ||ƒdS(N(RêttagMCNPCCntListRgRœRžRlttagMCNPCCntInfoRìtCntR“R R£RòRó(RRRªR¥R?tnpcCntR¦((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSyncNPCCntInfo’s 
         
        cCsdS(N((RRRšRRVt    equipInfo((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytSendGameServerGoodItemRecord£scCsdS(N((R·RÿR¦((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnBuyCollectionCnt±scCs=tjƒj|ƒ}|j}tjddiƒj|ƒ}|sFdStj||ƒ}|t    j
||ƒ7}|j t j |dƒ}|jƒ}||kr½tjd||f|ƒdStj||ƒ\}    }
|    |
krùtjd|    |ƒdStjddiƒj|ƒ} | s‹tjddiƒjt|ƒgƒ} | s_tjd|ƒdS|t| ƒkr~| d    } q‹| |} n| s•dStjdd
iƒjt|ƒtjƒ} i|d 6|t j6}tj|| | t j|ƒ}|sþdStj|t j ||dƒtj||ƒtj|ƒdS( NtKillBossCntLimit1iisH¹ºÂòBOSS¿É»÷ɱ´ÎÊý, ÒÑ´ïµ½½ñÈÕ×î´ó¿É¹ºÂò´ÎÊý£¬hasBuyCnt=%s, canBuyCnt=%ss1¹ºÂòBOSS¿É»÷ɱ´ÎÊý, Ê£Óà´ÎÊýÒÑÂú£¡£¬canKillCnt=%siis5ûÓÐÅäÖÿɹºÂòboss´ÎÊýÏûºÄ£¬ÎÞ·¨¹ºÂò! killBossMark=%siÿÿÿÿiR·(RRúRñt KillBossMarkRRŒR‘RVR%R¸tGetAddBossBuyCntRnRtDef_PDict_Boss_KillCntBuyCntRýR•RqtGetCanKillBossCntRæR RbtTYPE_Price_Gold_MoneytDef_Cost_Reason_SonKeyRtPayMoneytDef_Cost_BuyKillBossCntRoRrtCrossPlayerDatatSendMergePlayerDataNow(R·RÿR¦Rt killBossMarktbuyTimesVIPPriIDt    canBuyCntt    hasBuyCntRæt
canKillCntt dayTimesLimittcostGoldt costGoldListt    moneyTypetinfoDicttisOK((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytOnBuyKillBossCnt¼sH       '  * cCss|j}|j}tjƒjtj|ƒ}|s8dStjƒjtj|dƒtjd|||fƒdS(Nis,ClientNPCShowEnd npcID=%s,endType=%s,tick=%s(    RìtEndTypeRRJRQRtDef_FBDict_NPCShowEndTickR&R•(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(    RR,RRNROR1tDef_Notify_WorldKey_ServerDayRŒR (RtbossShuntMaxServerDayt 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(Rtg_bossShuntPlayerInfoR‘R–RýtGameServer_WorldBossShuntInfo(RRRšRR¦RLtshuntPlayerDict((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytAddBossShuntRelatedPlayers    cCs||f}tjj|iƒ}t|||gƒ}tjƒjdddd|t|ƒƒtjd|||f|ƒdS(NitWorldBossShuntInfosE֪ͨGameServerµØÍ¼Boss·ÖÁ÷ÐÅÏ¢: mapID=%s,lineID=%s,shuntPlayerDict=%s(    RRÖR‘RæRRúRMR R•(RRšRLRØtmsgStr((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyR×s  (cCstj|tj|ƒdS(N(R9tNotifyObjInfoRefreshRbtCDBPlayerRefresh_Speed(RR÷((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRõscCsÓ|s
dStjd|||fƒtj|tj||ƒtjƒrtj|ƒ}i|jƒd6|d6|d6|d6}tj    t
j ||gƒn2t ||gƒ|rÏ||krÏt j|ƒndS(Ns8¸üÐÂÍæ¼Ò¹¥»÷NPC´ÎÊý: npcID=%s,attackCount=%s,maxCount=%sRiRìt AttackCounttMaxCount(RR•RRoRtDef_PDict_NPCAttackCountR”R<RýR=R1tCrossServerMsg_NPCAttackCounttSyncNPCAttackCountRZR_(RRt attackCountR¨RARB((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pytUpdateNPCAttackCounts (cCs5|d}|d}|d}t||||ƒdS(NRìRÞRß(Rä(RRERRãR¨((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRá,s
 
 
 
cCs‘|s
dStjƒ}xR|D]J}|jtj|ƒ}tjƒ}||_||_|jj    |ƒqWt
|jƒ|_ t j ||ƒdS(N(RêttagMCNPCAttackCountInfoRnRRàttagMCNPCAttackCountRìRÞtNPCAttackCountListR“R RRòRó(RRRIRRãt atkCountObj((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRâ4s           cCst||ƒdS(N(t__OnAttackedDropItem(tatkObjRR¸R¦((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyt OnNPCAttackedEs c    Csqtj|ƒ\}}|rdS|s)dS|jƒ}tjd|ƒ}|sQdS|jƒ}|jƒ}|jƒ}|jƒ}    |j    ƒ}
g} |rýt
|ƒ} |j t j |ƒd} | | krý| |krä|| } nt||| | ƒqýn| rtj|| |
ƒ} n|r9tj|||
ƒ} ntj| ƒ}|sw|jƒ}|rstj||ƒndSg}|r“|j|ƒn|ró|    rótj|||
ƒ}x<t|    ƒD]+}tj|ƒ}|rÁ|j|ƒqÁqÁWn|sýdStj|ƒ}|r5t|||ƒtj||ƒn8|jƒ|jƒ}}tj|||||dt ƒdS(Nt TreasureNPCiR+(!RŸtGetAttackPlayerRRRtGetAttackCountDropWeightInfotGetAttackDropWeightListtGetAttackDropWeightListExtGetDropCountExRNRRnRRàRäR=RORRPtGetNotDropNotifyRR R“R9RR2RZR[R~RR°t DoMapDropItemR (RêRt attackPlayerRwRRBtattackCountDropWeightInfotattackDropWeightListtattackDropWeightListExt dropCountExRltmainItemWeightListR¨Rãt mainItemInfot notDropNotifyt dropItemListt weightListExRRYRR.R/((seD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\NPC\NPCCommon.pyRéNsd            (§RbRRR RR¨RR¡R7RRŸR·R=ReR±RuRRëR1R°RêRtRòRâR€RvRqtPlayerPrestigeSysR¶R­tGameLogic_GatherSoulRÜRƒR†R-tPlayerActCollectWordsR‰RZR¯tPlayerActBossTrialR™R½tPlayerFeastWishRR¸RŠRR0RR“R–RLRR}RyR4Rt
PlayerTeamR2RVR9R*RYRÁttimetcopyRRNRdR³R´RµR¶tNPCAttr_DynNPCLVMaptNPCAttr_DynPCCoefficientMapRR R$R&R)R+R,R-R4R6R8R:R<R>RARCRER RˆRtR§RgR+RbR2tDef_NPCMaxDropRateR[R_RcRjRnRsRoR}R‹R”RœR¬R®R²R¹RÄRÒRéRùRRRRRþRVR%RÀRÞRþRRRR    RR R RR"RR9RCR>RHR?RwRIRŠR†R‹RšR§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>sP                                                                  
                                                                      w        |    E             
                !    !    +    >    ]             -(                8        Q            Wÿÿÿÿÿÿÿÿÿÿõ                                                               \  %              /     .              6