1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
Ù]´gc@s‰ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZejƒadZdZejddƒejddƒd„Zd„Zd    „Z d
„Z!d „Z"d „Z#d „Z$ddde%d„Z&d„Z'd„Z(d„Z)d„Z*e%dd„Z,d„Z-d„Z.d„Z/e%dd„Z0d„Z1e%dd„Z2d„Z3ge%de%d„Z4e%d„Z5d „Z6d!„Z7d"„Z8d#„Z9dd$„Z:ddd%„Z;d&„Z<dd'„Z=d(„Z>d)„Z?ddd*„Z@d+„ZAd,„ZBd-„ZCd.„ZDdejEd/„ZFd0„ZGe%d1„ZHejEd2„ZId3„ZJd4„ZKd5„ZLd6„ZMd7„ZNd8„ZOd9„ZPd:„ZQd;„ZRd<„ZSd=„ZTd>„ZUd?„ZVd@„ZWdA„ZXdB„ZYge%dC„ZZdD„Z[ge%dE„Z\dF„Z]dG„Z^dH„Z_ge%dI„Z`dJ„ZadK„ZbdL„ZcdM„ZddN„Zee%ddO„ZfdP„ZgddQ„ZhdR„ZidS„ZjdT„ZkdU„ZldV„ZmdS(WiÿÿÿÿNiÈiÉsScript\Attack\t AttackLogictcCsDtjƒd}tj|dƒtjƒd}tj|dƒdS(NsScript\Attack\AttackLogicRs Script\AttackR(tChConfigt
GetAppPatht    GameWorldt ReloadScript(ttickt
scriptPath((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt ReloadAttack?s
cCsZ|jƒ}d}|tjkr*d}n,|tjkrV|jƒ}|jƒ}|tjkrid}qV|tjkrd}qV|tjkr™d}qV|tj    kr±d}qV|tj
krÉd}qV|tj krád}qV|tj kr#t |d    ƒr|jƒdkrd
}qSd}qV|tjkr;d }qV|tjkrVd }qVn|S( NtUnknowntPlayertGuardtFuncNPCtDeert DefenceMaxNPCt    GoldenEggt    NormalNPCtGetOwnert    SummonNPCtTrucktPet(tGetGameObjTypet IPY_GameWorldt    gotPlayertgotNPCtGetGameNPCObjTypetGetTypetntGuardt ntFunctionNPCtntDeert ntDefenceMaxt ntGoldenEggt
gnotNormalt
gnotSummonthasattrRtNonet    gnotTrucktgnotPet(tobjt
curObjTypetresultt
npcObjTypetnpcType((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytGetObjAttackNameys8                               !             cCsHtjtdt|ƒt|ƒdfƒ}|s5tS|||||ƒS(Ns%s_Attack_%s.%st GetCanAttack(Rt GetExecFuncRR+tFalse(tattackertdefendertskillRtcallFunc((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR,«s         cCsTtjtdt|ƒt|ƒdfƒ}|sAtjtjfS|||||ƒS(Ns%s_Attack_%s.%stGetTagRelation(RR-RR+RtType_Relation_NonetDef_PASysMessage_None(R/R0R1RR2((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR3Ás         cCstS(N(tg_skillHurtList(((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytGetSkillHurtListÐscCstjƒrtjdƒSdS(Ni(R6t GetHurtCountt    GetHurtAtR#(((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytGetFirstHurtObjÕs  c    Cs«tj|ƒg}x]ttjƒƒD]I}tj|ƒ}|sGq&n|j|jƒ|jƒ|j    ƒgƒq&Wt
|||ƒx!|D]}t j |d|dƒ}|s¶qŠnt j|ƒdkrÑqŠn|dtjkrŠ|dtjkr |jtjdƒn)|dtjkr6|jtjdƒntj||dtj|ƒtj||dtj|ƒ|dtjtjgkr£|jtjdƒq£qŠqŠWdS(Niii(t AttackCommontClearFirstDefendertxrangeR6R8R9tappendtGetObjIDt
GetObjTypet GetAttackTypetOnHurtTypeTriggerSkillFirstObjRtGetObjtGameObjtGetHPRRRtDef_HurtType_ZhanshatSetDicttDef_PlayerKey_ZhanshatDef_HurtType_ZhognjiZhanshatPassiveBuffEffMngtOnPassiveSkillTriggerR#tTriggerType_WillDeadtOnPassiveBuffTrigger(    R/ttargettcurSkillRtskillHurtListstithurtObjthurtListR0((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytOnHurtTypeTriggerPassiveSkillàs. , i'iic    Csùtj|tjtjƒstSt||||ƒs8tS|jƒtj    kr|t
||||ƒd}|tj kr|dSnt j tdt|ƒt|ƒdfƒ}    |    dkrÚt jd|jƒ|jƒfƒtStj|ƒ}
|jƒ} |jƒ} tj|||ƒ|jƒtj    kr?|tj|ƒ7}ntjƒx5td|ƒD]$} |    |||||t|ƒ}qYW|s¼t||
|||ƒtj ||||| | ƒnt!||||ƒt"j#|ƒrâtSt$||||ƒt%S(Nis%s_Attack_%s.%stDoAttacks%d Attack %d Error !(&tOperControlManagertIsObjCanDoActionRtDef_Obj_ActState_ServerSkilltDef_Action_Attack_BitR.R,RRRR3tType_Relation_EnemyRR-RR+R#tLogtGetIDRDREtGetPosXtGetPosYt SkillCommontUpdateSkillCombot    NPCCommontGetSkillEnhanceR6tCleartranget__AttackSuccesst
SkillShelltDoLogic_UseEnhanceSkillRTR;t    GetIsDeadtDoLogic_AttackResulttTrue(R/R0tuseSkillRt skillPercentt skillEnhancet
attackTimetisEnhanceSkilltrelationR2t
attackerHPtdestXtdestYRQtindance((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttacksB               #  
"cCstjtdt|ƒt|ƒdfƒ}|sXtjd|jƒ|jƒfƒtStj|ƒdkrå|j    t
j |j ƒƒ|j    t
j |jƒƒ|j ƒtjkrå|sÀdn    |jƒ}|j    t
j|ƒqån|||||ƒt||||ƒtS(Ns%s_Attack_%s.%st AttackResults%d AttackResult %d Error !i(RR-RR+R[R\R.RDRERGRtDef_NPCDead_KillerTypeRtDef_NPCDead_KillerIDRRt
GetSkillIDtDef_NPCDead_ReasontDoBeAttackOverRj(R/R0RkRt
resultFunctskillID((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRibs     #cCs&tjdƒ}tj|||ƒdS(Ni(t
ItemCommontCreateSingleItemtChItemtAddMapDropItem(tposXtposYt curSingleItem((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytTestQunscCs2|s
tStj|ƒdkr#tStj|ƒr6tStj||ƒsLtSt||||ƒd}|tj    krxtSt
j |ƒ}|tj krê|j ƒtjkr¯tStjƒjƒtjkrÎtS|jƒtjkrtSn+|tjkr|j ƒtjkrtSntj|||ƒs.tStS(Ni(R.RDRERtGetNPC_Is_GateR;tCheckCanAttackTagR3RRZRftGetSkillAffectTagt Def_UseSkillTag_CanAttackBaseNPCRRRtGetMapt GetMapFBTypetfbtNullt    GetIsBosstDef_NPCType_Ogre_SupertDef_UseSkillTag_CanAttackPlayerRtCheckPlayerAttackDistRj(R/tcurTagRORRptcurSkillUseTag((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__CheckCanAttackŒs2cCs¢|s
|Stj|ƒ}tjj|ƒ}|s5|S|jƒ|krK|St||||ƒsd|Sx*|D]"}|jƒ|jƒkrk|SqkW|j|ƒ|S(N(    RfRˆRtDef_Dict_UseSkillTag_ObjTypetgetRR“R\R>(t
resultListR/R0RORR’t hurtTypeListtcurObj((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__AddObj_In_resultListÂs  c    Csf|jƒ}|jƒ}    |jƒ}
tj|ƒ} g} |rjtj|jƒ||ƒ} | j|ƒnt    |||||t
|ƒ} t | ||||ƒxÁ| D]¹} tj | | |    |
ƒsÉq¥n|}|t jkrtj|ƒrtj|ƒ}|dkr|}qntj||| ƒ}tj| | ||||ƒtj||||tƒq¥WtS(N(RtGetSkillTypeIDt
GetSkillLVR_t GetBuffTypet PlayerControltGetAreaTeamMembertGetTeamR>t__GetAreaAtackObjtCheckTagIsBeInfectionR™tCheckCanAddBuffRRRat IsSummonNPCtGetSummonOwnerDetelR#RftGetAddBuffValuet    BuffSkillt    DoAddBufft AddBuffOverR.Rj(R/R0ROtsrcPosXtsrcPosYRt
isTeamBufft skillMatrixt attackObjTypetcurSkillTypeIDt
curSkillLVtbuffTypeR–R‘t addAngryObjt useSkillOwnertaddBuffValueList((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytSkillAddAreaBuffés,      cCs÷|jƒ}|r7t|d||jƒ|jƒ|ƒS|jƒtjkrPtSg}t    j
|ƒ}|t j t j gkr4|t j k}tjƒ}x¸t|jƒƒD]‚}|j|ƒ}    |    jƒdkrØq«n|    jƒtjtjgkrüq«n||    jƒ|jƒkkr q«n|j|    ƒq«Wn|t jt jgkrOntS|jƒ}
|jƒ} tj|ƒ} xv|D]n} tj| | |
| ƒs¥qnt    j ||| ƒ}t!j"| | ||||ƒt    j#|| ||tƒqWt$S(s"¹â»·buff¹âÔ´¶Ô¸½½üµ¥Î»Ó°ÏìÌí¼ÓbuffiN(%t GetAtkRadiusR´R#R]R^RRRR.RfRˆRtDef_UseSkillTag_FriendNPCtDef_UseSkillTag_CanAttackNPCRt GetNPCManagerR=t GetNPCCountt GetNPCByIndexR\RR R!t
GetCountryR>tDef_UseSkillTag_PlayerHasHPRRšR›R_RœR¢R¥R¦R§R¨Rj(t curObjDetelRORt    attackDisR–R’t isFriendObjtgameNPCManagertindextcurNPCR®R¯R°R‘R³((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytSkillAddAuraBuffs@ %    cCs>|jƒtjkr(t||||ƒStj||||ƒS(N(RRRtCheckNPCSkillTagIsBeInfectionRftCheckTag_DoPlayerUseSkillTag(R/R0ROR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR¡SscCs¢tj|ƒ}|tjkr]|jƒtjkr7tSt||||ƒ}|dtj    kS|tj
kr|r‹t j |ƒdkr‹t StSt||||ƒS(Ni(RfRˆRR¶RRRR.R3tType_Relation_FriendtDef_UseSkillTag_AppointNPCRDRERjR“(R/ROR0RR’Rp((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÄZsc         CsŸtjƒtj|ƒ}    t|||||t|ƒ}
t|
||||ƒ}
x-|
D]%} tj| ||||dt    ƒqVWt
||||
|    ||ƒdS(NtisDoAttackResult( R6RcRDRER R“R™R_t SkillLostHPR.t__DoAreaAttackResult( R/R0R©RªROtlostHPRt    isExSkillR¬RqR–R&((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAreaSkillAttackLostHPts
 #c        Csltjƒ|g}t|||||gt|ƒt|||ƒt||||ƒt||||ƒtS(N(R6Rct__DoAreaAttackt__Sync_AttackResultRTRiRj(    R/R0R©RªRORlRmRR–((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttackAreaDefenderNotifyŠs
     c
Cstjƒtj|ƒ}
t|||||t|    ƒ} t| ||||ƒ} t||||| t|ƒ} t|||| |
||ƒt    S(N(
R6RcRDRER R“R™t__DoAreaAttackByHPPerRÊRj( R/R0R©RªRORlRmRRÌR¬RqR–t
attackList((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttackAreaByHPPer¤s
 c     Csžg}x‘|D]‰}dt|ƒt|ƒdf}    tjt|    ƒ}
|
sPq nt|tj|ƒ|ƒ}|
||||d||ƒ|j|ƒq W|S(Ns%s_Attack_%s.%sRUi(R+RR-RtintRDtGetMaxHPR>( R/RORmRlR–R6RRÒR&tcallNameR2((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRѾs  c     CsÈtjƒtj|ƒ} t|||||t|
ƒ} t| ||||ƒ} | r‡t| ƒ}|dkr‡||:}||:}q‡nt||||| |t|ƒ}t    ||||| ||    ƒt
S(Ni( R6RcRDRER R“R™tlenRÎRÊRj(R/R0R©RªRORlRmRt    powerListRÌR¬t isAverageHurtRqR–t    resultCntRÒ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttackerSkillAttackAreaæs
 
c     Csƒtjƒtj|ƒ}    t|||||tƒ}
t|
||||ƒ}
i} x_|
D]W} | jƒtj    krzqYn| j
ƒ} | | krŸg| | <n| | j | ƒqYWt j |tjƒ}d}|rç|jdƒ}ng}xs| D]k} | dkrt| | ƒnd}t|||ƒ}|jt|||||| | gt|ƒƒqôWt|||||    ||ƒtS(Ng{®Gáz„?ii(R6RcRDRER R“R™RRRt GetFamilyIDR>R_tGetSkillEffectByEffectIDRtDef_Skill_Effect_AvgHurtFMCnttGetEffectValueR×tmaxtextendRÎRÊRj(R/R0R©RªRORlRmRRÌRqR–t
resultDictR&tfamilyIDt skillEffectt minSkillPerRÒtcnt((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttackerSkillAttackAreaByFamily    s0
     " cCs’|s
tStjƒj||jƒƒ}|s2tS|jƒdkrHtStj|ƒrŽ|jƒdkrŽt    j
|ƒt j t j gkrŽtStS(Nii(R.Rt GetGameDatatFindSkillByTypeR›t
GetAtkTypeRjR_tIsBuffRfRˆRtDef_UseSkillTag_SelftDef_UseSkillTag_SelfAndFriend(ROtenhanceSkillIDt enhanceSkill((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytGetIsEnhanceSkillGroup9s!!c    
Cs|sÏ| r5|r5|jƒtjkr5|d}nt|||||ƒ|râxx|jƒ|jƒgD][}t||ƒr¬xC|D]}tj|||||ƒq†Wqjtj|||||ƒqjWqânt    ||||ƒx6|D].}t
j |ƒrqént ||||ƒqéWdS(Ni( RRRRetGetSkillEnhance1tGetSkillEnhance2RðRftSkillTrigSkillRTR;RhRi(    R/R0RORÒRqRRoRîtdefObj((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÊTs"   # c     Cs¥g}x˜|D]}    dt|ƒt|    ƒdf}
tjt|
ƒ} | sPq n|gkrt|jdƒ\}}n| ||    |||||ƒ|j|    ƒq W|S(Ns%s_Attack_%s.%sRUi(R+RR-RtpopR>( R/RORmRlR–RØR6RRÒR&RÖR2((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR΀s   cCsø|jƒtjkrdSd}|jƒtjkratj|jt    j
ƒ|jt    j ƒƒ}n|sž|j ƒ}|j ƒ}tj||ƒ}|sždSntj|ƒt    jkrÌtj|ƒrÌdSn|dkrô|||||ƒsôdSn|S(N(RRRR#t GetAttackModet    amContestRRCt GetDictByKeyRtDef_PlayerKey_SelectObjIDtDef_PlayerKey_SelectObjTypetGetUseSkillTagIDtGetUseSkillTagTypeRfRˆR·RatGetNpcObjOwnerIsPlayer(R/ROt    CheckFuncRR‘t useSkillTagIDtuseSkillTagType((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytGetAreaAttackAim s&   c Cs‚tƒ}tj|ƒ}tjj|ƒ}|dkrKtjd|ƒ|Stj    ƒ}x$|D]}|d}    |    |kr€q^ntj
|d|    ƒ}
|
s¢q^n|j tj ƒsm|tj krÛtj|
ƒrÛq^qÛntj|
jƒ|
jƒ|jƒ|jƒƒ|jƒkr@tjd|jƒ|
jƒfƒq^n|dkrm|||
||ƒsjq^qjqmn|j|
ƒq^W|S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %siis#--- ×îÔ¶¾àÀë·À·¶[%s-%s](tlistRfRˆRR”R•R#RtErrLogtGetClientHurtDictRCRøtDef_PlayerKey_ClientCustomSceneR·RaRýtGetDistR]R^tGetSighttDebugLogR\R>( R/RORRþR–R’R—thurtDicttobjInfoR'R‘((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytCheckAreaObjClientÀs4       
     <#  cCstƒ}tj|ƒ}tjj|ƒ}    |    dkrKtjd|ƒ|S|dkrÊ|j    ƒ}
|
sm|Stj
j|
dƒ}|dkrÊ|
t t gkrÊtjd|j ƒ|
tj
fƒ|Sntj||ƒ} d} |jƒtjkotj|ƒ} | r9tjtj|ƒ}|r9|jƒ} q9nt||||ƒ}|rn| d8} |j|ƒn|rªt||||| |||    |||| | |ƒ}nn|
t krát||||    |||| | || ƒ n7|
t krt||||    |||| | || ƒ n|S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %ss9CheckAreaObj skillId=%s, attakDis=%s not in matrixDict=%sii(RRfRˆRR”R•R#RRRµt
MatrixDicttDef_SearchMap_PlayertDef_SearchMap_NPCRyR_tGetSkillArea_Atk_CountRRRRaR£tGetSummonNPCOwnerRt GetPlayerIDRR>t ServerByPostServerByMapPlayertServerByMapNPC(R/ROR©RªRRþR¬R–R’R—R¾t    hurtCountt ownerPlayerIDtisSummonNPCAtkert ownerPlayert    attackAim((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytCheckAreaObjServeròsJ           $
  cCs d}tjƒ}xñ|D]é}|dkr/Pn|j||d||dƒ}|s]qnx¢td|jƒƒD]‹}|dkr‰Pn|j|ƒ}t|||||||    |
