hxp
2025-05-29 59040fb759b668f16bca6c0f083bd1acaef621dd
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
¼8hc@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl 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-e.d„Z/d„Z0d„Z1d„Z2d„Z3d„Z4d„Z5d„Z6d„Z7d„Z8d„Z9d„Z:d„Z;d„Z<d„Z=d„Z>d„Z?e.d „Z@d!„ZAd"„ZBd#„ZCd$„ZDeEd%„ZFeEd&„ZGeEd'„ZHd(„ZId)„ZJd*„ZKd+„ZLd,„ZMe.d-„ZNd.„ZOd/„ZPd0„ZQd1„ZRd2„ZSd3fd4„ƒYZTd5„ZUd6„ZVd7„ZWd8„ZXd9„ZYd:„ZZd;„Z[d<„Z\d=„Z]d>„Z^d?„Z_d@„Z`dA„ZadB„ZbdC„ZcdD„ZddE„ZedF„ZfdG„ZgdH„ZhdI„ZidJ„ZjekdK„ZldL„ZmdM„ZndN„ZodO„ZpdP„ZqdQ„ZrdR„ZsdS„ZtdT„ZudU„ZvdV„ZwdW„ZxdX„ZydY„ZzdZ„Z{d[„Z|d\„Z}d]„Z~d^„Zd_„Z€d`„Zda„Z‚db„Zƒdc„Z„dS(diÿÿÿÿNcCsO|jƒ}|j||jƒ||tj|tj|jƒ|jƒƒdS(N(tGetGameObjTypetAddHurttGetIDt ShareDefinetDef_PerPointValuetGetHPtGetHPEx(ttagObjthurtListthurtTypet    hurtValuet
tagObjType((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRCs  cCs4|jƒ}|j|||tj|tjƒdS(N(tGetPlayerHurtListt AddHurtValueRR(tdefendertattackIDtattackHurtTypetvaluetdefendHurtList((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR Js $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((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytAddTeamPlayerHurtValueOs      
 cCs¡tj}|jƒ}|sdS|jƒtjkr8dStjƒjƒ}||j    ƒ|j
ƒf}||krudS||}||j ƒf}|j |dƒS(Ni( RRt    GetTeamIDRRRRRRRRt GetPlayerIDR(t    curPlayerRRRRR R!R"((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetTeamPlayerHurtValueas      
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((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetTeamPlayerHurtPerrs2       
 
      cCsotj}|jƒtjkr"dStjƒjƒ}||jƒ|j    ƒf}||krk|j
|ƒndS(N( RRRRRRRRRRtpop(RRRR ((swD:\SG_ServerCode\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((swD:\SG_ServerCode\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((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt
AddPKValueÅs
cCs½tj||ƒtj|d|jƒgƒt|||ƒtj|||ƒtj    |||ƒrhdSt
|||ƒt ||ƒt j ƒjƒtjkr¹tj|tjdƒndS(Nt PK_lhs_318691i(t PlayerStatetSetPKStateTickR?t
NotifyCodeRBt__GiveKill_Player_ValuePrizet    NPCCommontOnPlayerKillNPCPlayertFBLogictDoFBOnKill_PlayerREt__DoKillPlayerNotifyRtGetMapt GetMapFBTypeRtfbtNulltNomalDictSetPropertytChConfigtDef_PDict_IsAddReviveTired(R&RRD((swD:\SG_ServerCode\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 GetFamilyIDtGetFamilyMemberLVRBtGetMapIDR7R8RRPRQRRRt IsCrossServerR?tGetPlayerServerGroupIDRRt GetFamilyNametappendtGetCrossFamilyNotifyInfot FamilyNotifyt GetDictByKeyRTtDef_PlayerKey_KillPlayerCntR%tSetDictt IpyGameDataPYtGetFuncEvalCfgtsortedtkeystGetCrossWorldNotifyInfoRIt WorldNotifyt CrossNotify(tattackerRt defFamilyIDtdefFamilyMemberLvtdefNametatkNametdefMapIDtdefPosXtdefPosYtcrossNotifyListt isCrossServertatkServerGroupIDtdefServerGroupIDRt atkFamilyNametatkFamilyMemberLvt
notifyCodet    paramListt defFamilyNametkillCnttkillPlayerNotifyDicttkillKeyst    notifyKeyt
killCntKeyt
notifyMarkt msgParamList((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyROûsb           $     
 
 cCs&tj|ƒr"tj||ƒndS(N(RTt
IsGameBossRGtSetBossStateTick(tcurNPCRRD((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytOnNPCHitPlayerBscCs‚|jƒ|jƒkrdSt||ƒs>t|||ƒnt|||ƒt|||ƒtj||ƒtj||ƒdS(N(RR>tAddMaliciousAttackPlayertUpdMaliciousAttackTicktAddPlayerHitPlayerHurtRGRH(RmRRD((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytOnPlayerHitPlayerMscCsE|jƒ}|jƒtjkr%dSt||jƒtjdƒdS(Ni(R t GetHurtCountRTtDef_PlayerHurtListCountR R%tDef_NPCHurtTypePlayer(RmRRDtdefPlayerHurtList((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR‹ls
 cCsdS(N((RCRDt
isSuperHit((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytDefenderSpringBuff}scCsK|s tjSt|ƒ\}}t|ƒ\}}|rD|rDtjStjS(N(RTtDef_BattleRelationType_CommtGetAttackPlayertDef_BattleRelationType_PVPtDef_BattleRelationType_PVE(RmRt attackPlayert    attackNPCtdefenderPlayert defenderNPC((swD:\SG_ServerCode\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 SkillCommontGetSkillBattleTypeRTR“t!Def_BattleRelationType_CommNoBossR2R•t GetSkillTypetDef_SkillType_AtktDef_SkillType_PassiveRRt    gotPlayertIsPVPNPCR;(RmRtcurSkilltbattleRelationTypetskillBattleType((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckBattleRelationTypes!
 cCs5|s
tS|jƒtjko4|jƒtjgkS(N(R;RRRtGetTypeRTtntPriWoodPilePVP(tobj((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR£¥scCstjS(N(RtghtPhy(tattacktattackUseSkill((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt GetBattleType¯scCsL|jdƒjdƒ}|jdƒjdƒ}t||tj|dƒS(Nii(t    GetEffecttGetEffectValuetmaxRTtDef_MaxRateValue(Rtskilltperteff((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetEnhanceValueÄscCs:|jdƒ}|jdƒ}t||tj|dƒS(Nii(R°R±RTR²(RRµR´((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetEnhanceValue_EffÏscCsk|jdƒ}|jdƒ}|jdƒ}tj||ƒ}|dkrOdSt||tj|dƒS(Niii(R°t    EffGetSettGetValueByEffIndexR1R±RTR²(R&t    curEffecttindextskillPerteffecttmaxValue((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetEnhanceIndexValue_EffÚs cCs|j|ƒ|jtƒdS(N(tSetLastBattleTicktSetBattleStateR2(RRD((swD:\SG_ServerCode\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 GetOrgSpeedtCheckNPCAttackDistR1RKt
NPCControltAddObjToAngryListR2R;t    GetPetMgrt GetFightPet(    tcurObjR&t
angryValuetit curTagSummont summonControltpetMgrt fightPetObjt
petControl((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytSummonAddAngryByOwnerûs&%     cCs|jƒp|jƒS(N(t    GetMinAtkt    GetMaxAtk(R‡((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÈ scCsd|tjkrdStj}||jƒkrLtjd||jƒƒdStj|||ƒdS(Ns7Íæ¼Ò¹¥»÷ʧ°ÜϵͳÌáʾÕÒ²»µ½¶ÔÓ¦µÄÌáʾmark,´«ÈëµÄÔ­Òò£º%s(    RTtDef_PASysMessage_NonetDef_MessageDicRiRtErrLogR%R?RI(R&tmessaget
messageDic((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytPlayerAttackFailSysMessanage+s    cCstS(N(R2(R&RC((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÃCscCs&|jƒtjddƒkr"tStS(NtPKConfigi(tGetLVRft
GetFuncCfgR2R;(R&((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt GetIsNewGuyQscCs5tjƒjƒ}|tjkr%tStj||ƒS(N(RRPRQRRRR;RMtCheckPlayersRelationInFB_IsNone(R&RCtmapType((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRä_scCstj||ƒS(N(RMt!CheckPlayersRelationInFB_IsFriend(R&RC((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRælscCstj||ƒS(N(RMtDoCanAttackTeamer(R&RC((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytPlayerCanAttackTeamerInFB{scCs˜|dkrtjdƒdS|jƒ}|tjkrUtj|||ƒ|jƒtjkrvt    j
|||ƒnt j |ƒdkr§|j tj|jƒƒntj||||ƒrÃdStj||||ƒrßdS|jƒ}|dkrt||jƒtj|ƒtSt||jƒtj|ƒt||jƒ|jƒ|ƒn?|tjkrƒt||jƒtj|ƒntjd|ƒtS(NsNPCAddObjInHurtList NoFindObjis'NPCAddObjInHurtList UnKnow ObjType = %s(R1RRÜRRR¢t FamilyRobBosstOnPlayerHurtFamilyOwnerBossRRMtDoFB_Player_HurtNPCtGameObjRReRTtDef_PlayerKey_LastHurtR%tNPCHurtManagerR t
NPCHurtMgrtGetTeamRR2R$tDef_NPCHurtTypeTeamR#RtDef_NPCHurtTypeNPC(RÏt    curTagObjtcurTaglNPCHPBeforethurtHPtisBouncet
curObjTypetcurTeam((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytNPCAddObjInHurtLists0     "cCstj|||ƒdS(N(RMt OnPVPDamage(R&t damageValueR<t    damageMsg((swD:\SG_ServerCode\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 GetSightLevelRTtSightLevel_PublicR2(RmR((swD:\SG_ServerCode\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
PetControltIsPettGetGameNPCObjTypet
gnotSummonR”R¨RTtntPriWoodPilePVER©R2tCheckCanAtkByAreaRMtCheckCanAttackTagObjInFB(RmRt
atkObjTypet
defObjTypet ownerPlayert
isWoodPile((swD:\SG_ServerCode\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?RIR;(    RmRtnpcIDtattackLVLimitDicttminLVtmaxLVt    atkPlayert
npcObjTypet
judgeMaxLV((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckCanAttackNPCByLVs*  "    cCs´|jƒtjkrtStj|ƒtjkr5tSt|ƒ\}}|sQtSd}t    |ƒrld}n|j
ƒsd}n|r°|dkr¬|r¬t j ||ƒntStS(s ÅжϿɷñ¹¥»÷ÏÉÃ˹éÊôµÄNPC ttFairyGrabBossNotAtktFairyGrabBossNoFairyN(RRRR2RKtGetDropOwnerTypeRTtDropOwnerType_FamilyR”RãRZR1R?RIR;(RmRtisNotifyRRtatkLimitNotifyMark((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR=s"          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(RRRR2RTR…RRfRgRtGetDictValueByKeyR1R”t GameFuncCommt GetFuncCanUseR?RIt BossHurtMngtGetCanKillBossCntRR;RKt GetNPCDataExtGetFightPowerLackAtkLimittGetSuppressFightPowert GetFightPower(RmRR%RtkillBossCntLimitDictR»RRt funcInfoDicttfuncIDt funcSysMarkt
canKillCnttsysMarkt    npcDataEx((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRYs@     !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(RRRR2RTR…RRRR”tNomalDictGetPropertytDef_PDict_WorldBoss_HurtCntR1R?RIR;(    RmRR%tlimitBossIDListtlimitCntRRRt hasAttackCnt((swD:\SG_ServerCode\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¢R1RR    Rt GetObjDetailtGetOwnertgnotPetRt GetPetOwner(tatkObjR Rt curNPCDetailt curNPCOwnert summonOwnerR((swD:\SG_ServerCode\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( RcRTtDef_PlayerKey_MirrorBattleIDR2R5R6R7R8RtgatSafeR;(RÏRt curBattleIDt tagBattleIDtareaTypet tagAreaType((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR ÒscCst|dks|jƒdkr"tStj|ƒdksLtj|ƒdkrPtS|jƒs`tS|jƒsptStS(Ni(R1RR;RìRRýR2(RmR((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRìs*  cCsO|dks|jƒdkr"tStj|ƒdkr;tS|jƒsKtStS(Ni(R1RR;RìRRýR2(RÏ((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckObjCanDoLogics cCsdt||ƒsG|j|jƒ|jƒ|jƒ|jƒtjƒtS|j    ƒt
j kr`tSt S(N( RtNotify_AttackFailRRR7R8RtafrNullR;tGetPlayerActionRTtDef_PlayerCanAttackStateR2(R&R((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckPlayerCanAttackTags                
  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!GetPassiveSkillValueByTriggerTypeRTtTriggerType_SkillDisttDef_PlayerAttackDistZoom(R&tcurTagtuseSkilltpreciseAtkDictt atkStartPosXt atkStartPosYtdistt    skillDist((swD:\SG_ServerCode\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³((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckNPCCanAttackTaggscCsotj|jƒ|jƒ|jƒ|jƒƒ}|dkrU||jƒkrkdSn||jƒkrkdStS(N(RRXR7R8R1RYR2(R‡R^R³Rc((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÊ{s cCsdS(N((RC((swD:\SG_ServerCode\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 IsSameCountryRìRReRÃR2(R&R^R³((swD:\SG_ServerCode\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;RRfR2RRR¢RìRReRÃRðR$(R&R^R³t
curTagTeamt curPlayerTeam((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckSkill_Teamºs"  tHurtTypecBseZdZdZd„ZRS(icCs(d|_d|_d|_d|_dS(Ni(tHurtHPRntLostHPt
RealHurtHP(tself((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt__init__îs            (t__name__t
__module__RoRnRs(((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRnæscCs||@S(N((t happenStatetcmpType((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytIsHappenStateByTypeúscCs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(RTtDef_HurtType_NormalR;tDef_HurtType_LuckyHittDef_HurtType_SuperHittDef_HurtType_ParrytDef_HurtType_ZhuxiantDef_HurtType_DeadlyHittDef_HurtType_ThumpHitRR¢RRt__HurtTypeHappen_LuckyHitt__HurtTypeHappen_SuperHitt__HurtTypeHappen_Parryt__HurtTypeHappen_Deadlyt__HurtTypeHappen_ThumpHitR`R2(REtdefObjR RRvR¤R    thurtTypeResultDictt calcTypeListt priorityListt    mutexListt
happenFunct hadCheckListtmutexHurtTypeListt curMHHappenthTypetresult((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCalcHurtTypeResultsd     
 
 
 
 
 
    cCst|tjƒr.t|jƒtj|ƒfS|jƒ}tj|ƒ}t    t
j dƒƒ}|dkrndSt j |ƒr™t|jƒtj|ƒfSdS(so ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - »áÐÄÒ»»÷
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËã¹Ì¶¨Öµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâ¹Ì¶¨Öµ
    tCalcLuckyHitRateiN(RxRTtDef_Skill_HappenState_LuckyHitR2tGetLuckyHitValR?tGetLuckyHitReducetGetLuckyHitRatetGetLuckyHitRateReducetevalRt GetChConfigRt    CanHappen(RER†RvR¤t aLuckyHitRatetdLuckyHitRateReducetatkLuckyHitRate((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRJs  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(RxRTtDef_Skill_HappenState_SuperHitR2t GetSuperHitR?tGetSuperHitReducetGetSuperHitRatetGetSuperHitRateReduceR˜RR™RZt GetValueByPassiveBuffTriggerTypet TriggerType_Buff_AddSuperHitRateR[RRš(RER†RvR¤t aSuperHitRatetdSuperHitRateReducet superHitRate((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR‚\s    cCs<tj|ƒ}|sdStjtjƒr8td|fSdS(si ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - ·ÀÊØ·½µÖÓù
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ
    Ni(R?tGetDamChanceDefRRšRTtDef_ChanceDefRateR2(RER†RvR¤t chanceDefPer((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRƒqs  cCs2tj||dtjƒ}|r.t|dfSdS(Ni(RZR[R1RTtTriggerType_IsDealyR2(RER†RvR¤tdeadlyHitValue((swD:\SG_ServerCode\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(RxRTtDef_Skill_HappenState_ThumpHitR2tintR R?R¡RZR[tTriggerType_AddThumpHitRateR¤RRš(RER†RvR¤t thumpHitRate((swD:\SG_ServerCode\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±(RER†R¤R¼t skillTypeIDtaddPert    reducePert addSkillPer((swD:\SG_ServerCode\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((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytChangeSkillHurtÈs
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    GetIsBossRTtDef_NPCType_Ogre_SuperRRPRQRRR\RfRgtGetSkillEffectByEffectIDstDef_Skill_Effect_AttackReplacet)Def_Skill_Effect_AttackReplaceByNPCSeriesR°RKt GetNPCSeries(RmR†R¤RÉteffectID((swD:\SG_ServerCode\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((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÏùs   cCs_|s
|S|jƒtjkr#|S|jƒ}|tjkr[tj|ƒ}|sW|S|S|S(N(RRRR¨tntElfRKtGetSummonOwnerDetel(RmtnpcTypetowner((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytElfChangeAttackers cCs|s
tS|jƒ}|tjkr)tS|jƒ}|tjkrHtS|tjkrŒtj    |ƒ}|sptS|jƒtjkrŒtSntS(N(
R;RRR¢R2Rt
gnotNormalR    RKRÙ(tgameObjtobjTypet
objNPCTypeRÛ((swD:\SG_ServerCode\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    GetProDefRWtGetProDefAbsorbRTR²t    SetProDefRet#Def_PlayerKey_GodWeaponBeforeProDefRZtOnPassiveSkillTriggerR1tTriggerType_ProDefValue(RER†R
R¤RDt    curProDeft absortValue((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt CalcAtkProDef9s #cCst|jƒtjkrdS|rA|jƒtjtjgkrAdS|jtjƒrWdS|j    tj|j
ƒƒdS(N( RRR¢t GetFuncTypeRTtDef_SkillFuncType_FbSkilltDef_SkillFuncType_NormalAttackRctDef_PlayerKey_FirstDefenderReR(RmR†R¤((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytSetFirstDefenderOscCs0|jƒtjkrdS|jtjdƒdS(Ni(RRR¢ReRTRî(Rm((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytClearFirstDefender^scCs|jtjƒS(N(RcRTRî(Rm((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetFirstDefenderIDesc
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$|ƒ}|rØtj|ƒ|t    j%}||krÇ| |krÇ|} n||krÜ|} ntj!|| t"ƒqØnã|tj&krÃ|j'ƒtj(kr,t)j*|| ƒqØ|j+ƒt    j,kryt|    ttj|ƒd| ƒƒ} tj!|| ƒqØ|j-ƒ}t.j/d|ƒ}|r°t0|||ƒqØtj!|| ƒnt1j2d|ƒ|Stj|ƒdkr1tj3|||t    j4ƒ}|r1t5j6|dt|| ƒƒq1n|    tj|ƒ}||_7|tj krot8j9||ƒnt||||j7|jdƒt:|||||ƒ|S(    NiiÈt    orgAtkObjs¹«Ê½²ãit NPCTimeLostHPs,¼ÆËãÉËѪֵʱ,·ÀÊØ·½ÀàÐÍ´íÎó£ºdefObjType = %ss×îÖÕ¿ÛѪ(;RÜRïRnRRìRtGetMaxHPRZR[RTtTriggerType_ZhongjiZhanshatDef_HurtType_ZhognjiZhanshaRoRqtTriggerType_AttackKilltDef_HurtType_ZhanshaR¯RzRctDef_PlayerKey_MoreHurtValuet
SkillShelltIsPlayerUseSkilltisClientHurtValueRtGetClientHurtByObjRWRÙt
CalcHurtHPt WriteHurtLogtCalcHurtHPWithBuffR±RR¢tSetHPR;tOnObjsPassiveSkillLockHPtTriggerType_LockHPR²RRRCRtSetPetHPR¨tntHelpBattleRobotRRftGetIpyGameDataNotLogtUpdateTimeMonsterHPRRÜR¤tTriggerType_ChangeHurtToHPRœt
SkillAddHPRpRMt
OnFBLostHPtAttackEventTrigger(RmR†R¤t atkSkillValuet atkSkillPerRDREtresultHurtTypeRtdHPtdMaxHPR    R
tremainHPt clientValuetcurHPt    lockHPPertlockHPRttimeLostHPIpyDatat    changePert    lostValue((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt    GetHurtHPusŠ                                               *'                      % #    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(+RcRTtDef_NPC_Dict_TimeLostHPTickRetGetLostHPPerSecondtGetMaxPlayerCounttGetLostHPPerSecondExtGetFightPowerMinByLVtGetFightPowerMintGetFightPowerMaxtGetEveryFightPowertGetEveryFightPowerLostHPExRKtGetNPCLVR?tGetPlayerLVIpyDatatGetReFightPowertfloatR¯t!Def_NPC_Dict_TimeLostHPFightPowert#Def_NPC_Dict_TimeLostHPFightPowerExRt"Def_NPC_Dict_TimeLostHPPlayerCountt&Def_NPC_Dict_TimeLostHPPlayerCountTicktxrangetGetInSightObjCounttGetInSightObjByIndexR1RýRRR¢RtGetObjRR1R±RWRìRôRRR2(R‡tipyDataRDtlastLostHPTicktpassTicktlostHPPerSecondtmaxPlayerCounttlostHPPerSecondExtfightPowerMinByLVt fightPowerMint fightPowerMaxteveryFightPowerteveryFightPowerLostHPExtnpcLVtplayerCurLVIpyDatat ReFightPowertreRatet effFightPowerteffPlayerCounttrefreshPlayerCountTicktfightPowerTotalRÑtseeObjt
seeObjTypet    seePlayerthurtValuePerSecondtplayerCountHurtExtfightPowerHurtExt lostHPTotalR((swD:\SG_ServerCode\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    BuffSkilltFindBuffEffectPlusByEffectIDRTtDef_Skill_Effect_AbsorbShieldR¯R°RR²Rœt FindBuffByIDt    SetValue1RWt    GetValue1tGetValuet SetRemainTimet!Def_Skill_Effect_AbsorbShieldXMZJtSetValuetDef_UpperLimit_DWordR±RZR¤R1tTriggerType_ReduceHurtHPPerRetDef_PlayerKey_curHurtValueRtDef_PlayerKey_curHurtValueExR[tCalcBloodShield( RER†R
R¤RDt buffManagerRºt    plusValuetskillIDRétfindBuffRÄ((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRHs8  
&
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( RmR†R¤R
R    tmsgtlogLevelt
attackerIDt
defenderIDR\t    skillNamet attackerNamet defenderName((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÿ„s,      cCs6tj||ƒtj||dtjƒtj|ƒS(N(RìtSetBloodShiledHurtRZR¤R1RTtTriggerType_BloodShieldtGetBloodShiledHurt(RER†R
((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRY¤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ôiiRògð?tRealmsBossRealmHint%s-%st BossRealmHinttFightHappenRateiR t HelpRobot_Atkt HelpRobot_Deft
CalcCanHittCalcAttackValuesSuppressValueLV_%ssSuppressValueFP_%si'sSuppressValueRealm_%stSuppressValueRealmR's%sV%s_%ss%s_%stEtPs*CalcAttackValue.txt É˺¦¹«Ê½Î´ÅäÖÃ, key=%sthurtFormulaKeyt    burnValuetburnPer(ii(ii(«RcRTtDef_PlayerKey_SomersaultTimetDef_HurtType_MissRR1RRRRR    tDef_GameObjKey_InheritOwnerRKRÙR²tGetPVERealmLVsR…RfRt
GetLvLargeR¢RRfR?RIRzR®RútGetHappenStateRZR[tTriggerType_HappenStateRátGetHitRëRíRâtGetHitSucessRatetTriggerType_HitSuccesstGetMisstTriggerType_MissPertGetMissSucessRatetTriggerType_MissSuccessPerRbtDef_SkillFuncType_RealmSuppresstDef_HurtType_ImmunetGetIsLVSuppressR±R%t
GetReMaxHPR0R1R;R¨RR2t    GetGameFBtGetGameFBDictByKeytFBPD_HelpBattleFBFightPowertFBPD_HelpBattleFBBaseHurtRR™R¤tTriggerType_Buff_MustBeHitRÍtDef_SkillAttack_NPCIsBossRœRRžtIsNPCSkillResistRìtGetPyPlayerStatetDef_PlayerState_SneertDef_PlayerState_MissSneerAtkRxtDef_Skill_HappenState_HitOnR˜R‘R{R€R|tTriggerType_SuperHitPertTriggerType_AddThumpHitPerR}R~RtTriggerType_OneDamageRR`Rt"Def_Notify_WorldKey_WorldAverageLvR&RÊRÆtGetNormalHurtPert GetNormalHurtRìt Def_SkillFuncType_FbPassiveSkilltGetFabaoHurtPert GetFabaoHurttTriggerType_SkillValuetTriggerType_AttackAddSkillPertTriggerType_BeAttackAddSkillPert"TriggerType_AttackAddSkillPerYinjitTriggerType_SuperHitSkillPertOnPassiveBuffTriggertTriggerType_SuperHitSubLayertTriggerType_ThumpSkillValuetTriggerType_LuckyHittTriggerType_BeLuckyHitSubPertrandomRØRÙt    GetIceAtktTriggerType_AddIceAtktGetDefRRôt    GetIceDeftGetIgnoreDefRatetGetSkillAtkRatet GetDamagePVPt GetDamagePVEtGetNPCHurtAddPertGetDamagePerPVPtTriggerType_AddPVPDamagePertGetFinalHurtPertTriggerType_AttackAddFinalPert GetFinalHurttTriggerType_AttackAddFinalValuetGetOnlyFinalHurtt GetPetDamPerRCtGetIgnoreDefRateReducetGetSkillAtkRateReducetGetDamagePVPReducetGetDamagePerPVPReducetTriggerType_DamageReducePVPtGetFinalHurtReducet GetBeHurtPertGetFinalHurtReducePertTriggerType_dFinalHurtReducePertFBCommontGetRecordMapIDRPR\RtFormulaControltGetCompileFormulaR¯RétIsHorsePetRobBossRR”RNt&Def_SkillID_HorsePetRobBossKillCntBufftGetSkillR¯R°tDef_FBMapID_FamilyBossMaptGetFamilyBossHurtPerRgR)tGetBossFinalHurtPertGetObjAtkStateMarkRÜtDef_FBMapID_CrossBattlefieldRMtGetFBPlayerHurtNPCMultiValuetDef_HurtType_YinjitDef_HurtType_RealmSupress(sRER†R¤R R RDRvtatkwargst
multiValuet summonAtkPert summonAtkObjtsummonAtkPerValuet ownerAtkObjR RtaRealmLVtdRealmLVt aRealmIpyDatat dRealmIpyDatat aRealmLVLarget dRealmLVLargetatkTypetaLVtdLVtaHittaHitSuccessRatetdMisstdMissSuccessRateR\t    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 dFightPowertdFinalHurtReducePertmapIDthurtDisttsuppressFormulaKeyLVtsuppressLVFormulatsuppressFormulaKeyFPtsuppressFPFormulatSuppressValueRealmRatetsuppressRealmRateMapKeyRRR]treduceFinalHurtPerR2t
limitIndext atkStateMarkt defStateMarkR{tsuppressLVGroupt
mapHurtKeytsuppressLVHurtKeyt
aBurnValuetaBurnPert hurtFormulaR
((swD:\SG_ServerCode\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ÿÿÿÿ(RfRgRÅR(RÞRßt    gridIndextsuppressRealmHurtPertsuppressRealmDictt
plus_minust suppressListtrealmLV((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetRealmHurtPer%    s  cCs«|tjkrXt|ƒ\}}|r6|jƒ}qdtj|ƒ}|dkrddSn |jƒ}|tjkr•tj|ƒ}|dkr¡dSn |jƒ}||fS(Ni(ii(ii(RRR”tGetOfficialRankRKt
GetRealmLV(RER†R RRRRÞRß((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR8    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 CalcBounceHPRpRnt CalcSuckBloodRRR¢RìtSetLastHurtValueRqRReRTtDef_PlayerKey_LastHurtNPCObjIDRtDef_PlayerKey_LastAttackerObjID(RER†R¤RRD((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR U    scCsŸ|jƒ}|tjkrdS|tjkr||jƒtjkrGdS|jƒtjkr`dS|jƒtjkr|dSn|j    ƒ}|tj
kr›dSdS(NRztRobott    HelpRobottPetRy( RRR¢RR¨RTtntRobotRR©RRC(RªRß((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÓg    s  cCsCtj|ƒ}t|ƒs't|ƒr5|s1dSdS|s?dSdS(NsPVE_%ssPetVE_%ssPVP_%ssPetVP_%s(RRt IsPVENPCObj(RER†tisPet((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt GetAtkState}    scCsy|jƒ}|tjkrtS|jƒ}|tjkr>tS|tjkrutjtj|ƒ}|dkrutSnt
S(N( RRR¢R;RRCR    RKtGetSummonNPCOwnerR1R2(RªRßtnpcOwner_Player((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRIˆ    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(NRqiisPlayer bounce Player('RRRR¢RRRTR…RfRR‚RìRRR;RîRR%tGetDamageBackRateRZR[R1tTriggerType_BounceHPPerR¤t!TriggerType_BounceHPPerByAttackerR'R²R¯tTriggerType_BounceHPRYR±RRCRRRRút ChangeHPViewtDef_HurtType_BounceHurt(RER†R
R    R¤RR RÞRßRàRáRâRãtdefObj_DamageBackRatetbounceHPt    realSubHPR((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR@ž    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¢RqRnRRtGetTickt GetTickByTypeRTtTYPE_Player_Tick_SuckBloodtTYPE_Player_Tick_Timet SetTickByTypeRRìRt GetKillBackHPR?tGetAtkBackHPPertGetPVPAtkBackHPRZR¤tTriggerType_Buff_SuckBloodPerR[R|t TriggerType_SuperHitSuckBloodPerR€t TriggerType_ThumpHitSuckBloodPerR¯R²RRWRôR;RRR1tDef_HurtTYpe_Recovery(
RER†R¤RRDR
R    tsuckHPt    atkBackHPt atkBackHPPer((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRAì    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¢RRRWRXRTtTYPE_Player_Tick_SuckMagicRZR[RRìRt GetKillBackMPR?tGetAtkBackMPPerR¯R'R²tSetMPRWtGetMaxMPtGetMP(RER†R
RDtsuckMPt atkBackMPPer((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt CalcSuckMagic 
s"* $ &cCso|s
tS|jƒ}|tjkr8|jƒtjkS|tjkrZ|jƒtjkSt    j
d|ƒt S(Ns###GetIsDead = %s ( R2RRR¢RRtpaDieRt GetCurActiontlaNPCDieRtLogR;(ttagett    tagetType((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt    GetIsDeadB
s cCs<|jƒ}|tjkrtS|jƒtj|jƒkS(N(R%Rtg_maliciousAttackDictR;Ri(R&R<R((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR9Q
s cCsŒ|jƒ}|jƒ}i}|tjkr=tj|}n||krqtjƒ}||_tj||ƒn|||<|tj|<dS(N(R%RRvtChPyNetSendPackttagMCAddMaliciousAtkPlayert AtkPlayerIDt NetPackCommont SendFakePack(Rt    defPlayerRDt atkPlayerIDt defPlayerIDtdefMaliciousAttackPlayerDicttaddAtkPlayerPack((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR‰X
s        
 cCsV|jƒ}|tjkrdStj|}|jƒ}||krHdS|||<dS(N(R%RRv(RR|RDR}tmaliciousAtkPlayerDictR~((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRŠl
s    
cCsÄ|jƒ}|tjkrdStjddƒd}tj|}xb|jƒD]T\}}|||krqqOn|j|ƒtjƒ}||_    t
j ||ƒqOW|sÀtjj|ƒndS(NRàiiè( R%RRvRfRâR(R/RwttagMCDelMaliciousAtkPlayerRyRzR{(R&RDRt
defendTimeRR}tatkTicktdelAtkPlayerPack((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytProcessMaliciousAttackPlayerz
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Öµ´ïµ½ÉÏÏÞ²»Äܹ¥»÷±ðÈË
        Ë«·½²»Í¬ÔÚÍ¬Ò»ÇøÓò²»¿É¹¥»÷
        ²»¿É¹¥»÷´ò×øÖеÄÍæ¼Ò
        ¶ñÒâ¹¥»÷×Ô¼ºµÄÍæ¼ÒÎÞÂÛʲôÇé¿ö϶¼¿É·´»÷£¬²»ÓÃÇл»Ä£Ê½
    (9RcRTRIt MirrorAttacktGetMirrorBattleByIDtbatStatetDef_MirrorBatState_FighttType_Relation_NoneRÚt
GetFactiontType_Relation_EnemytType_Relation_FriendRäR5R6R7R8RRJtDef_PASysMessage_IsSafeAreatDef_PASysMessage_CurAreaNotPKRRtpaSittDef_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<RKRLtbattletcurPlayerAreaTypettagPlayerAreaTypetcurPlayerAttackModet selectObjTypet selectObjID((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetPlayersRelation™
sr    !c CsÅtjddƒ}|stS|\}}|\}}|\}}tjƒ}|j|j|j}}    }
tj||    |
||dƒ} tj||    |
||dƒ} || ks½|| krÁt    StS(NRàii(
RfRgR;RtGetCurrentTimetyeartmonthtdaytdatetimeR2( tpkProtecTimeListt    startTimetendTimet    startHourt startMinutetendHourt    endMinutetcurTimetcurYeartcurMonthtcurDayt startDateTimet endDateTime((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRª s    cCstS(N(R2(R&RC((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR ) scCs.|jƒ}|jƒ}|o-|o-||kS(N(RŒ(R&RCt
curFactiont
tagFaction((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR2 s  cCs.|jƒ}|jƒ}|o-|o-||kS(N(RZ(R&RCt curFamilyIDt tagFamilyID((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR›; s  cCs.|jƒ}|jƒ}|o-|o-||kS(N(R$(R&RCtcurPlayerTeamIDt curTagTeamID((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR™D s  cCs„tj|ƒdkrdS|jƒtjkrKtj|ƒ}|jƒdStj||||ƒsgdSt    j
|ƒ}|j ƒdS(Ni( RìRRRR¢R?tSetDeadtChNPCt OnCheckCanDieRKRËt    SetKilled(REt curObjDetelR¤RDt playerControlt
npcControl((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytDoLogic_ObjDeadM 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(RRPRQR\RRRRfRáR?t GetPrestigetGetInfamyValueR:R1tSetInfamyValueRWRTtDef_KillValue_NotorietyRUR±tDef_BeKilledValue_Notoriety(R&RRDRåR$tattackLVtattackPrestigetattackNotorietyt attackPkValuetattackFightPowertdefendLVtdefendPrestigetdefendNotorietyt defendPkValuetdefendFightPower((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRJe s&        cCsš|jƒtjkr1|jƒtjkr1tSntjƒj    |j
ƒ|j ƒ|j
ƒ|j ƒƒ}|jƒtj kr–| r–t j|dƒn|S(NtPK_liubo_827276(RRRRÍRTtDef_NPCType_Boss_BlueR2RRPt    CanLineToR7R8R¢R?RI(RmRt    canLineTo((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCanAttackByPathˆ sc    Csnd\}}|r.|jƒ|jƒ}}n|j||tj|tj||||jƒ|jƒƒdS(Ni(ii(RRRRRRRR(RÏtsrcObjR\tchangeHPt    changTypetsrcIDtsrcType((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRR™ s  (…R®RRTRR?RKRœR¸RMRRR5RZR*RRúRËRfRRìRKRGR‡RwRîRzRéRÉRÌR,RïR·tmathRR R#R'R.R0R>RERVRORˆRŒR‹R;R’R›R§R£R®R¶R·R¿RÂR×RÈRßRÃRãRäRæRèRùRúRRRR2RRR@R”R RRORTReRgRÊRhRjRmRnRxR‘RR‚RƒR„R…RÆRÊRÇRÏRÜRáRêRïRðRñRRRRÿRYR1RþR=RR RÓRKRIR@RARnRuR9R‰RŠR†R²RªR RR›R™RÒRJRæRR(((swD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt<module>s                                                     #                "    G                          
                          %                               -            H    %  4 !    $                + '                 "    ,        J                        )         &                                r    a    <          ÿw                             N    4    "                        |                                            #