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
Žsthc@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%j&|||ƒ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_AttackResultt
TurnAttacktOnTurnfightAttackResulttTrue(R-R.tuseSkillRt skillPercentt skillEnhancet
attackTimetisEnhanceSkilltrelationR0t
attackerHPtdestXtdestYROtindance((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttack sF               #  
"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_ReasontDoBeAttackOverRj(R-R.RkRt
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_CanAttackPlayerRtCheckPlayerAttackDistRj(R-tcurTagRMRRptcurSkillUseTag((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,Rj(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¨Rj(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¡QscCs¢tj|ƒ}|tjkr]|jƒtjkr7tSt||||ƒ}|dtj    kS|tj
kr|r‹t j |ƒdkr‹t StSt||||ƒS(Ni(RdRˆRR¶RRRR,R1tType_Relation_FriendtDef_UseSkillTag_AppointNPCRBRCRjR“(R-RMR.RR’Rp((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÄXsc         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¬RqR–R$((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAreaSkillAttackLostHPrs
 )c        Cstjƒ|g}t|||||gt|ƒt|||ƒt||||ƒt||||ƒtj|||ƒtS(N(    R4Rat__DoAreaAttackt__Sync_AttackResultRRRgRhRiRj(    R-R.R©RªRMRlRmRR–((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ÊRj( R-R.R©RªRMRlRmRRÌR¬RqR–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-RMRmRlR–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ÊRj(R-R.R©RªRMRlRmRt    powerListRÌR¬t isAverageHurtRqR–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ÊRj(R-R.R©RªRMRlRmRRÌRqR–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
GetAtkTypeRjR]tIsBuffRdRˆRtDef_UseSkillTag_SelftDef_UseSkillTag_SelfAndFriend(RMtenhanceSkillIDt enhanceSkill((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytGetIsEnhanceSkillGroup7s!!c    
Cs2|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éWt j|||ƒdS(Ni(RRRRctGetSkillEnhance1tGetSkillEnhance2RðRdtSkillTrigSkillRRR9RfRgRhRi(    R-R.RMRÒRqRRoRîtdefObj((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÊRs""   # 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-RMRmRlR–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_NPCRyR]tGetSkillArea_Atk_CountRRRR_R£tGetSummonNPCOwnerRt GetPlayerIDRR<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.pyRQs*   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.pyRxs   
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.RkR((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__DoNPCBeAttackedRRYtFBLogicR{(R-R.RMRR0((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR{îs  cCsq|jƒ}|tjkr1t|||||ƒS|tjkrVt|||||ƒStjd|jƒƒtS(Ns¹¥»÷´íÎó : %d (    RRRt__DoPlayerAttackSuccessRt__DoNPCAttackSuccessRRYR,(R-RqRLRMRt attackerType((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRc
s 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-R;RLRMR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoAttackSuccessEx'scCsE|r
tSt|tj|ƒ|||ƒ}tj||||ƒ|S(N(RjR>RBRCRdRe(R-R.RMRRoR&((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoSkillEx_AttackSucess3s
!c
Csmtjƒd}xDtt|ƒƒD]0}||}||}    tj|t||    ƒq#Wt|||||ƒS(N(R4RaR"RbR×R9R:Rc(
R-R;t
targetListt    valueListRMRR=RLRÁR<((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytDoAreaAttackSuccessIs
 
 
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_BaseAttackRyRHt#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Ï[sb          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 UseSkillOverRRRjR9R:R"t GetSkillTypetDef_NoBattleState_ListtSetPlayerBattleStatetSetSkillLostAttrtSetSkillLostItemt IsSkipSkillCDR6tDoFBAttackedOver(R)t curPlayerBeHPRLRMRt skillTypeIDtcurPlayerSkill((siD:\SG_ServerCode\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;R4R6R7R?RtDef_HurtType_SuperHitRjRHt 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(.RjR;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.pytOnHurtTypeTriggerSkill>s`,     # c
Cskt||||ƒ| sY|jƒtjkrx|jƒtjtjtjtjgkrxt    j
|||tj |ƒn| s©|jƒtj ks©|jƒtj krt    j|||tj|ƒt    j
|||tj|ƒt    j|||tj|ƒt||||ƒnt    j|||tj|ƒt    j|||tj|ƒt    j|||tj|ƒdS(N(RŠReRtDef_SkillType_AtkR`tDef_SkillFuncType_FbSkilltDef_SkillFuncType_PetSkilltDef_SkillFuncType_NormalAttackt Def_SkillFuncType_TurnNormaSkillRHRKtTriggerType_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…s 1cCstj|ƒ}|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 GetUseSkillRyRûRüRRARZRCtGetFaintDefRatet IpyGameDataPYt
GetFuncCfgtminRàt    CanHappenRøRtDef_PlayerKey_AttrFaintCDRRER]tAddBuffBySkillTypetDef_SkillID_AtkerFaint(R-R.RMRt    faintRatet useSkillDataRÿRttagFaintDefRatetmaxRatetratetfaintCDtlastTickt
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.pyRiäs&       %     
" cCsdS(N((R)R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__DealWithPassivityBuffscCsdS(N((R˜RMR((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    Csi|j|ƒt|||ƒtj|||ƒ|rÓ|jƒ}t|||ƒ|jƒj|ƒ}|spn#|j|ƒt    j
|d||ƒ|j t j |ƒ}|jt j |t|dt jƒƒn|jƒtjkrRtj|ƒ}|dkrRtj|ƒdkrR|dks9|jƒt jkrOtj||ƒqOqRnt||||ƒtS(Nii(t SetAttackTickRÏRhtOnTurnfightAttackSuccessRšRhR\R]tSetUseSkillTickR]R^RøRtDef_NPC_Dict_SkillUseCntRERŸtDef_UpperLimit_DWordRRR#t
PetControlt GetPetOwnerR"RBRCReRfR9RgRdRj(    RÂt
curNPCBeHPRLRMRRmt curNPCSkilltuseCntR)((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR8Ps(   *!!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tBreakPlayerCollecttSetIsNeedProcessRjReRR‘RHtDelayUsePassiveTriggerSkillRIR"tTriggerType_BeAttackOverRKR€(R-R)RMR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyR4Ÿ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.pyR5Ås c
Csltjƒtj|ƒ}
t|ƒ} tƒ} t||||| | |ƒ} t|||| |
||    ƒtS(N(    R4RaRBRCR)Rt__DoNextDefenderExRÊRj( R-R.RMR©Rªt
skillValuet skillPerListRRØRÌRqt 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—R    RORwR%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"RRRyR,R4RaR×RBRCR)RÔRŠRR<Rbt__DoNextDefenderRÊRj(R-R.RMR©RªRÏRÐRRØRÌR¾R¬t attackTimeSumRqRÑR R–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^Rj(
R-R.RMRÑRÏtskillPerR4RRÖR0((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRÔ\scCsG|dkrtSx0|D](}|s)qntj||ƒrtSqWtS(N(R"RjRt    IsSameObjR,(R‘R–ttag((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt__IsAlreadyAttackvs  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\Rj(R-RMRÏRÐRÑR×RÁR–R¬R Rt    isSucceedR’R—R!R"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ÊRj(R-R.R©RªRMRlRmt    changePerRRØRoRÒRqR–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›RyR"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(NRoRyi(R4RaR R“RÎtSync_SkillHurtListRyRRR"R|R9RfRHRIRtTriggerType_StormAttackOneByOneR,RgR\R]R]R^RrtTriggerType_StormAttackReduceCDtTriggerType_StormAttackOver( R-R©RªRMRlRmR¬RR–RÒRyRôRm((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytSwordStormAttackj    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ÊRj( R-R.R©RªRMRRÌR¬RqR–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^RjRBRÕ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(j)|d|ƒt*S(NsownerID---%s-%sii((+RRètGetSkillBySkillIDR]RœRZRRR4RaRBRCtGetInSightObjCountRbtGetInSightObjByIndexR"RRRR't
GetVisibleR,RAtGetBuffManagerByBuffTypetFindBufft
GetOwnerIDt GetOwnerTypetGetSkillRÝRtDef_Skill_Effect_BoomSeedHurtRßRàtGetLayertDoAttackSingleR<R?R9RfRgRhRiRj(R-RMt
seedTypeIDRtownert    buffSkillR°townerIDt    ownerTypethurtPerRqRÒt seeObjCountROtseeObjt
seeObjTypeRßt    buffTuplet buffManagertbufft curBuffSkillt
hurtEffectRlRô((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pytAttackDetonateSeed
sp
 
$  cCs[dt|ƒt|ƒdf}tjt|ƒ}|s;dS||||||t|ƒ|S(Ns%s_Attack_%s.%sRS(R)RR+RR4(R-R$RMRmRlRRÖR0((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRx
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 PyNotifyAllRj(    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=R0R>R1t
BattleTypeR?R6R7tValueR9tValueExR;tRemainHPR=t
RemainHPExRhtGetTurnFightMgrtgetNPCTurnFightt
addBatPackt    NotifyAllt    GetBuffert    GetLength(R-RTRRREt    turnFight((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRGÏ
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ÿÿÿÿ(2RhRORPRZRFttagUseSkillAttackR0RR1RJR2tAttackIDt AttackObjTypeRbR6R7ttagSkillHurtObjR>R=R?R6R7R8R9R:R;R<R=R>R?R<R×R@RQttagUseSkillPosRaR3R4R5RRRARRBRCRRDRRRSRT( R-R}RRRVRWR    R,R.RURERORPRQ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRLè
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›RyRFRZRaRZR0RRR1RJR2R3R4RbR6R7RdtisClientHurtValueR=R>R5R?R6R7R8R9R:R;R<R=R>R?R<R×R@RARRBRCt NetPackCommont SendFakePack( R)R}RRRVRWR    R¥t
useSkillIDRERORPRQ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyRM) s6  
                 * (oR9RRRR_RR]RR³R~R¦R6RdRÂRçRTR.R€RBR.RFR\RHRRht IPY_HurtListR4RR t    ImportAllRR)R*R1R5R8RRR,RuRgR…R“R™R"R´RÃR¡RÄRÍRÐRÓRÑRÛRçRðRÊRÎRR RRRRRR R,R+R{RcRR>R?R@RCRÏRZR7RjR@RŠRdR”RiR»RhR¼R8RÇR4R5RÒRÎRØRÔRÜRÕRâRêRéRRRRRR&RR+RþRGRLRM(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\BaseAttack.pyt<module>sØ                              :    /                     0S             6    (-    <                *     ! /        -           29    ( &        "                         U        L            G    "    =    #            )        D         &        0<            L&    %    @    E    
    !      `        $         A