cehua_lyf
2019-03-06 3c8ee0a8a524a6251d7d5aae2372e76fd8a99b9c
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
¾ùR\c@s†ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZejƒadZdZejddƒejddƒd„Z d„Z!d    „Z"d
„Z#d „Z$d „Z%d dd e&d„Z'd„Z(d„Z)d„Z*d„Z+e&dd„Z-d„Z.d„Z/d„Z0e&dd„Z1d„Z2e&dd„Z3d„Z4ge&de&d„Z5e&d„Z6d„Z7d„Z8d „Z9d!„Z:dd"„Z;ddd#„Z<d$„Z=dd%„Z>d&„Z?d'„Z@ddd(„ZAd)„ZBd*„ZCd+„ZDd,„ZEdejFd-„ZGd.„ZHe&d/„ZIejFd0„ZJd1„ZKd2„ZLd3„ZMd4„ZNd5„ZOd6„ZPd7„ZQd8„ZRd9„ZSd:„ZTd;„ZUd<„ZVd=„ZWd>„ZXge&d?„ZYd@„ZZge&dA„Z[dB„Z\dC„Z]dD„Z^ge&dE„Z_dF„Z`dG„ZadH„ZbdI„ZcdJ„Zde&ddK„ZedL„ZfddM„ZgdN„ZhdO„ZidP„ZjdQ„ZkdR„ZldS(Siÿÿÿÿ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((s.\\BaseAttack.pyt ReloadAttackAs
cCsZ|jƒ}d}|tjkr*d}n,|tjkrV|jƒ}|jƒ}|tjkrid}qV|tjkrd}qV|tjkr™d}qV|tj    kr±d}qV|tj
krÉd}qV|tj krád}qV|tj kr#t |d    ƒr|jƒdkrd
}qSd}qV|tjkr;d }qV|tjkrVd }qVn|S( NtUnknowntPlayertGuardtFuncNPCtDeert DefenceMaxNPCt    GoldenEggt    NormalNPCtGetOwnert    SummonNPCtTrucktPet(tGetGameObjTypet IPY_GameWorldt    gotPlayertgotNPCtGetGameNPCObjTypetGetTypetntGuardt ntFunctionNPCtntDeert ntDefenceMaxt ntGoldenEggt
gnotNormalt
gnotSummonthasattrRtNonet    gnotTrucktgnotPet(tobjt
curObjTypetresultt
npcObjTypetnpcType((s.\\BaseAttack.pytGetObjAttackName{s8                               !             cCsHtjtdt|ƒt|ƒdfƒ}|s5tS|||||ƒS(Ns%s_Attack_%s.%st GetCanAttack(Rt GetExecFuncRR+tFalse(tattackertdefendertskillRtcallFunc((s.\\BaseAttack.pyR,­s         cCsTtjtdt|ƒt|ƒdfƒ}|sAtjtjfS|||||ƒS(Ns%s_Attack_%s.%stGetTagRelation(RR-RR+RtType_Relation_NonetDef_PASysMessage_None(R/R0R1RR2((s.\\BaseAttack.pyR3Ãs         cCstjƒrtjdƒSdS(Ni(tg_skillHurtListt GetHurtCountt    GetHurtAtR#(((s.\\BaseAttack.pytGetFirstHurtObjÒs  c    CsŽg}x]ttjƒƒD]I}tj|ƒ}|s:qn|j|jƒ|jƒ|jƒgƒqWx!|D]}tj    |d|dƒ}|s™qmnt
j |ƒdkr´qmn|dt j krm|dtjkrð|jtjdƒn)|dtjkr|jtjdƒntj||dtj|ƒtj||dtj|ƒ|dtjtjgkr†|jtjdƒq†qmqmWdS(Niii(txrangeR6R7R8tappendtGetObjIDt
GetObjTypet GetAttackTypeRtGetObjtGameObjtGetHPRRRtDef_HurtType_ZhanshatSetDicttDef_PlayerKey_ZhanshatDef_HurtType_ZhognjiZhanshatPassiveBuffEffMngtOnPassiveSkillTriggerR#tTriggerType_WillDeadtOnPassiveBuffTrigger(    R/ttargettcurSkillRtskillHurtListstithurtObjthurtListR0((s.\\BaseAttack.pytOnHurtTypeTriggerPassiveSkillÝs*, iic    Cs|jƒtjkr7tj|tjtjƒs7tSnt    ||||ƒsPtS|jƒtjkr”t
||||ƒd}|tj kr”dSnt j tdt|ƒt|ƒdfƒ}    |    dkròt jd|jƒ|jƒfƒtStj|ƒ}
|jƒ} |jƒ} tj|||ƒ|jƒtjkrW|tj|ƒ7}ntjƒx5td|ƒD]$} |    |||||t|ƒ}qqW|sÔt||
|||ƒtj ||||| | ƒnt!||||ƒt"j#|ƒrútSt$||||ƒt%S(Nis%s_Attack_%s.%stDoAttacks%d Attack %d Error !(&RRRtOperControlManagertIsObjCanDoActionRtDef_Obj_ActState_ServerSkilltDef_Action_Attack_BitR.R,R3tType_Relation_EnemyRR-RR+R#tLogtGetIDR@RAtGetPosXtGetPosYt SkillCommontUpdateSkillCombot    NPCCommontGetSkillEnhanceR6tCleartranget__AttackSuccesst
SkillShelltDoLogic_UseEnhanceSkillRPt AttackCommont    GetIsDeadtDoLogic_AttackResulttTrue(R/R0tuseSkillRt skillPercentt skillEnhancet
attackTimetisEnhanceSkilltrelationR2t
attackerHPtdestXtdestYRMtindance((s.\\BaseAttack.pytAttacksD               #  
"cCs%tjtdt|ƒt|ƒdfƒ}|sXtjd|jƒ|jƒfƒtStj|ƒdkrû|j    t
j |j ƒƒ|j    t
j |jƒƒtj||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+RWRXR.R@RARCRtDef_NPCDead_KillerTypeRtDef_NPCDead_KillerIDt PlayerGeTuitTJGDeadtGetNameRRt
GetSkillIDtDef_NPCDead_ReasontDoBeAttackOverRg(R/R0RhRt
resultFunctskillID((s.\\BaseAttack.pyRfYs      #cCs&tjdƒ}tj|||ƒdS(Ni(t
ItemCommontCreateSingleItemtChItemtAddMapDropItem(tposXtposYt curSingleItem((s.\\BaseAttack.pytTestQunwscCs|s
tStj|ƒdkr#tStj|ƒr6tStj||ƒsLtSt||||ƒd}|tj    krxtSt
j |ƒ}|tj krê|j ƒtjkr¯tStjƒjƒtjkrÎtS|jƒtjkrtSn+|tjkr|j ƒtjkrtSntS(Ni(R.R@RARtGetNPC_Is_GateRdtCheckCanAttackTagR3RRVRbtGetSkillAffectTagt Def_UseSkillTag_CanAttackBaseNPCRRRtGetMapt GetMapFBTypetfbtNullt    GetIsBosstDef_NPCType_Ogre_SupertDef_UseSkillTag_CanAttackPlayerRRg(R/tcurTagRKRRmtcurSkillUseTag((s.\\BaseAttack.pyt__CheckCanAttack„s.cCs¢|s
|Stj|ƒ}tjj|ƒ}|s5|S|jƒ|krK|St||||ƒsd|Sx*|D]"}|jƒ|jƒkrk|SqkW|j|ƒ|S(N(    RbRˆRtDef_Dict_UseSkillTag_ObjTypetgetRR’RXR;(t
resultListR/R0RKRR‘t hurtTypeListtcurObj((s.\\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#RbtGetAddBuffValuet    BuffSkillt    DoAddBufft AddBuffOverR.Rg(R/R0RKtsrcPosXtsrcPosYRt
isTeamBufft skillMatrixt attackObjTypetcurSkillTypeIDt
curSkillLVtbuffTypeR•Rt addAngryObjt useSkillOwnertaddBuffValueList((s.\\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#RYRZRRRR.RbRˆRtDef_UseSkillTag_FriendNPCtDef_UseSkillTag_CanAttackNPCRt GetNPCManagerR:t GetNPCCountt GetNPCByIndexRXRR R!t
GetCountryR;tDef_UseSkillTag_PlayerHasHPRR™RšR[R›R¡R¤R¥R¦R§Rg(t curObjDetelRKRt    attackDisR•R‘t isFriendObjtgameNPCManagertindextcurNPCR­R®R¯RR²((s.\\BaseAttack.pytSkillAddAuraBuff
s@ %    cCs>|jƒtjkr(t||||ƒStj||||ƒS(N(RRRtCheckNPCSkillTagIsBeInfectionRbtCheckTag_DoPlayerUseSkillTag(R/R0RKR((s.\\BaseAttack.pyR FscCs¢tj|ƒ}|tjkr]|jƒtjkr7tSt||||ƒ}|dtj    kS|tj
kr|r‹t j |ƒdkr‹t StSt||||ƒS(Ni(RbRˆRRµRRRR.R3tType_Relation_FriendtDef_UseSkillTag_AppointNPCR@RARgR’(R/RKR0RR‘Rm((s.\\BaseAttack.pyRÃMsc         Cs¥tjƒtj|ƒ}    t|||||t|ƒ}
t|
||||ƒ}
x3|
D]+} tj| |j    ƒ|||dt
ƒqVWt ||||
|    ||ƒdS(NtisDoAttackResult( R6R_R@RARŸR’R˜R[t SkillLostHPR™R.t__DoAreaAttackResult( R/R0R¨R©RKtlostHPRt    isExSkillR«RnR•R&((s.\\BaseAttack.pytAreaSkillAttackLostHPgs
 )c        Csltjƒ|g}t|||||gt|ƒt|||ƒt||||ƒt||||ƒtS(N(R6R_t__DoAreaAttackt__Sync_AttackResultRPRfRg(    R/R0R¨R©RKRiRjRR•((s.\\BaseAttack.pytAttackAreaDefenderNotify}s
     c
Cstjƒtj|ƒ}
t|||||t|    ƒ} t| ||||ƒ} t||||| t|ƒ} t|||| |
||ƒt    S(N(
R6R_R@RARŸR’R˜t__DoAreaAttackByHPPerRÉRg( R/R0R¨R©RKRiRjRRËR«RnR•t
attackList((s.\\BaseAttack.pytAttackAreaByHPPer—s
 c     Csžg}x‘|D]‰}dt|ƒt|ƒdf}    tjt|    ƒ}
|
sPq nt|tj|ƒ|ƒ}|
||||d||ƒ|j|ƒq W|S(Ns%s_Attack_%s.%sRQi(R+RR-RtintR@tGetMaxHPR;( R/RKRjRiR•R6RRÑR&tcallNameR2((s.\\BaseAttack.pyRбs  c     CsÈtjƒtj|ƒ} t|||||t|
ƒ} t| ||||ƒ} | r‡t| ƒ}|dkr‡||:}||:}q‡nt||||| |t|ƒ}t    ||||| ||    ƒt
S(Ni( R6R_R@RARŸR’R˜tlenRÍRÉRg(R/R0R¨R©RKRiRjRt    powerListRËR«t isAverageHurtRnR•t    resultCntRÑ((s.\\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(R6R_R@RARŸR’R˜RRRt GetFamilyIDR;R[tGetSkillEffectByEffectIDRtDef_Skill_Effect_AvgHurtFMCnttGetEffectValueRÖtmaxtextendRÍRÉRg(R/R0R¨R©RKRiRjRRËRnR•t
resultDictR&tfamilyIDt skillEffectt minSkillPerRÑtcnt((s.\\BaseAttack.pytAttackerSkillAttackAreaByFamilyüs0
     " cCs’|s
tStjƒj||jƒƒ}|s2tS|jƒdkrHtStj|ƒrŽ|jƒdkrŽt    j
|ƒt j t j gkrŽtStS(Nii(R.Rt GetGameDatatFindSkillByTypeRšt
GetAtkTypeRgR[tIsBuffRbRˆRtDef_UseSkillTag_SelftDef_UseSkillTag_SelfAndFriend(RKtenhanceSkillIDt enhanceSkill((s.\\BaseAttack.pytGetIsEnhanceSkillGroup,s!!c    
Cs|sÆ| r5|r5|jƒtjkr5|d}nt|||||ƒx‹|jƒ|jƒgD][}t||ƒr¦xC|D]}tj|||||ƒq€Wqdtj|||||ƒqdWnt    ||||ƒx6|D].}t
j |ƒrûqànt ||||ƒqàWdS(Ni( RRRRatGetSkillEnhance1tGetSkillEnhance2RïRbtSkillTrigSkillRPRdReRf(    R/R0RKRÑRnRRlRítdefObj((s.\\BaseAttack.pyRÉGs"     c     Cs¥g}x˜|D]}    dt|ƒt|    ƒdf}
tjt|
ƒ} | sPq n|gkrt|jdƒ\}}n| ||    |||||ƒ|j|    ƒq W|S(Ns%s_Attack_%s.%sRQi(R+RR-RtpopR;( R/RKRjRiR•R×R6RRÑR&RÕR2((s.\\BaseAttack.pyRÍrs   cCs§|jƒtjkrdS|jƒ}|jƒ}tj||ƒ}|sMdStj    |ƒt
j kr{t j |ƒr{dSn|dkr£|||||ƒs£dSn|S(N(RRRR#tGetUseSkillTagIDtGetUseSkillTagTypeRR?RbRˆRR¶R]tGetNpcObjOwnerIsPlayer(R/RKt    CheckFuncRt useSkillTagIDtuseSkillTagTypeR((s.\\BaseAttack.pytGetAreaAttackAim’s   c Csmtƒ}tj|ƒ}tjj|ƒ}|dkrKtjd|ƒ|Stj    ƒ}x|D]}|d}    |    |kr€q^ntj
|d|    ƒ}
|
s¢q^n|tj krÉt j |
ƒrÉq^qÉntj|
jƒ|
jƒ|jƒ|jƒƒ|jƒkr.tjd|jƒ|
jƒfƒq^n|dkrX|||
||ƒsXq^qXn|j|
ƒq^W|S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %siis#--- ×îÔ¶¾àÀë·À·¶[%s-%s](tlistRbRˆRR“R”R#RtErrLogtGetClientHurtDictR?R¶R]R÷tGetDistRYRZtGetSighttDebugLogRXR;( R/RKRRøR•R‘R–thurtDicttobjInfoR'R((s.\\BaseAttack.pytCheckAreaObjClient«s2       
     <#     cCstƒ}tj|ƒ}tjj|ƒ}    |    dkrKtjd|ƒ|S|dkrÀ|j    ƒ}
tj
j|
dƒ}|dkrÀ|
t t gkrÀtjd|j ƒ|
tj
fƒ|Sntj||ƒ} d} |jƒtjkoùtj|ƒ} | r/tjtj|ƒ}|r/|jƒ} q/nt||||ƒ}|rd| 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(RüRbRˆRR“R”R#RRýR´t
MatrixDicttDef_SearchMap_PlayertDef_SearchMap_NPCRyR[tGetSkillArea_Atk_CountRRRR]R¢tGetSummonNPCOwnerRt GetPlayerIDRûR;t ServerByPostServerByMapPlayertServerByMapNPC(R/RKR¨R©RRøR«R•R‘R–R½t    hurtCountt ownerPlayerIDtisSummonNPCAtkert ownerPlayert    attackAim((s.\\BaseAttack.pytCheckAreaObjServerÛsF           $
  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    GetPosObjR`t GetObjCountt GetObjByIndext __SearchCheckR;(R/RKRR«RR¨R©R–RR‘RøRRR•townerTagtgameMaptcurPostmapObjRMR—R((s.\\BaseAttack.pyR s.   "  
c Cs|jƒ} | |krdS| s=tj|jƒ| ƒ} n| sGdS|ri|jƒ| jƒkridS|tjkrŽtj| ƒrŽdSn|dkr¶||| ||ƒs¶dSn|dkrù| t    j
krù|    rù||jƒkrù| } d| fS| dfS(Ni(NN(NN(NN(NN(NN( RR#RR?RXRR¶R]R÷RR(R/RKRR—R–RR‘RøRRR•RR'R((s.\\BaseAttack.pyR8s&   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#RXRR;(R/RKRR–RR‘RøRRR•RR¿RÀRÁRR((s.\\BaseAttack.pyR \s   
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(    RtGetMapCopyPlayerManagerR`tGetPlayerCounttGetPlayerByIndexR#tIsEmptyRR;(R/RKRR–RR‘RøRRR•RtcopyMapPlayerManagerRMt    curPlayerRR((s.\\BaseAttack.pyR us   
cCsEtj||ƒr%t||||ƒSt|||||||ƒSdS(N(RbtIsPlayerUseSkillRR(R/RKR¨R©RRøR«((s.\\BaseAttack.pyRŸ—scCst||ƒdS(N(t__DR_PlayerDead(R/R0RhR((s.\\BaseAttack.pytDoAttackResultCommon¥s cCs˜tjƒjƒtjkrdS|jƒ}|tjkr>dS|jƒdkrTdS|jƒ}|jƒ}tjƒj    ƒ}t
j ||||ƒdS(Ni( RRŠR‹RRŒRRRARXtGetMapIDtDataRecordPackt DR_PlayerDead(R/R0t defenderTypet
atkObjTypetatkObjIDtmapID((s.\\BaseAttack.pyR#³s   cCs”|dkrdS|jƒ}|tjkrAt||||ƒn9|tjkrct|||ƒntjd|jƒƒt    j
||||ƒdS(Ns±»¹¥»÷´íÎó : %d ( R#RRRt__DoPlayerBeAttackedRt__DoNPCBeAttackedRRWtFBLogicR{(R/R0RKRR(((s.\\BaseAttack.pyR{Òs  cCsq|jƒ}|tjkr1t|||||ƒS|tjkrVt|||||ƒStjd|jƒƒtS(Ns¹¥»÷´íÎó : %d (    RRRt__DoPlayerAttackSuccessRt__DoNPCAttackSuccessRRWR.(R/RnRJRKRt attackerType((s.\\BaseAttack.pyRaîs cCsQtjƒ|dkr;|dkr;tj|t||ƒnt|||||ƒS(Ni(R6R_R#RdtAddHurtRa(R/t attackerBeHPRJRKRtvaluethurtType((s.\\BaseAttack.pytDoAttackSuccesss
cCst|||||ƒS(N(Ra(R/R3RJRKR((s.\\BaseAttack.pytDoAttackSuccessEx scCsE|r
tSt|tj|ƒ|||ƒ}tj||||ƒ|S(N(RgR6R@RARbRc(R/R0RKRRlR(((s.\\BaseAttack.pytDoSkillEx_AttackSucesss
!c
Csmtjƒd}xDtt|ƒƒD]0}||}||}    tj|t||    ƒq#Wt|||||ƒS(N(R6R_R#R`RÖRdR2Ra(
R/R3t
targetListt    valueListRKRR5RJRÀR4((s.\\BaseAttack.pytDoAreaAttackSuccess-s
 
 
c    CsR|s©tjƒdkrGtjd|jƒ|jƒtjƒfƒn^tjdƒ}|j|jƒ|j    ƒt
j ||ƒ|j ƒ|j ƒ|jƒ|jƒƒdS|jƒ}t
j ||ƒ}|se|jƒtjkr¯|jƒ}|jƒ}|r¯|r¯|jƒtjkrSt|||||ttƒt|||||tƒnU|jtjƒrŒ|jtjƒ}|jtjƒ}nt|||||ttƒdSn|jtjƒrè|jtjƒ}|jtjƒ}n]|jtjdƒr-|jtjdƒ}|jtjdƒ}n|jƒ}|j ƒ}t|||||ttƒdS|jƒ|j ƒ}}|jƒtjkrù|j!ƒdkrÁ|jƒ|jƒ}}nt|||||ttƒt|||||tƒnU|jtjƒr2|jtjƒ}|jtjƒ}nt|||||ttƒdS(Nisk __Sync_AttackResult attackErr, attackerName = %s,                                 ID = %s, hurtCount = %s ii    ("R6R7RRýRxRXR8t
BaseAttackR<R=Rdt GetBattleTypeR>t    GetHurtHPtGetCurHPt
GetCurHPExRyRRRtGetUseSkillPosXtGetUseSkillPosYtPYView_UseSkillPosR.tPYView_UseSkillPos_NotifySelft GetDictByKeyRtDef_NPC_Dict_AtkMovePosXtDef_NPC_Dict_AtkMovePosYtDef_NPC_Dict_SkillWarnPosXtDef_NPC_Dict_SkillWarnPosYRYRZRé(R/R0RKtcurHurtR}t
battleTypet useSkillPosXt useSkillPosY((s.\\BaseAttack.pyRÎ?s\(      cCsitjƒd}tj|ƒtjkrU|jƒ}|jƒ}t    j
||ƒ}nt |||ƒdS(N( R6R_R#RbtGetSkillFireAimRtDef_UseSkillAim_ObjRõRöRR?RÎ(R/RKR0RùRú((s.\\BaseAttack.pytSync_AttackResults
  cCsŠtj|ƒrª|jƒ}|jƒj|ƒ}t|||ƒ|rhtj|tj|ƒ||ƒn|j    ƒt
j kr“t ||||ƒnt ||||ƒtS|dksË|jƒt
jkrÞtj||ƒnt|||ƒ|r]|jƒ}t|||ƒt||ƒ|jƒj|ƒ}|r]tj|tj|ƒ||ƒq]ntj||||ƒt ||||ƒtS(N(R[tGetUsingPassiveSkillR™tGetSkillManagertFindSkillBySkillTypeIDRÎtSetSkillRemainTimeRœtGetReduceSkillCDPert GetFuncTypeRtDef_SkillFuncType_GiftSkillt UseSkillOverRPRgR#t GetSkillTypetDef_NoBattleState_ListRdtSetPlayerBattleStatetSetSkillLostAttrtSetSkillLostItemR.tDoFBAttackedOver(R!t curPlayerBeHPRJRKRt skillTypeIDtcurPlayerSkill((s.\\BaseAttack.pyR/§s0 " 
  %
c Cst}t}t}g}x]ttjƒƒD]I}tj|ƒ}    |    sLq+n|j|    jƒ|    jƒ|    j    ƒgƒq+Wt
ƒ}
x±|D]©} | rÍ| dt j krÍt j|||t j|ƒt}ntj| d| dƒ} | sóqˆntj| ƒdkrà| dtjkrˆ| dt jkrD| jt jdƒn)| dt jkrm| jt jdƒnt j| |dt j|ƒt j| |dt j|ƒ| dt jt jgkrÚ| jt jdƒqÚqˆqˆn|r t j|| |t j|d|
ƒ}n|rM| dt j krMt j|| |t j|d|
ƒ}n| dt j kr›t j| |dt j|ƒt j | |dt j|ƒnd| dt j!krÍt j| |dt j"|ƒn2| dt j#krÿt j | |dt j$|ƒn| dt j%krˆt j| |dt j&|ƒqˆqˆWxE|
D]=} |j'ƒj(| ƒ}|scq<nt)j*|d||ƒq<WdS(Niiit
skillIDSet(+R.RgR:R6R7R8R;R<R=R>tsetRtDef_HurtType_SuperHitRFRGtTriggerType_SuperHitRR?R@RARRRBRCRDRER#RHRItTriggerType_HurtObjAddBufftTriggerType_SuperHitOneByOnetTriggerType_BeSuperHittOnPetPassiveSkillTriggertDef_HurtType_MisstTriggerType_MissSkilltDef_HurtType_LuckyHittTriggerType_BeLuckyHittDef_RealAttack_Typet!TriggerType_Buff_BeAttackSubLayerRRRSR[RT(R/RJRKRt
isSuperHittusePassiveSkillResulttusePassiveSkillResultOnSuperHitRLRMRNRbROR0R`t passiveSkill((s.\\BaseAttack.pytOnHurtTypeTriggerSkillñs`,         # c    Cst||||ƒ| sS|jƒtjkrr|jƒtjtjtjgkrrtj    |||tj
|ƒn| sŽ|jƒtj krøtj |||tj |ƒtj    |||tj |ƒtj |||tj|ƒt||||ƒntj |||tj|ƒdS(N(RtRYRtDef_SkillType_AtkRVtDef_SkillFuncType_FbSkilltDef_SkillFuncType_PetSkilltDef_SkillFuncType_NormalAttackRFRItTriggerType_Buff_AttackSubLayertDef_CanAttackSkill_ListRGtTriggerType_AttackOvertTriggerType_AttackOverPassivetAttackFaintRatetTriggerType_SkillOverNoAttack(R/R0RKR((s.\\BaseAttack.pyRX5sc    CsB|jƒtjkrdS|rT|jƒ}|s5dS|jƒ|jƒkrTdSn|s‘|jƒ}|jƒ}tj||ƒ}|s‘dSn|j    ƒ|j    ƒkr­dSt
j |ƒdkrÆdS|jƒtjkrêt j |ƒnd}ttt j|ƒ|dƒdƒ}tj|ƒs(dStj|tj|ƒdS(Niip(RRRt GetUseSkillRyRõRöRR?RXR@RARœtGetFaintDefRatetminRßt GetFaintRatet    CanHappenR[tAddBuffBySkillTypeRtDef_SkillID_AtkerFaint(    R/R0RKRt useSkillDataRùRút tagFaintRatetrate((s.\\BaseAttack.pyR}Rs0   *%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~tFindItemInPackByItemIDRtrptItemRRýR™RXtGetCountR&tDR_UseSkilLostItemtGetGUIDR_t ItemControlert SetItemCounttGetAccIDt GetPlayerName(R!RKt    useItemIDt useItemCounttitemt    itemCount((s.\\BaseAttack.pyR]|s&       %     
" cCsdS(N((R!R((s.\\BaseAttack.pyt__DealWithPassivityBuffŸscCsq|jƒ}|jƒ}||krGtjd|jƒ||fƒn|dkrm|j|jƒ|ƒndS(Ns%Êͷż¼ÄÜ = %sÒì³£, HPµã = %s²»×ã = %si(RARRýR™tSetHP(R!RKRt lostHPValuet curPlayerHP((s.\\BaseAttack.pyR\¨s        cCsdS(N((R!RJRaR((s.\\BaseAttack.pyt__DealWithPassivitySkillÚs c    CsV|j|ƒt|||ƒ|r°|jƒ}|jƒj|ƒ}|sMn#|j|ƒtj|d||ƒ|jt    j
|ƒ}|j t    j
|t |dt    j ƒƒn|jƒtjkr,tj|ƒ}|dkr,|jƒdkr,|dks|jƒt    jkr)tj||ƒq)q,ntj|||ƒt||||ƒtS(Nii(t SetAttackTickRÎR™RRRStSetUseSkillTickR[RTRERtDef_NPC_Dict_SkillUseCntRCRtDef_UpperLimit_DWordRRR%t
PetControlt GetPetOwnerR#RARYRZRdR[R.tDoOverNPCAttackSuccessRXRg(    RÁt
curNPCBeHPRJRKRR`t curNPCSkilltuseCntR!((s.\\BaseAttack.pyR0ñs&   *!cCsdS(N((RÁRK((s.\\BaseAttack.pyt__DealWithNPCPassSkill2scCsÀ|jƒdkrdStj|ƒtj|tƒ| sO|jƒtjkr¼tj    ||||ƒtj
||dtj |ƒtj ||dtj |ƒtj||dtj |ƒndS(Ni(RARœtBreakPlayerCollecttSetIsNeedProcessRgRYRRzRFtDelayUsePassiveTriggerSkillRGR#tTriggerType_BeAttackOverRIRi(R/R!RKR((s.\\BaseAttack.pyR,=s cCstj|ƒdkrdS|jƒtjkr2dS|jƒtjkrKdStj|ƒ|j    ƒdkr}|j
d|ƒndS(NitNPCBeAttackedAI1( R@RARRR$RRR]tSetNPCInBattleStateRRC(RÁRKR((s.\\BaseAttack.pyR-cs c
Csitjƒ|jƒ}
t|ƒ} tƒ} t||||| | |ƒ} t|||| |
||    ƒtS(N(R6R_RAR+Rüt__DoNextDefenderExRÉRg( R/R0RKR¨R©t
skillValuet skillPerListRR×RËRnt attackObjNameR•((s.\\BaseAttack.pytChainAttackAreaExys
      c Cstj|ƒ}tjj|ƒ}|dkrBtjd|ƒ|Stjƒ}    xÂt    t
|ƒƒD]®}
|    j ƒ|
\} } | |krqantj | | ƒ} | s­qan| t jkr×| jƒt jkr×qant|| |||||
t|ƒsqan|j| ƒqaW|S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %s(RbRˆRR“R”R#RRýRþR`RÖtkeysR?RRRR$t
__DoAttackR6R;(R/RKR¯R°R±R•RR‘R–RRMtobjIDR'R((s.\\BaseAttack.pyR®’s(   $c
 Cs>|jƒ}
tjj|
ƒ} | dkrQtjd|jƒ|
tjfƒtSt    j
ƒ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´RRR”R#RRýRyR.R6R_RÖRAR+R´RŠRüR;R`t__DoNextDefenderRÉRg(R/R0RKR¨R©R¯R°RR×RËR½R«t attackTimeSumRnR±RR•tsrcPosRÀ((s.\\BaseAttack.pytChainAttackAreaÄs0      
              c
Cst||||ƒsdSd|t|ƒdf}tjt|ƒ}    |    sNdStj|||ƒ|    |||||||ƒtS(Ns%s_Attack_%s.%sRQ(R’R+RR-RR[R\Rg(
R/R0RKR±R¯tskillPerR6RRÕR2((s.\\BaseAttack.pyR´scCsG|dkrtSx0|D](}|s)qntj||ƒrtSqWtS(N(R#RgRt    IsSameObjR.(RR•ttag((s.\\BaseAttack.pyt__IsAlreadyAttacks  c  Cs¬t} tj|ƒ} tjj| ƒ} | dkrHtjd| ƒ| Sx]|D]U}| r_Pn|    j    |d|d|d|dƒ}|s•qOnx t
d|j ƒƒD]õ}|j |ƒ}|j ƒ}|| krÞq«ntj|jƒ|ƒ}|sq«n|tjkr,|jƒtjkr,q«nt||ƒrAq«nt|||||||t|
ƒslq«n|j|ƒ|jƒ|d<|jƒ|d<t} Pq«WqOW| S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %sii(R.RbRˆRR“R”R#RRýRR`RRRR?RXRRRR$R½R´R6R;RYRZRg(R/RKR¯R°R±R¸RÀR•R«RRt    isSucceedR‘R–RRRMR—R'R((s.\\BaseAttack.pyR¶9sB  *  $     c 
Csýtjƒg} tj|ƒ} t|||||tƒ} t| ||||ƒxŠ| D]‚}tj|j    ƒ|j
ƒ|j    ƒ|j
ƒƒ}|||t t j ƒ}t|||||g|    t|ƒ}| j|ƒqWWt|||| | ||
ƒtS(N(R6R_R@RARŸR’R˜RRÿRYRZtfloatRtDef_MaxRateValueRÍRàRÉRg(R/R0R¨R©RKRiRjt    changePerRR×RlRÑRnR•ttagObjtdistRºttmpList((s.\\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ŸRYRZR’trandomtchoicetSuperLinkAttackObj(R/RKRR(R0R•((s.\\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#RRýRÞRçRèt GetSkillFromOtherSkillByEffectIDtDef_Skill_Effect_PassiveSkillIDtGetSuperHitRatetisPassiveSkilltDef_Skill_Effect_SuperAtkSHitRÀR¿tSetSuperHitRateRÓRßtSetAttackTargetPosRYRZRbtDoLogic_UseSkill(R/R0RKRR(tattackSkillEffR®t
curSkillIDt attackSkillIDt attackSkillRstbeforeSuperHitRatet superHitEfft superHitRatet superHitPer((s.\\BaseAttack.pyRÌÔs8       ## c Csçtjƒt|||||t|ƒ}t|||||gt|ƒ}    t||jƒ||tƒt|d||ƒt    ƒ}
xÑ|    D]É} t
j | ƒr£qˆnt j || |tj|dtd|
ƒt|| ||ƒtj|tjƒ} | rˆ| jdƒ} | dkrQtjƒj| ƒ}|s5qˆntj||| |ƒqQqˆqˆWxE|
D]=}|jƒj|ƒ}|sƒq\ntj|d||ƒq\W|    rãt j||    d|tjƒt j ||    d|tj |ƒndS(NRlRbii(!R6R_RŸR’RÍtSync_SkillHurtListRyRPR#RcRdReRFRGRtTriggerType_StormAttackOneByOneR.RfR[RÜtDef_Skill_Effect_ProcessAttackRÞRRçtGetSkillBySkillIDRbtUsePassiveTriggerSkillRRRSRTt!GetPassiveSkillValueByTriggerTypetTriggerType_StormAttackReduceCDtTriggerType_StormAttackOver(R/R¨R©RKRiRjR«RR•RÑRbRóRãR}t triggerSkillR`((s.\\BaseAttack.pytSwordStormAttack    s:
         cCstjƒdS(N(R6R_(((s.\\BaseAttack.pytClearSkillHurtListV    scCs•|dkrtjSxxttjƒƒD]d}tj|ƒ}tj|j    ƒ|j
ƒƒ}|dkrkq&ntj ||ƒsƒq&n|j ƒSWtjS(N( R#RtDef_HurtType_NormalR`R6R7R8RR?R<R=R»R>(R0RÀRNR—((s.\\BaseAttack.pyt GetHurtType`    s   c Cs„tjƒ|jƒ}t|||||t|ƒ}    t|    ||||ƒ}    t|||    t|ƒ}
t||||
|||ƒtS(N(    R6R_RARŸR’R˜t__DoAreaAttackLostHPRÉRg( R/R0R¨R©RKRRËR«RnR•RÑ((s.\\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.%sRQi(R.R+RR-RR[R\RgR@RÔt    GetEffectRÞR¿RRÀRÓR;( R/RKR•t skillHurtListRRÑt checkComboOKR&RÕR2t curObjMaxHpRˆRÊ((s.\\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|    sH|jƒ}tj|tjƒ}|s+qËn|jdƒdtj }    n|    t!|j"ƒdƒ}t#|||d||ƒ| j$|ƒqËWt%||
d||ƒx6| D].}t&j'|ƒrÃq¨nt(||||ƒq¨Wt)S(NsownerID---%s-%sigð?i((*RRçRâR[R›RXRRR6R_R@RAtGetInSightObjCountR`tGetInSightObjByIndexR#RRRRt
GetVisibleR.R?tGetBuffManagerByBuffTypetFindBufft
GetOwnerIDt GetOwnerTypetGetSkillRÜRtDef_Skill_Effect_BoomSeedHurtRÞRÀRßtGetLayertDoAttackSingleR;R7RdReRfRg(R/RKt
seedTypeIDRtownert    buffSkillR¯townerIDt    ownerTypethurtPerRnRÑt seeObjCountRMtseeObjt
seeObjTypeRÂt    buffTuplet buffManagertbufft curBuffSkillt
hurtEffectRiRó((s.\\BaseAttack.pytAttackDetonateSeed¿    sn
 
$  cCs[dt|ƒt|ƒdf}tjt|ƒ}|s;dS||||||t|ƒ|S(Ns%s_Attack_%s.%sRQ(R+RR-RR6(R/R&RKRjRiRRÕR2((s.\\BaseAttack.pyRü
s c
Csàt|||||tƒ}x¾|D]¶}|jƒtjkrCq"n|jƒ}|jƒ}|sgq"n|jƒtjkr‚q"ntj|ƒ}    |    jƒ|jƒkr"|j    dƒt j |tj|    jƒdƒq"q"WdS(Ni( RŸR RRRR
RÆRRÇRÈR#RœtSync_SelectObj(
R/RKR¨R©RR•RtcurTagIDt curActionObjt actionPlayer((s.\\BaseAttack.pytCancelAreaActioned4
s    &c    Cs9|jƒtjkrdStjƒ}|jƒ|jƒ|_tj|_||_    ||_
||_ xŸt |j ƒƒD]‹}|j|ƒ}tjƒ}|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jƒ|_|jj|ƒqxWt|jƒ|_tj||dt ddƒdS(Nt
notifySelft    notifyCntiÿÿÿÿ(!RRRtChPyNetSendPackttagMCSkillHurtListR_RXtObjIDtObjTypetSkillIDtPosXtPosYR`R7R8ttagSkillPosHurtObjR=R<R>t
AttackTypeR>tHurtHPR?tCurHPR@tCurHPExtHurtListR;RÖt    HurtCountRœt PyNotifyAllRg(    R!R}R‚RƒRïtsendPackRMRNRO((s.\\BaseAttack.pyRßX
s* 
              c CsZtjƒ}|jƒ|jƒ|_|jƒ|_||_||_||_    ||_
xŸt |j ƒƒD]‹}|j |ƒ}    tjƒ}
|    jƒ|
_|    jƒ|
_|    jƒ|
_|    jƒ|
_|    jƒ|
_|    jƒ|
_|jj|
ƒqkWt|jƒ|_|jƒtjkr:tj |||dƒn|j!|j"ƒ|j#ƒƒdS(Niÿÿÿÿ($t ChNetSendPackttagUseSkillPosR_RXRRRt
BattleTypeRRRR`R7R8RR=R<R>RR>RR?RR@RRR;RÖR RRRœR!t    NotifyAllt    GetBuffert    GetLength( R/R}RKRLRMRïRR"RMRNRO((s.\\BaseAttack.pyRCu
s. 
                 c Csq|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ƒ| _|jj| ƒqŒWt |jƒ|_!t"j#||ƒdS(Ni($RRyR#R$R_RXRRRRR%RRRR`R7R8RbtisClientHurtValueR<R=RR>RR>RR?RR@RRR;RÖR t NetPackCommont SendFakePack( R!R}RKRLRMRïR†t
useSkillIDR"RMRNRO((s.\\BaseAttack.pyRD™
s2  
                 * (mRdRRRœR]RtChEquipR[RRR~R¥R.Rbt
EventShellR¡RÊRRR&R€t ReadChConfigR@RR#R*RFRvt IPY_HurtListR6RRt    ImportAllRR+R,R3R9RPR.RrRfR…R’R˜R#R³RÂR RÃRÌRÏRÒRÐRÚRæRïRÉRÍRûRRR RR R RŸR$R#R{RaRêR6R7R8R;RÎRPR/RtRXR}R]R˜R\RœR0R§R,R-R²R®R¹R´R½R¶RÅRÍRÌRèRéRëRíRìR RüRRßRCRD(((s.\\BaseAttack.pyt<module>sÔ                                :    2                 +Q             1    (-    <                *     ! /        +          06    ( #        "                         Q        J    D        *    #            2        A         &        4<            P&    %    @    B    
    !      _        $        $