hch
2018-08-21 d69b6619a1190baec5a116c0cf8817191bdce018
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
ÌI[c@s5ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZejƒaejddƒejddƒd„Zd„Zd„Z d„Z!d    „Z"d
d d
e#d „Z$d „Z%d„Z&d„Z'd„Z(e#dd„Z*d„Z+d„Z,d„Z-e#dd„Z.d„Z/e#dd„Z0d„Z1ge#de#d„Z2d„Z3d„Z4d„Z5d„Z6dd„Z7ddd„Z8ddd „Z9d!„Z:d"„Z;d#„Z<d$„Z=d ej>d%„Z?d&„Z@e#d'„ZAej>d(„ZBd)„ZCd*„ZDd+„ZEd,„ZFd-„ZGd.„ZHd/„ZId0„ZJd1„ZKd2„ZLd3„ZMd4„ZNd5„ZOge#d6„ZPd7„ZQge#d8„ZRd9„ZSd:„ZTd;„ZUge#d<„ZVd=„ZWd>„ZXd?„ZYd@„ZZdA„Z[e#ddB„Z\dC„Z]ddD„Z^dE„Z_dF„Z`dG„ZadH„ZbdI„ZcdS(JiÿÿÿÿNsScript\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 ReloadAttack<s
cCsZ|jƒ}d}|tjkr*d}n,|tjkrV|jƒ}|jƒ}|tjkrid}qV|tjkrd}qV|tjkr™d}qV|tj    kr±d}qV|tj
krÉd}qV|tj krád}qV|tj kr#t |d    ƒr|jƒdkrd
}qSd}qV|tjkr;d }qV|tjkrVd }qVn|S( NtUnknowntPlayertGuardtFuncNPCtDeert DefenceMaxNPCt    GoldenEggt    NormalNPCtGetOwnert    SummonNPCtTrucktPet(tGetGameObjTypet IPY_GameWorldt    gotPlayertgotNPCtGetGameNPCObjTypetGetTypetntGuardt ntFunctionNPCtntDeert ntDefenceMaxt ntGoldenEggt
gnotNormalt
gnotSummonthasattrRtNonet    gnotTrucktgnotPet(tobjt
curObjTypetresultt
npcObjTypetnpcType((s.\\BaseAttack.pytGetObjAttackNamevs8                               !             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  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!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#tLogtGetIDtGameObjtGetHPtGetPosXtGetPosYt SkillCommontUpdateSkillCombot    NPCCommontGetSkillEnhanceR6tCleartranget__AttackSuccesst
SkillShelltDoLogic_UseEnhanceSkillt AttackCommont    GetIsDeadtDoLogic_AttackResulttTrue(R/R0tuseSkillRt skillPercentt skillEnhancet
attackTimetisEnhanceSkilltrelationR2t
attackerHPtdestXtdestYtitindance((s.\\BaseAttack.pytAttackàsB               #  
"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+R@RAR.RBRCtSetDictRtDef_NPCDead_KillerTypeRtDef_NPCDead_KillerIDt PlayerGeTuitTJGDeadtGetNameRRt
GetSkillIDtDef_NPCDead_ReasontDoBeAttackOverRR(R/R0RSRt
resultFunctskillID((s.\\BaseAttack.pyRQ/s      #cCs&tjdƒ}tj|||ƒdS(Ni(t
ItemCommontCreateSingleItemtChItemtAddMapDropItem(tposXtposYt curSingleItem((s.\\BaseAttack.pytTestQunMscCs|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.RBRCRtGetNPC_Is_GateROtCheckCanAttackTagR3RR?RMtGetSkillAffectTagt Def_UseSkillTag_CanAttackBaseNPCRRRtGetMapt GetMapFBTypetfbtNullt    GetIsBosstDef_NPCType_Ogre_SupertDef_UseSkillTag_CanAttackPlayerRRR(R/tcurTagtcurSkillRRXtcurSkillUseTag((s.\\BaseAttack.pyt__CheckCanAttackZs.cCs¢|s
|Stj|ƒ}tjj|ƒ}|s5|S|jƒ|krK|St||||ƒsd|Sx*|D]"}|jƒ|jƒkrk|SqkW|j|ƒ|S(N(    RMRuRtDef_Dict_UseSkillTag_ObjTypetgetRR€RAtappend(t
resultListR/R0R~RRt 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
GetSkillLVRFt GetBuffTypet PlayerControltGetAreaTeamMembertGetTeamRƒt__GetAreaAtackObjtCheckTagIsBeInfectionR‡tCheckCanAddBuffRRRHt IsSummonNPCtGetSummonOwnerDetelR#RMtGetAddBuffValuet    BuffSkillt    DoAddBufft AddBuffOverR.RR(R/R0R~tsrcPosXtsrcPosYRt
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#RDRERRRR.RMRuRtDef_UseSkillTag_FriendNPCtDef_UseSkillTag_CanAttackNPCRt GetNPCManagertxranget GetNPCCountt GetNPCByIndexRARR R!t
GetCountryRƒtDef_UseSkillTag_PlayerHasHPR|RˆR‰RFRŠRR“R”R•R–RR(t curObjDetelR~Rt    attackDisR„Rt isFriendObjtgameNPCManagertindextcurNPCRœRRžR}R¡((s.\\BaseAttack.pytSkillAddAuraBuffàs@ %    cCs>|jƒtjkr(t||||ƒStj||||ƒS(N(RRRtCheckNPCSkillTagIsBeInfectionRMtCheckTag_DoPlayerUseSkillTag(R/R0R~R((s.\\BaseAttack.pyRscCsptj|ƒ}|tjkr]|jƒtjkr7tSt||||ƒ}|dtj    kSt
||||ƒS(Ni( RMRuRR¤RRRR.R3tType_Relation_FriendR€(R/R~R0RRRX((s.\\BaseAttack.pyR³#sc         Cs¥tjƒtj|ƒ}    t|||||t|ƒ}
t|
||||ƒ}
x3|
D]+} tj| |j    ƒ|||dt
ƒqVWt ||||
|    ||ƒdS(NtisDoAttackResult( R6RJRBRCRŽR€R‡RFt SkillLostHPRˆR.t__DoAreaAttackResult( R/R0R—R˜R~tlostHPRt    isExSkillRšRYR„R&((s.\\BaseAttack.pytAreaSkillAttackLostHP9s
 )c        CsYtjƒ|g}t|||||gt|ƒt|||ƒt||||ƒtS(N(R6RJt__DoAreaAttackt__Sync_AttackResultRQRR(    R/R0R—R˜R~RTRURR„((s.\\BaseAttack.pytAttackAreaDefenderNotifyOs
     c
Cstjƒtj|ƒ}
t|||||t|    ƒ} t| ||||ƒ} t||||| t|ƒ} t|||| |
||ƒt    S(N(
R6RJRBRCRŽR€R‡t__DoAreaAttackByHPPerR¸RR( R/R0R—R˜R~RTRURRºRšRYR„t
attackList((s.\\BaseAttack.pytAttackAreaByHPPeris
 c     Csžg}x‘|D]‰}dt|ƒt|ƒdf}    tjt|    ƒ}
|
sPq nt|tj|ƒ|ƒ}|
||||d||ƒ|j|ƒq W|S(Ns%s_Attack_%s.%sR:i(R+RR-RtintRBtGetMaxHPRƒ( R/R~RURTR„R6RRÀR&tcallNameR2((s.\\BaseAttack.pyR¿ƒs  c     CsÈtjƒtj|ƒ} t|||||t|
ƒ} t| ||||ƒ} | r‡t| ƒ}|dkr‡||:}||:}q‡nt||||| |t|ƒ}t    ||||| ||    ƒt
S(Ni( R6RJRBRCRŽR€R‡tlenR¼R¸RR(R/R0R—R˜R~RTRURt    powerListRºRšt isAverageHurtRYR„t    resultCntRÀ((s.\\BaseAttack.pytAttackerSkillAttackArea«s
 
cCs’|s
tStjƒj||jƒƒ}|s2tS|jƒdkrHtStj|ƒrŽ|jƒdkrŽt    j
|ƒt j t j gkrŽtStS(Nii(R.Rt GetGameDatatFindSkillByTypeR‰t
GetAtkTypeRRRFtIsBuffRMRuRtDef_UseSkillTag_SelftDef_UseSkillTag_SelfAndFriend(R~tenhanceSkillIDt enhanceSkill((s.\\BaseAttack.pytGetIsEnhanceSkillGroupÐs!!c    
Cs|sÆ| r5|r5|jƒtjkr5|d}nt|||||ƒxx|jƒ|jƒgD][}t||ƒr¦xC|D]}tj|||||ƒq€Wqdtj|||||ƒqdWnx6|D].}t    j
|ƒrèqÍnt ||||ƒqÍWdS(Ni( RRRRLtGetSkillEnhance1tGetSkillEnhance2RÒRMtSkillTrigSkillRORPRQ(    R/R0R~RÀRYRRWRÐtdefObj((s.\\BaseAttack.pyR¸ës"     c     CsÍg}t}    xº|D]²}
dt|ƒt|
ƒdf} tjt| ƒ} | sVqn|gkrz|jdƒ\}}n|    sœtj|||ƒt}    n| ||
|||||ƒ|j    |
ƒqW|S(Ns%s_Attack_%s.%sR:i(
R.R+RR-RtpopRFRGRRRƒ( R/R~RURTR„RÆR6RRÀt checkComboOKR&RÄR2((s.\\BaseAttack.pyR¼s        cCs§|jƒtjkrdS|jƒ}|jƒ}tj||ƒ}|sMdStj    |ƒt
j kr{t j |ƒr{dSn|dkr£|||||ƒs£dSn|S(N(RRRR#tGetUseSkillTagIDtGetUseSkillTagTypeRtGetObjRMRuRR¥RHtGetNpcObjOwnerIsPlayer(R/R~t    CheckFuncRt useSkillTagIDtuseSkillTagTypeR}((s.\\BaseAttack.pytGetAreaAttackAim4s   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](tlistRMRuRRR‚R#RtErrLogtGetClientHurtDictRÛR¥RHRÜtGetDistRDREtGetSighttDebugLogRARƒ( R/R~RRÝR„RR…thurtDicttobjInfoR'R}((s.\\BaseAttack.pytCheckAreaObjClientMs2       
     <#     c    Cstƒ}tj|ƒ}tjj|ƒ}    |    dkrKtjd|ƒ|Stj    ƒ}
|dkr·|j
ƒ} tj j| ƒ}|dkr·tjd|j ƒ| tj fƒ|Snt j||ƒ} d} d}|jƒtjkoötj|ƒ}|r,tjtj|ƒ}|r,|jƒ}q,nt||||ƒ}|ra| d8} |j|ƒnx˜|D]}| dkr~Pn|
j||d||dƒ}|s¬qhnxItd|jƒƒD]2}| dkrØPn|j|ƒ}|jƒ}||    krqÂntj|jƒ|ƒ}|s)qÂn|rM|jƒ|jƒkrMqÂn|tjkrttj |ƒrtqÂqtn|dkrž|||||ƒsžqÂqžn|dkrÝ|tjkrÝ|rÝ||jƒkrÝ|} qÂn| d8} |j|ƒqÂWqhW| r|j| ƒn|S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %ss9CheckAreaObj skillId=%s, attakDis=%s not in matrixDict=%sii(!RáRMRuRRR‚R#RRâRwR£t
MatrixDictRfRFtGetSkillArea_Atk_CountRRRRHR‘tGetSummonNPCOwnerRt GetPlayerIDRàRƒt    GetPosObjRKt GetObjCountt GetObjByIndexRÛRAR¥RÜ(R/R~R—R˜RRÝRšR„RR…tgameMapR­t    hurtCounttownerTagt ownerPlayerIDtisSummonNPCAtkert ownerPlayert    attackAimtcurPostmapObjR\R†R'R}((s.\\BaseAttack.pytCheckAreaObjServer}st             $
  "            3
cCsEtj||ƒr%t||||ƒSt|||||||ƒSdS(N(RMtIsPlayerUseSkillRéRú(R/R~R—R˜RRÝRš((s.\\BaseAttack.pyRŽëscCst||ƒdS(N(t__DR_PlayerDead(R/R0RSR((s.\\BaseAttack.pytDoAttackResultCommonùs cCs˜tjƒjƒtjkrdS|jƒ}|tjkr>dS|jƒdkrTdS|jƒ}|jƒ}tjƒj    ƒ}t
j ||||ƒdS(Ni( RRwRxRRyRRRCRAtGetMapIDtDataRecordPackt 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__DoNPCBeAttackedRR@tFBLogicRh(R/R0R~RR((s.\\BaseAttack.pyRh&s  cCsq|jƒ}|tjkr1t|||||ƒS|tjkrVt|||||ƒStjd|jƒƒtS(Ns¹¥»÷´íÎó : %d (    RRRt__DoPlayerAttackSuccessRt__DoNPCAttackSuccessRR@R.(R/RYttargetR~Rt attackerType((s.\\BaseAttack.pyRLBs cCsQtjƒ|dkr;|dkr;tj|t||ƒnt|||||ƒS(Ni(R6RJR#ROtAddHurtRL(R/t attackerBeHPR
R~RtvaluethurtType((s.\\BaseAttack.pytDoAttackSuccessWs
cCst|||||ƒS(N(RL(R/R R
R~R((s.\\BaseAttack.pytDoAttackSuccessEx_scCsE|r
tSt|tj|ƒ|||ƒ}tj||||ƒ|S(N(RRRRBRCRMRN(R/R0R~RRWR(((s.\\BaseAttack.pytDoSkillEx_AttackSucessks
!c
Csmtjƒd}xDtt|ƒƒD]0}||}||}    tj|t||    ƒq#Wt|||||ƒS(N(R6RJR#RKRÅROR RL(
R/R t
targetListt    valueListR~RRR
R°R((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âReRAR8t
BaseAttacktGetObjIDt
GetObjTypeROt GetBattleTypet GetAttackTypet    GetHurtHPtGetCurHPt
GetCurHPExRfRRRtGetUseSkillPosXtGetUseSkillPosYtPYView_UseSkillPosR.tPYView_UseSkillPos_NotifySelft GetDictByKeyRtDef_NPC_Dict_AtkMovePosXtDef_NPC_Dict_AtkMovePosYtDef_NPC_Dict_SkillWarnPosXtDef_NPC_Dict_SkillWarnPosYRDRERÌ(R/R0R~tcurHurtRjt
battleTypet useSkillPosXt useSkillPosY((s.\\BaseAttack.pyR½“s\(      cCsLtj|ƒrl|jƒ}|jƒj|ƒ}t|||ƒ|rhtj|tj|ƒ||ƒnt    S|dks|j ƒt j kr tj||ƒnt|||ƒ|r|jƒ}t|||ƒt||ƒ|jƒj|ƒ}|rtj|tj|ƒ||ƒqntj||||ƒt||||ƒt    S(N(RFtGetUsingPassiveSkillRˆtGetSkillManagertFindSkillBySkillTypeIDR½tSetSkillRemainTimeR‹tGetReduceSkillCDPerRRR#t GetSkillTypeRtDef_NoBattleState_ListROtSetPlayerBattleStatetSetSkillLostAttrtSetSkillLostItemRtDoFBAttackedOvert UseSkillOver(t    curPlayert curPlayerBeHPR
R~Rt skillTypeIDtcurPlayerSkill((s.\\BaseAttack.pyRìs* " 
  %
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ˆt j| |dt j|ƒqˆqˆn|rmt j|| |t j|d|
ƒ}n|r­| dt j kr­t j|| |t j|d|
ƒ}n| dt j krßt j| |dt j|ƒn2| dt jkrt j| |dt j|ƒn| dt jkrˆt j| |dt j|ƒqˆqˆWxE|
D]=} |j ƒj!| ƒ}|suqNnt"j#|d||ƒqNWdS(Niiit
skillIDSet($R.RRR§R6R7R8RƒRRRtsetRtDef_HurtType_SuperHittPassiveBuffEffMngtOnPassiveSkillTriggertTriggerType_SuperHitRRÛRBRCRRR#tTriggerType_WillDeadtTriggerType_HurtObjAddBufftTriggerType_SuperHitOneByOnetTriggerType_BeSuperHittDef_HurtType_MisstTriggerType_MissSkilltDef_RealAttack_TypetOnPassiveBuffTriggert!TriggerType_Buff_BeAttackSubLayerR,R-RFR.(R/R
R~Rt
isSuperHittusePassiveSkillResulttusePassiveSkillResultOnSuperHittskillHurtListsR\thurtObjR;thurtListR0R9t passiveSkill((s.\\BaseAttack.pytOnHurtTypeTriggerSkill1sL,         # c    Cst||||ƒ| sS|jƒtjkrr|jƒtjtjtjgkrrtj    |||tj
|ƒn| sŽ|jƒtj krøtj |||tj |ƒtj    |||tj |ƒtj |||tj|ƒt||||ƒntj |||tj|ƒdS(N(RQR0RtDef_SkillType_Atkt GetFuncTypetDef_SkillFuncType_FbSkilltDef_SkillFuncType_PetSkilltDef_SkillFuncType_NormalAttackR>RHtTriggerType_Buff_AttackSubLayertDef_CanAttackSkill_ListR?tTriggerType_AttackOvertTriggerType_AttackOverPassivetAttackFaintRatetTriggerType_SkillOverNoAttack(R/R0R~R((s.\\BaseAttack.pyR6nsc    Cs9|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}tt j|ƒ|dƒ}tj|ƒsdStj|tj|ƒdS(Ni(RRRt GetUseSkillRfRÙRÚRRÛRARBRCR‹tGetFaintDefRatetmaxt GetFaintRatet    CanHappenRFtAddBuffBySkillTypeRtDef_SkillID_AtkerFaint(    R/R0R~Rt useSkillDataRÞRßt tagFaintRatetrate((s.\\BaseAttack.pyR[‹s0   *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 GetUseItemIDtGetUseItemCountRktFindItemInPackByItemIDRtrptItemRRâRˆRAtGetCountRÿtDR_UseSkilLostItemtGetGUIDRJt ItemControlert SetItemCounttGetAccIDt GetPlayerName(R7R~t    useItemIDt useItemCounttitemt    itemCount((s.\\BaseAttack.pyR4´s&       %     
" cCsdS(N((R7R((s.\\BaseAttack.pyt__DealWithPassivityBuff×sc
Csƒ|jƒ}|jƒ}||krGtjd|jƒ||fƒn|dkr}|j|jƒ|ƒtj||ƒn|jƒ}|jƒ}||krÄtjd|jƒ||fƒn|dkr|jƒ|}td|ƒ}|j    t
j |ƒ|j |ƒn|j ƒ}|j ƒ}    |    |krYtjd|jƒ|    |fƒn|dkr|j|j ƒ|ƒndS(Ns%Êͷż¼ÄÜ = %sÒì³£, Ä§·¨ = %s²»×ã = %sis%Êͷż¼ÄÜ = %sÒì³£, XPµã = %s²»×ã = %ss%Êͷż¼ÄÜ = %sÒì³£, HPµã = %s²»×ã = %s(tGetMPRRâRˆtSetMPR‹tPlayerAutoRestoreMPtGetXPR_R`RtDef_PlayerKey_RecordXPValuetSetXPRCtSetHP(
R7R~Rt lostMPValuet curPlayerMPt lostXPValuet curPlayerXPtremaint lostHPValuet curPlayerHP((s.\\BaseAttack.pyR3às4                        cCsdS(N((R7R
R:R((s.\\BaseAttack.pyt__DealWithPassivitySkills 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ˆR,R-tSetUseSkillTickRFR.R"RtDef_NPC_Dict_SkillUseCntR`tmintDef_UpperLimit_DWordRRR%t
PetControlt GetPetOwnerR#RCR0R1ROR2RtDoOverNPCAttackSuccessR6RR(    R±t
curNPCBeHPR
R~RR9t curNPCSkilltuseCntR7((s.\\BaseAttack.pyR    's&   *!cCsdS(N((R±R~((s.\\BaseAttack.pyt__DealWithNPCPassSkillhscCsŽ|jƒdkrdStj|ƒtj|tƒ| sO|jƒtjkrŠtj    ||dtj |ƒtj ||dtj |ƒndS(Ni( RCR‹tBreakPlayerCollecttSetIsNeedProcessRRR0RRXR>R?R#tTriggerType_BeAttackOverRH(R/R7R~R((s.\\BaseAttack.pyRss cCstj|ƒdkrdS|jƒtjkr2dS|jƒtjkrKdStj|ƒ|j    ƒdkr}|j
d|ƒndS(NitNPCBeAttackedAI1( RBRCRRR$RRRHtSetNPCInBattleStateRzR`(R±R~R((s.\\BaseAttack.pyR”s c
Csitjƒ|jƒ}
t|ƒ} tƒ} t||||| | |ƒ} t|||| |
||    ƒtS(N(R6RJRCR+Rát__DoNextDefenderExR¸RR( R/R0R~R—R˜t
skillValuet skillPerListRRÆRºRYt attackObjNameR„((s.\\BaseAttack.pytChainAttackAreaExªs
      c Cstj|ƒ}tjj|ƒ}|dkrBtjd|ƒ|Stjƒ}    xÂt    t
|ƒƒD]®}
|    j ƒ|
\} } | |krqantj | | ƒ} | s­qan| t jkr×| jƒt jkr×qant|| |||||
t|ƒsqan|j| ƒqaW|S(Ns*Def_Dict_UseSkillTag_ObjType Ã»ÓжÔÓ¦Ïî %s(RMRuRRR‚R#RRâRãRKRÅtkeysRÛRRRR$t
__DoAttackR6Rƒ(R/R~R˜R™RšR„RRR…RçR\tobjIDR'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£RRêR‚R#RRâRfR.R6RJRÅRCR+RRwRáRƒRKt__DoNextDefenderR¸RR(R/R0R~R—R˜R˜R™RRÆRºR­Ršt attackTimeSumRYRšRñR„tsrcPosR°((s.\\BaseAttack.pytChainAttackAreaõs0      
              c
Cst||||ƒsdSd|t|ƒdf}tjt|ƒ}    |    sNdStj|||ƒ|    |||||||ƒtS(Ns%s_Attack_%s.%sR:(R€R+RR-RRFRGRR(
R/R0R~RšR˜tskillPerR6RRÄR2((s.\\BaseAttack.pyR3scCsG|dkrtSx0|D](}|s)qntj||ƒrtSqWtS(N(R#RRRt    IsSameObjR.(R}R„ttag((s.\\BaseAttack.pyt__IsAlreadyAttackMs  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.RMRuRRR‚R#RRâRîRKRïRðRRÛRARRRR$R¦RR6RƒRDRERR(R/R~R˜R™RšR¡R°R„RšRñRt    isSucceedRR…RøRùR\R†R'R}((s.\\BaseAttack.pyRŸjsB  *  $     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(R6RJRBRCRŽR€R‡RRäRDREtfloatRtDef_MaxRateValueR¼textendR¸RR(R/R0R—R˜R~RTRUt    changePerRRÆRWRÀRYR„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ŽRDRER€trandomtchoicetSuperLinkAttackObj(R/R~RR(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.RFtGetSkillEffectByEffectIDRtDef_Skill_Effect_SuperLinkAtkR‰RfR#RRâtGetEffectValueRÊRËt GetSkillFromOtherSkillByEffectIDtDef_Skill_Effect_PassiveSkillIDtGetSuperHitRatetisPassiveSkilltDef_Skill_Effect_SuperAtkSHitR©R¨tSetSuperHitRateRÂR_tSetAttackTargetPosRDRERMtDoLogic_UseSkill(R/R0R~RR(tattackSkillEffRt
curSkillIDt attackSkillIDt attackSkillRPtbeforeSuperHitRatet superHitEfft superHitRatet superHitPer((s.\\BaseAttack.pyR¶s8       ## c CsŽtjƒt|||||t|ƒ}t|||||gt|ƒ}    t||jƒ||tƒtƒ}
xÑ|    D]É} tj    | ƒrqunt
j || |t j |dtd|
ƒt|| ||ƒtj|t jƒ} | ru| jdƒ} | dkr>tjƒj| ƒ}|s"quntj||| |ƒq>ququWxE|
D]=}|jƒj|ƒ}|spqIntj|d||ƒqIWdS(NRWR;ii(R6RJRŽR€R¼tSync_SkillHurtListRfR<RORPR>R?RtTriggerType_AttackPlayerR.RQRFR¸tDef_Skill_Effect_ProcessAttackRºRRÊtGetSkillBySkillIDRMtUsePassiveTriggerSkillR,R-R.(R/R—R˜R~RTRURšRR„RÀR;RÖt skillEffectRjt triggerSkillR9((s.\\BaseAttack.pytSwordStormAttackEs2
         cCstjƒdS(N(R6RJ(((s.\\BaseAttack.pytClearSkillHurtListscCs•|dkrtjSxxttjƒƒD]d}tj|ƒ}tj|j    ƒ|j
ƒƒ}|dkrkq&ntj ||ƒsƒq&n|j ƒSWtjS(N( R#RtDef_HurtType_NormalRKR6R7R8RRÛRRR¤R(R0R°RNR†((s.\\BaseAttack.pyt GetHurtType‹s   c Cs„tjƒ|jƒ}t|||||t|ƒ}    t|    ||||ƒ}    t|||    t|ƒ}
t||||
|||ƒtS(N(    R6RJRCRŽR€R‡t__DoAreaAttackLostHPR¸RR( R/R0R—R˜R~RRºRšRYR„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.%sR:i(R.R+RR-RRFRGRRRBRÃt    GetEffectRºR¨RR©RÂRƒ( R/R~R„t skillHurtListRRÀRØR&RÄR2t curObjMaxHpRfR¹((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ÎRFRŠRARRæR6RJRBRCtGetInSightObjCountRKtGetInSightObjByIndexR#RRRtIsEmptyt
GetVisibleR.RÛtGetBuffManagerByBuffTypetFindBufft
GetOwnerIDt GetOwnerTypetGetSkillR¸RtDef_Skill_Effect_BoomSeedHurtRºR©R_tGetLayertDoAttackSingleRƒRRORPRQRR(R/R~t
seedTypeIDRtownert    buffSkillRžtownerIDt    ownerTypethurtPerRYRÀt seeObjCountR\tseeObjt
seeObjTypeR¬t    buffTuplet buffManagertbufft curBuffSkillt
hurtEffectRTRÖ((s.\\BaseAttack.pytAttackDetonateSeedêsn
 
$  cCs[dt|ƒt|ƒdf}tjt|ƒ}|s;dS||||||t|ƒ|S(Ns%s_Attack_%s.%sR:(R+RR-RR6(R/R&R~RURTRRÄR2((s.\\BaseAttack.pyRæI    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/R~R—R˜RR„R}tcurTagIDt curActionObjt actionPlayer((s.\\BaseAttack.pytCancelAreaActioned_    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(!RRRtChPyNetSendPackttagMCSkillHurtListRJRAtObjIDtObjTypetSkillIDtPosXtPosYRKR7R8ttagSkillPosHurtObjRRRt
AttackTypeRtHurtHPRtCurHPRtCurHPExtHurtListRƒRÅt    HurtCountR‹t PyNotifyAllRR(    R7RjRoRpRÙtsendPackR\RNRO((s.\\BaseAttack.pyR˃    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 ChNetSendPackttagUseSkillPosRJRARÿRRt
BattleTypeRRRRKR7R8RRRRRRRRRRRR    RƒRÅR
RRR‹R t    NotifyAllt    GetBuffert    GetLength( R/RjR(R)R*RÙRûR R\RNRO((s.\\BaseAttack.pyR      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($R]RfR RRJRARÿRRRRRRRRKR7R8RMtisClientHurtValueRRRRRRRRRRRR    RƒRÅR
t NetPackCommont SendFakePack( R7RjR(R)R*RÙRdt
useSkillIDR R\RNRO((s.\\BaseAttack.pyR!Ä    s2  
                 * (dRORRR‹RHRtChEquipRFRRnRkR”RRMt
EventShellR‹R´R;RÿRmt ReadChConfigRBRýR RR>Rct IPY_HurtListR6t    ImportAllRR+R,R3R9R.R^RQRrR€R‡R#R¢R²RR³R»R¾RÁR¿RÉRÒR¸R¼RàRéRúRŽRýRüRhRLRÔRRRRR½RRQR6R[R4RvR3R…R    R‘RRR›R—R¢RR¦RŸR¯R·R¶RÒRÓRÕR×RÖRõRæRúRËR R!(((s.\\BaseAttack.pyt<module>s                                :    2            O             1    (-    <                *     "        )          0n                         Y    E    =        )    #            0        A         !        4<            P&    %    @    <    
    !      _        $        $