hxp
2025-05-29 f08058713e574c675579ca5ccbfabeb1e6702cf0
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
¤8hc@s}ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZejƒadZdZejddƒejddƒd„Zd„Zd    „Zd
„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„Z/d„Z0e$dd„Z1d„Z2ge$de$d„Z3e$d„Z4d „Z5d!„Z6d"„Z7d#„Z8dd$„Z9ddd%„Z:d&„Z;dd'„Z<d(„Z=d)„Z>ddd*„Z?d+„Z@d,„ZAd-„ZBd.„ZCdejDd/„ZEd0„ZFe$d1„ZGejDd2„ZHd3„ZId4„ZJd5„ZKd6„ZLd7„ZMd8„ZNd9„ZOd:„ZPd;„ZQd<„ZRd=„ZSd>„ZTd?„ZUd@„ZVdA„ZWdB„ZXge$dC„ZYdD„ZZge$dE„Z[dF„Z\dG„Z]dH„Z^ge$dI„Z_dJ„Z`dK„ZadL„ZbdM„ZcdN„Zde$ddO„ZedP„ZfddQ„ZgdR„ZhdS„ZidT„ZjdU„ZkdV„ZldS(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((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt ReloadAttack>s
cCsB|jƒ}d}|tjkr*d}n|tjkr>|jƒ}|jƒ}|tjkrid}q>|tjkrd}q>|tjkr™d}q>|tj    kr±d}q>|tj
krÉd}q>|tj krád}q>|tj kr#t |d    ƒr|jƒdkrd
}q;d}q>|tjkr>d }q>n|S( NtUnknowntPlayertGuardtFuncNPCtDeert DefenceMaxNPCt    GoldenEggt    NormalNPCtGetOwnert    SummonNPCtPet(tGetGameObjTypet IPY_GameWorldt    gotPlayertgotNPCtGetGameNPCObjTypetGetTypetntGuardt ntFunctionNPCtntDeert ntDefenceMaxt ntGoldenEggt
gnotNormalt
gnotSummonthasattrRtNonetgnotPet(tobjt
curObjTypetresultt
npcObjTypetnpcType((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytGetObjAttackNamexs4                               !         cCsHtjtdt|ƒt|ƒdfƒ}|s5tS|||||ƒS(Ns%s_Attack_%s.%st GetCanAttack(Rt GetExecFuncRR)tFalse(tattackertdefendertskillRtcallFunc((siD:\SG_ServerCode\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-R.R/RR0((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR1½s         cCstS(N(tg_skillHurtList(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytGetSkillHurtListÌscCstjƒrtjdƒSdS(Ni(R4t GetHurtCountt    GetHurtAtR"(((siD:\SG_ServerCode\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 AttackCommontClearFirstDefendertxrangeR4R6R7tappendtGetObjIDt
GetObjTypet GetAttackTypetOnHurtTypeTriggerSkillFirstObjRtGetObjtGameObjtGetHPRRRtDef_HurtType_ZhanshatSetDicttDef_PlayerKey_ZhanshatDef_HurtType_ZhognjiZhanshatPassiveBuffEffMngtOnPassiveSkillTriggerR"tTriggerType_WillDeadtOnPassiveBuffTrigger(    R-ttargettcurSkillRtskillHurtListstithurtObjthurtListR.((siD:\SG_ServerCode\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*R1tType_Relation_EnemyRR+RR)R"tLogtGetIDRBRCtGetPosXtGetPosYt SkillCommontUpdateSkillCombot    NPCCommontGetSkillEnhanceR4tCleartranget__AttackSuccesst
SkillShelltDoLogic_UseEnhanceSkillRRR9t    GetIsDeadtDoLogic_AttackResulttTrue(R-R.tuseSkillRt skillPercentt skillEnhancet
attackTimetisEnhanceSkilltrelationR0t
attackerHPtdestXtdestYROtindance((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttack sD               #  
"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)RYRZR,RBRCRERtDef_NPCDead_KillerTypeRtDef_NPCDead_KillerIDRRt
GetSkillIDtDef_NPCDead_ReasontDoBeAttackOverRh(R-R.RiRt
resultFunctskillID((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRg]s     #cCs&tjdƒ}tj|||ƒdS(Ni(t
ItemCommontCreateSingleItemtChItemtAddMapDropItem(tposXtposYt curSingleItem((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytTestQunzscCs2|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,RBRCRtGetNPC_Is_GateR9tCheckCanAttackTagR1RRXRdtGetSkillAffectTagt Def_UseSkillTag_CanAttackBaseNPCRRRtGetMapt GetMapFBTypetfbtNullt    GetIsBosstDef_NPCType_Ogre_SupertDef_UseSkillTag_CanAttackPlayerRtCheckPlayerAttackDistRh(R-tcurTagRMRRntcurSkillUseTag((siD:\SG_ServerCode\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(    RdR†RtDef_Dict_UseSkillTag_ObjTypetgetRR‘RZR<(t
resultListR-R.RMRRt hurtTypeListtcurObj((siD:\SG_ServerCode\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—tCheckCanAddBuffRRR_t IsSummonNPCtGetSummonOwnerDetelR"RdtGetAddBuffValuet    BuffSkillt    DoAddBufft AddBuffOverR,Rh(R-R.RMtsrcPosXtsrcPosYRt
isTeamBufft skillMatrixt attackObjTypetcurSkillTypeIDt
curSkillLVtbuffTypeR”Rt addAngryObjt useSkillOwnertaddBuffValueList((siD:\SG_ServerCode\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,RdR†RtDef_UseSkillTag_FriendNPCtDef_UseSkillTag_CanAttackNPCRt GetNPCManagerR;t GetNPCCountt GetNPCByIndexRZRRR t
GetCountryR<tDef_UseSkillTag_PlayerHasHPRR˜R™R]RšR R£R¤R¥R¦Rh(t curObjDetelRMRt    attackDisR”Rt isFriendObjtgameNPCManagertindextcurNPCR¬R­R®RR±((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytSkillAddAuraBuffs@ %    cCs>|jƒtjkr(t||||ƒStj||||ƒS(N(RRRtCheckNPCSkillTagIsBeInfectionRdtCheckTag_DoPlayerUseSkillTag(R-R.RMR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRŸNscCs¢tj|ƒ}|tjkr]|jƒtjkr7tSt||||ƒ}|dtj    kS|tj
kr|r‹t j |ƒdkr‹t StSt||||ƒS(Ni(RdR†RR´RRRR,R1tType_Relation_FriendtDef_UseSkillTag_AppointNPCRBRCRhR‘(R-RMR.RRRn((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÂUsc         Cs¥tjƒtj|ƒ}    t|||||t|ƒ}
t|
||||ƒ}
x3|
D]+} tj| |j    ƒ|||dt
ƒqVWt ||||
|    ||ƒdS(NtisDoAttackResult( R4RaRBRCRžR‘R—R]t SkillLostHPR˜R,t__DoAreaAttackResult( R-R.R§R¨RMtlostHPRt    isExSkillRªRoR”R$((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAreaSkillAttackLostHPos
 )c        Csltjƒ|g}t|||||gt|ƒt|||ƒt||||ƒt||||ƒtS(N(R4Rat__DoAreaAttackt__Sync_AttackResultRRRgRh(    R-R.R§R¨RMRjRkRR”((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttackAreaDefenderNotify…s
     c
Cstjƒtj|ƒ}
t|||||t|    ƒ} t| ||||ƒ} t||||| t|ƒ} t|||| |
||ƒt    S(N(
R4RaRBRCRžR‘R—t__DoAreaAttackByHPPerRÈRh( R-R.R§R¨RMRjRkRRÊRªRoR”t
attackList((siD:\SG_ServerCode\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.%sRSi(R)RR+RtintRBtGetMaxHPR<( R-RMRkRjR”R4RRÐR$tcallNameR0((siD:\SG_ServerCode\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( R4RaRBRCRžR‘R—tlenRÌRÈRh(R-R.R§R¨RMRjRkRt    powerListRÊRªt isAverageHurtRoR”t    resultCntRÐ((siD:\SG_ServerCode\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(R4RaRBRCRžR‘R—RRRt GetFamilyIDR<R]tGetSkillEffectByEffectIDRtDef_Skill_Effect_AvgHurtFMCnttGetEffectValueRÕtmaxtextendRÌRÈRh(R-R.R§R¨RMRjRkRRÊRoR”t
resultDictR$tfamilyIDt skillEffectt minSkillPerRÐtcnt((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttackerSkillAttackAreaByFamilys0
     " cCs’|s
tStjƒj||jƒƒ}|s2tS|jƒdkrHtStj|ƒrŽ|jƒdkrŽt    j
|ƒt j t j gkrŽtStS(Nii(R,Rt GetGameDatatFindSkillByTypeR™t
GetAtkTypeRhR]tIsBuffRdR†RtDef_UseSkillTag_SelftDef_UseSkillTag_SelfAndFriend(RMtenhanceSkillIDt enhanceSkill((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytGetIsEnhanceSkillGroup4s!!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( RRRRctGetSkillEnhance1tGetSkillEnhance2RîRdtSkillTrigSkillRRR9RfRg(    R-R.RMRÐRoRRmRìtdefObj((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÈOs"   # c     Cs¥g}x˜|D]}    dt|ƒt|    ƒdf}
tjt|
ƒ} | sPq n|gkrt|jdƒ\}}n| ||    |||||ƒ|j|    ƒq W|S(Ns%s_Attack_%s.%sRSi(R)RR+RtpopR<( R-RMRkRjR”RÖR4RRÐR$RÔR0((siD:\SG_ServerCode\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    amContestRRAt GetDictByKeyRtDef_PlayerKey_SelectObjIDtDef_PlayerKey_SelectObjTypetGetUseSkillTagIDtGetUseSkillTagTypeRdR†RµR_tGetNpcObjOwnerIsPlayer(R-RMt    CheckFuncRRt useSkillTagIDtuseSkillTagType((siD:\SG_ServerCode\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](tlistRdR†RR’R“R"RtErrLogtGetClientHurtDictRARötDef_PlayerKey_ClientCustomSceneRµR_RûtGetDistR[R\tGetSighttDebugLogRZR<( R-RMRRüR”RR•thurtDicttobjInfoR%R((siD:\SG_ServerCode\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(RRdR†RR’R“R"RRR³t
MatrixDicttDef_SearchMap_PlayertDef_SearchMap_NPCRwR]tGetSkillArea_Atk_CountRRRR_R¡tGetSummonNPCOwnerRt GetPlayerIDRÿR<t ServerByPostServerByMapPlayertServerByMapNPC(R-RMR§R¨RRüRªR”RR•R¼t    hurtCountt ownerPlayerIDtisSummonNPCAtkert ownerPlayert    attackAim((siD:\SG_ServerCode\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    GetPosObjRbt GetObjCountt GetObjByIndext __SearchCheckR<(R-RMRRªRR§R¨R•RRRüRRR”townerTagtgameMaptcurPostmapObjROR–R((siD:\SG_ServerCode\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"R9tCheckSightLevelRRARZRRµR_RûRR(R-RMRR–R•RRRüRRR”RR%R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRMs*   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"RZRR<(R-RMRR•RRRüRRR”RR¾R¿RÀRR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRts   
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(    RtGetMapCopyPlayerManagerRbtGetPlayerCounttGetPlayerByIndexR"tIsEmptyRR<(R-RMRR•RRRüRRR”RtcopyMapPlayerManagerROt    curPlayerRR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRs   
cCsEtj||ƒr%t||||ƒSt|||||||ƒSdS(N(RdtIsPlayerUseSkillR    R(R-RMR§R¨RRüRª((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRž¯scCst||ƒdS(N(t__DR_PlayerDead(R-R.RiR((siD:\SG_ServerCode\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ŠRRRBRCRZtGetMapIDtDataRecordPackt DR_PlayerDead(R-R.t defenderTypet
atkObjTypetatkObjIDtmapID((siD:\SG_ServerCode\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__DoNPCBeAttackedRRYtFBLogicRy(R-R.RMRR.((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRyês  cCsq|jƒ}|tjkr1t|||||ƒS|tjkrVt|||||ƒStjd|jƒƒtS(Ns¹¥»÷´íÎó : %d (    RRRt__DoPlayerAttackSuccessRt__DoNPCAttackSuccessRRYR,(R-RoRLRMRt attackerType((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRcs cCsQtjƒ|dkr;|dkr;tj|t||ƒnt|||||ƒS(Ni(R4RaR"R9tAddHurtRc(R-t attackerBeHPRLRMRtvaluethurtType((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoAttackSuccesss
cCst|||||ƒS(N(Rc(R-R9RLRMR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoAttackSuccessEx#scCsE|r
tSt|tj|ƒ|||ƒ}tj||||ƒ|S(N(RhR<RBRCRdRe(R-R.RMRRmR&((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoSkillEx_AttackSucess/s
!c
Csmtjƒd}xDtt|ƒƒD]0}||}||}    tj|t||    ƒq#Wt|||||ƒS(N(R4RaR"RbRÕR9R8Rc(
R-R9t
targetListt    valueListRMRR;RLR¿R:((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoAreaAttackSuccessEs
 
 
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    ('R4R6RRtGetNameRZR7t
BaseAttackR=R>R9t GetBattleTypeR?t    GetHurtHPt GetHurtHPExtGetCurHPt
GetCurHPExRwRHt#GetPassiveSkillValueByTriggerTypeExR"RtTriggerType_ChangeSkillEffRRRtGetUseSkillPosXtGetUseSkillPosYtPYView_UseSkillPosR,tPYView_UseSkillPos_NotifySelfRötDef_NPC_Dict_AtkMovePosXtDef_NPC_Dict_AtkMovePosYtDef_NPC_Dict_SkillWarnPosXtDef_NPC_Dict_SkillWarnPosYR[R\Rè(    R-R.RMtcurHurtR{t changeSkillIDt
battleTypet useSkillPosXt useSkillPosY((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÍWsb1          cCsitjƒd}tj|ƒtjkrU|jƒ}|jƒ}t    j
||ƒ}nt |||ƒdS(N( R4RaR"RdtGetSkillFireAimRtDef_UseSkillAim_ObjRùRúRRARÍ(R-RMR.RýRþ((siD:\SG_ServerCode\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 UseSkillOverRRRhR9R:R"t GetSkillTypetDef_NoBattleState_ListtSetPlayerBattleStatetSetSkillLostAttrtSetSkillLostItemt IsSkipSkillCDR4tDoFBAttackedOver(R't curPlayerBeHPRLRMRt skillTypeIDtcurPlayerSkill((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR5Â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;R4R6R7R?RtDef_HurtType_SuperHitRhRHt GetValueByPassiveBuffTriggerTypeR"tTriggerType_SuperHitSkipCDt!GetPassiveSkillValueByTriggerType(R'RLRMRt
isSuperHitRORP((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRjscCsítjƒdkrdStjdƒ}|s/dS|jƒ|jƒ|jƒ}}}tj||ƒ}|sqdS|tj    kr»t
j |||tj |ƒt
j |||tj |ƒn.|tjkrét
j |||tj|ƒndS(Ni(R4R6R7R=R>R?RRARRoRHRItTriggerType_SuperHitRKtDef_HurtType_ThumpHittTriggerType_ThumpHit(R-RMRRPtobjIDtobjTypeR;R.((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR@#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(.RhR;R4R6R7R<R=R>R?RHRrRtTriggerType_HitValuetDef_SkillType_LstPlsBuffAtkReR@tsetRRARBRCRRRDRERFRGRIR"RJRKtTriggerType_HurtObjAddBuffRotTriggerType_SuperHitOneByOnetTriggerType_BeSuperHittOnPetPassiveSkillTriggertDef_HurtType_MisstTriggerType_MissSkilltDef_HurtType_LuckyHittTriggerType_BeLuckyHittDef_RealAttack_Typet!TriggerType_Buff_BeAttackSubLayerR\R]R]R^(R-RLRMRtusePassiveSkillResulttusePassiveSkillResultOnSuperHitRNRORPRyRQRwRxR;R.Rmt passiveSkill((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytOnHurtTypeTriggerSkill9s`,     # 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ŠReRtDef_SkillType_AtkR`tDef_SkillFuncType_FbSkilltDef_SkillFuncType_PetSkilltDef_SkillFuncType_NormalAttackRHRKtTriggerType_Buff_AttackSubLayertDef_CanAttackSkill_ListRcRItTriggerType_AttackOvertTriggerType_AttackOverPassivetAttackFaintRatetTriggerType_SkillOverNoAttacktTriggerType_SkillSuccesstTriggerType_SkillSuccessExpend(R-R.RMR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRd€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 GetUseSkillRwRùRúRRARZRBRCtGetFaintDefRatet IpyGameDataPYt
GetFuncCfgtminRÞt    CanHappenRöRtDef_PlayerKey_AttrFaintCDRRER]tAddBuffBySkillTypetDef_SkillID_AtkerFaint(R-R.RMRt    faintRatet useSkillDataRýRþt tagFaintRatetmaxRatetratetfaintCDtlastTickt
remainTick((siD:\SG_ServerCode\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˜RZtGetCountR,tDR_UseSkilLostItemtGetGUIDRat ItemControlert SetItemCounttGetAccIDt GetPlayerName(R'RMt    useItemIDt useItemCounttitemt    itemCount((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRiÛs&       %     
" cCsdS(N((R'R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__DealWithPassivityBuffþscCsz|jƒ}tj|ƒ}||krJtjd|jƒ||fƒn|dkrvtj|tj|ƒ|ƒndS(Ns%Êͷż¼ÄÜ = %sÒì³£, HPµã = %s²»×ã = %si(RCRBRRR˜tSetHP(R'RMRt lostHPValuet curPlayerHP((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRhs        cCsdS(N((R'RLRnR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__DealWithPassivitySkill9s 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_SkillUseCntRERtDef_UpperLimit_DWordRRR#t
PetControlt GetPetOwnerR"RBRCReRfR9RgR4tDoOverNPCAttackSuccessRdRh(    RÀt
curNPCBeHPRLRMRRmt curNPCSkilltuseCntR'((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR6Ps&   *!!cCsdS(N((RÀRM((siD:\SG_ServerCode\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(RBRCR›tBreakPlayerCollecttSetIsNeedProcessRhReRRRHtDelayUsePassiveTriggerSkillRIR"tTriggerType_BeAttackOverRKR€(R-R'RMR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR2œs cCshtj|ƒdkrdS|jƒtjkr2dStj|ƒ|jƒdkrd|jd|ƒndS(NitNPCBeAttackedAI1(    RBRCRRRR_tSetNPCInBattleStateR‹RE(RÀRMR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR3Âs c
Csltjƒtj|ƒ}
t|ƒ} tƒ} t||||| | |ƒ} t|||| |
||    ƒtS(N(    R4RaRBRCR)Rt__DoNextDefenderExRÈRh( R-R.RMR§R¨t
skillValuet skillPerListRRÖRÊRot attackObjNameR”((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytChainAttackAreaExÔs
     c
Csítj|ƒ}tjj|ƒ}|dkrBtjd|ƒ|Stjƒ}    x˜t    t
|ƒƒD]„}
|    j ƒ|
\} } | |krqantj | | ƒ} | s­qant || |||||
t|ƒsØqan|j| ƒqaW|S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %s(RdR†RR’R“R"RRRRbRÕtkeysRAt
__DoAttackR4R<(R-RMRÐRÑRÒR”RRR•RRORwR%R((siD:\SG_ServerCode\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"RRRwR,R4RaRÕRBRCR)RÕRˆRR<Rbt__DoNextDefenderRÈRh(R-R.RMR§R¨RÐRÑRRÖRÊR¼Rªt attackTimeSumRoRÒRR”tsrcPosR¿((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytChainAttackAreas0      
             c
Cst||||ƒsdSd|t|ƒdf}tjt|ƒ}    |    sNdStj|||ƒ|    |||||||ƒtS(Ns%s_Attack_%s.%sRS(R‘R)RR+RR]R^Rh(
R-R.RMRÒRÐtskillPerR4RRÔR0((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÕYscCsG|dkrtSx0|D](}|s)qntj||ƒrtSqWtS(N(R"RhRt    IsSameObjR,(RR”ttag((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__IsAlreadyAttackss  c  Cs‚t} tj|ƒ} tjj| ƒ} | dkrHtjd| ƒ| Sx3|D]+}| r_Pn|    j    |d|d|d|dƒ}|s•qOnxât
d|j ƒƒD]Ë}|j |ƒ}|j ƒ}|| krÞq«ntj|jƒ|ƒ}|sq«nt||ƒrq«nt|||||||t|
ƒsBq«n|j|ƒ|jƒ|d<|jƒ|d<t} Pq«WqOW| S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %sii(R,RdR†RR’R“R"RRRRbRRRRARZRÝRÕR4R<R[R\Rh(R-RMRÐRÑRÒRØR¿R”RªRRt    isSucceedRR•RR ROR–R%R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR֐s>  *       c 
Csðtjƒg} tj|ƒ} t|||||tƒ} t| ||||ƒx}| D]u}tj|j    ƒ|j
ƒ|j    ƒ|j
ƒƒ}|||}t |||||g|    t|ƒ}| j |ƒqWWt |||| | ||
ƒtS(N(R4RaRBRCRžR‘R—RRR[R\RÌRßRÈRh(R-R.R§R¨RMRjRkt    changePerRRÖRmRÐRoR”ttagObjtdistRÚttmpList((siD:\SG_ServerCode\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-RMRR&R.R”((siD:\SG_ServerCode\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™RwR"RRRÝRæRçt GetSkillFromOtherSkillByEffectIDtDef_Skill_Effect_PassiveSkillIDtGetSuperHitRatetisPassiveSkilltDef_Skill_Effect_SuperAtkSHittDef_MaxRateValuetfloattSetSuperHitRateRÒRÞtSetAttackTargetPosR[R\RdtDoLogic_UseSkill(R-R.RMRR&tattackSkillEffR­t
curSkillIDt attackSkillIDt attackSkillR‰tbeforeSuperHitRatet superHitEfft superHitRatet superHitPer((siD:\SG_ServerCode\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(NRmRyi(R4RaRžR‘RÌtSync_SkillHurtListRwRRR"R|R9RfRHRIRtTriggerType_StormAttackOneByOneR,RgR\R]R]R^RrtTriggerType_StormAttackReduceCDtTriggerType_StormAttackOver( R-R§R¨RMRjRkRªRR”RÐRyRòRm((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytSwordStormAttackg    s*
       cCstjƒdS(N(R4Ra(((siD:\SG_ServerCode\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_NormalRbR4R6R7RRAR=R>RÛR?(R.R¿RPR–((siD:\SG_ServerCode\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(
R4RaRBRCRžR‘R—t__DoAreaAttackLostHPRÈRh( R-R.R§R¨RMRRÊRªRoR”RÐ((siD:\SG_ServerCode\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.%sRSi(R,R)RR+RR]R^RhRBRÓt    GetEffectRÝRóRRòRÒR<( R-RMR”t skillHurtListRRÐt checkComboOKR$RÔR0t curObjMaxHpR¦RÉ((siD:\SG_ServerCode\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šRZRRR4RaRBRCtGetInSightObjCountRbtGetInSightObjByIndexR"RRRR%t
GetVisibleR,RAtGetBuffManagerByBuffTypetFindBufft
GetOwnerIDt GetOwnerTypetGetSkillRÛRtDef_Skill_Effect_BoomSeedHurtRÝRÞtGetLayertDoAttackSingleR<R=R9RfRgRh(R-RMt
seedTypeIDRtownert    buffSkillR®townerIDt    ownerTypethurtPerRoRÐt seeObjCountROtseeObjt
seeObjTypeRàt    buffTuplet buffManagertbufft curBuffSkillt
hurtEffectRjRò((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttackDetonateSeed
sn
 
$  cCs[dt|ƒt|ƒdf}tjt|ƒ}|s;dS||||||t|ƒ|S(Ns%s_Attack_%s.%sRS(R)RR+RR4(R-R$RMRkRjRRÔR0((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRt
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-RMR§R¨RR”RtcurTagIDt curActionObjt actionPlayer((siD:\SG_ServerCode\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ÿÿÿÿ('RRRtChPyNetSendPackttagMCSkillHurtListRaRZtObjIDtObjTypetSkillIDtPosXtPosYRbR6R7ttagSkillPosHurtObjR>R=R?t
AttackTypeREtHurtHPRFtHurtHPExRGtCurHPRHtCurHPExtHurtListR<RÕt    HurtCounttNomalDictGetPropertyRtDef_PDict_SkillElementIDtSkillElementIDR›t PyNotifyAllRh(    R'R{R€RR
tsendPackRORPRQ((siD:\SG_ServerCode\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 ChNetSendPackttagUseSkillPosRaRZR1RR2t
BattleTypeR3R4R5RbR6R7R6R>R=R?R7RER8RFR9RGR:RHR;R<R<RÕR=RRR>RR?R@R›RAt    NotifyAllt    GetBuffert    GetLength( R-R{RURVRWR
R-RBRORPRQ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRMÍ
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™RwRCRDRaRZR1RRR2RER3R4R5RbR6R7RdtisClientHurtValueR=R>R6R?R7RER8RFR9RGR:RHR;R<R<RÕR=R>RR?R@t NetPackCommont SendFakePack( R'R{RURVRWR
R£t
useSkillIDRBRORPRQ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRNô
s6  
                 * (mR9RRR›R_RR]RR±R|R¤R4RdRÂRèRTR,R~RBR/RCRJRHR›t IPY_HurtListR4R R t    ImportAllRR)R*R1R5R8RRR,RsRgRƒR‘R—R"R²RÁRŸRÂRËRÎRÑRÏRÙRåRîRÈRÌRÿR    RRRRRRžR*R)RyRcRR<R=R>RARÍRZR5RjR@RŠRdR“RiR¹RhR½R6RÈR2R3RÓRÏRÙRÕRÝRÖRãRëRêRRRRRR'RR,RÿRMRN(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt<module>sÔ                             :    /                     0Q             6    (-    <                *     ! /        ,           29    ( &        "                         T        L            G    !    :    #            2        A         &        0<            L&    %    @    E    
    !      _        $        '