hwj35
2025-06-23 aa0f971ae9a59f0fd98d57b6c1d1663a270be92c
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
adÚgc@s•ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZejƒadZdZejddƒejddƒd„Zd„Z d    „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„Z0e&dd„Z1d„Z2e&dd„Z3d„Z4ge&de&d„Z5e&d„Z6d „Z7d!„Z8d"„Z9d#„Z:dd$„Z;ddd%„Z<d&„Z=dd'„Z>d(„Z?d)„Z@ddd*„ZAd+„ZBd,„ZCd-„ZDd.„ZEdejFd/„ZGd0„ZHe&d1„ZIejFd2„ZJd3„ZKd4„ZLd5„ZMd6„ZNd7„ZOd8„ZPd9„ZQd:„ZRd;„ZSd<„ZTd=„ZUd>„ZVd?„ZWd@„ZXdA„ZYdB„ZZge&dC„Z[dD„Z\ge&dE„Z]dF„Z^dG„Z_dH„Z`ge&dI„ZadJ„ZbdK„ZcdL„ZddM„ZedN„Zfe&ddO„ZgdP„ZhddQ„ZidR„ZjdS„ZkdT„ZldU„ZmdV„ZndS(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.pytGetObjAttackNamezs8                               !             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|jƒtjkr7tj|tjtjƒs7tSnt    ||||ƒsPtS|jƒtjkr”t
||||ƒd}|tj kr”dSnt j tdt|ƒt|ƒdfƒ}    |    dkròt jd|jƒ|jƒfƒtStj|ƒ}
|jƒ} |jƒ} tj|||ƒ|jƒtjkrW|tj|ƒ7}ntjƒx5td|ƒD]$} |    |||||t|ƒ}qqW|sÔt||
|||ƒtj ||||| | ƒnt!||||ƒt"j#|ƒrútSt$||||ƒt%S(Nis%s_Attack_%s.%stDoAttacks%d Attack %d Error !(&RRRtOperControlManagertIsObjCanDoActionRtDef_Obj_ActState_ServerSkilltDef_Action_Attack_BitR.R,R3tType_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.pytAttacksD               #  
"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.pytTestQun€scCs2|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¡TscCs¢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Ä[sc         Cs¥tjƒtj|ƒ}    t|||||t|ƒ}
t|
||||ƒ}
x3|
D]+} tj| |j    ƒ|||dt
ƒqVWt ||||
|    ||ƒdS(NtisDoAttackResult( R6RcRDRER R“R™R_t SkillLostHPRšR.t__DoAreaAttackResult( R/R0R©RªROtlostHPRt    isExSkillR¬RqR–R&((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAreaSkillAttackLostHPus
 )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.pytGetIsEnhanceSkillGroup:s!!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ÊUs"   # 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.pyRSs*   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.pyRzs   
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||||ƒn9|tjkrct|||ƒ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_AttackSucess5s
!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.pytDoAreaAttackSuccessKs
 
 
c        Cs…|s²tjƒdkrGtjd|jƒ|jƒtjƒfƒngtjdƒ}|j|jƒ|j    ƒt
j ||ƒ|j ƒ|j ƒ|jƒ|jƒ|jƒƒdS|jƒ}tj|d|tjƒ}|rè|}nt
j ||ƒ}|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ƒr`|jtj"dƒ}|jtj#dƒ}n|j$ƒ}|j%ƒ}t|||||ttƒdS|j$ƒ|j%ƒ}}|jƒtjkr,|j&ƒdkrô|jƒ|jƒ}}nt|||||ttƒt|||||tƒnU|jtj ƒre|jtj ƒ}|jtj!ƒ}nt|||||ttƒdS(Nisk __Sync_AttackResult attackErr, attackerName = %s,                                 ID = %s, hurtCount = %s ii    ('R6R8RRtGetNameR\R9t
BaseAttackR?R@R;t GetBattleTypeRAt    GetHurtHPt GetHurtHPExtGetCurHPt
GetCurHPExRyRJt#GetPassiveSkillValueByTriggerTypeExR#RtTriggerType_ChangeSkillEffRRRtGetUseSkillPosXtGetUseSkillPosYtPYView_UseSkillPosR.tPYView_UseSkillPos_NotifySelfRøtDef_NPC_Dict_AtkMovePosXtDef_NPC_Dict_AtkMovePosYtDef_NPC_Dict_SkillWarnPosXtDef_NPC_Dict_SkillWarnPosYR]R^Rê(    R/R0ROtcurHurtR}t changeSkillIDt
battleTypet useSkillPosXt useSkillPosY((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÏ]sb1          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.pyRlscCsí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@RARRCRRqRJRKtTriggerType_SuperHitRMtDef_HurtType_ThumpHittTriggerType_ThumpHit(R/RORRRtobjIDtobjTypeR=R0((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRB+s&c Csft}t}g}x]ttjƒƒD]I}tj|ƒ}|sFq%n|j|jƒ|jƒ|jƒgƒq%Wt    j
|||t j ƒ|r¹t j |jƒkr¹t|||ƒntƒ}    xU|D]M}
|
\} } } tj| | ƒ}|süqÉntj|ƒdkrÙ| tjkrÉ| t jkrE|jt jdƒn%| t jkrj|jt jdƒnt    j||dt j|ƒt    j||dt j|ƒ| t jt jgkrÓ|jt jdƒqÓqÉqÉn|rt    j|||t j|d|    ƒ}n|rB| t j krBt    j|||t j!|d|    ƒ}n| t j krŒt    j||dt j"|ƒt    j#||dt j"|ƒn\| t j$krºt    j||dt j%|ƒn.| t j&krèt    j#||dt j'|ƒn| t j(krÉt    j||dt j)|ƒqÉqÉWxE|    D]=}|j*ƒj+|ƒ}|sHq!nt,j-|d||ƒq!WdS(Niiit
skillIDSet(.RjR=R6R8R9R>R?R@RARJRtRtTriggerType_HitValuetDef_SkillType_LstPlsBuffAtkRgRBtsetRRCRDRERRRFRGRHRIRKR#RLRMtTriggerType_HurtObjAddBuffRqtTriggerType_SuperHitOneByOnetTriggerType_BeSuperHittOnPetPassiveSkillTriggertDef_HurtType_MisstTriggerType_MissSkilltDef_HurtType_LuckyHittTriggerType_BeLuckyHittDef_RealAttack_Typet!TriggerType_Buff_BeAttackSubLayerR^R_R_R`(R/RNRORtusePassiveSkillResulttusePassiveSkillResultOnSuperHitRPRQRRR{RSRyRzR=R0Rot passiveSkill((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytOnHurtTypeTriggerSkillAs`,     # c
Cset||||ƒ| sS|jƒtjkrr|jƒtjtjtjgkrrtj    |||tj
|ƒn| s£|jƒtj ks£|jƒtj kr tj |||tj|ƒtj    |||tj|ƒtj |||tj|ƒt||||ƒntj |||tj|ƒtj |||tj|ƒtj |||tj|ƒdS(N(RŒRgRtDef_SkillType_AtkRbtDef_SkillFuncType_FbSkilltDef_SkillFuncType_PetSkilltDef_SkillFuncType_NormalAttackRJRMtTriggerType_Buff_AttackSubLayertDef_CanAttackSkill_ListReRKtTriggerType_AttackOvertTriggerType_AttackOverPassivetAttackFaintRatetTriggerType_SkillOverNoAttacktTriggerType_SkillSuccesstTriggerType_SkillSuccessExpend(R/R0ROR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRfˆs1cCs|jƒtjkrdStj|ƒ}|s2dS|rm|jƒ}|sNdS|jƒ|jƒkrmdSn|sª|jƒ}|jƒ}t    j
||ƒ}|sªdSn|j ƒ|j ƒkrÆdSt j |ƒdkrßdS|jƒtjkrtj|ƒnd}tjddƒ}    tt||dƒ|    ƒ}
t    j|
ƒsJdStjddƒd} | ræ|jtjƒ} | || } | dkr¶t    jd|
| f|j ƒƒdS|jtj|ƒt    jd|
|j ƒƒntj|tj|ƒdS(NitPassiveSkillFaintiiiès»÷ÔÎCDÖÐ! rate=%s,Ê£Óàtick=%ss´¥·¢»÷ÔÎ! rate=%s(RRRRt GetFaintRatet GetUseSkillRyRûRüRRCR\RDREtGetFaintDefRatet IpyGameDataPYt
GetFuncCfgtminRàt    CanHappenRøRtDef_PlayerKey_AttrFaintCDRRGR_tAddBuffBySkillTypetDef_SkillID_AtkerFaint(R/R0RORt    faintRatet useSkillDataRÿRt tagFaintRatetmaxRatetratetfaintCDtlastTickt
remainTick((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR•©sJ   *  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.pyRkãs&       %     
" cCsdS(N((R)R((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__DealWithPassivityBuffscCsz|jƒ}tj|ƒ}||krJtjd|jƒ||fƒn|dkrvtj|tj|ƒ|ƒndS(Ns%Êͷż¼ÄÜ = %sÒì³£, HPµã = %s²»×ã = %si(RERDRRRštSetHP(R)RORt lostHPValuet curPlayerHP((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRjs        cCsdS(N((R)RNRpR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__DealWithPassivitySkillAs c    CsY|j|ƒt|||ƒ|r°|jƒ}|jƒj|ƒ}|sMn#|j|ƒtj|d||ƒ|jt    j
|ƒ}|j t    j
|t |dt    j ƒƒn|jƒtjkr/tj|ƒ}|dkr/tj|ƒdkr/|dks|jƒt    jkr,tj||ƒq,q/ntj|||ƒt||||ƒtS(Nii(t SetAttackTickRÏRšR^R_tSetUseSkillTickR_R`RøRtDef_NPC_Dict_SkillUseCntRGRŸtDef_UpperLimit_DWordRRR%t
PetControlt GetPetOwnerR#RDRERgRhR;RiR6tDoOverNPCAttackSuccessRfRj(    RÂt
curNPCBeHPRNRORRot curNPCSkilltuseCntR)((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR8Xs&   *!!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tBreakPlayerCollecttSetIsNeedProcessRjRgRR’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|ƒndS(NitNPCBeAttackedAI1( RDRERRR$RRRatSetNPCInBattleStateRRG(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.pytChainAttackAreaExàs
     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    RQRyR'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.pytChainAttackArea+s0      
             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×iscCsG|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.pytSuperLinkRandomAttack    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ì;    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^R_R_R`RttTriggerType_StormAttackReduceCDtTriggerType_StormAttackOver( R/R©RªRORlRmR¬RR–RÒR{RôRo((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ßRõRRôRÔ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
seeObjTypeRât    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.pyRˆ
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¡RRRRRæRRçRèR#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
AttackTypeRGtHurtHPRHtHurtHPExRItCurHPRJtCurHPExtHurtListR>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\R3RR4t
BattleTypeR5R6R7RdR8R9R8R@R?RAR9RGR:RHR;RIR<RJR=R>R>R×R?RRR@RRARBRRCt    NotifyAllt    GetBuffert    GetLength( R/R}RWRXRYR R/RDRQRRRS((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyROá
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›RyRERFRcR\R3RRR4RGR5R6R7RdR8R9RftisClientHurtValueR?R@R8RAR9RGR:RHR;RIR<RJR=R>R>R×R?R@RRARBt NetPackCommont SendFakePack( R)R}RWRXRYR R¥t
useSkillIDRDRQRRRS((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRP s6  
                 * (oR;RRRRaRR_RR³R~R¦R6Rft
EventShellRÄRêRVR.R€RDR1RERLRJt PlayerGeTuiR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{ReRR>R?R@RCRÏR\R7RlRBRŒRfR•RkR»RjR¿R8RÊR4R5RÕRÑRÛR×RßRØRåRíRìRRRR
R    R)RR.RRORP(((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt<module>sØ                               :    2                     0Q             6    (-    <                *     ! /        ,           29    ( &        "                         T        N            G    !    :    #            2        A         &        4<            P&    %    @    E    
    !      _        $        '