| | | ƒ \}}|sç|rs|d8}qsqsn|d8}| j|ƒqsWqW|r| j|ƒn| S(Nii(    R#RRŠt    GetPosObjRdt GetObjCountt GetObjByIndext __SearchCheckR>(R/RORR¬RR©RªR—RR’RþRRR–townerTagtgameMaptcurPostmapObjRQR˜R‘((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR+s.   "  
c Cs|jƒ} | |krdStj||ƒs2dS| sStj|jƒ| ƒ} n| s]dS|r|jƒ| jƒkrdS|tjkr¤t    j
| ƒr¤dSn|dkrÌ||| ||ƒsÌdSn|dkr| t j kr|    r||jƒkr| } d| fS| dfS(Ni(NN(NN(NN(NN(NN(NN( RR#R;tCheckSightLevelRRCR\RR·RaRýRR(R/RORR˜R—RR’RþRRR–R‘R'R((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRRs*   3
c Csâtjƒ} x¹t| jƒƒD]¥} | j| ƒ} | dks| jƒdkrXqnt|||| |||||||    d| ƒ \}}|s­|r|
d8}
qqn|
d8}
|    j|ƒqW|rÞ|    j|ƒn|    S(NiR‘i(    RR¸R=R¹RºR#R\RR>(R/RORR—RR’RþRRR–RRÀRÁRÂR‘R((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRys   
c CsÜtjƒ} x³t| jƒƒD]Ÿ} | j| ƒ} | dks| jƒrRqnt|||| |||||||    d| ƒ \}}|s§|r|
d8}
qqn|
d8}
|    j|ƒqW|rØ|    j|ƒn|    S(NR‘i(    RtGetMapCopyPlayerManagerRdtGetPlayerCounttGetPlayerByIndexR#tIsEmptyRR>(R/RORR—RR’RþRRR–RtcopyMapPlayerManagerRQt    curPlayerR‘R((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR’s   
cCsEtj||ƒr%t||||ƒSt|||||||ƒSdS(N(RftIsPlayerUseSkillR R(R/ROR©RªRRþR¬((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR ´scCst||ƒdS(N(t__DR_PlayerDead(R/R0RkR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoAttackResultCommonÂs cCs›tjƒjƒtjkrdS|jƒ}|tjkr>dStj|ƒdkrWdS|jƒ}|j    ƒ}tjƒj
ƒ}t j ||||ƒdS(Ni( RRŠR‹RRŒRRRDRER\tGetMapIDtDataRecordPackt DR_PlayerDead(R/R0t defenderTypet
atkObjTypetatkObjIDtmapID((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR+Ðs   cCs—|dkrdS|jƒ}|tjkrAt||||ƒn<|tjkrft||||ƒntjd|jƒƒt    j
||||ƒdS(Ns±»¹¥»÷´íÎó : %d ( R#RRRt__DoPlayerBeAttackedRt__DoNPCBeAttackedRR[tFBLogicR{(R/R0RORR0((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR{ïs  cCsq|jƒ}|tjkr1t|||||ƒS|tjkrVt|||||ƒStjd|jƒƒtS(Ns¹¥»÷´íÎó : %d (    RRRt__DoPlayerAttackSuccessRt__DoNPCAttackSuccessRR[R.(R/RqRNRORt attackerType((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRe s cCsQtjƒ|dkr;|dkr;tj|t||ƒnt|||||ƒS(Ni(R6RcR#R;tAddHurtRe(R/t attackerBeHPRNRORtvaluethurtType((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoAttackSuccess s
cCst|||||ƒS(N(Re(R/R;RNROR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoAttackSuccessEx(scCsE|r
tSt|tj|ƒ|||ƒ}tj||||ƒ|S(N(RjR>RDRERfRg(R/R0RORRoR(((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoSkillEx_AttackSucess4s
!c
Csmtjƒd}xDtt|ƒƒD]0}||}||}    tj|t||    ƒq#Wt|||||ƒS(N(R6RcR#RdR×R;R:Re(
R/R;t
targetListt    valueListRORR=RNRÁR<((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoAreaAttackSuccessJs
 
 
c
    Cs™tj||ƒ}|jtjƒ}|d|}|sØtjƒdkrytjd|j    ƒ|j
ƒtjƒfƒn[tj dƒ}|j |j ƒ|jƒ||jƒ|jƒ|jƒ|jƒ|jƒƒdS|jƒ}tj|d|tjƒ}|r|}n|s¬|jƒtjkrö|jƒ}|jƒ}    |rö|    rö|jƒtjkršt|||||    ttƒt |||||    tƒnU|jtj!ƒrÓ|jtj!ƒ}|jtj"ƒ}    nt|||||    ttƒdSn|jtj!ƒr/|jtj!ƒ}|jtj"ƒ}    n]|jtj#dƒrt|jtj#dƒ}|jtj$dƒ}    n|j%ƒ}|j&ƒ}    t|||||    ttƒdS|j%ƒ|j&ƒ}}    |jƒtjkr@|j'ƒdkr|jƒ|jƒ}}    nt|||||    ttƒt |||||    tƒnU|jtj!ƒry|jtj!ƒ}|jtj"ƒ}    nt|||||    ttƒdS(Ni
isk __Sync_AttackResult attackErr, attackerName = %s,                                 ID = %s, hurtCount = %s ii    ((R;t GetBattleTypeRøRtDef_Obj_Dict_TurnBattleTypeR6R8RRtGetNameR\R9t
BaseAttackR?R@RAt    GetHurtHPt GetHurtHPExtGetCurHPt
GetCurHPExRyRJt#GetPassiveSkillValueByTriggerTypeExR#tTriggerType_ChangeSkillEffRRRtGetUseSkillPosXtGetUseSkillPosYtPYView_UseSkillPosR.tPYView_UseSkillPos_NotifySelftDef_NPC_Dict_AtkMovePosXtDef_NPC_Dict_AtkMovePosYtDef_NPC_Dict_SkillWarnPosXtDef_NPC_Dict_SkillWarnPosYR]R^Rê(
R/R0ROt
battleTypetturnBattleTypetcurHurtR}t changeSkillIDt useSkillPosXt useSkillPosY((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÏ\sf1          cCsitjƒd}tj|ƒtjkrU|jƒ}|jƒ}t    j
||ƒ}nt |||ƒdS(N( R6RcR#RftGetSkillFireAimRtDef_UseSkillAim_ObjRûRüRRCRÏ(R/ROR0RÿR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytSync_AttackResult²s
  cCs¾tj|ƒr¹|jƒ}|jƒj|ƒ}t|||ƒ|rhtj|tj|ƒ||ƒn|j    ƒt
j t
j t
j gkr¢t||||ƒnt||||ƒtStj|ƒ|dksç|jƒt
jkrútj||ƒnt|||ƒ|r‘|jƒ}t|||ƒt||ƒ|jƒj|ƒ}|r‘t||||ƒsŽtj|tj|ƒ||ƒqŽq‘ntj||||ƒt||||ƒtS(N(R_tGetUsingPassiveSkillRštGetSkillManagertFindSkillBySkillTypeIDRÏtSetSkillRemainTimeRtGetReduceSkillCDPert GetFuncTypeRtDef_SkillFuncType_GiftSkilltDef_SkillFuncType_FbSPSkillt$Def_SkillFuncType_PassiveSkillWithSPt UseSkillOverRTRjR;R<R#t GetSkillTypetDef_NoBattleState_ListtSetPlayerBattleStatetSetSkillLostAttrtSetSkillLostItemt IsSkipSkillCDR6tDoFBAttackedOver(R)t curPlayerBeHPRNRORt skillTypeIDtcurPlayerSkill((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR7És6 "  
  (
cCs¨t}xTttjƒƒD]@}tj|ƒ}|s:qn|jƒtjkrt}PqqW|r¤t    j
|d|tj ƒr‚tSt    j |d|tj ƒr¤tSntS(N(R.R=R6R8R9RARtDef_HurtType_SuperHitRjRJt GetValueByPassiveBuffTriggerTypeR#tTriggerType_SuperHitSkipCDt!GetPassiveSkillValueByTriggerType(R)RNRORt
isSuperHitRQRR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRnscCsítjƒdkrdStjdƒ}|s/dS|jƒ|jƒ|jƒ}}}tj||ƒ}|sqdS|tj    kr»t
j |||tj |ƒt
j |||tj |ƒn.|tjkrét
j |||tj|ƒndS(Ni(R6R8R9R?R@RARRCRRsRJRKtTriggerType_SuperHitRMtDef_HurtType_ThumpHittTriggerType_ThumpHit(R/RORRRtobjIDtobjTypeR=R0((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRB,s&c Cs#t}t}tj|||tjƒ| sG|rZtj|jƒkrZt|||ƒntƒ}xq|D]i}|\}    }
} t    j
|    |
ƒ} | sqjnt j | ƒdkrz|
t jkrj| tjkræ| jtjdƒn%| tjkr | jtjdƒntj| |dtj|ƒtj| |dtj|ƒ| tjtjgkrt| jtjdƒqtqjqjn|r§tj|| |tj|d|ƒ}n|rã| tjkrãtj|| |tj|d|ƒ}n| tjkr-tj| |dtj|ƒtj| |dtj|ƒnx| tjkrwtj| |dtj|ƒtj|| dtj|ƒn.| tjkr¥tj| |dtj |ƒn| tj!krjtj| |dtj"|ƒqjqjWxE|D]=} |j#ƒj$| ƒ}|sqÞnt%j&|d||ƒqÞWdS(Niiit
skillIDSet('RjRJRvRtTriggerType_HitValuetDef_SkillType_LstPlsBuffAtkRiRBtsetRRCRDRERRRFRGRHRIRKR#RLRMtTriggerType_HurtObjAddBuffRstTriggerType_SuperHitOneByOnetTriggerType_BeSuperHittOnPetPassiveSkillTriggertDef_HurtType_MisstTriggerType_MissSkilltTriggerType_BeMissSkilltDef_HurtType_LuckyHittTriggerType_BeLuckyHittDef_RealAttack_Typet!TriggerType_Buff_BeAttackSubLayerR`RaR_Rb(R/RNRORPRtusePassiveSkillResulttusePassiveSkillResultOnSuperHitR}RSR{R|R=R0Rqt passiveSkill((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytOnHurtTypeTriggerSkillBsV"     # c Cszd}|jƒ}|r$|jƒnd}g}x~ttjƒƒD]j}tj|ƒ}    |    sdqCn|j|    jƒ|    jƒ|    jƒgƒ||    jƒkrC|    jƒ}qCqCW| pß|j    ƒt
j kpß|j ƒt
j k}
|
r|t
jkrt||||ƒqn|jt
jƒ} | r|jt
jdƒ| t
jkr©|jt
jƒd} |jt
j| ƒtjd|| fƒtj|||t
j|ƒq| t
jkr|jt
jƒd} |jt
j| ƒtjd|| fƒtj|||t
j|ƒqnt|||||ƒ| sp|j    ƒt
jkr|j ƒt
jt
j t
j!gkrtj"|||t
j#|ƒn|
rtj|||t
j$|ƒtj"|||t
j$|ƒtj|||t
j%|ƒ|r9|j&ƒr9tj|||t
j'|ƒq9ntj|||t
j(|ƒtj|||t
j)|ƒtj|||t
j*|ƒt+j,|ƒrvt+j-|ƒ}|jd|jƒƒtj|||t
j.|ƒtj"|||t
j.|ƒtj/|||t
j.|ƒ|
rtj|||t
j0|ƒn|jt
j1dƒ|jt
j1dƒ|
rv|jt
j2dƒ|jt
j2dƒqvndS(Niis"        Á¬»÷: atkID=%s,comboNum=%ss$        ·´»÷: atkID=%s,atkBackNum=%st useSkillPetID(3R\R=R6R8R9R>R?R@RARiRtDef_CanAttackSkill_ListRdRgR…tAttackFaintRateRøRERGtTurnBattleType_CombotDef_Obj_Dict_TurnComboNumRRRJRKtTriggerType_CombotTurnBattleType_AtkBacktDef_Obj_Dict_TurnAtkBackNumtTriggerType_AtkBackAftRtDef_SkillType_AtktDef_SkillFuncType_FbSkilltDef_SkillFuncType_PetSkilltDef_SkillFuncType_NormalAttackRMtTriggerType_Buff_AttackSubLayertTriggerType_AttackOvertTriggerType_AttackOverPassivetGetXPtTriggerType_XPAttackOvertTriggerType_SkillOverNoAttacktTriggerType_SkillSuccesstTriggerType_SkillSuccessExpendt
PetControltIsPetNPCtGetPetNPCOwnertTriggerType_SkillSuccessPettOnPassiveBuffHappentTriggerType_AttackOverPett%Def_Obj_Dict_TurnSkillSuccessPetStatet#Def_Obj_Dict_TurnAttackOverPetState(R/R0RORt defHurtTypetatkIDtdefIDRPRQRRt
isAtkSkillRWtcomboNumt
atkBackNumtpetOwner((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRh‚sr (1""cCsötj|ƒ}|sdS|jƒtjkrŸ|ri|jƒ}|sJdS|jƒ|jƒkridSn|sŸ|jƒ}|jƒ}t    j
||ƒ}qŸn|s©dS|j ƒ|j ƒkrÅdStj |ƒdkrÞdStj |ƒ}tjddƒ}    tt||dƒ|    ƒ}
t    j|
ƒs.dStjddƒd} | r°|jtjƒ} | || } | dkršt    jd|
| |j ƒfƒdS|jtj|ƒnt    jd|
|j ƒ|j ƒfƒtj|tj|d|ƒdS(    NitPassiveSkillFaintiiiès.        »÷ÔÎCDÖÐ! rate=%s,Ê£Óàtick=%s,atkID=%ss-        ¿É´¥·¢»÷ÔÎ! rate=%s,atkID=%s,defID=%st    buffOwner(RDt GetFaintRateRRRt GetUseSkillRyRûRüRRCR\REtGetFaintDefRatet IpyGameDataPYt
GetFuncCfgtminRàt    CanHappenRøRtDef_PlayerKey_AttrFaintCDRRGR_tAddBuffBySkillTypetDef_SkillID_AtkerFaint(R/R0RORt    faintRatet useSkillDataRÿRttagFaintDefRatetmaxRatetratetfaintCDtlastTickt
remainTick((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR’ÖsH     &cCs|jƒ}|jƒ}| s&| r*dStj||tjƒ}|srtjd|jƒ|f|j    ƒƒdS|j
ƒ}t j ||||j ƒ|jƒƒ||krãtjd|jƒ|f|j    ƒƒ|jƒdStj||||j    ƒ|jƒ|jƒƒdS(Ns!###Êͷż¼ÄÜ = %s¿Û³ý²ÄÁÏ = %sÒì³£s,###Êͷż¼ÄÜ  = %s¿Û³ý²ÄÁÏ = %sÒì³£, ÊýÁ¿²»×ã(t GetUseItemIDtGetUseItemCountR~tFindItemInPackByItemIDRtrptItemRRRšR\tGetCountR.tDR_UseSkilLostItemtGetGUIDRct ItemControlert SetItemCounttGetAccIDt GetPlayerName(R)ROt    useItemIDt useItemCounttitemt    itemCount((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRms&       %     
" cCsdS(N((R)R((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__DealWithPassivityBuff4scCsð|jƒ}tj|ƒ}||krJtjd|jƒ||fƒn|dkrvtj|td||ƒƒn|jƒ}tj|ƒ}||krÀtjd|jƒ||fƒn|dkrìtj    |tj|ƒ|ƒndS(Ns8Êͷż¼Äܿ۳ýXPÒì³£! skillID=%s,curXP=%s < lostXPValue=%sis%Êͷż¼ÄÜ = %sÒì³£, HPµã = %s²»×ã = %s(
R RDRRRytSetXPRàRERštSetHP(R˜RORt lostXPValuetcurXPt lostHPValuet curPlayerHP((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRl=s  #          cCsdS(N((R)RNRrR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__DealWithPassivitySkilljs c    Cs|j|ƒt|||ƒ|rÀ|jƒ}t|||ƒ|jƒj|ƒ}|s]n#|j|ƒtj|d||ƒ|j    t
j |ƒ}|j t
j |t |dt
jƒƒn|jƒtjkr?tj|ƒ}|dkr?tj|ƒdkr?|dks&|jƒt
jkr<tj||ƒq<q?ntj|||ƒtj|ƒrxt||||ƒtSt ||||ƒtS(Nii(!t SetAttackTickRÏRšRlR`RatSetUseSkillTickR_RbRøRtDef_NPC_Dict_SkillUseCntRGR»tDef_UpperLimit_DWordRRR%R¥t GetPetOwnerR#RDRERiRjR;RkR6tDoOverNPCAttackSuccessR_RTRjRh(    RÂt
curNPCBeHPRNRORRqt curNPCSkilltuseCntR)((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR8s.   *!!cCsdS(N((RÂRO((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__DealWithNPCPassSkillÊscCsÃtj|ƒdkrdStj|ƒtj|tƒ| sR|jƒtjkr¿t    j
||||ƒt    j ||dtj |ƒt    j||dtj |ƒt    j||dtj |ƒndS(Ni(RDRERtBreakPlayerCollecttSetIsNeedProcessRjRiRR‘RJtDelayUsePassiveTriggerSkillRKR#tTriggerType_BeAttackOverRMR„(R/R)ROR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR4Õs cCsÎtj|ƒdkrdS|jƒtjkr2dS|jƒtjkrKdStj|ƒ|j    ƒdkr}|j
d|ƒn| s™|j ƒt j krÊ|jt jƒrÊtj||dt j|ƒndS(NitNPCBeAttackedAI1(RDRERRR$RRRatSetNPCInBattleStateRRGRiRR‘RøtDef_Obj_Dict_TurnFightTimelineRJRKR#Rì(R/RÂROR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR5ûs .c
Csltjƒtj|ƒ}
t|ƒ} tƒ} t||||| | |ƒ} t|||| |
||    ƒtS(N(    R6RcRDRER+Rt__DoNextDefenderExRÊRj( R/R0ROR©Rªt
skillValuet skillPerListRRØRÌRqt attackObjNameR–((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytChainAttackAreaExs
     c Cstj|ƒ}tjj|ƒ}|dkrBtjd|ƒ|Stjƒ}    xÂt    t
|ƒƒD]®}
|    j ƒ|
\} } | |krqantj | | ƒ} | s­qan| t jkr×| jƒt jkr×qant|| |||||
t|ƒsqan|j| ƒqaW|S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %s(RfRˆRR”R•R#RRRRdR×tkeysRCRRRR$t
__DoAttackR6R>(R/RORñRòRóR–RR’R—R    RQR{R'R‘((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRð/s(   $c
 CsA|jƒ}
tjj|
ƒ} | dkrQtjd|jƒ|
tjfƒtSt    j
ƒt |ƒ} t j |ƒ} t|ƒ}t||||||dt    |ƒs«tStjƒ}tƒ}|j|ƒ||g}xEtd| ƒD]4}t||||||||| ||ƒ séPqéqéWt||||| ||    ƒtS(Ns<ChainAttackArea skillId=%s, attakDis=%s not in matrixDict=%sii(RµRR R•R#RRRyR.R6RcR×RDRER+RöRŠRR>Rdt__DoNextDefenderRÊRj(R/R0ROR©RªRñRòRRØRÌR¾R¬t attackTimeSumRqRóR R–tsrcPosRÁ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytChainAttackAreaas0      
             c
Cst||||ƒsdSd|t|ƒdf}tjt|ƒ}    |    sNdStj|||ƒ|    |||||||ƒtS(Ns%s_Attack_%s.%sRU(R“R+RR-RR_R`Rj(
R/R0RORóRñtskillPerR6RRÖR2((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRöŸscCsG|dkrtSx0|D](}|s)qntj||ƒrtSqWtS(N(R#RjRt    IsSameObjR.(R‘R–ttag((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__IsAlreadyAttack¹s  c  Cs¬t} tj|ƒ} tjj| ƒ} | dkrHtjd| ƒ| Sx]|D]U}| r_Pn|    j    |d|d|d|dƒ}|s•qOnx t
d|j ƒƒD]õ}|j |ƒ}|j ƒ}|| krÞq«ntj|jƒ|ƒ}|sq«n|tjkr,|jƒtjkr,q«nt||ƒrAq«nt|||||||t|
ƒslq«n|j|ƒ|jƒ|d<|jƒ|d<t} Pq«WqOW| S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %sii(R.RfRˆRR”R•R#RRRRdRRRRCR\RRRR$RþRöR6R>R]R^Rj(R/RORñRòRóRùRÁR–R¬R Rt    isSucceedR’R—R!R"RQR˜R'R‘((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR÷ÖsB  *  $     c 
Csðtjƒg} tj|ƒ} t|||||tƒ} t| ||||ƒx}| D]u}tj|j    ƒ|j
ƒ|j    ƒ|j
ƒƒ}|||}t |||||g|    t|ƒ}| j |ƒqWWt |||| | ||
ƒtS(N(R6RcRDRER R“R™RRR]R^RÎRáRÊRj(R/R0R©RªRORlRmt    changePerRRØRoRÒRqR–ttagObjtdistRûttmpList((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytCrackAttackArea$    s
 cCs¬t}|jƒ}|dkrMtj|ƒ}|jdƒtj|dƒnFt|||jƒ|j    ƒ|t
ƒ}|gkr„|St j |ƒ}t ||||ƒ}|S(NsÎÞµÐÕ¶£¬Í˳öÕ½¶·¶ÔÖųɹ¦(R.t GetActionObjR#Rt GetObjDetailt SetActionObjtGodLogR R]R^R“trandomtchoicetSuperLinkAttackObj(R/RORR(R0R–((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytSuperLinkRandomAttackL    s    cCsÎt}tj|tjƒ}|jƒ}|jƒ}|dkr`tj    dtj||fƒ|S|j
dƒ}tj ƒj ||ƒ}    |    s¨tj    d||fƒ|Stj ||tjƒ}
|jƒ} |
dkr‰tj|
ƒr‰tj|
tjƒ} | dkr]| j
dƒ} tj| j
dƒttjƒ}|jtt| | ƒ|ƒƒq‰tj    dtj|
jƒ|
jƒfƒn|j|jƒ|jƒƒtj|||    |ƒ}|j| ƒ|S(Ns%ûÓÐÎ޵й¥»÷¼¼ÄÜЧ¹ûÏî%s ID=%s, Lv=%sis,Êý¾Ý¿âûÓÐÎ޵й¥»÷¼¼ÄÜ ID = %s, skillLv = %sisûÓб©»÷Ч¹ûÏî%s ID=%s, Lv=%s(R.R_RÝRtDef_Skill_Effect_SuperLinkAtkR›RyR#RRRßRèRét GetSkillFromOtherSkillByEffectIDtDef_Skill_Effect_PassiveSkillIDtGetSuperHitRatetisPassiveSkilltDef_Skill_Effect_SuperAtkSHittDef_MaxRateValuetfloattSetSuperHitRateRÔRàtSetAttackTargetPosR]R^RftDoLogic_UseSkill(R/R0RORR(tattackSkillEffR¯t
curSkillIDt attackSkillIDt attackSkillRŽtbeforeSuperHitRatet superHitEfft superHitRatet superHitPer((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR q    s8       ## c Csttjƒt|||||t|ƒ}t|||||gt|ƒ}    t||jƒ||tƒt|d||ƒt    ƒ}
x^|    D]V} t
j | ƒr£qˆnt j || |tj|dtd|
ƒt|| ||ƒqˆWxE|
D]=} |jƒj| ƒ}|sqéntj|d||ƒqéW|    rpt j||    d|tjƒt j ||    d|tj|ƒndS(NRoR}i(R6RcR R“RÎtSync_SkillHurtListRyRTR#R€R;RhRJRKRtTriggerType_StormAttackOneByOneR.RiR`RaR_RbRvtTriggerType_StormAttackReduceCDtTriggerType_StormAttackOver( R/R©RªRORlRmR¬RR–RÒR}RôRq((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytSwordStormAttack±    s*
       cCstjƒdS(N(R6Rc(((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytClearSkillHurtListö    scCs•|dkrtjSxxttjƒƒD]d}tj|ƒ}tj|j    ƒ|j
ƒƒ}|dkrkq&ntj ||ƒsƒq&n|j ƒSWtjS(N( R#RtDef_HurtType_NormalRdR6R8R9RRCR?R@RüRA(R0RÁRRR˜((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt GetHurtType
s   c Cs‡tjƒtj|ƒ}t|||||t|ƒ}    t|    ||||ƒ}    t|||    t|ƒ}
t||||
|||ƒt    S(N(
R6RcRDRER R“R™t__DoAreaAttackLostHPRÊRj( R/R0R©RªRORRÌR¬RqR–RÒ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttackerSkillAttackAreaLostHP 
s
c     Csíg}t}xÚ|D]Ò}dt|ƒt|ƒdf}tjt|ƒ}    |    sVqn|sxtj|||ƒt}ntj    |ƒ}
|j
dƒj dƒt t jƒ} t|
| ƒ} |    |||| d||ƒ|j|ƒqW|S(Ns%s_Attack_%s.%sRUi(R.R+RR-RR_R`RjRDRÕt    GetEffectRßRRRRÔR>( R/ROR–t skillHurtListRRÒt checkComboOKR&RÖR2t curObjMaxHpRÄRË((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR(?
s"      %c    CsÓ|s
dStjƒj|ƒ}|s)dStj|ƒ}|rZ|jƒ|jƒ}}n|jƒ|jƒ}}tjd||fƒtj    ƒd}    t
j |ƒ}
g} |j ƒ} xÂt d| ƒD]±} |j| ƒ}|dkròqËn|jƒ}|tjtjgkrqËn|jƒr.qËnt
j |ƒdkrIqËn|jƒtkraqËntj|jƒ|ƒ}|s…qËntj||ƒ}|dkr©qËn|d}|j|ƒ}|sÎqËn|jƒ|ksË|jƒ|krøqËn|    s=|jƒ}tj|tjƒ}|s+qËn|jdƒ}    n|    t |j!ƒdƒ}t"|||d||ƒ| j#|ƒqËWt$||
d||ƒx6| D].}t%j&|ƒr¸qnt'||||ƒqWt(S(NsownerID---%s-%sii(()RRètGetSkillBySkillIDR_RœR\RRR6RcRDREtGetInSightObjCountRdtGetInSightObjByIndexR#RRRR't
GetVisibleR.RCtGetBuffManagerByBuffTypetFindBufft
GetOwnerIDt GetOwnerTypetGetSkillRÝRtDef_Skill_Effect_BoomSeedHurtRßRàtGetLayertDoAttackSingleR>R?R;RhRiRj(R/ROt
seedTypeIDRtownert    buffSkillR°townerIDt    ownerTypethurtPerRqRÒt seeObjCountRQtseeObjt
seeObjTypeRt    buffTuplet buffManagertbufft curBuffSkillt
hurtEffectRlRô((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttackDetonateSeed_
sn
 
$  cCs[dt|ƒt|ƒdf}tjt|ƒ}|s;dS||||||t|ƒ|S(Ns%s_Attack_%s.%sRU(R+RR-RR6(R/R&RORmRlRRÖR2((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR9¾
s c
Csàt|||||tƒ}x¾|D]¶}|jƒtjkrCq"n|jƒ}|jƒ}|sgq"n|jƒtjkr‚q"ntj|ƒ}    |    jƒ|jƒkr"|j    dƒt j |tj|    jƒdƒq"q"WdS(Ni( R R¡RRRRRRRRR#RtSync_SelectObj(
R/ROR©RªRR–R‘tcurTagIDt curActionObjt actionPlayer((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytCancelAreaActionedÔ
s    &c    Csa|jƒtjkrdStjƒ}|jƒ|jƒ|_tj|_||_    ||_
||_ x®t |j ƒƒD]š}|j|ƒ}tjƒ}|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jj|ƒqxWt|jƒ|_|j t!j"|ƒ|_#t$j%||dt&ddƒdS(Nt
notifySelft    notifyCntiÿÿÿÿ('RRRtChPyNetSendPackttagMCSkillHurtListRcR\tObjIDtObjTypetSkillIDtPosXtPosYRdR8R9ttagSkillPosHurtObjR@R?RAt
AttackTypeRHtHurtHPRItHurtHPExRJtCurHPRKtCurHPExtHurtListR>R×t    HurtCounttNomalDictGetPropertyRtDef_PDict_SkillElementIDtSkillElementIDRt PyNotifyAllRj(    R)R}R‚RƒR+tsendPackRQRRRS((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR ø
s0 
              c Cs‚tjƒ}|jƒ|jƒ|_|jƒ|_||_||_||_    ||_
x®t |j ƒƒD]š}|j |ƒ}    tjƒ}
|    jƒ|
_|    jƒ|
_|    jƒ|
_|    jƒ|
_|    jƒ|
_|    jƒ|
_|    jƒ|
_|jj|
ƒqkWt|jƒ|_|jƒtj krb|j!t"j#|ƒ|_$t%j&|||dƒn|j'|j(ƒ|j)ƒƒdS(Niÿÿÿÿ(*t ChNetSendPackttagUseSkillPosRcR\RRRRSt
BattleTypeRTRURVRdR8R9RWR@R?RARXRHRYRIRZRJR[RKR\R]R>R×R^RRR_RR`RaRRbt    NotifyAllt    GetBuffert    GetLength( R/R}RVRZR[R+RNRcRQRRRS((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRP s2 
                 c Cs™|jƒ}|r|jƒnd}tjƒ}|jƒ|jƒ|_tj|_    ||_
||_ ||_ ||_ xÞt|jƒƒD]Ê}    |j|    ƒ}
||krÑtj|
jƒ|
jƒƒrÑqŒntjƒ} |
jƒ| _    |
jƒ| _|
jƒ| _|
jƒ| _|
jƒ| _|
jƒ| _|
jƒ| _|j j!| ƒqŒWt"|j ƒ|_#|j$t%j&|ƒ|_'t(j)||ƒdS(Ni(*R·RyRdReRcR\RRRRRSRfRTRURVRdR8R9RftisClientHurtValueR?R@RWRARXRHRYRIRZRJR[RKR\R]R>R×R^R_RR`Rat NetPackCommont SendFakePack( R)R}RVRZR[R+RÁt
useSkillIDRcRQRRRS((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRQ> s6  
                 * (nR;RRRRaRR_RRÏR~R¦R6Rft
EventShellR¥R    RVR.R€RDRPRdRkRJR¹t IPY_HurtListR6RR t    ImportAllRR+R,R3R7R:RTR.RuRiR…R“R™R#R´RÃR¡RÄRÍRÐRÓRÑRÛRçRðRÊRÎRR RRRRRR R,R+R{ReR&R>R?R@RCRÏR^R7RnRBRRhR’RmR×RlRÞR8RèR4R5RôRðRúRöRþR÷RR R R$R%R'R)R(RHR9RMR RPRQ(((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt<module>sÖ                              :    2                     0R             6    (-    <                *     ! /        ,           29    ( &        "                         V        N            @    T    ;    #            -        I         &        4<            P&    %    @    E    
    !      _        $        '