hzr
14 小时以前 1e7f98076efbc7b2d73ed25a7000c3106c98be56
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
棵gc@sfddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl!Z!ddl"Z"ddl#Z#ddl$Z$ddl%Z%d„Z&d„Z'd„Z(d„Z)d„Z*d„Z+d„Z,d    „Z-d
„Z.d „Z/d „Z0d „Z1d„Z2d„Z3e4d„Z5d„Z6d„Z7d„Z8d„Z9d„Z:d„Z;d„Z<d„Z=d„Z>d„Z?d„Z@d„ZAd„ZBd„ZCd„ZDd „ZEe4d!„ZFd"„ZGd#„ZHd$„ZId%„ZJeKd&„ZLeKd'„ZMeKd(„ZNd)„ZOd*„ZPd+„ZQd,„ZRd-„ZSe4d.„ZTd/„ZUd0„ZVd1„ZWd2„ZXd3„ZYd4fd5„ƒYZZd6„Z[d7„Z\d8„Z]d9„Z^d:„Z_d;„Z`d<„Zad=„Zbd>„Zcd?„Zdd@„ZedA„ZfdB„ZgdC„ZhdD„ZidE„ZjdF„ZkdG„ZldH„ZmdI„ZndJ„ZodK„ZpeqdL„ZrdM„ZsdN„ZtdO„ZudP„ZvdQ„ZwdR„ZxdS„ZydT„ZzdU„Z{dV„Z|dW„Z}dX„Z~dY„ZdZ„Z€d[„Zd\„Z‚d]„Zƒd^„Z„d_„Z…d`„Z†da„Z‡db„Zˆdc„Z‰dd„ZŠde„Z‹dS(fiÿÿÿÿNcCsO|jƒ}|j||jƒ||tj|tj|jƒ|jƒƒdS(N(tGetGameObjTypetAddHurttGetIDt ShareDefinetDef_PerPointValuetGetHPtGetHPEx(ttagObjthurtListthurtTypet    hurtValuet
tagObjType((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRKs  cCs4|jƒ}|j|||tj|tjƒdS(N(tGetPlayerHurtListt AddHurtValueRR(tdefendertattackIDtattackHurtTypetvaluetdefendHurtList((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR Rs $c    Cs¦|s
dS|jƒtjkr#dStj}tjƒjƒ}||jƒ|j    ƒf}||krri||<n||}||f}|j
|dƒ|||<dS(Ni( Rt IPY_GameWorldtgotNPCt
PyGameDatatg_teamPlayerHurtValuet    GameWorldt GetGameWorldt    GetLineIDRtGetNPCIDtget(    RtteamIDtplayerIDRtteamPlayerHurtDicttlineIDtkeythurtDictthurtKey((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytAddTeamPlayerHurtValueWs      
 cCs¡tj}|jƒ}|sdS|jƒtjkr8dStjƒjƒ}||j    ƒ|j
ƒf}||krudS||}||j ƒf}|j |dƒS(Ni( RRt    GetTeamIDRRRRRRRRt GetPlayerIDR(t    curPlayerRRRRR R!R"((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetTeamPlayerHurtValueis      
cCs$tj}|jƒ}|sdS|jƒtjkr8dStjƒjƒ}||j    ƒ|j
ƒf}||krudS|j ƒ}d}d}||}    xW|    j ƒD]I\}}
|\} } | |krÎq¤n||
7}| |kr¤|
}q¤q¤W|dks    |dkrd} n|d|} | S(Nigð?( RRR$RRRRRRRRR%titems(R&RRRRR RtplayerHurtValuet teamHurtValueR!R
t
hurtTeamIDt hurtPlayerIDthurtPer((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetTeamPlayerHurtPerzs2       
 
      cCsotj}|jƒtjkr"dStjƒjƒ}||jƒ|j    ƒf}||krk|j
|ƒndS(N( RRRRRRRRRRtpop(RRRR ((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytClearTeamPlayerHurtValues     cCs£|dks|dkrtStjtjg}tj|jƒ|jƒƒ|ksvtj|jƒ|jƒƒ|krztSt    ||ƒs›|j
ƒdkrŸtSt S(Ni( tNonetTrueRt    gatFreePKt gatFamilyPKtGameMaptGetAreaTypeByMapPostGetPosXtGetPosYtIsMaliciousAttackPlayert
GetPKValuetFalse(R&t    tagPlayertlegalityAreaList((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetIsPKLegality¯s$$!cCsCt||ƒrdStj||ƒ|j|jƒ|jƒƒdS(N(R>t PlayerControltAddPlayerPKValuetGameServer_AddEnemyRtGetName(R&t curTagPlayerttick((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt
AddPKValueÍs
cCsú|dks|dkrdStj|jƒ|jƒƒ}tj|jƒ|jƒƒ}|tjksv|tjkrzdS|tjks˜|tjkrœdStj    |ƒdkrµdS|j
ƒ}|tj krÔdSt j |ƒ}|tj krödSdS(Ni(R1R5R6R7R8RR3R4tGameObjRtGetPlayerNameColort    pncNormalt PlayerTrucktGetTruckNameColor(R&tcurTruckRDtcurPlayerAreaTypet truckAreaTypetcurPlayerNameColortcurTruckNameColor((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytOnPlayerKillTruckâs" cCsÝtj||ƒtj||ƒtj||ƒtj|d|jƒgƒt|||ƒt    j
|||ƒt j |||ƒrˆdSt |||ƒt||ƒtjƒjƒtjkrÙtj|tjdƒndS(Nt PK_lhs_318691i(t PlayerStatetSetPKStateTickt
EventShelltEventResponse_OnKillEnemytEventResponse_OnEnemyKillR?t
NotifyCodeRBt__GiveKill_Player_ValuePrizet    NPCCommontOnPlayerKillNPCPlayertFBLogictDoFBOnKill_PlayerREt__DoKillPlayerNotifyRtGetMapt GetMapFBTypeRtfbtNulltNomalDictSetPropertytChConfigtDef_PDict_IsAddReviveTired(R&RRD((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytOnPlayerKillPlayer s c    CsÝ|jƒ}|dkrdS|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}tjƒjƒt    j
krƒdSg}    tj ƒ}
t j |ƒ} t j |ƒ} tjƒjƒ} |jƒdkr|jƒ}|jƒ}d}||||||||| g    }n!d}||||||| g}|
r_|    jt j|||ƒƒnt j|||ƒ|dkr½|jƒ}|jtj|jƒƒd}|jtj|jƒ|ƒ|jtj|jƒdƒtjdƒ}t|jƒƒ}d}x$|D]}||kr(Pn|}qW||kr½||}|||||g}|
r¤|    jt jd||ƒƒ| | kr·t j|||ƒq·qºt jd||ƒq½n|    rÙt j | g|    ƒndS(Nit PK_pan_671654t PK_pan_318691itFamilyKilledNotify(!t GetFamilyIDtGetFamilyMemberLVRBtGetMapIDR7R8RR^R_RR`t IsCrossServerR?tGetPlayerServerGroupIDRRt GetFamilyNametappendtGetCrossFamilyNotifyInfot FamilyNotifyt GetDictByKeyRbtDef_PlayerKey_KillPlayerCntR%tSetDictt IpyGameDataPYtGetFuncEvalCfgtsortedtkeystGetCrossWorldNotifyInfoRWt WorldNotifyt CrossNotify(tattackerRt defFamilyIDtdefFamilyMemberLvtdefNametatkNametdefMapIDtdefPosXtdefPosYtcrossNotifyListt isCrossServertatkServerGroupIDtdefServerGroupIDRt atkFamilyNametatkFamilyMemberLvt
notifyCodet    paramListt defFamilyNametkillCnttkillPlayerNotifyDicttkillKeyst    notifyKeyt
killCntKeyt
notifyMarkt msgParamList((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR]4sb           $     
 
 cCs&tj|ƒr"tj||ƒndS(N(Rbt
IsGameBossRRtSetBossStateTick(tcurNPCRRD((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytOnNPCHitPlayer{scCs‚|jƒ|jƒkrdSt||ƒs>t|||ƒnt|||ƒt|||ƒtj||ƒtj||ƒdS(N(RR>tAddMaliciousAttackPlayertUpdMaliciousAttackTicktAddPlayerHitPlayerHurtRRRS(R{RRD((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytOnPlayerHitPlayer†scCsE|jƒ}|jƒtjkr%dSt||jƒtjdƒdS(Ni(R t GetHurtCountRbtDef_PlayerHurtListCountR R%tDef_NPCHurtTypePlayer(R{RRDtdefPlayerHurtList((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR™¥s
 cCsdS(N((RCRDt
isSuperHit((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytDefenderSpringBuff¶scCsK|s tjSt|ƒ\}}t|ƒ\}}|rD|rDtjStjS(N(RbtDef_BattleRelationType_CommtGetAttackPlayertDef_BattleRelationType_PVPtDef_BattleRelationType_PVE(R{Rt attackPlayert    attackNPCtdefenderPlayert defenderNPC((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetBattleRelationType»s cCs¯tj|ƒ}|tjtjgkr+tS|tjkr›|jƒtjtj    gkr›tj|ƒtjkr›|j
ƒt j kr˜t |ƒr˜tSq›n||kr«tStS(N(t SkillCommontGetSkillBattleTypeRbR¡t!Def_BattleRelationType_CommNoBossR2R£t GetSkillTypetDef_SkillType_AtktDef_SkillType_PassiveRRt    gotPlayertIsPVPNPCR;(R{RtcurSkilltbattleRelationTypetskillBattleType((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckBattleRelationTypeÉs!
 cCs5|s
tS|jƒtjko4|jƒtjgkS(N(R;RRRtGetTypeRbtntPriWoodPilePVP(tobj((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR±ÞscCstjS(N(RtghtPhy(tattacktattackUseSkill((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt GetBattleTypeèscCsL|jdƒjdƒ}|jdƒjdƒ}t||tj|dƒS(Nii(t    GetEffecttGetEffectValuetmaxRbtDef_MaxRateValue(Rtskilltperteff((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetEnhanceValueýscCs:|jdƒ}|jdƒ}t||tj|dƒS(Nii(R¾R¿RbRÀ(RRÃRÂ((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetEnhanceValue_EffscCsk|jdƒ}|jdƒ}|jdƒ}tj||ƒ}|dkrOdSt||tj|dƒS(Niii(R¾t    EffGetSettGetValueByEffIndexR1R¿RbRÀ(R&t    curEffecttindextskillPerteffecttmaxValue((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetEnhanceIndexValue_Effs cCs|j|ƒ|jtƒdS(N(tSetLastBattleTicktSetBattleStateR2(RRD((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytSetPlayerBattleState$s  c        Cs-|jƒtjkr)t||ƒ r)dS|jƒtjkrW|jƒtjkrWdSx‰td|jƒƒD]r}|j    |ƒ}t
|ƒs”qmn|j ƒ rºt ||dƒ rºqmntj|ƒ}|j||ttƒqmW|jƒ}|jƒ}|dkr)tj|ƒ}|j||ƒndS(Ni(RRR°tCheckPlayerAttackMode_PlayerRR¶tntFairytrangetGetSummonCounttGetSummonNPCAttGetNPC_Has_Attackt GetOrgSpeedtCheckNPCAttackDistR1RYt
NPCControltAddObjToAngryListR2R;t    GetPetMgrt GetFightPet(    tcurObjR&t
angryValuetit curTagSummont summonControltpetMgrt fightPetObjt
petControl((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytSummonAddAngryByOwner4s&%     cCs|jƒp|jƒS(N(t    GetMinAtkt    GetMaxAtk(R•((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÖYscCsd|tjkrdStj}||jƒkrLtjd||jƒƒdStj|||ƒdS(Ns7Íæ¼Ò¹¥»÷ʧ°ÜϵͳÌáʾÕÒ²»µ½¶ÔÓ¦µÄÌáʾmark,´«ÈëµÄÔ­Òò£º%s(    RbtDef_PASysMessage_NonetDef_MessageDicRwRtErrLogR%R?RW(R&tmessaget
messageDic((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytPlayerAttackFailSysMessanageds    cCstS(N(R2(R&RC((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÑ|scCs&|jƒtjddƒkr"tStS(NtPKConfigi(tGetLVRtt
GetFuncCfgR2R;(R&((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt GetIsNewGuyŠscCs5tjƒjƒ}|tjkr%tStj||ƒS(N(RR^R_RR`R;R[tCheckPlayersRelationInFB_IsNone(R&RCtmapType((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRò˜scCstj||ƒS(N(R[t!CheckPlayersRelationInFB_IsFriend(R&RC((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRô¥scCstj||ƒS(N(R[tDoCanAttackTeamer(R&RC((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytPlayerCanAttackTeamerInFB´scCsÂ|dkrtjdƒdS|jƒ}|tjkrtj|||ƒ|jƒtjkrvt    j
|||ƒnt j |ƒdkr§|j tj|jƒƒntj||||ƒrÃdStj||||ƒrßdS|jƒ}|jƒtjkr|jƒtjks!|dkrAt||jƒtj|ƒtSt||jƒtj|ƒt||jƒ|jƒ|ƒn?|tjkr­t||jƒtj|ƒntjd|ƒtS(NsNPCAddObjInHurtList NoFindObjis'NPCAddObjInHurtList UnKnow ObjType = %s(R1RRêRRR°t FamilyRobBosstOnPlayerHurtFamilyOwnerBossRR[tDoFB_Player_HurtNPCRFRRsRbtDef_PlayerKey_LastHurtR%tNPCHurtManagerR t
NPCHurtMgrtGetTeamtGetGameNPCObjTypet    gnotTruckRR2R$tDef_NPCHurtTypeTeamR#RtDef_NPCHurtTypeNPC(RÝt    curTagObjtcurTaglNPCHPBeforethurtHPtisBouncet
curObjTypetcurTeam((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytNPCAddObjInHurtListÆs2    !"cCstj|||ƒdS(N(R[t OnPVPDamage(R&t damageValueR<t    damageMsg((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR    öscCsb|jƒ s|jƒ rtS|jƒtjksH|jƒtjkrLtS|jƒ|jƒkS(N(t
GetVisibleR;t GetSightLevelRbtSightLevel_PublicR2(R{R((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckSightLevelüs
*c CsWt||ƒstS|jƒs#tSt||ƒs6tS|jƒ}|jƒ}|tjkr¯|tjkr¯tj    |j
ƒ|ƒ r™t ||ƒ r™tSt ||ƒs¼tSn |tjkr|tjkrt ||tƒ rýtj    |j
ƒ|ƒ rýtSt ||tƒs¼tSn¦|tjkr¼|tjkr¼t j|ƒsX|jƒtjkr¼t ||tƒs t|ƒd}|r tj    |j
ƒ|ƒ r tSnt ||tƒs¹tSq¼n|tjkré|jƒtjtjgks|tjkr|jƒtjtjgkrtnt}| r=t||ƒ r=tStj||ƒsStStS(Ni(tCheckIsAvailableTagR;t GetCanAttackRRRR°RRûtIsAssistPlayerR%tCheckKillNPCByCnttCheckCanAttackFamilyOwnerNPCt
PetControltIsPetRþt
gnotSummonR¢R¶RbtntPriWoodPilePVER·R2tCheckCanAtkByAreaR[tCheckCanAttackTagObjInFB(R{Rt
atkObjTypet
defObjTypet ownerPlayert
isWoodPile((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckCanAttackTag sB   ),$
-9c    CsG|jƒtjkrtS|jƒ}tjdƒ}||krDtS||\}}t|ƒ\}}|sptS|dkr‚|nd}||jƒko¥|knr®tS|dkrC|dkrî|dkrît
j |d||gƒqC|dkrt
j |d|dgƒqC|dkrCt
j |d|dgƒqCnt S(    s Åжϵ±Ç°µÈ¼¶¿É·ñ¹¥»÷¸ÃNPC tAttackNPCLVLimitiiŸ†tGeRen_liubo_689354tGeRen_liubo_198823itGeRen_liubo_437659N( RRRR2Rt ReadChConfigtGetEvalChConfigR¢RïR1R?RWR;(    R{RtnpcIDtattackLVLimitDicttminLVtmaxLVt    atkPlayert
npcObjTypet
judgeMaxLV((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckCanAttackNPCByLVTs*  "    cCs´|jƒtjkrtStj|ƒtjkr5tSt|ƒ\}}|sQtSd}t    |ƒrld}n|j
ƒsd}n|r°|dkr¬|r¬t j ||ƒntStS(s ÅжϿɷñ¹¥»÷ÏÉÃ˹éÊôµÄNPC ttFairyGrabBossNotAtktFairyGrabBossNoFairyN(RRRR2RYtGetDropOwnerTypeRbtDropOwnerType_FamilyR¢RñRhR1R?RWR;(R{RtisNotifyR*R+tatkLimitNotifyMark((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRys"          cCs®|jƒtjkrtStj|ƒs,tS|jƒ}tjdƒ}t    j
||ƒ}|dkritSt |ƒ\}}|s…tStjddiƒ}||krß||\}    }
t j||    ƒsßtj||
ƒdSntj||ƒd} | dkrN|dkrJ|rJtjddiƒj|dƒ} tj|| ƒqJntStj|ƒ} | rª| jƒrª| jƒtj|ƒkrª|r£tj|dƒntSntS(s Åжϵ±ÈÕ»÷ɱ¸ÃNPC´ÎÊýÊÇ·ñÒÑÂú tKillBossCntLimitiNiiR.tBossFightPowerHint(RRRR2RbR“RRtRuRtGetDictValueByKeyR1R¢t GameFuncCommt GetFuncCanUseR?RWt BossHurtMngtGetCanKillBossCntRR;RYt GetNPCDataExtGetFightPowerLackAtkLimittGetSuppressFightPowert GetFightPower(R{RR3R&tkillBossCntLimitDictRÉR*R+t funcInfoDicttfuncIDt funcSysMarkt
canKillCnttsysMarkt    npcDataEx((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR•s@     !c    CsÊ|jƒtjkrtStj|ƒs,tStjdƒ\}}|jƒ}||kr]tSt    |ƒ\}}|sytS|j
tj dƒ}||krÆ|dkrÂ|rÂt j|dƒqÂntStS(s Åжϵ±ÈÕ¹¥»÷¸ÃNPC´ÎÊýÊÇ·ñÒÑÂú tAttackBossCntLimititGeRen_liubo_759061N(RRRR2RbR“R$R%RR¢tNomalDictGetPropertytDef_PDict_WorldBoss_HurtCntR1R?RWR;(    R{RR3tlimitBossIDListtlimitCntR&R*R+t hasAttackCnt((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckAttackNPCByCntÉs$    cCsß|jƒ}|tjkr%|dfS|jƒ}|tjkr¤tj|ƒ}|rÛ|jƒ}|r¡tj|ƒ}|rž|jƒtjkrž||fSq¡qÛn7|tj    krÛt
j |ƒ}|dkrÛ||fSndS(sè »ñÈ¡¹¥»÷ÕßËùÊôÍæ¼ÒʵÀý
    @return:
             µ±Êµ¼Ê¹¥»÷ÕßÎªÍæ¼Òʱ£¬·µ»Ø [curPlayer, None] 
             µ±Êµ¼Ê¹¥»÷ÕßÊÇÆÕͨNPCʱ£¬·µ»Ø [None, None]
             µ±Êµ¼Ê¹¥»÷ÕßÊdzèÎï»òÕÙ»½ÊÞʱ£¬·µ»Ø [Ö÷ÈËcurPlayer, npcObjType]
    N(NN( RRR°R1RþRRt GetObjDetailtGetOwnertgnotPetRt GetPetOwner(tatkObjRR+t curNPCDetailt curNPCOwnert summonOwnerR((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR¢ês" 
    cCsœ|jtjƒ}|jtjƒ}|r:||kr:tStj|jƒ|jƒƒ}tj|jƒ|jƒƒ}|tj    ks”|tj    kr˜t
StS(N( RqRbtDef_PlayerKey_MirrorBattleIDR2R5R6R7R8RtgatSafeR;(RÝRt curBattleIDt tagBattleIDtareaTypet tagAreaType((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRscCst|dks|jƒdkr"tStj|ƒdksLtj|ƒdkrPtS|jƒs`tS|jƒsptStS(Ni(R1RR;RFRR R2(R{R((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR(s*  cCsO|dks|jƒdkr"tStj|ƒdkr;tS|jƒsKtStS(Ni(R1RR;RFRR R2(RÝ((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckObjCanDoLogic=s cCsdt||ƒsG|j|jƒ|jƒ|jƒ|jƒtjƒtS|j    ƒt
j kr`tSt S(N( RtNotify_AttackFailRRR7R8RtafrNullR;tGetPlayerActionRbtDef_PlayerCanAttackStateR2(R&R((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckPlayerCanAttackTagQs                
  cCs    | s| rtS|jƒtjkr+tS|jƒ}|jƒ}ttj    |||j
ƒ|j ƒƒtj    |j
ƒ|j ƒ|j
ƒ|j ƒƒƒ}|s¤tS|j ƒ}|dkrÀtS|t j|||tjƒ7}|sõ|tj7}n||krtStS(Ni(R;RRR°R2tGetAttackTargetPosXtGetAttackTargetPosYtminRtGetDistR7R8t
GetAtkDisttPassiveBuffEffMngt!GetPassiveSkillValueByTriggerTypeRbtTriggerType_SkillDisttDef_PlayerAttackDistZoom(R&tcurTagtuseSkilltpreciseAtkDictt atkStartPosXt atkStartPosYtdistt    skillDist((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckPlayerAttackDist|s&  $3   cCsCt||ƒstSt|||ƒs)tStj||ƒr?tStS(N(RR;RØRt    IsSameObjR2(R•RRÁ((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckNPCCanAttackTag£scCsotj|jƒ|jƒ|jƒ|jƒƒ}|dkrU||jƒkrkdSn||jƒkrkdStS(N(RRfR7R8R1RgR2(R•RlRÁRq((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRØ·s cCsdS(N((RC((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytSuperAttackedBuffÉscCs—|dks|jƒdkr"tS|jƒtjkr;tStj||ƒsQtStj    |ƒdkrjtSt
|||ƒs€tSt ||ƒr“tSt S(Ni( R1RR;RRR°Rt IsSameCountryRFRRsRÑR2(R&RlRÁ((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckSkill_ReBornÔscCsÝ|dks|jƒdkr"tStj||ƒr8tS|jƒtjkrQtSt    j
|ƒdkrjtSt |||ƒs€tSt ||ƒr“tS|j ƒ}|j ƒ}|dksÃ|dkrÇtS|jƒ|jƒkS(Ni(R1RR;RRtR2RRR°RFRRsRÑRýR$(R&RlRÁt
curTagTeamt curPlayerTeam((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckSkill_Teamös"  tHurtTypecBseZdZdZd„ZRS(icCs(d|_d|_d|_d|_dS(Ni(tHurtHPR|tLostHPt
RealHurtHP(tself((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt__init__*s            (t__name__t
__module__R}R|R(((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR|"scCs||@S(N((t happenStatetcmpType((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytIsHappenStateByType6scCstj}itddgtj6tddgtj6tddgtj6tddgtj6tddgtj6tddgtj6}g}|t    j
krÁ|tjtjtjtjtjg7}n|t    j
krã|tjg7}n|só||fSt j dƒ\}    }
it tj6ttj6ttj6ttj6ttj6} g} x |
D]˜} t}x‰| D]}||ks`|| kr„q`n|| kr–q`n| j|ƒ|r¯q`n| |||||ƒ}|r`|||<t}q`q`WqMWxš|    D]’}||ksð|| krqðn|| kr\| j|ƒ| |||||ƒ}|r\|||<q\n||drð|tjkrð|}qðqðW||fS(s´ »ñÈ¡É˺¦ÀàÐͽá¹û 
    Ö§³Ö¶àÖÖÉ˺¦ÀàÐÍͬʱ´¥·¢, Æ®×Ö±íÏÖÒÔ×îÖÕ±íÏÖÉ˺¦ÀàÐÍΪÖ÷
    @return: ×îÖÕ±íÏÖÉ˺¦ÀàÐÍ, {É˺¦ÀàÐÍ:[ÊÇ·ñ´¥·¢, É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ], ...}
    itCalcHurtTypeInfo(RbtDef_HurtType_NormalR;tDef_HurtType_LuckyHittDef_HurtType_SuperHittDef_HurtType_ParrytDef_HurtType_ZhuxiantDef_HurtType_DeadlyHittDef_HurtType_ThumpHitRR°R$R%t__HurtTypeHappen_LuckyHitt__HurtTypeHappen_SuperHitt__HurtTypeHappen_Parryt__HurtTypeHappen_Deadlyt__HurtTypeHappen_ThumpHitRnR2(RStdefObjRRR„R²R    thurtTypeResultDictt calcTypeListt priorityListt    mutexListt
happenFunct hadCheckListtmutexHurtTypeListt curMHHappenthTypetresult((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCalcHurtTypeResult<sd     
 
 
 
 
 
    cCst|tjƒr.t|jƒtj|ƒfS|jƒ}tj|ƒ}t    t
j dƒƒ}|dkrndSt j |ƒr™t|jƒtj|ƒfSdS(so ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - »áÐÄÒ»»÷
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËã¹Ì¶¨Öµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâ¹Ì¶¨Öµ
    tCalcLuckyHitRateiN(R†RbtDef_Skill_HappenState_LuckyHitR2tGetLuckyHitValR?tGetLuckyHitReducetGetLuckyHitRatetGetLuckyHitRateReducetevalR$t GetChConfigRt    CanHappen(RSR”R„R²t aLuckyHitRatetdLuckyHitRateReducetatkLuckyHitRate((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR†s  cCsÛt|tjƒr.t|jƒtj|ƒfS|jƒ}tj|ƒ}t    t
j dƒƒ}|t j |||tjƒ7}|t j|||tjƒ7}|dkr¬dStj|ƒr×t|jƒtj|ƒfSdS(sk ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - ±©»÷
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËã¹Ì¶¨Öµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâ¹Ì¶¨Öµ
    tCalcSuperHitRateiN(R†RbtDef_Skill_HappenState_SuperHitR2t GetSuperHitR?tGetSuperHitReducetGetSuperHitRatetGetSuperHitRateReduceR¦R$R§Rht GetValueByPassiveBuffTriggerTypet TriggerType_Buff_AddSuperHitRateRiRR¨(RSR”R„R²t aSuperHitRatetdSuperHitRateReducet superHitRate((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR˜s    cCs<tj|ƒ}|sdStjtjƒr8td|fSdS(si ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - ·ÀÊØ·½µÖÓù
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ
    Ni(R?tGetDamChanceDefRR¨RbtDef_ChanceDefRateR2(RSR”R„R²t chanceDefPer((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR‘­s  cCs2tj||dtjƒ}|r.t|dfSdS(Ni(RhRiR1RbtTriggerType_IsDealyR2(RSR”R„R²tdeadlyHitValue((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR’Ãs cCs¿t|tjƒr8tt|jƒdƒtj|ƒfSd}|tj    |||tj
ƒ7}|tj |||tj
ƒ7}|dkrŒdSt j |ƒr»t|jƒdtj|ƒfSdS(Ngø?ii(R†RbtDef_Skill_HappenState_ThumpHitR2tintR®R?R¯RhRitTriggerType_AddThumpHitRateR²RR¨(RSR”R„R²t thumpHitRate((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR“Ês&    cCsã|s
|S|jƒtjkr#|S|jƒ}d}d}|tj||ƒ7}|jƒtjkr³tj||ƒ}|jƒtj    tj
gkr¬|t j |ƒ7}nh|jƒtj tjgkrà|t j|ƒ7}n4|jƒtjtjgkr|t j|ƒ7}n|jƒtj    tj
gkrH|t j|ƒ7}q³|jƒtj tjgkr||t j|ƒ7}q³|jƒtjtjgkr³|t j|ƒ7}q³n|s¿|rß||}td||ƒ}n|S(Ni(RRR°tGetSkillTypeIDRªtGetSkillAddPerByIDtGetSkillReducePerByIDtGetJobRtPlayerJob_WarriortPlayerJob_KnightR?tGetJobAHurtAddPertPlayerJob_WizardtPlayerJob_ForceUsertGetJobBHurtAddPertPlayerJob_AssassintPlayerJob_BowMastertGetJobCHurtAddPertGetJobAAtkReducePertGetJobBAtkReducePertGetJobCAtkReducePerR¿(RSR”R²RÊt skillTypeIDtaddPert    reducePert addSkillPer((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytChangeSkillHurtPerÛs4  
cCs>t|||ƒ}|s"||fS|jdƒ|jdƒfS(Nii(tGetCanChangeSkillHurtEffectR¾(R&R”R²RÊt
skillValuet
findEffect((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytChangeSkillHurts
cCs‚|s
dS|jƒtjkr#dS|jƒtjkrQ|jƒtjkrQdS|jƒtjkrjdStj    ƒj
ƒtj kr­tj    ƒj ƒt jddƒkr­dSt|tjtjgƒ\}}|sØdS|tjkrF|jƒtjkrdStj    ƒj
ƒtj kr~tj    ƒj ƒt jddƒkr~dSn8|tjkr~|jdƒtj|ƒ@dkr~dSn|S(NtSkillXPAddByFBiii(RRRR¶t    ntMonstert    GetIsBossRbtDef_NPCType_Ogre_SuperRR^R_R`RjRtRutGetSkillEffectByEffectIDstDef_Skill_Effect_AttackReplacet)Def_Skill_Effect_AttackReplaceByNPCSeriesR¾RYt GetNPCSeries(R{R”R²R×teffectID((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÕs2*$ $"cCsdx]td|jƒƒD]F}|j|ƒ}|jƒ}|sCqn||krUqn||fSWdS(Ni(Ni(RÓtGetEffectCountR½t GetEffectIDR1(R²t effectIDListRßRÈt curEffectID((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÝ5s   cCs_|s
|S|jƒtjkr#|S|jƒ}|tjkr[tj|ƒ}|sW|S|S|S(N(RRRR¶tntElfRYtGetSummonOwnerDetel(R{tnpcTypetowner((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytElfChangeAttackerJs cCs|s
tS|jƒ}|tjkr)tS|jƒ}|tjkrHtS|tjkrŒtj    |ƒ}|sptS|jƒtjkrŒtSntS(N(
R;RRR°R2Rþt
gnotNormalRRYRç(tgameObjtobjTypet
objNPCTypeRé((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckIsPlayerOnwer^s  cCs°|jƒtjkr|St|ƒs)|Stj|ƒ}|sB|Sttj|ƒ|tj    |ƒ}tj
|||ƒ|j tj |ƒt j||dtj|ƒ||S(N(RRR°RïR?t    GetProDefRetGetProDefAbsorbRbRÀt    SetProDefRst#Def_PlayerKey_GodWeaponBeforeProDefRhtOnPassiveSkillTriggerR1tTriggerType_ProDefValue(RSR”R
R²RDt    curProDeft absortValue((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt CalcAtkProDefus #cCst|jƒtjkrdS|rA|jƒtjtjgkrAdS|jtjƒrWdS|j    tj|j
ƒƒdS(N( RRR°t GetFuncTypeRbtDef_SkillFuncType_FbSkilltDef_SkillFuncType_NormalAttackRqtDef_PlayerKey_FirstDefenderRsR(R{R”R²((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytSetFirstDefender‹scCs0|jƒtjkrdS|jtjdƒdS(Ni(RRR°RsRbRü(R{((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytClearFirstDefenderšscCs|jtjƒS(N(RqRbRü(R{((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetFirstDefenderID¡sc
Csèt|ƒ}t|||ƒtƒ}|jƒ}tj|ƒ}    tj|ƒ}
tj|||t    j
ƒr¦t    j } tj|ƒ} | |_ | |_| |_ d} n…tj|||t    jƒrýt    j} tj|ƒ} | |_ | |_| |_ d} n.|dkr8t|ƒt    j} } | |jt    jƒ7} n‹tj||ƒrœtj|jƒ|ƒrœtj|jƒ|ƒ\}} t||jƒdƒ} n't||||||d|ƒ\} } t|||| | dƒt||| ||ƒ} | |_ | |_| |_ t|
td|    | ƒƒ} t| ƒ} |tj krõtj|ƒ}tj!|| t"ƒtj#|||t    j$|ƒ}|rtj|ƒ|t    j%}||krÇ| |krÇ|} n||krÜ|} ntj!|| t"ƒqn#|tj&kr|j'ƒtj(kr,t)j*|| ƒq|j'ƒtj+krltt,j-|ƒ| ƒ} tj!|| ƒq|j.ƒt    j/kr¹t|    ttj|ƒd| ƒƒ} tj!|| ƒq|j0ƒ}t1j2d|ƒ}|rðt3|||ƒqtj!|| ƒnt4j5d|ƒ|Stj|ƒdkrqtj6|||t    j7ƒ}|rqt8j9|dt|| ƒƒqqn|    tj|ƒ}||_:|tj kr¯t;j<||ƒnt||||j:|jdƒt=|||||ƒ|S(    NiiÈt    orgAtkObjs¹«Ê½²ãit NPCTimeLostHPs,¼ÆËãÉËѪֵʱ,·ÀÊØ·½ÀàÐÍ´íÎó£ºdefObjType = %ss×îÖÕ¿ÛѪ(>RêRýR|RRFRtGetMaxHPRhRiRbtTriggerType_ZhongjiZhanshatDef_HurtType_ZhognjiZhanshaR}RtTriggerType_AttackKilltDef_HurtType_ZhanshaR½RˆRqtDef_PlayerKey_MoreHurtValuet
SkillShelltIsPlayerUseSkilltisClientHurtValueRtGetClientHurtByObjReRçt
CalcHurtHPt WriteHurtLogtCalcHurtHPWithBuffR¿RR°tSetHPR;tOnObjsPassiveSkillLockHPtTriggerType_LockHPRÀRRþRQRtSetPetHPRÿRItGetTruckDestroyMinHPR¶tntHelpBattleRobotRRttGetIpyGameDataNotLogtUpdateTimeMonsterHPRRêR²tTriggerType_ChangeHurtToHPRªt
SkillAddHPR~R[t
OnFBLostHPtAttackEventTrigger(R{R”R²t atkSkillValuet atkSkillPerRDRStresultHurtTypeRtdHPtdMaxHPR    R
tremainHPt clientValuetcurHPt    lockHPPertlockHPR&ttimeLostHPIpyDatat    changePert    lostValue((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt    GetHurtHP±s                                               *'                      % #    cCsä|jtjƒ}|jtj|ƒ| s<||dkrEd}n
||}|dkr_dS|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}    |j    ƒ}
|j
ƒ} |j ƒ} |r8|    r8t j |ƒ} tj| ƒ}|sódS|jƒ}|t|    ƒ}|}    t|
|ƒ}
t| |ƒ} n|jtjƒ|jtjƒtj}|jtjƒ}|jtjƒ}| sœ||dkr|jtj|ƒd}d}x¸t|jƒƒD]¤}|j|ƒ}|dkrõqÎn|jƒsqÎn|jƒ}|tjkr(qÎn|d7}|    rÎt j!|j"ƒ|ƒ}||s_dn tj#|ƒ7}qÎqÎWt$|dƒ}t||ƒ}|
r°||
kr°|
}n|rË||krË|}n|jtj|tjƒ|jtj|tjƒ|jtj|ƒn|}|dkrB|d|}||7}n|    r|r| r| r||    t| ƒ| }||7}nt$dt||dƒƒ}t%t&j'|ƒt$dt&j(|ƒ|ƒƒ}t&j)||dt*ƒdS(    s¡
    NPC×ÜѪÁ¿ = µ¥ÈËÿÃëµôѪÁ¿*ÀíÂÛ»÷ɱËùÐèʱ¼ä
         µôѪֵ = µ¥ÈËÿÃëµôѪÁ¿+min(µ±Ç°ÈËÊý, ×î´óÈËÊý)*¸½¼ÓµôѪÁ¿+(ÓÐЧսÁ¦-±ê×¼Õ½Á¦)/xÕ½Á¦*xÕ½Á¦¸½¼ÓµôѪ
    iÐièiNi¸ ig@@tisByTime(+RqRbtDef_NPC_Dict_TimeLostHPTickRstGetLostHPPerSecondtGetMaxPlayerCounttGetLostHPPerSecondExtGetFightPowerMinByLVtGetFightPowerMintGetFightPowerMaxtGetEveryFightPowertGetEveryFightPowerLostHPExRYtGetNPCLVR?tGetPlayerLVIpyDatatGetReFightPowertfloatR½t!Def_NPC_Dict_TimeLostHPFightPowert#Def_NPC_Dict_TimeLostHPFightPowerExRt"Def_NPC_Dict_TimeLostHPPlayerCountt&Def_NPC_Dict_TimeLostHPPlayerCountTicktxrangetGetInSightObjCounttGetInSightObjByIndexR1R RRR°RtGetObjRR?R¿ReRFRRRR2(R•tipyDataRDtlastLostHPTicktpassTicktlostHPPerSecondtmaxPlayerCounttlostHPPerSecondExtfightPowerMinByLVt fightPowerMint fightPowerMaxteveryFightPowerteveryFightPowerLostHPExtnpcLVtplayerCurLVIpyDatat ReFightPowertreRatet effFightPowerteffPlayerCounttrefreshPlayerCountTicktfightPowerTotalRßtseeObjt
seeObjTypet    seePlayerthurtValuePerSecondtplayerCountHurtExtfightPowerHurtExt lostHPTotalR ((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR's„    
 
&           .c CsKt|||||ƒ}|jƒ}tj|tjƒ\}}}|rët||jdƒtj    ƒ}    |    rë||    8}t
j ||ƒd}
|
rè|
j t |
jƒ|    |
jƒƒƒ|
jƒ|
jƒkrå|
jdƒqåqèqëntj|tjƒ\}}}|r‡||jdƒtj    }    |    r‡||    8}t
j ||ƒd}
|
r„|
jt t|
jƒ|    ƒtjƒƒq„q‡ntt|ƒdƒ}tj||dtjƒ} |jtj|tjƒ|jtj|tjƒ| tj||dtjƒ7} t|ttj    | dƒdtj    ƒ}t|||ƒ}|S(Niigð?(Røt GetBuffStatet    BuffSkilltFindBuffEffectPlusByEffectIDRbtDef_Skill_Effect_AbsorbShieldR½R¾RRÀRªt FindBuffByIDt    SetValue1Ret    GetValue1tGetValuet SetRemainTimet!Def_Skill_Effect_AbsorbShieldXMZJtSetValuetDef_UpperLimit_DWordR¿RhR²R1tTriggerType_ReduceHurtHPPerRstDef_PlayerKey_curHurtValueRtDef_PlayerKey_curHurtValueExRitCalcBloodShield( RSR”R
R²RDt buffManagerRÈt    plusValuetskillIDR÷tfindBuffRÒ((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRˆs8  
&
2+c CsŠtjƒjtjƒ}|s"dS|dkr^|s8dS|jƒtjkrQdSd|}n|rp|jƒnd}|rˆ|jƒnd}|r |j    ƒnd}    |r¸|j
ƒnd}
|rÐ|j ƒnd} |rè|j ƒnd} |r$|jƒtjkr$| j dƒj dƒ} n|rZ|jƒtjkrZ| j dƒj dƒ} ntjd||| || |    |
||f    ƒdS(NisÍæ¼ÒiR.tutf8tgbksH¹¥»÷É˺¦-%s£º(%s %s)¹¥»÷(%s %s), ¼¼ÄÜID:(%s %s), É˺¦Öµ:%s, É˺¦ÀàÐÍ:%s (RRtGetGameWorldDictByKeyRtDef_Notify_WorldKey_HurtLogRRR°Rt
GetSkillIDt GetSkillNameRBtdecodetencodetDebugLog( R{R”R²R
R    tmsgtlogLevelt
attackerIDt
defenderIDRkt    skillNamet attackerNamet defenderName((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR Äs,      cCs6tj||ƒtj||dtjƒtj|ƒS(N(RFtSetBloodShiledHurtRhR²R1RbtTriggerType_BloodShieldtGetBloodShiledHurt(RSR”R
((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRhäscsKsç||jtjƒdkr)dtjfSd}d}    |jddƒrY|jddƒn|}
|
jƒtjkrà|
j    ƒtj
krà|
jtj ƒ} | dkràt j |
ƒ} | sÉdtjfS| dtj}    qàn|jƒ} |jƒ}t||| |ƒ\}}|tjkrìtj|ƒrì||krìtjd|ƒ}tjd|ƒ}|rs|jƒnd}|r‹|jƒnd}||krì| tjkrÜtjd||fƒtj|d|gƒndtjfSnt||ƒ}|r|n tj|ƒ}|tj|||tjƒ7}|j ƒ}|j ƒ}|j!ƒ}|rœ| tjkrœ|j"ƒtj#krœ|tj$d    d
ƒ}n| tjkrºtj%|ƒntj}|tj|||tj&ƒ7}|j'ƒ}|tj||dtj(ƒ7}|tjkr+tj)|ƒnd}|tj||dtj*ƒ7}|rb|j+ƒnd}d}d}d}d\} }!d}"d}#d\}$}%| tjkrµ|tjkrµ|r|j"ƒtj,krt||| |ƒ\}}||krdtj-fSntj|ƒr#dnd}t j.|ƒr~t/d||ƒ} | r~tj0|ƒ}&|&sldn    |&j1ƒ}"q~nt j2|ƒ}#|#rµt/d|#tj3|ƒƒ}!qµnt4}'d }(| tjkr3|j5ƒtj6kr3t7}'t j2|ƒ}#tj8ƒj9tj:ƒ}$tj8ƒj9tj;ƒ}%d }(n|tjkr¥|j5ƒtj6kr¥t7}'t j2|ƒ}#tj8ƒj9tj:ƒ}$tj8ƒj9tj;ƒ}%d }(nt<j=dƒ})|' r›tj>|||tj?ƒ r›|tjkr/|j@ƒtjAkr/tBjC|ƒtjDkr/tjE|ƒr/dtjfStFjG|tjHƒrftFjG|tjIƒrfdtjfStJ|tjKƒ r›tL|)ƒdkr›dtjfSntM||| |||ƒ\}*}+|+tjN\},}-}.|+tjO\}/}0}1|/sc|+tjP\}/}0}1d}2|2tj|||tjQƒ7}2|2tj>|||tjQƒ7}2|0|2tjtj}0n\d}3|3tj|||tjRƒ7}3|3tj>|||tjRƒ7}3|0|3tjtj}0|+tjSd
}4|+tjT\}5}6}7|+tjU\}8}9}:tj||dtjVƒr!d|*fSd};tjWƒjXtYjZƒ}<|<rotj0|<ƒ}=|=s`dn    |=j[ƒ};nt\|||||ƒ\}}t]||||ƒ}| tjkr@    | sÍ|j"ƒtj#krö|tj^|ƒ7}|tj_|ƒ7}q@    |j"ƒtj`tjagkr@    |tjb|ƒ7}|tjc|ƒ7}q@    n|tj|||tjdƒ7}|tj>|||tjdƒ7}|tj|||tjeƒ7}|tj>|||tjeƒ7}|tj>|||tjfƒ7}tj|||tjgƒ}>||>7}|*tjPkrl
|tj|||tjhƒ7}|tj>|||tjhƒ7}tji|||tjj|ƒn1|*tjOkr
|tj|||tjkƒ7}n|,ró
|-tj|||tjlƒ7}-|-tj>|||tjmƒ8}-t/|-dƒ}-ntnjnƒ}?|joƒ|    }@|jpƒ|    }A|jqƒ}B|Btj|||tjrƒ7}B|joƒ}C|jpƒ}D|jsƒ}EtFjt|ƒ}FtFju|ƒ}G|jvƒ}H| tjkr¶ |jwƒ}I|jxƒ}Jtjy|ƒ}Ktjz|ƒ}Ltj{|ƒ}Mtj||ƒ}N|Ntj|||tj}ƒ7}Ntj~|ƒ}O|Otj|||tjƒ7}Otj€|ƒ}P|Ptj|||tjƒ7}P|Ptj>|||tjƒ7}Ptj‚|ƒ}Qtj3|ƒ}Rn‘d}ItFjƒ|ƒ}Ot jx|ƒ}J| tjkr |j    ƒtj„kr |J|jxƒ7}Jnd}Md}Nd}Kd}Lt j€|ƒ}Pt j2|ƒ}R|tjkrtj…|ƒ}Stj†|ƒ}Ttj‡|ƒ}Utjˆ|ƒ}V|Vtj||dtj‰ƒ7}VtjŠ|ƒ}Wtj‹|ƒ}Xtj3|ƒ}YtjŒ|ƒ}Z|Ztj|||tjƒ7}Zn9d}Sd}Td}Ud}Vd}Wd}Xt j2|ƒ}Yd}ZtŽjtjƒj‘ƒƒ}[t<j’dƒ}\| r¶d|}]|]|\kr¶|\|]}^tLt“j”|]|^ƒƒ}q¶n|!rúd|}_|_|\krú|\|_}`tLt“j”|_|`ƒƒ}qún|dks|dkrd}anAd|[}b|b|\kr:d}bnt•tLt“j”|b|\|bƒƒƒ}a|tjkrèt–j—|j˜ƒƒrèt™|ƒ\}c}d|crètBjš|ctj›ƒd}e|erå|ejœƒjdƒjždƒ}f|O|f8}Oqåqèn| tjkr|[tjŸkr|Otj |ƒ7}On| tjkr•|tjkr•tj|ƒr•tj¡dƒ}gtj¢|g|j˜ƒƒ}h|hdkr•|Otj£|ƒ7}Oq•nt¤|ƒ}it¤|ƒ}jd|i|j|f}kd}ld|k|[f}m|m|\krë|m}knT|idkr|jdkrt j.|ƒ}ln*|idkr?|jdkr?t j.|ƒ}ln|lrmd|k|lf}n|n|\krm|n}kqmn|(r||(}kn|k|\kr¦tj¥d|kƒdtjfS|jddƒrñ|jddƒ}o|jddƒ}p|jddƒ}kn|\|k}qt•tLt“j”|k|qƒƒƒ}r|8r,|r|99}rn| tjkrn|tjkrn|[tj¦krnt§j¨||ƒ}n|dkrt•|r|ƒ}rn|*tjkrµ|>dkrµ|rtj©fS|*tjkrÝ|adkrÝ|rtjªfS|r|*fS( NiôiiRgð?tRealmsBossRealmHint%s-%st BossRealmHinttFightHappenRateiR.t HelpRobot_Atkt HelpRobot_Deft
CalcCanHittCalcAttackValuesSuppressValueLV_%ssSuppressValueFP_%si'sSuppressValueRealm_%stSuppressValueRealmR5s%sV%s_%ss%s_%stEtPs*CalcAttackValue.txt É˺¦¹«Ê½Î´ÅäÖÃ, key=%sthurtFormulaKeyt    burnValuetburnPer(ii(ii(«RqRbtDef_PlayerKey_SomersaultTimetDef_HurtType_MissRR1RRRRþRtDef_GameObjKey_InheritOwnerRYRçRÀtGetPVERealmLVsR“RtRt
GetLvLargeR°RRuR?RWRˆR¼RtGetHappenStateRhRitTriggerType_HappenStateRïtGetHitRùRûRðtGetHitSucessRatetTriggerType_HitSuccesstGetMisstTriggerType_MissPertGetMissSucessRatetTriggerType_MissSuccessPerRqtDef_SkillFuncType_RealmSuppresstDef_HurtType_ImmunetGetIsLVSuppressR¿R4t
GetReMaxHPR>R?R;R¶RR2t    GetGameFBtGetGameFBDictByKeytFBPD_HelpBattleFBFightPowertFBPD_HelpBattleFBBaseHurtR$R§R²tTriggerType_Buff_MustBeHitRÛtDef_SkillAttack_NPCIsBossRªR«R¬tIsNPCSkillResistRFtGetPyPlayerStatetDef_PlayerState_SneertDef_PlayerState_MissSneerAtkR†tDef_Skill_HappenState_HitOnR¦RŸR‰RŽRŠtTriggerType_SuperHitPertTriggerType_AddThumpHitPerR‹RŒRtTriggerType_OneDamageRRoRt"Def_Notify_WorldKey_WorldAverageLvR5RØRÔtGetNormalHurtPert GetNormalHurtRút Def_SkillFuncType_FbPassiveSkilltGetFabaoHurtPert GetFabaoHurttTriggerType_SkillValuetTriggerType_AttackAddSkillPertTriggerType_BeAttackAddSkillPert"TriggerType_AttackAddSkillPerYinjitTriggerType_SuperHitSkillPertOnPassiveBuffTriggertTriggerType_SuperHitSubLayertTriggerType_ThumpSkillValuetTriggerType_LuckyHittTriggerType_BeLuckyHitSubPertrandomRæRçt    GetIceAtktTriggerType_AddIceAtktGetDefRRt    GetIceDeftGetIgnoreDefRatetGetSkillAtkRatet GetDamagePVPt GetDamagePVEtGetNPCHurtAddPertGetDamagePerPVPtTriggerType_AddPVPDamagePertGetFinalHurtPertTriggerType_AttackAddFinalPert GetFinalHurttTriggerType_AttackAddFinalValuetGetOnlyFinalHurtt GetPetDamPerRQtGetIgnoreDefRateReducetGetSkillAtkRateReducetGetDamagePVPReducetGetDamagePerPVPReducetTriggerType_DamageReducePVPtGetFinalHurtReducet GetBeHurtPertGetFinalHurtReducePertTriggerType_dFinalHurtReducePertFBCommontGetRecordMapIDR^RjR%tFormulaControltGetCompileFormulaR½R÷tIsHorsePetRobBossRR¢R]t&Def_SkillID_HorsePetRobBossKillCntBufftGetSkillR½R¾tDef_FBMapID_FamilyBossMaptGetFamilyBossHurtPerRuR7tGetBossFinalHurtPertGetObjAtkStateMarkRêtDef_FBMapID_CrossBattlefieldR[tGetFBPlayerHurtNPCMultiValuetDef_HurtType_YinjitDef_HurtType_RealmSupress(sRSR”R²RRRDR„tatkwargst
multiValuet summonAtkPert summonAtkObjtsummonAtkPerValuet ownerAtkObjRRtaRealmLVtdRealmLVt aRealmIpyDatat dRealmIpyDatat aRealmLVLarget dRealmLVLargetatkTypetaLVtdLVtaHittaHitSuccessRatetdMisstdMissSuccessRateRkt    atkIsBosstsuppressValueLVtsuppressValueFPt
suppressLVtsuppressFightPowertsuppressReMaxHPtsuppressNPCFightPowert fbFightPowert
fbBaseHurttsuppressLVIpyDatatmustHitthelpBattleFormatKeyt
hitFormulaR    R•t
isLuckyHitt    aLuckyHittdLuckyHitReduceRŸt    aSuperHittdSuperHitReducet superHitPertthumpPert dDamChanceDeft isZhuxianHittaZhuxianHurtPertdZhuxianReducePert isDeadlyHittdeadlyHitMultiValuet_t wReFightPowertworldLVt
wLVIpyDatatatkSkillPerYinjitrandtaMinAtktaMaxAtktaIceAtktdMinAtktdMaxAtktdDefRRtdIceDeftaIgnoreDefRatet aSkillAtkRatet
aDamagePVPt
aDamagePVEtaNPCHurtAddPert aDamagePerPVPt aFinalHurtPert
aFinalHurttaOnlyFinalHurtt aFightPowertdIgnoreDefRateReducetdSkillAtkRateReducetdDamagePVPReducetdDamagePerPVPReducetdFinalHurtReducet
dBeHurtPert dFightPowertdFinalHurtReducePertmapIDthurtDisttsuppressFormulaKeyLVtsuppressLVFormulatsuppressFormulaKeyFPtsuppressFPFormulatSuppressValueRealmRatetsuppressRealmRateMapKeyRR+RltreduceFinalHurtPerR@t
limitIndext atkStateMarkt defStateMarkRŠtsuppressLVGroupt
mapHurtKeytsuppressLVHurtKeyt
aBurnValuetaBurnPert hurtFormulaR
((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR ïs
 **    *    *' $   "$    $     $'  !
 
"        $"
 
 
 
    
     "$-                
 -   cCsd}tjd|ƒ}d}||krDt|d|dƒ}nt|d|dƒ}d}x$|D]}||j|dƒ7}qhW||S(Nit
RealmGroupiiÿÿÿÿ(RtRuRÓR(RíRît    gridIndextsuppressRealmHurtPertsuppressRealmDictt
plus_minust suppressListtrealmLV((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetRealmHurtPere    s  cCs«|tjkrXt|ƒ\}}|r6|jƒ}qdtj|ƒ}|dkrddSn |jƒ}|tjkr•tj|ƒ}|dkr¡dSn |jƒ}||fS(Ni(ii(ii(RRR¢tGetOfficialRankRYt
GetRealmLV(RSR”RRRR+RíRî((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRx    s    cCs«t|||j|j|ƒt|||||ƒ|jƒtjkr§tj||j    ƒ|jƒtj
kr‹|j t j |jƒƒq§|j t j|jƒƒndS(N(t CalcBounceHPR~R|t CalcSuckBloodRRR°RFtSetLastHurtValueRRRsRbtDef_PlayerKey_LastHurtNPCObjIDRtDef_PlayerKey_LastAttackerObjID(RSR”R²RRD((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR•    scCsŸ|jƒ}|tjkrdS|tjkr||jƒtjkrGdS|jƒtjkr`dS|jƒtjkr|dSn|j    ƒ}|tj
kr›dSdS(NR‰tRobott    HelpRobottPetRˆ( RRR°RR¶RbtntRobotRR·RþRQ(R¸Rí((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRâ§    s  cCsCtj|ƒ}t|ƒs't|ƒr5|s1dSdS|s?dSdS(NsPVE_%ssPetVE_%ssPVP_%ssPetVP_%s(RRt IsPVENPCObj(RSR”tisPet((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt GetAtkState½    scCsy|jƒ}|tjkrtS|jƒ}|tjkr>tS|tjkrutjtj|ƒ}|dkrutSnt
S(N( RRR°R;RþRQRRYtGetSummonNPCOwnerR1R2(R¸RítnpcOwner_Player((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRXÈ    s   c
Cs|jƒsdS|jƒ}|tjkr/dS|jƒ}t||||ƒ\}}|tjkrçtj|ƒrç||krçtj    d|ƒ}    tj    d|ƒ}
|    r¶|    j
ƒnd} |
rÎ|
j
ƒnd} | | krçdSnt j |ƒdkrdSt ||tƒ r0tj|jƒ|ƒ r0dS|jƒ} | tj|ddtjƒ7} | tj|||tjƒ7} || ttjƒ}t|tj|ddtjƒƒ}t|tj|ddtjƒƒ}|dkrëdS|t j |ƒkr|nt j |ƒd}t|||ƒ}tt j |ƒ|dƒ}|jƒ}|tjkr|jƒtj krŠt!j"||ƒqçt j#||ƒnJ|tjkrçt j#||tƒ|tjkrçt$|||dƒqçnt%||d|tj&ƒdS(NR€iisPlayer bounce Player('RRRR°RRRbR“RtRR‘RFRRR;RûRR%tGetDamageBackRateRhRiR1tTriggerType_BounceHPPerR²t!TriggerType_BounceHPPerByAttackerR6RÀR½tTriggerType_BounceHPRhR¿RþRQRRRR    t ChangeHPViewtDef_HurtType_BounceHurt(RSR”R
R    R²RRRíRîRïRðRñRòtdefObj_DamageBackRatetbounceHPt    realSubHPR ((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyROÞ    sP   * , %% . c
Cs&|jƒtjkrdS|j|j}}|s6dStjƒjƒ}||jt    j
ƒt    j t    j
krrdS|j t    j
|ƒd}|jƒtj krÈtj|ƒdkrÈ||jƒ7}ntj|ƒ}|jƒtjkr|tj|ƒ7}ntj|||t    jƒ}    |    tj|||t    jƒ7}    |t    jkrm|    tj|||t    jƒ7}    n1|t    jkrž|    tj|||t    jƒ7}    n|t||    dt    jƒ7}||7}|dkr×dStj|ttj |ƒtj|ƒ|ƒt!ƒt"|dd|t    j$ƒdS(Nigð?(%RRR°RR|RRtGetTickt GetTickByTypeRbtTYPE_Player_Tick_SuckBloodtTYPE_Player_Tick_Timet SetTickByTypeRRFRt GetKillBackHPR?tGetAtkBackHPPertGetPVPAtkBackHPRhR²tTriggerType_Buff_SuckBloodPerRiRŠt TriggerType_SuperHitSuckBloodPerRŽt TriggerType_ThumpHitSuckBloodPerR½RÀRReRR;RaR1tDef_HurtTYpe_Recovery(
RSR”R²RRDR
R    tsuckHPt    atkBackHPt atkBackHPPer((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRP,
s:*""
 2cCs$|jƒtjkrdStjƒjƒ}||jtjƒtj    tjkrUdS|j
tj|ƒd}|jƒtj kr«t j |ƒdkr«||jƒ7}ntj|ƒ}|dkrê|t||ttjƒƒ7}n|dkrúdS|jt|jƒ|jƒ|ƒƒdS(Ni(RRR°RRRfRgRbtTYPE_Player_Tick_SuckMagicRiRjRRFRt GetKillBackMPR?tGetAtkBackMPPerR½R6RÀtSetMPRetGetMaxMPtGetMP(RSR”R
RDtsuckMPt atkBackMPPer((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt CalcSuckMagic`
s"* $ &cCs|s
tS|jƒ}|tjkr8|jƒtjkS|tjkrz|jƒtjkrg|j    ƒ S|j
ƒtj kSt j d|ƒtS(Ns###GetIsDead = %s (R2RRR°R`tpaDieRRþRÿRt GetCurActiontlaNPCDieRtLogR;(ttagett    tagetType((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt    GetIsDead‚
s  cCs<|jƒ}|tjkrtS|jƒtj|jƒkS(N(R%Rtg_maliciousAttackDictR;Rw(R&R<R((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR9•
s cCsŒ|jƒ}|jƒ}i}|tjkr=tj|}n||krqtjƒ}||_tj||ƒn|||<|tj|<dS(N(R%RR…tChPyNetSendPackttagMCAddMaliciousAtkPlayert AtkPlayerIDt NetPackCommont SendFakePack(R*t    defPlayerRDt atkPlayerIDt defPlayerIDtdefMaliciousAttackPlayerDicttaddAtkPlayerPack((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR—œ
s        
 cCsV|jƒ}|tjkrdStj|}|jƒ}||krHdS|||<dS(N(R%RR…(R*R‹RDRŒtmaliciousAtkPlayerDictR((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR˜°
s    
cCsÄ|jƒ}|tjkrdStjddƒd}tj|}xb|jƒD]T\}}|||krqqOn|j|ƒtjƒ}||_    t
j ||ƒqOW|sÀtjj|ƒndS(NRîiiè( R%RR…RtRðR(R/R†ttagMCDelMaliciousAtkPlayerRˆR‰RŠ(R&RDRt
defendTimeRŽRŒtatkTicktdelAtkPlayerPack((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytProcessMaliciousAttackPlayer¾
s        c
CsÔ|jtjƒ}|jtjƒ}|rŸ||krŸtj|ƒ}|jtjkrgtjtjfS|j    ƒ|j    ƒkrtj
tjfStj tjfSt ||ƒr¾tjtjfSt j|jƒ|jƒƒ}t j|jƒ|jƒƒ}|tjks|tjkr(tj tjfS||krDtjtjfS|jƒtjkritjtjfSt|ƒr…tjtjfSt|ƒr¡tjtjfSt||ƒrÀtj
tjfS|jƒ}|tjkrëtj tjfS|tjkrZt ||ƒrtj tj!fSt"||ƒr8tj tj#fSt$||ƒr#tj tj%fSnÉ|tj&kr‹t'||ƒr#tj tj(fSn˜|tj)krt ||ƒr¹tj tj!fS|jtj*ƒ}|jtj+ƒ}    |tj,ksþ|    |j-ƒkr#tj tjfSn|tj.kr#nt/j0||ƒrEtj tj!fS|tj1kr¥|j2ƒt3j4ƒkr|tj tj5fS|j2ƒ r¥t6ƒr¥tj tj7fSnt8||ƒrÄtj tjfStj
tjfS(s*
    PKģʽ
        0    ºÍƽģʽ    IPY_GameWorld.amPeace            ¶ÔËùÓÐÍæ¼Ò¶¼ÊÇÓѺ㬶ñÒâ¹¥»÷×Ô¼ºµÄÍæ¼Ò³ýÍâ
        1    È«Ìåģʽ    IPY_GameWorld.amAll              ¶ÔËùÓÐÍæ¼Ò¶¼Êǵжԣ¬¼Ò×åÇøÓòͬÃËÍæ¼Ò³ýÍâ  
        2    ·ÀÎÀģʽ    IPY_GameWorld.amCountry          ±¾·þÍæ¼ÒÓѺã¬Ëû·þÍæ¼Ò¶¼ÊǵжÔ
        5    Ç¿ÖÆÄ£Ê½    IPY_GameWorld.amFamily           ¶ÓÓÑ¡¢ÏÉÃ˳ÉÔ±¡¢Í¬ÕóÓªÓѺã¬ÆäËûÍæ¼ÒµÐ¶Ô
        7    Ëø¶¨µ¥Ò»Ä¿±êģʽ IPY_GameWorld.amContest       Ö»¶ÔÑ¡ÖÐÄ¿±êÓÐÉ˺¦, Ä¿Ç°Ö»ÓÃÓÚ²¿·ÖBOSSÕù¶áµØÍ¼
        
    ³¡¾°ÇøÓò
        ÆÕÍ¨ÇøÓò    IPY_GameWorld.gatNormal    ¿É¸ù¾Ý²»Í¬PKģʽPK£¬»÷É±Íæ¼ÒÓгͷ£
        °²È«ÇøÓò    IPY_GameWorld.gatSafe      ²»ÄÜPK
        ×ÔÓÉÇøÓò    IPY_GameWorld.gatFreePK    ¿É¸ù¾Ý²»Í¬PKģʽPK£¬»÷É±Íæ¼ÒÎ޳ͷ£
        
    ¼ò»¯¹ØÏµÅжÏÂß¼­£º ¿É·ñ¹¥»÷È«Óɹ¥»÷ģʽ¾ö¶¨£¬²ß»®Í¨¹ýµØÍ¼Ä¬ÈÏģʽ¼°¿ÉÇл»Ä£Ê½¿ØÖÆPK¹ØÏµ
    
    Ç±¹æÔò:
        °²È«ÇøÓò²»¿É¹¥»÷
        ÆÕÍ¨ÇøÓòÖÐPKÖµ´ïµ½ÉÏÏÞ²»Äܹ¥»÷±ðÈË
        Ë«·½²»Í¬ÔÚÍ¬Ò»ÇøÓò²»¿É¹¥»÷
        ²»¿É¹¥»÷´ò×øÖеÄÍæ¼Ò
        ¶ñÒâ¹¥»÷×Ô¼ºµÄÍæ¼ÒÎÞÂÛʲôÇé¿ö϶¼¿É·´»÷£¬²»ÓÃÇл»Ä£Ê½
    (9RqRbRWt MirrorAttacktGetMirrorBattleByIDtbatStatetDef_MirrorBatState_FighttType_Relation_NoneRèt
GetFactiontType_Relation_EnemytType_Relation_FriendRòR5R6R7R8RRXtDef_PASysMessage_IsSafeAreatDef_PASysMessage_CurAreaNotPKR`tpaSittDef_PASysMessage_SitNotPKRñtDef_PASysMessage_NewGuyt Def_PASysMessage_NotAttackNewGuyR9t GetAttackModetamPeacetDef_PASysMessage_AttackModetamFamilyt CanAlikeTeamtDef_PASysMessage_NotAttackTeamtCanAlikeFamilyt Def_PASysMessage_NotAttackFamilytCanAlikeFactiont!Def_PASysMessage_NotAttackFactiont    amCountryt IsSameServert Def_PASysMessage_NotAttackServert    amContesttDef_PlayerKey_SelectObjTypetDef_PlayerKey_SelectObjIDR°R%tamAllRûtIsAssistRelationt    gatNormalR:R?t GetMaxPKValuetDef_PASysMessage_AttackNotPKtIsPKProtectTimetDef_PASysMessage_PKProtectTimeRô(
R&R<RYRZtbattleRLttagPlayerAreaTypetcurPlayerAttackModet selectObjTypet selectObjID((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetPlayersRelationÝ
sr    !c
Cs2|dks|dkr(tjtjfStj|jƒ|jƒƒ}tj|jƒ|jƒƒ}|tj    ks‚|tj    kr’tjtj
fS||kr®tjtj fSt j tj|ƒ}|rô|jƒ|jƒkrôtjtjfSntj|tjƒs;tj|dtjtjƒgƒtjtjfStj|ƒ}tj|ƒ}tj|ƒ}|tjkrº|jƒtjkrº|tjtjgkr·tj tj fSqºn|j!ƒ}|j"ƒ}    |rú|rú||krútj tj#fS|r"|    r"||    kr"tj tj$fStj%tjfS(NtTruck_hgg_31379(&R1RbRšRèR5R6R7R8RRXRžRŸRYR[R°RR8R9RtGameFuncID_TruckR?RWtGetFuncLimitLVRItGetTruckTeamIDtGetTruckFamilyIDRJR¶R¤R¥tpncGraytpncRedRR$RhR©R«Rœ(
R&t curTagTruckRLRMRCtcurTruckOTeamIDtcurTruckFamilyIDROtcurPlayerTeamIDtcurPlayerFamilyID((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetPlayerAndTruckRelation` s: "  c CsÅtjddƒ}|stS|\}}|\}}|\}}tjƒ}|j|j|j}}    }
tj||    |
||dƒ} tj||    |
||dƒ} || ks½|| krÁt    StS(NRîii(
RtRuR;RtGetCurrentTimetyeartmonthtdaytdatetimeR2( tpkProtecTimeListt    startTimetendTimet    startHourt startMinutetendHourt    endMinutetcurTimetcurYeartcurMonthtcurDayt startDateTimet endDateTime((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR¹– s    cCstS(N(R2(R&RC((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR¯ª scCs.|jƒ}|jƒ}|o-|o-||kS(N(R›(R&RCt
curFactiont
tagFaction((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR¬³ s  cCs.|jƒ}|jƒ}|o-|o-||kS(N(Rh(R&RCt curFamilyIDt tagFamilyID((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRª¼ s  cCs.|jƒ}|jƒ}|o-|o-||kS(N(R$(R&RCRËt curTagTeamID((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR¨Å s  cCs„tj|ƒdkrdS|jƒtjkrKtj|ƒ}|jƒdStj||||ƒsgdSt    j
|ƒ}|j ƒdS(Ni( RFRRRR°R?tSetDeadtChNPCt OnCheckCanDieRYRÙt    SetKilled(RSt curObjDetelR²RDt playerControlt
npcControl((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytDoLogic_ObjDeadÎ s
 
cCs    tjƒjƒ}tjƒjƒ}|tjkrDtjdƒdS|jƒ}tj    |ƒ}|j
ƒ}|j ƒ}tj |ƒ}    |jƒ}
tj    |ƒ} |j
ƒ} |j ƒ} tj |ƒ}|j t|tjtjƒƒ|j t| tjdƒƒdS(Ns;    __GiveKill_Player_ValuePrize ¸±±¾µØÍ¼É±È˲»¸ø½±Àø£¡£¡£¡i(RR^R_RjRR`RuRïR?t GetPrestigetGetInfamyValueR:R?tSetInfamyValueReRbtDef_KillValue_NotorietyRdR¿tDef_BeKilledValue_Notoriety(R&RRDRóR3tattackLVtattackPrestigetattackNotorietyt attackPkValuetattackFightPowertdefendLVtdefendPrestigetdefendNotorietyt defendPkValuetdefendFightPower((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRXæ s&        cCsš|jƒtjkr1|jƒtjkr1tSntjƒj    |j
ƒ|j ƒ|j
ƒ|j ƒƒ}|jƒtj kr–| r–t j|dƒn|S(NtPK_liubo_827276(RRRRÛRbtDef_NPCType_Boss_BlueR2RR^t    CanLineToR7R8R°R?RW(R{Rt    canLineTo((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCanAttackByPath4 sc    Csnd\}}|r.|jƒ|jƒ}}n|j||tj|tj||||jƒ|jƒƒdS(Ni(ii(RRRaRRRR(RÝtsrcObjRktchangeHPt    changTypetsrcIDtsrcType((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRaE s  (ŒR½RRbRR?RYRªRÆR[RTR$RR5RIt PlayerFamilyRht PlayerSuccessR8RRt    PlayerVipRÚRtRRFRZRRR–R†RûR‰R÷RØRæR:RüRÒtmathRR R#R'R.R0R>RERPRdR]R–RšR™R;R R©RµR±R¼RÄRÅRÍRÐRåRÖRíRÑRñRòRôRöRR    RRR-R2RRRNR¢RRR]RbRsRuRØRvRxR{R|R†RŸRRR‘R’R“RÔRØRÕRÝRêRïRøRýRþRÿR(RRR RhR1R RLRRRâRZRXRORPR}R„R9R—R˜R•RÀRÍR¹R¯R¬RªR¨RìRXRRa(((sxE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt<module>s                                                          #                *    (    G                          
                          %                               0            H    %  4 !    $                + '                 "    ,        J                        )         &                                v    a    <          ÿw                             N    4    "                        ƒ    6                                            N