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
Á¡dhc@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„ZlddV„ZmdW„ZndS(Xiÿÿÿÿ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.pytGetObjAttackNameys4                               !         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.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,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ŸOscCs¢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ÂVsc         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.pytAreaSkillAttackLostHPps
 )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.pytGetIsEnhanceSkillGroup5s!!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ÈPs"   # 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.pyRNs*   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.pyRus   
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_AttackSucess0s
!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.pytDoAreaAttackSuccessFs
 
 
c
 
Csctj||ƒ}|jtjƒ}|d|}|sœtjƒdkrytjd|j    ƒ|j
ƒtjƒfƒntj dƒ}t |||ƒdS|j ƒ}tj|d|tjƒ}|rÒ|}n|sp|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]|jtjdƒr8|jtjdƒ}|jtjdƒ}    n|jƒ}|jƒ}    t|||||    ttƒdS|jƒ|jƒ}}    |jƒtjkr|j ƒdkrÌ|jƒ|jƒ}}    nt|||||    tt|ƒt|||||    tƒnX|jtjƒr@|jtjƒ}|jtjƒ}    nt|||||    tt|ƒdS(Ni
isk __Sync_AttackResult attackErr, attackerName = %s,                                 ID = %s, hurtCount = %s ii    (!R9t GetBattleTypeRöRtDef_Obj_Dict_TurnBattleTypeR4R6RRtGetNameRZR7tPYView_BaseAttackRwRHt#GetPassiveSkillValueByTriggerTypeExR"tTriggerType_ChangeSkillEffRRRtGetUseSkillPosXtGetUseSkillPosYtPYView_UseSkillPosR,tPYView_UseSkillPos_NotifySelftDef_NPC_Dict_AtkMovePosXtDef_NPC_Dict_AtkMovePosYtDef_NPC_Dict_SkillWarnPosXtDef_NPC_Dict_SkillWarnPosYR[R\Rè(
R-R.RMt
battleTypetturnBattleTypetcurHurtR{t changeSkillIDt useSkillPosXt useSkillPosY((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÍXsb          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.pyRhscCsí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?RRARRmRHRItTriggerType_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?RHRpRtTriggerType_HitValuetDef_SkillType_LstPlsBuffAtkRcR@tsetRRARBRCRRRDRERFRGRIR"RJRKtTriggerType_HurtObjAddBuffRmtTriggerType_SuperHitOneByOnetTriggerType_BeSuperHittOnPetPassiveSkillTriggertDef_HurtType_MisstTriggerType_MissSkilltDef_HurtType_LuckyHittTriggerType_BeLuckyHittDef_RealAttack_Typet!TriggerType_Buff_BeAttackSubLayerRZR[R]R\(R-RLRMRtusePassiveSkillResulttusePassiveSkillResultOnSuperHitRNRORPRwRQRuRvR;R.Rkt passiveSkill((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytOnHurtTypeTriggerSkill;s`,     # 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ˆRcRtDef_SkillType_AtkR^tDef_SkillFuncType_FbSkilltDef_SkillFuncType_PetSkilltDef_SkillFuncType_NormalAttackRHRKtTriggerType_Buff_AttackSubLayertDef_CanAttackSkill_ListRaRItTriggerType_AttackOvertTriggerType_AttackOverPassivetAttackFaintRatetTriggerType_SkillOverNoAttacktTriggerType_SkillSuccesstTriggerType_SkillSuccessExpend(R-R.RMR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRb‚s1cCstj|ƒ}|sdS|jƒtjkr©|ri|jƒ}|sJdS|jƒ|jƒkridSn|s©|jƒ}|jƒ}t    j
||ƒ}|s¦dSq©n|s³dS|j ƒ|j ƒkrÏdStj |ƒdkrèdStj |ƒ}tjddƒ}    tt||dƒ|    ƒ}
t    j|
ƒs8dStjddƒ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(RBt GetFaintRateRRRt GetUseSkillRwRùRúRRARZRCtGetFaintDefRatet IpyGameDataPYt
GetFuncCfgtminRÞt    CanHappenRöRtDef_PlayerKey_AttrFaintCDRRER]tAddBuffBySkillTypetDef_SkillID_AtkerFaint(R-R.RMRt    faintRatet useSkillDataRýRþttagFaintDefRatetmaxRatetratetfaintCDtlastTickt
remainTick((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR‘£sL   
  &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.pyRgàs&       %     
" cCsdS(N((R'R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__DealWithPassivityBuffscCsœtj|ƒr"tj|dƒn|jƒ}tj|ƒ}||krltjd|jƒ||fƒn|dkr˜tj|tj|ƒ|ƒndS(Nis%Êͷż¼ÄÜ = %sÒì³£, HPµã = %s²»×ã = %s(    R]t    isXPSkillRBtSetXPRCRRR˜tSetHP(R–RMRt lostHPValuet curPlayerHP((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRf s        cCsdS(N((R'RLRlR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__DealWithPassivitySkill5s c    Csi|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|||ƒt||||ƒtS(Nii(t SetAttackTickRÍR˜RfRZR[tSetUseSkillTickR]R\RöRtDef_NPC_Dict_SkillUseCntRERœtDef_UpperLimit_DWordRRR#t
PetControlt GetPetOwnerR"RBRCRcRdR9ReR4tDoOverNPCAttackSuccessRbRh(    RÀt
curNPCBeHPRLRMRRkt curNPCSkilltuseCntR'((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR6Ls(   *!!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›tBreakPlayerCollecttSetIsNeedProcessRhRcRRŽ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•RRORuR%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ÖXscCsG|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__IsAlreadyAttackrs  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(NRmRwi(R4RaRžR‘RÌtSync_SkillHurtListRwRRR"RzR9RfRHRIRtTriggerType_StormAttackOneByOneR,RgRZR[R]R\RptTriggerType_StormAttackReduceCDtTriggerType_StormAttackOver( R-R§R¨RMRjRkRªRR”RÐRwRòRk((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytSwordStormAttackf    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.pyRs
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
AttackTypet    GetHurtHPtHurtHPt GetHurtHPExtHurtHPExtGetCurHPtCurHPt
GetCurHPExtCurHPExtHurtListR<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 
              cCsøtjƒ}|jƒ|jƒ|_|jƒ|_|jƒ|_|j    ƒ|_
||_ |j ƒ|_ |jƒ|_|jƒ|_|jƒ|_|jƒ|_tjƒj|jƒƒ}|rØ|j|ƒdS|j|jƒ|jƒƒdS(N(t ChNetSendPackttagObjBaseAttackRaRZt
AttackerIDRtAttackerObjTypeR=R2R>R3t
BattleTypeR?R8R9tValueR;tValueExR=tRemainHPR?t
RemainHPExt
TurnAttacktGetTurnFightMgrtgetNPCTurnFightt
addBatPackt    NotifyAllt    GetBuffert    GetLength(R-RRRPRGt    turnFight((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyREÊ
s$ 
     c Csétjƒj|jƒƒ}|rgtjƒ}    |jƒ|    _|jƒ|    _||    _    ||    _
|ro|jƒnd|    _ |rŠ|jƒnd|    _ x®t |jƒƒD]š}
|j|
ƒ} tjƒ} | jƒ| _| jƒ| _| jƒ| _| jƒ| _| jƒ| _| jƒ| _| jƒ| _|    jj| ƒq¦Wt|    jƒ|    _ |j!|    ƒdStj"ƒ}    |    j#ƒ|jƒ|    _|jƒ|    _||    _    ||    _
||    _$||    _%x®t |jƒƒD]š}
|j|
ƒ} tj&ƒ} | jƒ| _| jƒ| _| jƒ| _| jƒ| _| jƒ| _| jƒ| _| jƒ| _|    jj| ƒqÒWt|    jƒ|    _ |jƒt'j(krÉ|j)t*j+|ƒ|    _,t-j.||    |dƒn|j/|    j0ƒ|    j1ƒƒdS(Niiÿÿÿÿ(2RQRRRSRZRHttagUseSkillAttackR2RR3RLR4tAttackIDt AttackObjTypeRbR6R7ttagSkillHurtObjR>R=R?R8R9R:R;R<R=R>R?R@RAR<RÕRBRTttagUseSkillPosRaR5R6R7RRRCRRDRER›RFRURVRW( R-R{RPRTRUR R.R.RXRGRORPRQ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRJã
s`            
                 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˜RwRHR]RaRZR2RRR3RLR4R5R6RbR6R7RdtisClientHurtValueR=R>R7R?R8R9R:R;R<R=R>R?R@RAR<RÕRBRCRRDREt NetPackCommont SendFakePack( R'R{RPRTRUR R¢t
useSkillIDRGRORPRQ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRK$ s6  
                 * (oR9RRR›R_RR]RR°R|R¤R4RdRÃRéRTR,R~RBR0RHR_RHRšRQt 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ÍRXR5RhR@RˆRbR‘RgR¸RfR¾R6RÉR2R3RÔRÐRÚRÖRÞR×RäRìRëRRRR    RR(RR-RRERJRK(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt<module>sØ                              :    /                     0Q             6    (-    <                *     ! /        ,           29    ( &        "                         U        L            G    !    =    #            )        D         &        0<            L&    %    @    E    
    !      _        $         A