cehua-HWJ35
2019-03-07 0a005f6c7b55396a0beb0a64634e6e7c91cc19ec
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
I»€\c@sôddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl 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 „Z-d „Z.d„Z/d„Z0e1d„Z2d„Z3d„Z4d„Z5d„Z6d„Z7d„Z8d„Z9d„Z:d„Z;d„Z<d„Z=d„Z>d„Z?d„Z@d„ZAd „ZBd!„ZCd"„ZDd#„ZEeFd$„ZGeFd%„ZHeFd&„ZId'„ZJd(„ZKd)„ZLd*„ZMd+„ZNd,„ZOd-„ZPd.„ZQd/„ZRd0„ZSd1„ZTd2fd3„ƒYZUd4„ZVd5„ZWd6„ZXd7„ZYd8„ZZd9„Z[d:„Z\d;„Z]d<„Z^d=„Z_d>„Z`d?„Zad@„ZbdA„ZcdB„ZddC„ZeefdD„ZgdE„ZhdF„ZidG„ZjdH„ZkdI„ZldJ„ZmdK„ZndL„ZodM„ZpdN„ZqdO„ZrdP„ZsdQ„ZtdR„ZudS„ZvdT„ZwdU„ZxdV„ZydW„ZzdX„Z{dY„Z|dZ„Z}d[„Z~d\„Zd]„Z€dS(^iÿÿÿÿNcCsx|jƒ}t|dƒsF|j||jƒ|||jƒdƒn.|j||jƒ|||jƒ|jƒƒdS(NtGetHPExi(tGetGameObjTypethasattrtAddHurttGetIDtGetHPR(ttagObjthurtListthurtTypet    hurtValuet
tagObjType((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRHs +cCsa|jƒ}t|dƒs2|j|||ƒdStj|jƒ|ƒ}|j|||ƒdS(Nt
GetMaxHPEx(tGetPlayerHurtListRt AddHurtValuet    NPCCommontFixValueByValueExR (tdefendertattackIDtattackHurtTypetvaluetdefendHurtList((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR Ss  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((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytAddTeamPlayerHurtValue]s      
 cCs¡tj}|jƒ}|sdS|jƒtjkr8dStjƒjƒ}||j    ƒ|j
ƒf}||krudS||}||j ƒf}|j |dƒS(Ni( RRt    GetTeamIDRRRRRRRRt GetPlayerIDR(t    curPlayerRR RR!R"R#R$((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetTeamPlayerHurtValueos      
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(RR RR!R"RtplayerHurtValuet teamHurtValueR#R    t
hurtTeamIDt hurtPlayerIDthurtPer((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetTeamPlayerHurtPer€s2       
 
      cCsotj}|jƒtjkr"dStjƒjƒ}||jƒ|j    ƒf}||krk|j
|ƒndS(N( RRRRRRRRRRtpop(RR R!R"((si.\\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((si.\\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((si.\\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œdS|jƒdkr²dS|j    ƒ}|tj
krÑdSt j |ƒ}|tj
kródSdS(Ni( R3R7R8R9R:RR5R6RtGetPlayerNameColort    pncNormalt PlayerTrucktGetTruckNameColor(R(tcurTruckRFtcurPlayerAreaTypet truckAreaTypetcurPlayerNameColortcurTruckNameColor((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytOnPlayerKillTruckès" cCsÊtj||ƒtj||ƒtj||ƒtj|d|jƒgƒt|||ƒt    j
|||ƒrudSt |||ƒt ||ƒt jƒjƒtjkrÆtj|tjdƒndS(Nt PK_lhs_318691i(t PlayerStatetSetPKStateTickt
EventShelltEventResponse_OnKillEnemytEventResponse_OnEnemyKillRAt
NotifyCodeRDt__GiveKill_Player_ValuePrizetFBLogictDoFBOnKill_PlayerRGt__DoKillPlayerNotifyRtGetMapt GetMapFBTypeRtfbtNulltNomalDictSetPropertytChConfigtDef_PDict_IsAddReviveTired(R(RRF((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytOnPlayerKillPlayers 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 GetFamilyIDtGetFamilyMemberLVRDtGetMapIDR9R:RR]R^RR_t IsCrossServerRAtGetPlayerServerGroupIDRRt GetFamilyNametappendtGetCrossFamilyNotifyInfot FamilyNotifyt GetDictByKeyRatDef_PlayerKey_KillPlayerCntR'tSetDictt IpyGameDataPYtGetFuncEvalCfgtsortedtkeystGetCrossWorldNotifyInfoRXt WorldNotifyt CrossNotify(tattackerRt defFamilyIDtdefFamilyMemberLvtdefNametatkNametdefMapIDtdefPosXtdefPosYtcrossNotifyListt isCrossServertatkServerGroupIDtdefServerGroupIDR!t atkFamilyNametatkFamilyMemberLvt
notifyCodet    paramListt defFamilyNametkillCnttkillPlayerNotifyDicttkillKeyst    notifyKeyt
killCntKeyt
notifyMarkt msgParamList((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR\8sb           $     
 
 cCs&tj|ƒr"tj||ƒndS(N(Rat
IsGameBossRStSetBossStateTick(tcurNPCRRF((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytOnNPCHitPlayerscCs‚|jƒ|jƒkrdSt||ƒs>t|||ƒnt|||ƒt|||ƒtj||ƒtj||ƒdS(N(RR@tAddMaliciousAttackPlayertUpdMaliciousAttackTicktAddPlayerHitPlayerHurtRSRT(RzRRF((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytOnPlayerHitPlayerŠscCsE|jƒ}|jƒtjkr%dSt||jƒtjdƒdS(Ni(R t GetHurtCountRatDef_PlayerHurtListCountR R'tDef_NPCHurtTypePlayer(RzRRFtdefPlayerHurtList((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR˜©s
 cCsdS(N((RERFt
isSuperHit((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytDefenderSpringBuffºscCsK|s tjSt|ƒ\}}t|ƒ\}}|rD|rDtjStjS(N(RatDef_BattleRelationType_CommtGetAttackPlayertDef_BattleRelationType_PVPtDef_BattleRelationType_PVE(RzRt attackPlayert    attackNPCtdefenderPlayert defenderNPC((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetBattleRelationType¿s cCs0|tjtjgkrtS||kr,tStS(N(RaR t!Def_BattleRelationType_CommNoBossR4R=(tskillBattleTypetbattleRelationType((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckBattleRelationTypeÍs
 cCstjS(N(RtghtPhy(tattacktattackUseSkill((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt GetBattleTypeÞscCsL|jdƒjdƒ}|jdƒjdƒ}t||tj|dƒS(Nii(t    GetEffecttGetEffectValuetmaxRatDef_MaxRateValue(Rtskilltperteff((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetEnhanceValueóscCs:|jdƒ}|jdƒ}t||tj|dƒS(Nii(R²R³RaR´(RR·R¶((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetEnhanceValue_EffþscCsk|jdƒ}|jdƒ}|jdƒ}tj||ƒ}|dkrOdSt||tj|dƒS(Niii(R²t    EffGetSettGetValueByEffIndexR3R³RaR´(R(t    curEffecttindextskillPerteffecttmaxValue((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetEnhanceIndexValue_Eff    s cCs|j|ƒ|jtƒdS(N(tSetLastBattleTicktSetBattleStateR4(RRF((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytSetPlayerBattleStates  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(RRt    gotPlayertCheckPlayerAttackMode_PlayerRtGetTypetntFairytrangetGetSummonCounttGetSummonNPCAttGetNPC_Has_Attackt GetOrgSpeedtCheckNPCAttackDistR3Rt
NPCControltAddObjToAngryListR4R=t    GetPetMgrt GetFightPet(    tcurObjR(t
angryValuetit curTagSummont summonControltpetMgrt fightPetObjt
petControl((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytSummonAddAngryByOwner*s&%     cCs|jƒp|jƒS(N(t    GetMinAtkt    GetMaxAtk(R”((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÌOscCsd|tjkrdStj}||jƒkrLtjd||jƒƒdStj|||ƒdS(Ns7Íæ¼Ò¹¥»÷ʧ°ÜϵͳÌáʾÕÒ²»µ½¶ÔÓ¦µÄÌáʾmark,´«ÈëµÄÔ­Òò£º%s(    RatDef_PASysMessage_NonetDef_MessageDicRvRtErrLogR'RARX(R(tmessaget
messageDic((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytPlayerAttackFailSysMessanageZs    cCstS(N(R4(R(RE((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÆrscCs&|jƒtjddƒkr"tStS(NtPKConfigi(tGetLVRst
GetFuncCfgR4R=(R(((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt GetIsNewGuy€scCs5tjƒjƒ}|tjkr%tStj||ƒS(N(RR]R^RR_R=RZtCheckPlayersRelationInFB_IsNone(R(REtmapType((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRèŽscCstj||ƒS(N(RZt!CheckPlayersRelationInFB_IsFriend(R(RE((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRê›scCstj||ƒS(N(RZtDoCanAttackTeamer(R(RE((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytPlayerCanAttackTeamerInFBªscCs«|dkrtjdƒdS||kr2|}n|jƒ}|jƒ}|tjkrhtj|||ƒ|jƒtj    kr—t
j |||ƒnt j |ƒdkrÈ|jtj|jƒƒn|jƒ}|jƒtj    krþ|jƒtjks
|dkr*t||jƒtj|ƒtSt||jƒtj|ƒt||jƒ|jƒ|ƒn?|tj    kr–t||jƒtj|ƒntjd|ƒtS(NsNPCAddObjInHurtList NoFindObjis'NPCAddObjInHurtList UnKnow ObjType = %s(R3RRàR RRRÅt FamilyRobBosstOnPlayerHurtFamilyOwnerBossRRZtDoFB_Player_HurtNPCtGameObjRRrRatDef_PlayerKey_LastHurtR'tGetTeamtGetGameNPCObjTypet    gnotTruckR RœR4R&tDef_NPCHurtTypeTeamR%RtDef_NPCHurtTypeNPC(RÓt    curTagObjtcurTaglNPCHPBeforethurtHPtdefNPCHurtListt
curObjTypetcurTeam((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytNPCAddObjInHurtList¼s0          !"cCstj|||ƒdS(N(RZt OnPVPDamage(R(t damageValueR>t    damageMsg((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRþçscCspt||ƒstS|jƒs#tS|jƒ}|jƒ}|tjkr‚|tjkr‚t||ƒsltSt||ƒsCtSnÁ|tjkrÏ|tjkrÏt||tƒs¶tSt||tƒsCtSnt|tjkrC|tjkrCt    j
|ƒs|j ƒtj krCt||tƒs'tSt||tƒs@tSqCnt ||ƒsVtStj||ƒsltStS(N(tCheckIsAvailableTagR=t GetCanAttackRRRÅRtCheckKillNPCByCnttCheckCanAttackFamilyOwnerNPCt
PetControltIsPetRót
gnotSummontCheckCanAtkByAreaRZtCheckCanAttackTagObjInFBR4(RzRt
atkObjTypet
defObjType((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckCanAttackTag÷s6   $
c    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( RRRR4Rt ReadChConfigtGetEvalChConfigR¡RåR3RARXR=(    RzRtnpcIDtattackLVLimitDicttminLVtmaxLVt    atkPlayert
npcObjTypet
judgeMaxLV((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckCanAttackNPCByLV8s*  "    cCs´|jƒtjkrtStj|ƒtjkr5tSt|ƒ\}}|sQtSd}t    |ƒrld}n|j
ƒsd}n|r°|dkr¬|r¬t j ||ƒntStS(s ÅжϿɷñ¹¥»÷ÏÉÃ˹éÊôµÄNPC ttFairyGrabBossNotAtktFairyGrabBossNoFairyN(RRRR4RtGetDropOwnerTypeRatDropOwnerType_FamilyR¡RçRgR3RARXR=(RzRtisNotifyRRtatkLimitNotifyMark((si.\\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||
ƒdSn|jtj|dƒ} |jtj|dƒ} tjddiƒj|dƒ} | rMtj|| ƒ}n!tjddiƒj|dƒ}| || krË|dkrÇ|rÇtjddiƒj|dƒ}tj||ƒqÇntStS(    s Åжϵ±ÈÕ»÷ɱ¸ÃNPC´ÎÊýÊÇ·ñÒÑÂú tKillBossCntLimitiNiiiiR(RRRR4RaR’RRsRtRtGetDictValueByKeyR3R¡t GameFuncCommt GetFuncCanUseRARXtNomalDictGetPropertytDef_PDict_Boss_KillCntt Def_PDict_Boss_KillCntItemAddCntRt    PlayerViptGetPrivilegeValueR=(RzRR RtkillBossCntLimitDictR½RRt funcInfoDicttfuncIDt funcSysMarkt
hasKillCnttitemAddKillCnttkillLimitPrivilegetlimitCnttsysMark((si.\\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(RRRR4RaR’RRRR¡R&tDef_PDict_WorldBoss_HurtCntR3RARXR=(    RzRR tlimitBossIDListR2RRRt hasAttackCnt((si.\\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ÅR3RóRRt GetObjDetailtGetOwnertgnotPetRt GetPetOwner(tatkObjR
Rt curNPCDetailt curNPCOwnert summonOwnert ownerPlayer((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR¡Ës" 
    cCsbtj|jƒ|jƒƒ}tj|jƒ|jƒƒ}|tjksZ|tjkr^tStS(N(R7R8R9R:RtgatSafeR=R4(RÓRtareaTypet tagAreaType((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRïs
cCst|dks|jƒdkr"tStj|ƒdksLtj|ƒdkrPtS|jƒs`tS|jƒsptStS(Ni(R3RR=RðRt
GetVisibleR4(RzR((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRs*  cCsO|dks|jƒdkr"tStj|ƒdkr;tS|jƒsKtStS(Ni(R3RR=RðRRFR4(RÓ((si.\\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( R tNotify_AttackFailRRR9R:RtafrNullR=tGetPlayerActionRatDef_PlayerCanAttackStateR4(R(R((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckPlayerCanAttackTag,s                
  cCsÏ|jƒ}|jƒ}ttj|||jƒ|jƒƒtj|jƒ|jƒ|jƒ|jƒƒƒ}|sytS|jƒ}|dkr•tS|t    j
|||t j ƒ7}||t j krËtStS(Ni(tGetAttackTargetPosXtGetAttackTargetPosYtminRtGetDistR9R:R4t
GetAtkDisttPassiveBuffEffMngt!GetPassiveSkillValueByTriggerTypeRatTriggerType_SkillDisttDef_PlayerAttackDistZoomR=(R(tcurTagtuseSkillt atkStartPosXt atkStartPosYtdistt    skillDist((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckPlayerAttackDistWs  $3  cCsCt||ƒstSt|||ƒs)tStj||ƒr?tStS(N(R R=RÎRt    IsSameObjR4(R”RRµ((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckNPCCanAttackTagxscCsotj|jƒ|jƒ|jƒ|jƒƒ}|dkrU||jƒkrkdSn||jƒkrkdStS(N(RRPR9R:R3RQR4(R”RVRµRZ((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRΌs cCsdS(N((RE((si.\\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( R3RR=RRRÅRt IsSameCountryRðRR\RÆR4(R(RVRµ((si.\\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(R3RR=RR]R4RRRÅRðRR\RÆRòR&(R(RVRµt
curTagTeamt curPlayerTeam((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCheckSkill_TeamËs"  tHurtTypecBseZdZdZd„ZRS(icCs(d|_d|_d|_d|_dS(Ni(tHurtHPRetLostHPt
RealHurtHP(tself((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt__init__ÿs            (t__name__t
__module__RfReRj(((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRe÷scCs||@S(N((t happenStatetcmpType((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytIsHappenStateByType scCsBtj}itddgtj6tddgtj6tddgtj6tddgtj6}g}|tjkr|tjtjtjg7}n|tjkr±|tjg7}n|sÁ||fSt    j
dƒ\}}    id„tj6d„tj6d„tj6d„tj6}
g} x‘|    D]‰} t} xz| D]r}||krHq0n|| krZq0n| j |ƒ| rsq0n|
||||ƒ}|r0|||<t } q0q0WqWx‹|D]ƒ}||krÉq±n|| kr| j |ƒ|
||||ƒ}|r|||<qn||dr±|tjkr±|}q±q±W||fS(s´ »ñÈ¡É˺¦ÀàÐͽá¹û 
    Ö§³Ö¶àÖÖÉ˺¦ÀàÐÍͬʱ´¥·¢, Æ®×Ö±íÏÖÒÔ×îÖÕ±íÏÖÉ˺¦ÀàÐÍΪÖ÷
    @return: ×îÖÕ±íÏÖÉ˺¦ÀàÐÍ, {É˺¦ÀàÐÍ:[ÊÇ·ñ´¥·¢, É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ], ...}
    itCalcHurtTypeInfocSst|||ƒS(N(t__HurtTypeHappen_LuckyHit(taObjtdObjthState((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt<lambda>(scSst|||ƒS(N(t__HurtTypeHappen_SuperHit(RrRsRt((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRu)scSst|||ƒS(N(t__HurtTypeHappen_Parry(RrRsRt((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRu*scSst|||ƒS(N(t__HurtTypeHappen_Zhuxian(RrRsRt((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRu+s( RatDef_HurtType_NormalR=tDef_HurtType_LuckyHittDef_HurtType_SuperHittDef_HurtType_ParrytDef_HurtType_ZhuxianRRÅRRRmR4(R>tdefObjR
R RmRthurtTypeResultDictt calcTypeListt priorityListt    mutexListt
happenFunct hadCheckListtmutexHurtTypeListt curMHHappenthTypetresult((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCalcHurtTypeResultsZ    
 
     cCst|tjƒr.t|jƒtj|ƒfS|jƒ}tj|ƒ}t    t
j dƒƒ}|dkrndSt j |ƒr™t|jƒtj|ƒfSdS(sg ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - ÐÒÔËÒ»»÷
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ
    tCalcLuckyHitRateiN(RoRatDef_Skill_HappenState_LuckyHitR4tGetLuckyHitValRAtGetLuckyHitReducePertGetLuckyHitRatetGetLuckyHitRateReducetevalRt GetChConfigRt    CanHappen(R>R~Rmt aLuckyHitRatetdLuckyHitRateReducetatkLuckyHitRate((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRqRs  cCs¼t|tjƒr.t|jƒtj|ƒfS|jƒ}tj|ƒ}t    t
j dƒƒ}|t j ||dtjƒ7}|dkrdStj|ƒr¸t|jƒtj|ƒfSdS(sc ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - ±©»÷
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ
    tCalcSuperHitRateiN(RoRatDef_Skill_HappenState_SuperHitR4t GetSuperHitRAtGetSuperHitReducePertGetSuperHitRatetGetSuperHitRateReduceRRR‘RRt GetValueByPassiveBuffTriggerTypeR3t TriggerType_Buff_AddSuperHitRateRR’(R>R~Rmt aSuperHitRatetdSuperHitRateReducet superHitRate((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRvds   cCs<tj|ƒ}|sdStjtjƒr8td|fSdS(si ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - ·ÀÊØ·½µÖÓù
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ
    Ni(RAtGetDamChanceDefRR’RatDef_ChanceDefRateR4(R>R~Rmt chanceDefPer((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRwws  cCsBtj|ƒ}|sdStj|ƒr>ttj|ƒdfSdS(sÖïÏÉÒ»»÷Ni(RAtGetZhuXianRateRR’R4tGetZhuXianHurtPer(R>R~Rmtrate((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRx‚s cCsé|s
|S|jƒtjkr#|S|jƒ}tj|jƒ|ƒ}d}|jƒtjkrµtj|jƒ|ƒ}|jƒt    j
t    j gkr®|t j |ƒ7}nh|jƒt    jt    jgkrâ|t j|ƒ7}n4|jƒt    jt    jgkr|t j|ƒ7}n|jƒt    j
t    j gkrJ|t j|ƒ7}qµ|jƒt    jt    jgkr~|t j|ƒ7}qµ|jƒt    jt    jgkrµ|t j|ƒ7}qµn|sÁ|rå||d}td||ƒ}n|S(NigˆÃ@(RRRÅtGetSkillTypeIDt EquipZhuXiantGetZhuXianEquipSkillAddPerR'tGetZhuXianEquipSkillReducePertGetJobt ShareDefinetPlayerJob_WarriortPlayerJob_KnightRAtGetJobAHurtAddPertPlayerJob_WizardtPlayerJob_ForceUsertGetJobBHurtAddPertPlayerJob_AssassintPlayerJob_BowMastertGetJobCHurtAddPertGetJobAAtkReducePertGetJobBAtkReducePertGetJobCAtkReducePerR³(R>R~tcurSkillR¾t skillTypeIDtaddPert    reducePert addSkillPer((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytChangeSkillHurtPers2  cCsKt|||ƒ}|s"||fS|jdƒttjƒ|jdƒfS(Nii(tGetCanChangeSkillHurtEffectR²tfloatRaR´(R(R~R¹R¾t
skillValuet
findEffect((si.\\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    GetIsBossRatDef_NPCType_Ogre_SuperRR]R^R_RiRsRttGetSkillEffectByEffectIDstDef_Skill_Effect_AttackReplacet)Def_Skill_Effect_AttackReplaceByNPCSeriesR²Rt GetNPCSeries(RzR~R¹RÂteffectID((si.\\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 GetEffectIDR3(R¹t effectIDListRÕR¼t curEffectID((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRÈæs   cCsU|jƒtjkr|S|jƒ}|tjkrQtj|ƒ}|sM|S|S|S(N(RRRRÇtntElfRtGetSummonOwnerDetel(RztnpcTypetowner((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytElfChangeAttackerûs cCs|s
tS|jƒ}|tjkr)tS|jƒ}|tjkrHtS|tjkrŒtj    |ƒ}|sptS|jƒtjkrŒtSntS(N(
R=RRRÅR4Rót
gnotNormalRRRÒ(tgameObjtobjTypet
objNPCTypeRÔ((si.\\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ÚRAt    GetProDefROtGetProDefAbsorbRaR´t    SetProDefRrt#Def_PlayerKey_GodWeaponBeforeProDefRRtOnPassiveSkillTriggerR3tTriggerType_ProDefValue(R>R~R    R¹RFt    curProDeft absortValue((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt CalcAtkProDef$s #c
Csät|ƒ}tƒ}|jƒ}|jƒ}    tj|ƒ}
tj|ƒ} |dkr†t|ƒtj} } | |j    tj
ƒ7} nõt j ||ƒrTt j |jƒ|    ƒrT|j    tjƒ} | dkrå|jƒ|d} nt j|jƒ|    ƒ\}} || kr|} q{tj|d|jƒ|| g| fƒt| dƒ} n't||||||d|ƒ\} } t|||| | dƒt||| ||ƒ} |jƒ}tj|tjƒ\}}}|rH| |jdƒtj}|rH| |8} tj||ƒd}|rE|j t|j!ƒ|ƒƒqEqHn|j    tj"ƒrït|j    tj"ƒt#tjƒ| ƒ}| |8} |j    tj$ƒ}||j    tj%ƒkrït&|||j    tj%ƒƒ}|j'tj$|ƒqïnt(j)||dtj+ƒ}|j'tj,| ƒ|t(j-||dtj+ƒ7}t| t.tj|dƒdtjƒ} t(j-|||tj/ƒr¾tj0} tj|ƒ} | |_1| |_| |_2d}n t(j-|||tj3ƒrtj4} tj|ƒ} | |_1| |_| |_2d}nI| |_1| |_| |_2t5||| ƒ} t&| t.d|
| ƒƒ}t|ƒ}|    t6j7kr(tj|ƒ}tj8||t9ƒt(j:|||tj;|ƒ}|rtj|ƒ|tj}||krú||krú|}n||kr|}ntj8||t9ƒqnì|    t6j<krÿ|j=ƒt6j>kr_t?j@||ƒq|j=ƒt6jAkrŸt.tBjC|ƒ|ƒ}tj8||ƒq|jDƒtjEkrìt&|
t.tj|ƒd|ƒƒ}tj8||ƒqtj8||ƒntjFd    |    ƒ|Stj|ƒdkrmt(j)||dtjGƒ}|rmtjH|dt|| ƒƒqmn|
tj|ƒ}||_I|    t6j7kr«tJjK||ƒnt||||jI|jd
ƒtL|||||ƒ|S( Nii(s%%s----¿Í»§¶ËÉ˺¦ %s ·þÎñ¶Ë×î¸ßÉ˺¦ %sgš™™™™™é?t    orgAtkObjs¹«Ê½²ãgð?is,¼ÆËãÉËѪֵʱ,·ÀÊØ·½ÀàÐÍ´íÎó£ºdefObjType = %ss×îÖÕ¿ÛѪ(MRÕReRRðRtGetMaxHPtintRaRyRptDef_PlayerKey_MoreHurtValuet
SkillShelltIsPlayerUseSkilltisClientHurtValueRt Def_PlayerKey_ClientMaxHurtValueRÝtGetClientHurtByObjRtDebugLogt
CalcHurtHPt WriteHurtLogRãt GetBuffStatet    BuffSkilltFindBuffEffectPlusByEffectIDt!Def_Skill_Effect_AbsorbShieldXMZJR²R¬R´t SkillCommont FindBuffByIDtSetValuetGetValuetDef_PlayerKey_AbsorbShieldValueRÀtDef_PlayerKey_AbsorbShieldtDef_PlayerKey_AbsorbShieldMaxRORrRRRœR3tTriggerType_ReduceHurtHPPertDef_PlayerKey_curHurtValueRSR³tTriggerType_ZhongjiZhanshatDef_HurtType_ZhognjiZhanshaRfRhtTriggerType_AttackKilltDef_HurtType_ZhanshatCalcBloodShieldRRÅtSetHPR=tOnObjsPassiveSkillLockHPtTriggerType_LockHPRRóR<RtSetPetHPRôRJtGetTruckDestroyMinHPRÇtntHelpBattleRobotRàtTriggerType_ChangeHurtToHPt
SkillAddHPRgRZt
OnFBLostHPtAttackEventTrigger(RzR~R¹t atkSkillValuet atkSkillPerRFR>tresultHurtTypeR
R tdHPtdMaxHPR    Rt clientValuet buffManagerR¼t    plusValuetskillIDRâtfindBufft
absorbHurtRÀR¼tremainHPtcurHPt    lockHPPertlockHPt    changePert    lostValue((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt    GetHurtHPCs¾        *      )' 
&)
+                                                              %#    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Íæ¼ÒiRtutf8tgbksH¹¥»÷É˺¦-%s£º(%s %s)¹¥»÷(%s %s), ¼¼ÄÜID:(%s %s), É˺¦Öµ:%s, É˺¦ÀàÐÍ:%s (RRtGetGameWorldDictByKeyR¬tDef_Notify_WorldKey_HurtLogRRRÅRt
GetSkillIDt GetSkillNameRDtdecodetencodeRí( RzR~R¹R    RtmsgtlogLevelt
attackerIDt
defenderIDRt    skillNamet attackerNamet defenderName((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRïìs,      cCs<|jtj|ƒtj||dtjƒ|jtjƒS(N(RrRatDef_PlayerKey_BloodShiledHurtRRRœR3tTriggerType_BloodShieldRp(R>R~R    ((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR scjKs||jtjƒdkr)dtjfSd}|jddƒrS|jddƒn|}    |    jƒtjkrÚ|    j    ƒtj
krÚ|    jtj ƒ}
|
dkrÚt j |    ƒ} | sÃdtjfS|
dtj}qÚn|jƒ} |jƒ} t||ƒ}|r |n tj|ƒ}|tj|||tjƒ7}|jƒ}|jƒ}|jƒ}| tjkr}tj|ƒntj}|jƒ}|tj||dtjƒ7}| tjkrÏtj|ƒnd}|tj||dtjƒ7}|r|jƒnd}d}d}d}d\}}d}d}d\}}| tjkrV| tjkrV|r²|jƒtj kr²t!||| | ƒ\}} || kr²dtj"fSntj#|ƒrÇdnd}t j$|ƒr"t%d||ƒ}|r"tj&|ƒ}!|!sdn    |!j'ƒ}q"nt j(|ƒ}|rVt%d||j)ƒƒ}qVnt*}"d}#| tjkrÔ|j+ƒtj,krÔt-}"t j(|ƒ}t.j/ƒj0tj1ƒ}t.j/ƒj0tj2ƒ}d}#n| tjkrF|j+ƒtj,krFt-}"t j(|ƒ}t.j/ƒj0tj1ƒ}t.j/ƒj0tj2ƒ}d}#nt3j4d    ƒ}$|" r-tj5|||tj6ƒ r-| tjkrÁ|j7ƒtj8krÁt9j:|ƒtj;krÁdtjfSt<j=|tj>ƒrøt<j=|tj?ƒrødtjfSt@|tjAƒ r-tB|$ƒdkr-dtjfSntC||| | |ƒ\}%}&|&tjD\}'}(})|&tjE\}*}+},|&tjFd
}-|&tjG\}.}/}0tj||dtjHƒrÃd|%fSd}1t.jIƒjJtKjLƒ}2|2rtj&|2ƒ}3|3sdn    |3jMƒ}1ntN|||||ƒ\}}tO||||ƒ}|tj|||tjPƒ7}|tj5|||tjPƒ7}d}4|4tj|||tjQƒ7}4|4tj5|||tjQƒ7}4|*r%tj|||tjRƒ}5|+tj|5dtj}+|tj|||tjSƒ7}n|'r{|(tj|||tjTƒ7}(|(tj5|||tjUƒ8}(t%|(dƒ}(ntVjVƒ}6|jWƒ|}7|jXƒ|}8|jYƒ}9|9tj|||tjZƒ7}9|jWƒ}:|jXƒ};|j[ƒ}<t<j\|ƒ}=t<j]|ƒ}>|j^ƒ}?| tjkrK    |j_ƒ}@|j`ƒ}Atja|ƒ}B|Btj|||tjbƒ7}B|Btj5|||tjbƒ7}Btjc|ƒ}Ctjd|ƒ}Dtje|ƒ}E|Etj|||tjfƒ7}Etjg|ƒ}F|Ftj|||tjhƒ7}F|Ftj5|||tjhƒ7}Ftji|ƒ}G|j)ƒ}Hn‹d}@t<jj|ƒ}Et j`|ƒ}A| tjkr¦    |j    ƒtjkkr¦    |A|j`ƒ7}And}Cd}Bd}Dt jg|ƒ}Ft j(|ƒ}H| tjkr‰
tjl|ƒ}Itjm|ƒ}J|jnƒ}K|Ktj||dtjoƒ7}Ktjp|ƒ}L|Ltj||dtjqƒ7}Ltjr|ƒ}Mtjs|ƒ}N|j)ƒ}On3d}Id}Jd}Kd}Ld}Md}Nt j(|ƒ}Ot3jtd ƒ}P|r d |}Q|Q|Pkr |P|Q}RtBtujv|Q|Rƒƒ}q n|rS d |}S|S|PkrS |P|S}TtBtujv|S|Tƒƒ}qS nd}Ud}V| tjkr\ | tjkr\ twjxddƒ}W|jyƒ|jyƒ}} d\}X}Yxatz|WdƒD]P\}Z}[|rò ||[krò |X rò |Z}Xn| rÄ | |[krÄ |Y rÄ |Z}YqÄ qÄ W|X|Y}Vd}\|\|Pkr  t{tBtujv|\|P|\ƒƒƒ}Uq  nD| tjkrþ | tjkrþ t!||| | ƒ\}} || dkr  || }Vt||| d
ƒ}]d}\|\|Pkrû t{tBtujv|\|P|\ƒƒƒ}Uqû q  n¢| tjkr  | tjkr  t!||| | ƒ\}} || dkr  || }Vt||| dƒ}]d}\|\|Pkr t{tBtujv|\|P|\ƒƒƒ}Uq q  n| tjkr’t}j~|jƒƒr’d}^|jƒtjkr6|j    ƒtjkkrt€j|ƒ}^q<|j    ƒtj
kr<t j‚tj|ƒ}^q<n|}^|^r’t9jƒ|^tj„ƒd}_|_r|_j…ƒj†dƒj‡dƒ}`|E|`8}Eqq’ntˆ|ƒ}atˆ|ƒ}bd|a|b|f}cd}dt‰jŠt.j‹ƒjŒƒƒ}ed|c|ef}f|f|Pkr|f}cnT|adkr-|bdkr-t j$|ƒ}dn*|adkrW|bdkrWt j$|ƒ}dn|dr…d|c|df}g|g|Pkr…|g}cq…n|#r”|#}cn|c|Pkr¾t.jd|cƒdtjfS|P|c}ht{tBtujv|c|hƒƒƒ}i|%tjŽkr|Udkr|itjfS|i|%fS(NiôiiRägð?Rt HelpRobot_Atkt HelpRobot_Deft
CalcCanHititCalcAttackValuesSuppressValueLV_%ssSuppressValueFP_%si't
RealmGrouptPVPSuppressValueRealmtEVPSuppressValueRealmitPVESuppressValueRealms%sV%s_%ss%s_%stEtPs*CalcAttackValue.txt É˺¦¹«Ê½Î´ÅäÖÃ, key=%s(ii(ii(ii(RpRatDef_PlayerKey_SomersaultTimetDef_HurtType_MissRR3RRRRóRtDef_GameObjKey_InheritOwnerRRÒR´R°RètGetHappenStateRRRStTriggerType_HappenStateRåtGetHitRÅRAtGetHitSucessRatetGetMisstTriggerType_MissPertGetMissSucessRatetTriggerType_MissSuccessPerR"t GetFuncTypetDef_SkillFuncType_RealmSuppresstGetPVERealmLVstDef_HurtType_ImmuneR’tGetIsLVSuppressR³tGetPlayerLVIpyDatat
GetReMaxHPtGetSuppressFightPowert GetFightPowerR=RÇRR4Rt    GetGameFBtGetGameFBDictByKeytFBPD_HelpBattleFBFightPowertFBPD_HelpBattleFBBaseHurtRR‘RœtTriggerType_Buff_MustBeHitRÆtDef_SkillAttack_NPCIsBossRôtGetSkillBattleTypeR©RðtGetPyPlayerStatetDef_PlayerState_SneertDef_PlayerState_MissSneerAtkRotDef_Skill_HappenState_HitOnRR‰RzR{R|R}tTriggerType_OneDamageRR R¬t"Def_Notify_WorldKey_WorldAverageLvtGetReFightPowerRÃR¾tTriggerType_AttackAddSkillPertTriggerType_AddIceAtkPertTriggerType_SuperHitValuetTriggerType_SuperHitSkillPertTriggerType_LuckyHittTriggerType_BeLuckyHitSubPertrandomRÜRÝt    GetIceAtktTriggerType_AddIceAtktGetDefRRåt    GetIceDeftGetIgnoreDefRatetGetSkillAtkRatet GetDamagePertTriggerType_AddDamagePertGetNPCHurtAddPertGetDamagePerPVPtGetFinalHurtPertTriggerType_AttackAddFinalPert GetFinalHurttTriggerType_AttackAddFinalValuetGetOnlyFinalHurtt GetPetDamPerR<tGetIgnoreDefRateReducetGetSkillAtkRateReducetGetDamageReduceRatetTriggerType_DamageReducetGetDamagePerPVPReducetTriggerType_DamageReducePVPtGetFinalHurtReducet GetBeHurtPerRtFormulaControltGetCompileFormulaRsRttGetOfficialRankt    enumerateRætGetRealmHurtPerRítIsHorsePetRobBossRRR=tGetSummonNPCOwnerRõt&Def_SkillID_HorsePetRobBossKillCntBufftGetSkillR±R²tGetObjAtkStateMarktFBCommontGetRecordMapIDR]RiRàRytDef_HurtType_RealmSupress(jR>R~R¹R R RFRmtatkwargst summonAtkPert summonAtkObjtsummonAtkPerValuet ownerAtkObjR
R tatkTypetaLVtdLVtaHittaHitSuccessRatetdMisstdMissSuccessRateRt    atkIsBosstsuppressValueLVtsuppressValueFPt
suppressLVtsuppressFightPowertsuppressReMaxHPtsuppressNPCFightPowert fbFightPowert
fbBaseHurttaRealmLVtdRealmLVtsuppressLVIpyDatatmustHitthelpBattleFormatKeyt
hitFormulaRRt
isLuckyHitt    aLuckyHittdLuckyHitReduceRžt    aSuperHittdSuperHitReducet dDamChanceDeft isZhuxianHittaZhuxianHurtPertdZhuxianReducePert wReFightPowertworldLVt
wLVIpyDatataIceAtkSuperHitt addASuperHittrandtaMinAtktaMaxAtktaIceAtktdMinAtktdMaxAtktdDefRRtdIceDeftaIgnoreDefRatet aSkillAtkRatet
aDamagePertaNPCHurtAddPert aDamagePerPVPt aFinalHurtPert
aFinalHurttaOnlyFinalHurtt aFightPowertdIgnoreDefRateReducetdSkillAtkRateReducet
dDamReducetdDamagePerPVPReducetdFinalHurtReducet
dBeHurtPert dFightPowerthurtDisttsuppressFormulaKeyLVtsuppressLVFormulatsuppressFormulaKeyFPtsuppressFPFormulatSuppressValueRealmRatet suppressRealmtRealmGroupListt aRealmGroupt dRealmGrouptgt gMaxRealmLVtsuppressFormulaKeyRealmtsuppressRealmHurtPerRBRtreduceFinalHurtPert atkStateMarkt defStateMarkthurtFormulaKeytsuppressLVGrouptmapIDt
mapHurtKeytsuppressLVHurtKeyt hurtFormulaR    ((si.\\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(NiR3iiÿÿÿÿ(RsRtRÉR(RœRt    gridIndexRÕtsuppressRealmDictt
plus_minust suppressListtrealmLV((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR~_s  cCs„|tjkr1tj|ƒ}|dkr=dSn |jƒ}|tjkrntj|ƒ}|dkrzdSn |jƒ}||fS(Ni(ii(ii(RRRt
GetRealmLVR|(R>R~R
R RœR((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRFrs    cCs•t|||j|jƒt||||j|ƒ|jƒtjkr‘|jt    j
|jƒ|jƒtj kr‘|jt    j |j ƒƒq‘ndS(N(t CalcBounceHPRgRet CalcSuckBloodRhRRRÅRrRatDef_PlayerKey_LastHurtValueRtDef_PlayerKey_LastHurtNPCObjIDR(R>R~R¹RRF((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR ‰scCs†|jƒ}|tjkrdS|tjkrc|jƒtjkrGdS|jƒtjkrcdSn|jƒ}|tj    kr‚dSdS(NR8tRobott    HelpRobottPetR7(
RRRÅRRÇRatntRobotRRóR<(tobjRØ((si.\\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(R>R~tisPet((si.\\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óR<RRR€R3R4(RíRØtnpcOwner_Player((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRî¹s   c
Cs|jƒsdS|jƒ}|tjkr/dStj|ƒdkrHdSt||tƒs^dS|jƒ}|t    j
|ddt j ƒ7}||tt jƒ}t|t    j
|ddt jƒƒ}t|t    j|ddt jƒƒ}|dkrúdS|tj|ƒkr|ntj|ƒd}t|||ƒ}ttj|ƒ|dƒ}|jƒ}    |    tjkr¬|jƒtjkr™tj||ƒqötj||ƒnJ|    tjkrötj||tƒ|tjkröt|||dƒqönt||d|t jƒdS(NiisPlayer bounce Player(RRRRÅRðRRR=tGetDamageBackRateRRRSR3RatTriggerType_BounceHPPerRÀR´RætTriggerType_BounceHPRœRR³RRóR<RRRRþt ChangeHPViewtDef_HurtType_BounceHurt(
R>R~R    RR tdefObj_DamageBackRatetbounceHPt    realSubHPRR
((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRåÏs<   %% . cCs±|jƒtjkrdS|s#dStjƒjƒ}||jtjƒtj    tjkr_dS|j
tj|ƒd}|jƒtj krµt j |ƒdkrµ||jƒ7}ntj|ƒ}|jƒtjkrH|tj|ƒ7}tj||dtjƒ}|tj|||tjƒ7}|t||dtjƒ7}n||7}|dkrbdSt j|tt j|ƒt j |ƒ|ƒtƒt|dd|tjƒdS(Nigð?(RRRÅRRtGetTickt GetTickByTypeRatTYPE_Player_Tick_SuckBloodtTYPE_Player_Tick_Timet SetTickByTypeRRðRt GetKillBackHPRAtGetAtkBackHPPertGetPVPAtkBackHPRRRœR3tTriggerType_Buff_SuckBloodPerRSRæR´RRORåR=RõtDef_HurtTYpe_Recovery(R>R~R¹R    RFtsuckHPt    atkBackHPt atkBackHPPer((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRæ    s0*"
 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ÅRRRúRûRatTYPE_Player_Tick_SuckMagicRýRþRRðRt GetKillBackMPRAtGetAtkBackMPPerRæRÀR´tSetMPROtGetMaxMPtGetMP(R>R~R    RFtsuckMPt atkBackMPPer((si.\\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 (R4RRRÅRJtpaDieRRóRôRt GetCurActiontlaNPCDieRtLogR=(ttagett    tagetType((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt    GetIsDead_    s  cCs<|jƒ}|tjkrtS|jƒtj|jƒkS(N(R'Rtg_maliciousAttackDictR=Rv(R(R>R((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR;r    s cCsŒ|jƒ}|jƒ}i}|tjkr=tj|}n||krqtjƒ}||_tj||ƒn|||<|tj|<dS(N(R'RRtChPyNetSendPackttagMCAddMaliciousAtkPlayert AtkPlayerIDt NetPackCommont SendFakePack(Rt    defPlayerRFt atkPlayerIDt defPlayerIDtdefMaliciousAttackPlayerDicttaddAtkPlayerPack((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR–y    s        
 cCsV|jƒ}|tjkrdStj|}|jƒ}||krHdS|||<dS(N(R'RR(RRRFRtmaliciousAtkPlayerDictR((si.\\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'RRRsRæR*R1RttagMCDelMaliciousAtkPlayerRRR(R(RFRt
defendTimeR RtatkTicktdelAtkPlayerPack((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytProcessMaliciousAttackPlayer›    s        cCst||ƒrtjtjfStj|jƒ|jƒƒ}tj|jƒ|jƒƒ}|tj    ksy|tj    kr‰tj
tj fS||kr¥tjtj fS|j ƒtjkrÊtjtjfSt|ƒrætjtjfSt|ƒrtjtjfSt||ƒr!tjtjfS|jƒ}|tjkrLtj
tjfS|tjkr»t||ƒrztj
tjfSt||ƒr™tj
tjfSt||ƒrþtj
tjfSnC|tjkrìt ||ƒrþtj
tj!fSn|tj"krþn|tj#kr^|j$ƒt%j&ƒkr5tj
tj'fS|j$ƒ r^t(ƒr^tj
tj)fSnt*||ƒr}tj
tjfStjtjfS(s¿
    PKģʽ
        0    ºÍƽģʽ    IPY_GameWorld.amPeace            ¶ÔËùÓÐÍæ¼Ò¶¼ÊÇÓѺ㬶ñÒâ¹¥»÷×Ô¼ºµÄÍæ¼Ò³ýÍâ
        1    È«Ìåģʽ    IPY_GameWorld.amAll              ¶ÔËùÓÐÍæ¼Ò¶¼Êǵжԣ¬¼Ò×åÇøÓòͬÃËÍæ¼Ò³ýÍâ  
        2    ·ÀÎÀģʽ    IPY_GameWorld.amCountry          ±¾·þÍæ¼ÒÓѺã¬Ëû·þÍæ¼Ò¶¼ÊǵжÔ
        5    Ç¿ÖÆÄ£Ê½    IPY_GameWorld.amFamily           ¶ÓÓÑ¡¢ÏÉÃ˳ÉÔ±¡¢Í¬ÕóÓªÓѺã¬ÆäËûÍæ¼ÒµÐ¶Ô
        
    ³¡¾°ÇøÓò
        ÆÕÍ¨ÇøÓò    IPY_GameWorld.gatNormal    ¿É¸ù¾Ý²»Í¬PKģʽPK£¬»÷É±Íæ¼ÒÓгͷ£
        °²È«ÇøÓò    IPY_GameWorld.gatSafe      ²»ÄÜPK
        ×ÔÓÉÇøÓò    IPY_GameWorld.gatFreePK    ¿É¸ù¾Ý²»Í¬PKģʽPK£¬»÷É±Íæ¼ÒÎ޳ͷ£
        
    ¼ò»¯¹ØÏµÅжÏÂß¼­£º ¿É·ñ¹¥»÷È«Óɹ¥»÷ģʽ¾ö¶¨£¬²ß»®Í¨¹ýµØÍ¼Ä¬ÈÏģʽ¼°¿ÉÇл»Ä£Ê½¿ØÖÆPK¹ØÏµ
    
    Ç±¹æÔò:
        °²È«ÇøÓò²»¿É¹¥»÷
        ÆÕÍ¨ÇøÓòÖÐPKÖµ´ïµ½ÉÏÏÞ²»Äܹ¥»÷±ðÈË
        Ë«·½²»Í¬ÔÚÍ¬Ò»ÇøÓò²»¿É¹¥»÷
        ²»¿É¹¥»÷´ò×øÖеÄÍæ¼Ò
        ¶ñÒâ¹¥»÷×Ô¼ºµÄÍæ¼ÒÎÞÂÛʲôÇé¿ö϶¼¿É·´»÷£¬²»ÓÃÇл»Ä£Ê½
    (+RèRatType_Relation_NoneRÞR7R8R9R:RRCtType_Relation_FriendtDef_PASysMessage_IsSafeAreatDef_PASysMessage_CurAreaNotPKRJtpaSittDef_PASysMessage_SitNotPKRçtDef_PASysMessage_NewGuyt Def_PASysMessage_NotAttackNewGuyR;tType_Relation_Enemyt GetAttackModetamPeacetDef_PASysMessage_AttackModetamFamilyt CanAlikeTeamtDef_PASysMessage_NotAttackTeamtCanAlikeFamilyt Def_PASysMessage_NotAttackFamilytCanAlikeFactiont!Def_PASysMessage_NotAttackFactiont    amCountryt IsSameServert Def_PASysMessage_NotAttackServertamAllt    gatNormalR<RAt GetMaxPKValuetDef_PASysMessage_AttackNotPKtIsPKProtectTimetDef_PASysMessage_PKProtectTimeRê(R(R>RMttagPlayerAreaTypetcurPlayerAttackMode((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytGetPlayersRelationº    sN        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(&R3RaR(RÞR7R8R9R:RRCR*R+RR€RÅRR$R%R¬tGameFuncID_TruckRARXtGetFuncLimitLVRJtGetTruckTeamIDtGetTruckFamilyIDRKR?R1R2tpncGraytpncRedR)R&RgR6R8R0(
R(t curTagTruckRMRNREtcurTruckOTeamIDtcurTruckFamilyIDRPtcurPlayerTeamIDtcurPlayerFamilyID((si.\\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(
RsRtR=RtGetCurrentTimetyeartmonthtdaytdatetimeR4( tpkProtecTimeListt    startTimetendTimet    startHourt startMinutetendHourt    endMinutetcurTimetcurYeartcurMonthtcurDayt startDateTimet endDateTime((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRBV
s    cCstS(N(R4(R(RE((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR<j
scCs.|jƒ}|jƒ}|o-|o-||kS(N(t
GetFaction(R(REt
curFactiont
tagFaction((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR9s
s  cCs.|jƒ}|jƒ}|o-|o-||kS(N(Rg(R(REt curFamilyIDt tagFamilyID((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR7|
s  cCs.|jƒ}|jƒ}|o-|o-||kS(N(R&(R(RERQt curTagTeamID((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyR5…
s  cCs„tj|ƒdkrdS|jƒtjkrKtj|ƒ}|jƒdStj||||ƒsgdSt    j
|ƒ}|j ƒdS(Ni( RðRRRRÅRAtSetDeadtChNPCt OnCheckCanDieRRÏt    SetKilled(R>t curObjDetelR¹RFt playerControlt
npcControl((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytDoLogic_ObjDeadŽ
s
 
cCstjƒjƒ}tjƒjƒ}|tjkrDtjdƒdS|jƒ}tj    |ƒ}|j
ƒ}|j ƒ}|j ƒ}    |jƒ}
tj    |ƒ} |j
ƒ} |j ƒ} |j ƒ}|j t|tjtjƒƒ|j t| tjdƒƒdS(Ns;    __GiveKill_Player_ValuePrize ¸±±¾µØÍ¼É±È˲»¸ø½±Àø£¡£¡£¡i(RR]R^RiRR_RíRåRAt GetPrestigetGetInfamyValueR<RLtSetInfamyValueRORatDef_KillValue_NotorietytDef_UpperLimit_DWordR³tDef_BeKilledValue_Notoriety(R(RRFRéRÛtattackLVtattackPrestigetattackNotorietyt attackPkValuetattackFightPowertdefendLVtdefendPrestigetdefendNotorietyt defendPkValuetdefendFightPower((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRY¦
s&          cCsš|jƒtjkr1|jƒtjkr1tSntjƒj    |j
ƒ|j ƒ|j
ƒ|j ƒƒ}|jƒtj kr–| r–t j|dƒn|S(NtPK_liubo_827276(RRRRÆRatDef_NPCType_Boss_BlueR4RR]t    CanLineToR9R:RÅRARX(RzRt    canLineTo((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pytCanAttackByPathô
scCsxd\}}|r.|jƒ|jƒ}}nt|dƒsCdn    |jƒ}|j||||||jƒ|ƒdS(NiR(ii(RRRRRõR(RÓtsrcObjRtchangeHPt    changTypetsrcIDtsrcTypetHPEx((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyRõ s  !%(RaRRaRRARRôRºRZRURRR7RJt PlayerFamilyRRt PlayerSuccessR$R¬RèR)RzRsRRðRñRSRRRíR¨R„RmRXtmathRR R%R)R0R2R@RGRQRcR\R•R™R˜R=RŸR¨R¬R°R¸R¹RÁRÄRÛRÌRãRÆRçRèRêRìRýRþR RR4RRR9R¡RRRGRLR\R^RÎR_RaRdReRoR‰RqRvRwRxR¾RÃR¿RÈRÕRÚRãRRïRR3RîR~RFR RƒRðRîRåRæRRR;R–R—R'RFRSRBR<R9R7R5RsRYRˆRõ(((si.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\AttackLogic\AttackCommon.pyt<module>sü                                            
            #                *    &    G                                                %                                  +        A    %  1 !    $                +    !                 "    ,        D                      (         &                    ©          ÿI                             A    -    "                        f    6                                            N