hxp
2025-09-03 c2060c389ce836a6c68955d9c47f79d7a314b7a2
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
Hضhc@sßddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZdZdZdZedƒ\ZZZZZZZdfd„ƒYZ dfd„ƒYZ!dfd    „ƒYZ"d
fd „ƒYZ#d „Z$d fd„ƒYZ%d„Z&d„Z'd„Z(d„Z)ddd„Z*ddd„Z+d„Z,d„Z-dd„Z.d„Z/d„Z0d„Z1d„Z2d„Z3e4d„Z5dd„Z6d „Z7d!„Z8d"„Z9d#„Z:d$„Z;d%„Z<d&„Z=d'„Z>dd(„Z?de4d)„Z@d*„ZAeBeBd+„ZCd,„ZDd-„ZEd.„ZFd/„ZGdS(0iÿÿÿÿNi'it    BatLineupcBs5eZd„Zd„Zd„Zd„Zd„ZRS(cCs^||_||_||_d|_d|_d|_i|_i|_i|_t    |_
dS(Ni( t    turnFighttfactiontnumtownerIDt    shapeTypet
fightPowert posObjIDDicttlingshouObjIDDicttbeautyObjIDDicttActionNumStartt    actionNum(tselfRRR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt__init__?s                                        cCs
|jjS(N(RtplayerID(R ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt getPlayerIDLscCs|j S(N(R(R ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytisEmptyNscCso|jƒ|jddƒ|_|jddƒ|_|jddƒ|_t||j|j||jƒƒdS(NtPlayerIDit    ShapeTypet
FightPower(    t clearLineuptgetRRRtSummonLineupObjsRRR(R t
lineupInfo((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt    setLineupPs 
"cCs©tjƒ}x$|jjƒD]}|j|ƒqWx$|jjƒD]}|j|ƒqCWx$|jjƒD]}|j|ƒqjWi|_i|_i|_d|_dS(Ni(t    BattleObjt GetBatObjMgrRtvaluest    delBatObjRR    R(R t    batObjMgrtobjID((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRZs                 (t__name__t
__module__R RRRR(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR<s
                 
t
BatFactioncBs&eZd„Zdd„Zd„ZRS(cCs||_||_i|_dS(N(RRt
lineupDict(R RR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR ls            icCsNd}||jkr%|j|}n%t|j||jƒ}||j|<|S(N(tNoneR"RRR(R Rtlineup((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt getBatlineuprs  cCs(x!|jjƒD]}|jƒqWdS(N(R"RR(R R$((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt clearLineups|s(RR R R%R&(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR!is    
t    TurnFightcBsæeZdZddded„Zeigddd„Zid„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z ed „Z ejd „Zd „Zed„Zd„Zd„Zd„Zid„Zd„Zd„ZRS(sÙij³¡»ØºÏÕ½¶·£¬Ö§³Ö¶àV¶à£¬ËùÓÐÕ½¶·Í¨Óã¬Ö÷Ïß¡¢ÅÀËþ¡¢PVPµÈ
    ¿ÉÄÜΪϵͳºǫ́·¢ÆðµÄ£¬Ôò¹¥»÷·½¡¢·ÀÊØ·½ÕóÈÝÒÔÍæ¼ÒËù±£´æµÄÕóÈݾµÏñ½øÐÐÕ½¶·
    Èç¹ûÍæ¼Ò·¢ÆðµÄ£¬Ôò¹¥»÷·½Îª·¢Æð·½Íæ¼Ò£¬Ä¿±êΪ·ÀÊØ·½£¬Ö§³Ö¶àV¶à£¬Èç×é¶ÓPK
    ¶àV¶àµÄÇé¿öÒ²ÊÇij¸ö¶ÓÔ±¸÷×Ô·¢ÆðÕ½¶·£¬Ö»ÊÇÓõ½¶ÓÓѵľµÏñÕóÈÝÒ»ÆðÕ½¶·£¬¶ÓÓÑÎÞ¸ÐÖª
    
    ¶àV¶à¿ÉʹÓÃÁ½ÖÖģʽ£º
    1. ¶à¸öÕóÈÝÒ»Æð³ö³¡£¬ÔÚÒ»³¡Õ½¶·ÖÐÍê³É
    2. ÒÔµ¥ÕóÈÝ·½Ê½ÂÖÁ÷³ö³¡Õ½¶·£¬¸Ã·½Ê½Í¬Ñù¿ÉÒÔʹÓ÷½Ê½1µÄÂß¼­ÊµÏÖ£¬¹ÌÓÅÏÈʹÓ÷½Ê½1Õ½¶·Âß¼­£¬·½±ãÀ©Õ¹
    icCsýtjƒ|_||_|r3tjƒj|ƒnd|_||_||_    d|_
d|_ d|_ t |_d|_t |_d|_||_i|_i|_g|_d|_d|_d|_d|_d|_g|_d|_d|_dS(Niÿÿÿÿiiit(t    GameWorldtGetGUIDtguidRtGetPlayerManagertFindPlayerByIDR#t    curPlayertmapIDt
funcLineIDtstatetturnNumtturnMaxtFalset
enterLogict
winFactiontisWint    batBuffert isNeedReporttmsgDictt factionDicttactionSortListt actionIndexttimelinet    startTimetcostTimet lineupIndext lineupIDListt
strongerLVt
difficulty(R R/R0RR9((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR s2    $                                                                                    c        Csb||_||_||_||_d|_||_||_||_i|_|j    |ƒdS(Ni(
R/R0R3R9RARBRCRDR:t nextTurnFight(    R R/R0R3R9R:RBRCRD((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt setTurnFight«s                                     cCsYd|_t|_d|_t|_|jj|ƒd|_tjƒ|_    d|_
dS(Nii( R2R4R5R6R7R:tupdateR>ttimeR?R@(R R:((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRE¹s                        cCs,|jtjko+|jt|jƒdkS(Ni(R6tChConfigt Def_FactionARAtlenRB(R ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pythaveNextLineupÅscCs-|jƒsdS|jd7_|j|jS(Nii(RLRARB(R ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt nextLineupIDÈs cCsb|j|ƒ}|jƒxB|jƒD]4\}}|s>q&n|j|ƒ}|j|ƒq&WdS(N(t getBatFactionR&titemsR%R(R RR"t
batFactionRRt    batLineup((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytsetFactionLineupÏs
c
Csg}x‰|jjƒD]x}|j}xf|jjƒD]U\}}|jrPdnd}|j}|d| }|j|||||gƒq5WqW|jdt    ƒd|_
g|_ x3|D]+\}    }    }    }}|j j||gƒq»Wt j d|ƒt j d|j ƒdS(Niii
treverses+ÕóÈÝÕ½Á¦ÅÅÐò[isPlayer, fp, sortV, f, n]: %ssÕóÈÝÐж¯Ë³Ðò[f, n]: %s(R;RRR"RORRtappendtsorttTrueR=R<R)tDebugLog(
R tsortListRPRRRQtisPlayerRt    sortValuet_((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytsortActionQueueÛs         $        cCs |tdS(Ni(t TimelineSet(R R2((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytgetTurnNumStartTimelinðscCs|jS(N(R>(R ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt getTimelineñscCs5||_tjd|jƒ|r'|St|ƒ|S(sj»ØºÏÕ½¶·µÄʱ¼äÖá½Úµã £¬¼´µÚ¼¸»ØºÏ¿ªÊ¼£¬Ã¿¸ö»ØºÏÖ§³Ö9999¸öÐж¯½Úµã
        @param turnNum: µÚx»ØºÏ
        sʱ¼ä½Úµã¸üÐÂ: %s(R>R)RWtOnTimelineChange(R R>R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt setTimelineòs     
cCsEd}||jkr%|j|}nt||ƒ}||j|<|S(N(R#R;R!(R RRP((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRNÿs  c    Cs |jr|jStjƒ}xè|jjƒD]×\}}t}x„|jjƒD]s}|s^Pnx`|jjƒD]O\}}|dkrŒqnn|j    |ƒ}|s§qnn|j
ƒrnt }PqnqnWqNW|r,|t j krãt jnt j |_t|jƒ|jSq,WdS(Ni(R6RRR;RORVR"RRt    getBatObjtIsAliveR4RIt Def_FactionBRJtDoTurnFightOverR+(    R RRRPt    allKilledRQtposNumRtbatObj((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytcheckOverByKilled    s,        $  cCsJ|j|stntƒx!|jjƒD]}|jƒq)Wd|_dS(Niÿÿÿÿ(t    syncStatetFightState_OvertFightState_RestR;RR&R1(R trestRP((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt    exitFight(s
    cCs5t|_d|_|j|jƒ|_|jƒdS(Ni(tFightState_StartR1R2R^R>tsyncInit(R ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt
startFight0s
        
cCs |jdkS(Niÿÿÿÿ(R1(R ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt    isInFight8scCs©tj|jdtƒ}|jddƒ}tjƒ}|j|_|j    |_
|j |_ ||_ t|j ƒ|_g|_tjƒ}xù|jjƒD]è}|j|ƒ}tjƒ}||_g|_x|jjƒD]}|j|ƒ}tjƒ}    ||    _|j|    _|j|    _ g|    _!x|j"j#ƒD]þ\}
} |j$| ƒ} | s_q8ntj%ƒ} | j&ƒ| _'| j(ƒ| _)| j*ƒ| _+| j,ƒ| _-| j.ƒt/j0| _1| j.ƒt/j0| _2| j3ƒt/j0| _4| j3ƒt/j0| _5| j6ƒ| _7|
| _8| j9ƒ| _:|    j!j;| ƒq8Wt|    j!ƒ|    _<|jj;|    ƒqÝWt|jƒ|_=|jj;|ƒqšWt|jƒ|_>|j?|ƒdS(Nt ensure_asciis R((@tjsontdumpsR:R4treplacetChPyNetSendPackttagSCTurnFightInitR/tMapIDR0t
FuncLineIDR3tTurnMaxtMsgRKtLent FactionListRRR;tkeysRNttagSCTurnFightFactiontFactiont
LineupListR"R%ttagSCTurnFightLineuptNumRtOwnerIDRRtObjListRRORbttagSCTurnFightObjtGetIDtObjIDtGetNPCIDtNPCIDt    GetHeroIDtHeroIDt    GetSkinIDtSkinIDtGetHPRItDef_PerPointValuetHPtHPExtGetMaxHPtMaxHPtMaxHPExtGetLVtLVtPosNumtGetXPtAngreXPRTtObjCntt    LineupCntt
FactionCntt
addBatPack(R tmsgt
clientPackRRRPt    tfFactionRRQttfLineupRgRRhttfObj((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRp:s\                                       cCsŸ||_tj|dtƒ}|jddƒ}tjƒ}|jƒ|j|_    |j
|_ ||_ |j |_||_t|jƒ|_|j|ƒdS(NRss R((R1RtRuR4RvRwttagMCTurnFightStatetClearR/RyR0RztStateR2tTurnNumR|RKR}RŸ(R R1R:R R¡((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRjls     
            cCs9tjƒ}|jƒ||_||_|j|ƒdS(N(RwttagMCTurnFightObjActionR¦R¨R‰RŸ(R R2RR¡((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt syncObjAction{s  
         cCsÖt|dƒr.d|jj|jjf}nd|j|jf}|jr|jƒ}tjd|ƒ|j|7_t    j
ƒj |ƒnCtjd|ƒ|j r¿t j|j |ƒnt    j
ƒj |ƒdS(NtHeads%02x%02xs»ØºÏÕ½¶·¹ý³Ì·â°ü: %s(thasattrR«tCmdtSubCmdR9t    GetBufferR)RWR8tObjPoolt
GetPoolMgrtreleaseR.t NetPackCommont SendFakePack(R R¡theadStrtpackBuff((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRŸƒs         (RR t__doc__R4R RFRERLRMRRR\R^R_RaRIRJRNRiRnRqRrRpRjRªRŸ(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR'‚s(                               
                 2     t TurnFightMgrcBs5eZd„Zdded„Zd„Zd„ZRS(cCs i|_dS(N(t turnFightDict(R ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR ›s    icCsStjƒjt||||ƒ}|s?t||||ƒ}n||j|j<|S(N(R°R±tacquireR'R¹R+(R R/R0RR9ttf((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt addTurnFightŸs
!cCsM|j|ƒ}|sdS|jƒ|jj|dƒtjƒj|ƒdS(N(t getTurnFightRnR¹tpopR#R°R±R²(R R+R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt delTurnFight¦s
cCs;d}||jkr%|j|}ntr7tƒ}n|S(N(R#R¹R4R'(R R+R»((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR½¯s  (RR R R4R¼R¿R½(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR¸˜s            cCs1d}tjrtj}ntƒ}|t_|S(N(R#t
PyGameDatatg_turnFightMgrR¸(ttfMgr((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytGetTurnFightMgr·s              t    MainFightcBseZd„Zd„ZRS(cCsO||_d|_d|_d|_d|_tƒjtjd|ƒ|_    dS(Nii(
Rt    chapterIDtlevelNumtwaveMaxtwaveRÃR¼RItDef_FBMapID_MainR(R R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR Ãs                    cCs|jjtjkS(N(RR/RItDef_FBMapID_MainBoss(R ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt isLevelBossÌs(RR R RË(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRÄÀs        cCstjƒj|ƒ}|jS(N(t PlayerOnlinet GetOnlineMgrtGetOnlinePlayert    mainFight(R.tolPlayer((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytGetMainFightMgrÐscCs«tj|ƒ\}}}tj|ƒ\}}}||kr§tjd|ƒr§tjd||ƒr§tj|||dƒ}tjd||||f|jƒƒq§ndS(Nt MainChaptert    MainLevelis•µ±Ç°Ö÷Ï߹ؿ¨Õ½ÚÓë¹ý¹ØÕ½ڲ»Ò»ÖÂʱ£¬ÇÒ¹ý¹Ø½ø¶ÈÕ½ÚÒѾ­´æÔÚ£¬Ç¿ÖÆÐÞÕýµ±Ç°Ë¢¹Ö½ø¶ÈΪ¹ý¹ØÕ½ڽø¶È! passChapterID-LV=%s-%s,nowChapterID=%s,fixNowValue=%s(    t PlayerControltGetMainLevelPassInfotGetMainLevelNowInfot IpyGameDataPYtGetIpyGameDataNotLogtSetMainLevelNowInfoR)tLogt GetPlayerID(R.RÅRÆR[t nowChapterIDt fixNowValue((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt OnPlayerLoginÕs '    #cCs
i}|S(N((RtlineupIDR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytGetPlayerLineupInfoByCacheßscCs |jƒ}tj|ƒj|ƒ}|js1iSi|d6|jd6|jd6}i}|jƒjt    j
ƒ}x|jj ƒD]}|j |ƒ}|j }    |j}
d} d} |
dkr|
|jƒkr|j|
ƒ} | r| jƒ r| jƒ} | jt    jƒ} qng}||j7}i|    d6|jd6| d    6| d
6|jd6d „|jjƒDƒd 6|d 6|t|ƒ<q€W|ji|d6ƒ|S(NRRRR(iiRRR˜tDatacSs1i|]'\}}|dkr|t|ƒ“qS(i(tstr(t.0tktv((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pys
<dictcomp>s    tAttrDictt SkillIDListtHero(RÛRÌRÎt    GetLineuptlineupHeroDictRRtGetItemManagertGetPackt ShareDefinetrptHeroRt GetLineupHerotheroIDt    itemIndextGetCounttGetAttIsEmptyt GetUserDatat GetUserAttrtDef_IudetHeroLVtheroSkillIDListtskinIDtheroBatAttrDictRORâRG(R.RßRR$RtheroDicttcurPackRgtheroRðRñtuserDatatheroLVtheroItemt skillIDlist((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytGetPlayerLineupInfoäs<     !          
 
ic    Cs¾tjd|ƒ}|siSi}xtddƒD]p}t|d|ƒsOPnt|d|ƒƒ}|sqq2nt||||ƒ}|s’q2n||t|ƒ<q2Wi|d6|d6}|S(Nt    NPCLineupii
s GetPosNPCID%st NPCLineupIDRèi (R×tGetIpyGameDatatrangeR¬tgetattrtGetNPCBattleDictRâ(    RßRCRDtipyDataRûRgtnpcIDt
battleDictR((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytGetNPCLineupInfo s c    Csmtj|ƒ}|sdS|jƒ}|jƒ}d}|rOtjd|ƒnd}tjd|ƒ}    |    r—|r—tjd|ƒ}|r—|}q—n|s²tjd|ƒ}n|r|r|jƒ}
|
rÚ|
dnd} t    |||j
ƒ|j ƒƒ} nd}d} g|j ƒ} |j ƒ} || krÅ|jƒ}|rÅgt|ƒ}|jƒ}|dkržt|ƒ|kržtj|ƒ|| }n| |7} tjd| |fƒqÅnt|||    |ƒ}|s i|jƒtj6|jƒtj6|jƒtj6|jƒtj6|j ƒtj!6|j"ƒtj#6|j$ƒtj%6|j&ƒtj'6|j(ƒtj)6|j*ƒtj+6|j,ƒtj-6|j.ƒtj/6|j0ƒtj16|j2ƒtj36|j4ƒtj56|j6ƒtj76|j8ƒtj96}|j:|j;ƒƒni|d6|d6| d6|d    6d
„|j<ƒDƒd 6| d 6}tjd ||||fƒ|S(NRèt NPCStrongertPlayerLVis"ÕóÈÝboss¼¼ÄÜ: %s, Ëæ»ú¸½¼Ó¼¼ÄÜ: %sR‹RRR˜cSs1i|]'\}}|dkr|t|ƒ“qS(i(Râ(RãRäRå((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pys
<dictcomp>as    RæRçs8GetNPCBattleDict npcID=%s,strongerLV=%s,difficulty=%s,%s(=t    NPCCommont GetNPCDataPytGetRelatedHeroIDR—R#R×RRØt GetSkinIDListtGetNPCHeroSkillIDListtGetReHeroBreakLVtGetReHeroAwakeLVtGetSkillIDListt    GetBossIDtGetSkillIDExListtlistt GetSkillExCntRKtrandomtshuffleR)RWtGetNPCStrongerAttrDicttGetAtkRIt
AttrID_AtktGetDeft
AttrID_DefR”t AttrID_MaxHPtGetFinalDamPertAttrID_FinalDamPertGetFinalDamPerDeftAttrID_FinalDamPerDeft GetMissRatetAttrID_MissRatetGetMissRateDeftAttrID_MissRateDeftGetSuperHitRatetAttrID_SuperHitRatetGetSuperHitRateDeftAttrID_SuperHitRateDeft GetStunRatetAttrID_StunRatetGetStunRateDeftAttrID_StunRateDeft GetComboRatetAttrID_ComboRatetGetComboRateDeftAttrID_ComboRateDeft GetParryRatetAttrID_ParryRatetGetParryRateDeftAttrID_ParryRateDeft GetSuckHPPertAttrID_SuckHPPertGetSuckHPPerDeftAttrID_SuckHPPerDefRGtGetSpecAttrInfoRO(t lineupIpyDataR
RCRDtnpcDataRðtnpcLVt    lvIpyDatat heroIpyDatat npcStrongert
skinIDListRùt skillIDListtbossIDt skillIDExListtrandSkillIDExListt
skillExCntt batAttrDictR ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR%sf      $      
3      #
 
c Csð|jƒ}|jƒ}||g}tjd|ƒ}|rˆxI|D]>}|jƒ|kr_Pn|jƒ}    |    rC|j|    ƒqCqCWntjd|ƒ}
|
rìxI|
D]>} | jƒ|krÃPn| jƒ}    |    r§|j|    ƒq§q§Wn|S(Nt    HeroBreakt    HeroAwake(tGetNormalSkillIDtGetAngerSkillIDR×tGetIpyGameDataListt
GetBreakLVt
GetSkillIDRTt
GetAwakeLV( RðRDtbreakLVtawakeLVt normalSkillIDt angerSkillIDRGtbreakIpyDataListt breakIpyDatatskillIDtawakeIpyDataListt awakeIpyData((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRhs(       c Csi}| s| s| r|S|jƒ}x·tjD]¬}tjd|ƒ}|sYq5n|jƒ}t|d|ƒs~q5nt|d|ƒƒ}    t|d|ƒr½t|d|ƒƒnd}
t|    |
|ƒ} | ||<q5Wt    j
d||||fƒ|S(Nt
PlayerAttrsGetRe%ss
Get%sRatiois,NPC³É³¤ÊôÐÔ: npcID=%s,lv=%s,difficulty=%s,%s( R—RItCalcBattleAttrIDListR×Rt GetParameterR¬RtintR)RW( R
RCRERDRLtlvtattrIDt attrIpyDatatattrNametreValuetratiot    attrValue((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR‚s"  /c!Cs tjd|||f|ƒ|rEtjƒj|ƒ}|sEdSn|jj}|jddƒ}|jdiƒ}tjƒ}    t    j
ddƒ}
t    j dd    ƒ} x_|j ƒD]Q\} } t | ƒ}d}d}g}i}|| jd
gƒ7}|j| jd iƒƒ| jd dƒ}| jd dƒ}| jddƒ}| jddƒ}|rqt    jd|ƒnd}|r°|jƒ}|jƒ}|jƒ}|jƒ}n|r×| jddƒ}|s+q²q+nTtj|ƒ}|sòq²n|s+|jƒ}|jƒ}|jƒ}|jƒ}n|    jƒ}|sAPn|jƒ}|rc|j|ƒn|ry|j|ƒn|j|ƒ|j|ƒ|j|ƒ|j||ƒ|j |ƒ|j!|ƒ|j"|ƒ|j#|ƒ|j$|ƒ|j%||ƒ|t&j'kr5t(| ƒdkr,| dnd}n4|t&j)krit(| ƒdkr`| dnd}n|r|j*|ƒn|j+ƒ}|j,ƒx|D]} |j-| ƒqœW||j.|<tjdt/|ƒ|j0ƒfƒ|j1d„|j ƒDƒ|
ƒq²WdS(sÛÕÙ»½ÕóÈÝÕ½¶·ÊµÀý
    @param faction: ËùÊôÕóÓª£¬Ä¿Ç°Ö§³ÖÁ½¸öÕóÓª£¬1»ò2
    @param num: Õ½¶·ÕóÈÝÔÚ¸ÃÕóÓªÉϵıàºÅ£¬1V1ʱĬÈÏ1£¬¶à¶Ô¶àʱ1~n
    @param lineupInfo: ÕóÈÝÐÅÏ¢
    @param playerID: ·¢ÆðµÄÍæ¼ÒID£¬ÏµÍ³³¡´ÎΪ0
    s0SummonLineupObjs faction:%s,num:%s,lineupInfo=%sNRiRètAngerXPitParryCfgiRçRæR‹RRR˜RsAddBatObj %s,skill=%scSs%i|]\}}|t|ƒ“qS((Ra(RãRäRå((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pys
<dictcomp>òs    (2R)RWR,R-RR+RRRR×t
GetFuncCfgtGetFuncEvalCfgRORaRGRR#tGetAtkDistTypetGetNamet
GetCountrytGetSexRRt
GetNPCNamet    addBatObjRˆtSetNPCIDt
SetOwnerIDt    SetTFGUIDtSetNamet
SetFactiont SetLineupPost SetFightPowertSetLVtSetAtkDistTypet
SetCountrytSetSextSetHeroRItAtkDistType_ShortRKtAtkDistType_LongRTtGetSkillManagert
SkillResettLearnSkillByIDRt
GetObjNameRt InitBatAttr(!RQRRRRR.ttfGUIDtlineupPlayerIDRûRtinitXPtatkBackSkillIDListt    posNumKeytheroInfoRgtatkBackSkillIDRRGtattrDictR
RðRùRbRDt atkDistTypetobjNametcountrytsext    npcDataExRhRt skillManagerR[((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR›s’                       %% 
  #$c    Cs-tjƒj|ƒ}|j}|j}|j}|j}|j}tjd|||||f|j    ƒƒt
j ||||||ƒ}    |    s“dSt
j |||ƒ\}
} |
t jksÌ| t jkrÐdS|dkrßnJt
j|||ƒ} | sþdS| \} }}t||||
| ||ƒdS(sb ±¾Õ½¶·»áÒ»´ÎÐÔ´¦ÀíÍêËùÓÐС¶ÓÕ½¶·£¬ÒÔÕ½±¨µÄÐÎʽÏ·¢£¬Ä¿Ç°³ýÁËÖ÷ÏßС¹Ö·Ö¶ÎÕ½¶·Í⣬¾ùʹÓøÃÕ½¶·
    sG»ØºÏÖÆÕ½¶·ÇëÇó: mapID=%s,funcLineID=%s,tagType=%s,tagID=%s,valueList=%sNi(R)R,tGetPlayerByIndexRyRztTagTypetTagIDt    ValueListRWRÛtFBLogictOnTurnFightRequesttGetFBPlayerLineupIDRíR‚tGetFBNPCLineupInfotOnTurnFightVSNPC(tindext
clientDatattickR.R/R0ttagTypettagIDt    valueListtreqRett atkLineupIDt defLineupIDtrettnpcLineupIDListRCRD((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt OnTurnFights,                          c Csø|jƒ}tjd||||||f|ƒ|s<dSt||ƒ}|sitjd||ƒdSd}    |tjkrÁtjddƒ}    t|ƒ}
|
j    } | j
ƒrÁ| j ƒqÁnt ƒ} | j |||ƒ} | j}| j|||    td|d|d|ƒ| jtji|d    6ƒx§t|ƒD]™\}}|| _tjd
||fƒ|d kr|| jƒn| jtjit|||ƒd    6ƒ| jƒ| jƒt| jƒ| js7Pq7q7Wt||| jƒ| j|ƒdS( NsfOnTurnFightVSNPC: mapID=%s,funcLineID=%s,atkLineupID=%s,npcLineupIDList=%s,strongerLV=%s,difficulty=%ss"Íæ¼ÒûÓиÃÕóÈÝÊý¾Ý! atkLineupID=%sitMainlineiRBRCRDis"¶ÔÕ½NPCÕóÈÝ: index=%s, lineupID=%si(RÛR)RWRRIRÊR×RkRÑRRrRnRÃR¼R+RFRVRRRJt    enumerateRARERdR R\Rqt__processTurnFightR7tSyncTurnFightReportR8R¿(R.R/R0R¤R§RCRDRtlineupMainInfoR3t mainFightMgrtmainTFRÂRR+RRß((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRœ'sF                   (      &
 
      cCsòtjƒj|ƒ}|j}|j}|dkrAt|ƒdS|dkr^t||ƒdStjd||jƒƒt    j
ƒ}d|_ t j ||ƒ|dkr¹t|tƒn|dkrÕt||ƒnd|_ t j ||ƒdS(NiisÖ÷ÏßÕ½¶·ÇëÇó: reqType=%sii(R)R,R”tReqTypetReqValuet__doExitMainFightt__doSetFightPointRWRÛRwttagSCTurnFightReportSigntSignR³R´t__doMainLevelWaveRVt __doMainFight(RRžRŸR.treqTypetreqValueR¡((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytOnMainFightReq]s(         
             cCs/t|ƒ}|j}|r+|jtƒndS(N(RÑRRnRV(R.R®R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR²zs
     cCsStjd|ƒ|dkr n"|dkr/n|dkr>ndS|j|ƒdS(NsÉèÖÃÕ½´¸ÏûºÄ±¶Öµ: %siii(R)RWt SetFightPoint(R.t
fightPoint((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR³‚s    cCs    |jƒ}tj|ƒ\}}}tjd||||f|ƒt|jƒdƒ}tj|tj    |ƒs‚tjdƒdSt
j d|ƒ}|sždSt
j d||ƒ}|søx<|dkrô|d8}t
j d||ƒ}|r¼Pq¼q¼Wn|sdSd}    xE|    dkrOt |d|    ƒ sBt|d|    ƒƒ rO|    d8}    q W|    dkr`dS||    kru|    }nt|d|ƒƒ}
|
s•dS|
d} t|tjƒ} | sËtjd    |ƒdS|jƒ} |jƒ}t|ƒ}||_||_|    |_||_t
jd
d ƒ}tjtj|||ƒ}}tjd ||||    |
||| | |f
|ƒ|j}|j|||td |
d| d|ƒ|jtj i| d6ƒ|jtj!it"| | |ƒd6ƒ|j#ƒ|j$ƒt%|ƒdS(Ns?ÇëÇó¹Ø¿¨²¨Õ½¶·: chapterID=%s,levelNum=%s,wave=%s,isRestStart=%sisÕ½´¸²»×㣬ÎÞ·¨¿ªÊ¼!RÒRÓisGetWaveLineupIDList%sisûÓÐÉèÖÃÖ÷ÕóÈÝ!R©isqÉèÖÃÆðʼ¹Ø¿¨²¨: ¹Ø¿¨%s-%s,²¨=%s/%s,lineupIDList=%s,mapID=%s,funcLineID=%s,lineupID=%s,strongerLV=%s,difficulty=%sRBRCRD(&RÛRÔRÖR)RWtmaxt GetFightPointt    HaveMoneyRítTYPE_Price_XiantaoR×RRØR¬RRt Lineup_MaintGetNPCLVt GetDifficultyRÑRÅRÆRÇRÈRkRIRÉtComMainLevelValueRRFR4RRRJRdR R\RqR·(R.t isRestStartRRÅRÆRÈR¼tchapterIpyDatat levelIpyDataRÇRBRßR­RCRDR®R3R/R0R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR¶’sj   
 :      
                       )    (&
 
 
c
Csž|rUd}|j|ƒ}|rB||dkrBtjdƒdS|j||ƒnt|ƒ}|j}|jƒ}|r€dS|jƒst|t    ƒdS|j
}|rF|j ƒ}|r5tjd|j ||j fƒ|jƒ|jtjit||j|jƒd6ƒ|jƒ|jƒt|ƒn t|tƒdSt|jƒdƒ}    tj|tj|    ƒs„tjdƒdSt|ƒ}
|
rœt    nt} t j!ƒ} |j"} |j#}x¾t$| |dƒD]©} |j%| ƒ}|j&ƒ}|d7}||krç|j'|ƒ}tjd| |fƒ| |_"|rP|j(t)ƒnx”|j*D]†\}}tjd    | ||fƒ|j+|ƒ}|j,|ƒ}d|_-x6|j.j/ƒD]%}| j0|ƒ}t1||| ƒq·WqZWn|j2ƒr÷Pnt3t4|j*ƒ}d
}x¼||krÎ|j5t4|j*ƒkrÎ|d7}|j*|j5\}}|j+|ƒ}|j,|ƒ}xt$|j-t3dƒD]}||j.krÊ|d|_-|j'|dt    ƒ}qŒn|j.|}| j0|ƒ}| r+|tj6kr+|r+|j7ƒr+tjd ||fƒdSn|d|_-|j'|dƒ}t8||| ƒt9||ƒspqŒn| r|tj6krt    } nPqŒW|j5t4|j*ƒdkr¼d
|_5q|j5d7_5qW|j'|dƒ}xˆ|j*D]}\}}tjd | ||fƒ|j+|ƒ}|j,|ƒ}x6|j.j/ƒD]%}| j0|ƒ}t:||| ƒq@WqìW|j2ƒrÔPqÔqÔW|j
sšt;|j<ƒndS( sŠÖ´ÐÐÖ÷ÏßÕ½¶·£¬µ¥³¡Õ½¶·¶Ïµçʽս¶·£¬ÒÔǰ¶ËÍæ¼ÒÊÖ¶¯µã»÷½Úµã×öΪ¶Ïµã´¦
    Ã¿³¡Õ½¶·µÄ³õʼ»¯¡¢½áÊøÄ¬È϶ϵ㣬ÓÉǰ¶Ë¾ö¶¨×Ô¶¯¼ÌÐø»òÕßµã»÷¼ÌÐø
    tMainFightReqTickièsÖ÷ÏßÕ½¶·ÇëÇóCDÖÐNs6---¿ªÊ¼½øÈëÏÂһС¶Ó: lineupIndex=%s,nextLineupID=%s,%sis»ØºÏ¿ªÊ¼Ê±Õ½´¸²»×ã!s1¡¾----- »ØºÏÖÆÕ½¶·ÂÖ´Î: %s -----¡¿ curTimeline=%ss+»ØºÏ¿ªÊ¼Âß¼­: turnNum=%s,faction=%s, num=%sis>Íæ¼ÒÕóÈÝÏÂÒ»¸ö¿ÉÐж¯µÄÎ佫£¬¶Ïµã: curTimeline=%s,nextPosNum=%ss+»ØºÏ½áÊøÂß¼­: turnNum=%s,faction=%s, num=%s(=t GetDictByKeyR)RWtSetDictRÑRRËRrR¶RVR6RMRARBRERRRIRdR RCRDR\RqR·R4R½R¾RÔR¿RíRÀt
EntryLogicRRR2R3RR^R_RaRjtFightState_FightingR<RNR%R RRRbtTurnFightPerTurnBigStartRit    PosNumMaxRKR=RJt    CanActiontTurnFightHeroTurnStartt OnObjActiontTurnFightPerTurnBigEndt OnTurnAllOverR+(R.RŸtkeytlastTickR®RRËR6RMR¼tisEntrytcheckBreakpointRR2R3t turnTimelinet curTimelineRRRPRQRRhtdoMaxtdoCntRg((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR·ÓsÄ               
,
 
              
          '
              cCs€tƒj|ƒ}|j}|j}t|ƒtjƒ}x&td|dƒD]}||_t    j
d|ƒ|j |ƒ}|j |dƒ}|r¦|j tƒnx‘|jD]†\}}t    j
d|||fƒ|j|ƒ}    |    j|ƒ}
d|
_x6|
jjƒD]%} |j| ƒ} t|| |ƒq Wq°W|jƒrJPntt|jƒ} d}xK|| kr°|jt|jƒkr°|d7}|j|j\}}|j|ƒ}    |    j|ƒ}
x«t|
jtdƒD]“}|d|
_||
jkr|j |dtƒ}qßn|j |dƒ}|
j|} |j| ƒ} t|| |ƒt|| ƒsqqßnPqßW|jt|jƒdkržd|_qf|jd7_qfW|j |dƒ}xˆ|jD]}\}}t    j
d|||fƒ|j|ƒ}    |    j|ƒ}
x6|
jjƒD]%} |j| ƒ} t|| |ƒq"WqÎW|jƒrNPqNqNW|js|t |j!ƒndS(Nis"¡¾----- »ØºÏÖÆÕ½¶·ÂÖ´Î: %s -----¡¿s+»ØºÏ¿ªÊ¼Âß¼­: turnNum=%s,faction=%s, num=%sis+»ØºÏ½áÊøÂß¼­: turnNum=%s,faction=%s, num=%s("RÃR½R.R3RËRRRR2R)RWR^RaRjRÌR<RNR%R RRRbRÍRiRÎRKR=RVRÐRÑRÒR6RÓR+(R+RR.R3RR2RÙRRRPRQRRhRÚRÛRg((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR«fsr        
          '
        cCs¢|j}|j}|j}|j}|j}tj|jƒƒ}|rY|d|7}n|rp|d|7}nd|tj    krˆdnd|||j
ƒ|fS(Ns Hero:%ss NPC:%ss%s%s-P%s ID:%s %stAtB( Rt    lineupNumRgRðR
R)t    CodeToGbkRnRIRJRˆ(RhRRRgRðR
R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR„²s                    cCs³|jr dStjdƒtjƒ}x}|jD]r\}}|j|ƒ}|j|ƒ}t|_    x<|j
j ƒD]+}|j |ƒ}t j||tjƒqsWq0Wt|_tS(NsÖ´Ðнø³¡Âß¼­...(R5R)RWRRR<RNR%R
R RRRbt TurnPassivetOnTriggerPassiveEffectRItTriggerWay_FightStartRV(RRRRRPRQRRh((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRË¿s              c Cs|jƒ}tjƒ}xò|jjƒD]á}xØ|jjƒD]Ç}x¾|jjƒD]­}|j|ƒ}| sT|jƒ rƒqTn|j    t
j dƒ|j    t
j dƒ|j    t
j dƒ|jƒ}|jƒ}xÙtd|jƒƒD]Â}    |j|    ƒ}
|
s qên|
jƒ} | s#qên|
jƒ} t| |tƒ} | dkrSqên|
jƒ}td| | ƒ}|
j|ƒ|
j|ƒtjd|||| | fƒqêW|jƒ}xBt|jƒƒddd…D]!}    |j|    ƒ}|j ƒ}|jƒ}|j!ƒ}|j"ƒt
j#kr0qÜn|jƒ} | sHqÜn|jƒ} t| |t$ƒ} | dkrxqÜntd| | ƒ}tjd||||| | fƒ|dkrê|j|ƒ|j|ƒt%j&|||ƒqÜt%j'|||ƒqÜWqTWq>Wq(WdS(NisT¸üм¼ÄÜÊ£Óà»ØºÏÊý: curID=%s,skillID=%s,updRemainTime=%s,calcTimeline=%s,passTurn=%siÿÿÿÿs^¸üÐÂbuffÊ£Óà»ØºÏÊý: curID=%s,buffID=%s,skillID=%s,updRemainTime=%s,calcTimeline=%s,passTurn=%s((R_RRR;RR"RRbRcRÊRItDef_Obj_Dict_TurnComboNumtDef_Obj_Dict_TurnMissNumtDef_Obj_Dict_TurnParryNumRˆRRt GetSkillCounttGetSkillByIndext GetRemainTimet GetCalcTimet__calcPassturnRVRSR½t SetRemainTimet SetCalcTimeR)RWtGetBuffManagert GetBuffCounttGetBuffByIndext    GetBuffIDt GetSkillDatat GetSkillTypetDef_LstBuff_ListR4tTurnBufftSyncBuffRefresht    DoBuffDel(Rt nowTimelineRRPRQRRhtcurIDR“RtcurSkillt
remainTimet calcTimelinetpassTurnR[t updRemainTimetbuffMgrtbufftbuffIDt    skillData((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR`Ñsl               &             #cCs–|t}|t}|t}|t}|r`||krKtd||ƒStd||dƒS||kr}td||ƒStd||dƒSdS(Nii(R]R½(RûR÷tequalOKt calcTurnNumt calcTimeNodet
nowTurnNumt nowTimeNode((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRês
 
 
 
  cCs:|s
dS|jƒdkr dStj||tjƒdS(Ni(RRàRáRItTriggerWay_BigTurnStart(RRhR2((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRÍ(s cCs:|s
dS|jƒdkr dStj||tjƒdS(Ni(RRàRáRItTriggerWay_BigTurnEnd(RRhR2((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRÒ3s cCs:|s
dS|jƒdkr dStj||tjƒdS(Ni(RRàRáRItTriggerWay_HeroTurnStart(RRhR2((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRÐ>s cCsX|s
dS|jƒ}|jƒ}|j|ƒ}tjd||||||fƒdS(NsT        Í³¼ÆÖÎÁÆ: curID=%s,srcID=%s,skillID=%s,addValue=%s,cureHP=%s,updStatValue=%s(Rˆt StatCureValueR)RW(tcurObjtsrcObjtaddValuetcureHPR[RøtsrcIDt updStatValue((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytAddTurnObjCureHPIs      c    
Csé|dkrdS|jƒ}|jƒ}||kr¼|j|ƒ}tjd|||||||jƒ|fƒ|rå|j|ƒ}tjd|||||||jƒ|fƒqån)tjd||||||jƒfƒdS(Nisj        Í³¼ÆÉËѪ: curID=%s,tagID=%s,skillID=%s,hurtValue=%s,lostHP=%s,updStatValue=%s,tagHP=%s,isBounce=%ssj        Í³¼Æ³ÐÉË: curID=%s,tagID=%s,skillID=%s,hurtValue=%s,lostHP=%s,updStatValue=%s,curHP=%s,isBounce=%ssJ        ×Ô²Ð: curID=%s,tagID=%s,skillID=%s,hurtValue=%s,lostHP=%s,curHP=%s(Rˆt StatHurtValueR)RWRt StatDefValue(    t    curBatObjt    tagBatObjt    hurtValuetlostHPR[tisBounceRøR¡R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytAddTurnObjHurtValueYs        &    ,     cCs]|s
dS|jƒ}|jƒ}|dkr2dS|j}t|ƒ}|jƒ}|sttjd||fƒdS|jƒ}|jƒ}tjd|||||j    ƒ|fƒ|j
||ƒt j ||t jƒtjddƒ}    |jƒ}
g} xtd|
jƒƒD]ì} |
j| ƒ} | s6qn| jƒt jt jgkrZqntj| ƒroqn| jƒrqn| jƒ}tj| ƒrÜ||    kr®qn|jt jƒrÓtjdƒqnd}n|j|ƒ}| j ||| gƒqW| j!ƒx1| D])}|d} t"j#||| ƒrPqqWt j ||t j$ƒt%S(Nis¡ï»ØºÏ%s %s µ±Ç°×´Ì¬²»¿ÉÐж¯!s.¡ï»ØºÏ%s %s Ðж¯ : atk=%s,curHP=%s/%s,curXP=%sRiis³°·í״̬Ï£¬ÎÞ·¨Ö÷¶¯ÊÍ·ÅÅ­¼¼!iÿÿÿÿ(&RRˆR2R„RÏR)RWRRšR”RªRàRáRItTriggerWay_HeroActionStartR×RkRRRæRçt GetFuncTypet Def_SkillFuncType_TurnNormaSkilltDef_SkillFuncType_AngerSkillt SkillCommontisPassiveSkillRèRSt isAngerSkillt    IsInStatetBatObjState_SneertGetSkillUseCntRTRUt    TurnSkillt
OnUseSkilltTriggerWay_HeroActionEndRV(RRtcurHPRR2Rt    canActiontatktcurXPtxpMaxR“t useSkillListRtuseSkillR[tuseCnttuseInfo((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRÑps^           )         
 
c    Csü|jƒ}|r|jƒnd}|r6|jƒnd}tjdt|ƒ|||fƒ|jƒtjƒjt    j
ƒ}||_ ||_ ||_ |j|ƒ|j}|rø|jtjkrø|jƒtjkrøtj|tjdƒntS(NisA        %s »ØºÏÕ½¶·Ö÷Ìå±»»÷ɱ: curID=%s,killerObjID=%s,skillID=%si(RˆRSR)RWR„tSetDeadR°R±RºRwttagMCTurnFightObjDeadR‰t KillerObjIDtSkillIDRŸR.R/RIRÉt
GetFactionRJt
PlayerTaskt AddTaskValuetTaskType_KillNPCRV(    RtgameObjtkillerR-Rt killerObjIDR[R¡R.((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt SetObjKilled³s #
                 -cCsztjdƒtƒj|ƒ}|s)dS|jr6dS|jrNtj|_ntj    tj
tjgƒ|_t |ƒdS(Ns ËùÓлغϽáÊø( R)RWRÃR½R6RRIRdRtchoiceRJRe(R+R((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRÓÆs         
cCstƒ}|j|ƒ}|s"dStjƒ|j|_|j}|tjk|_t    j
d||j|fƒt j ƒ}i}x¼|j jƒD]«}t|ƒ|kr½i|t|ƒ<n|t|ƒ}|j|ƒ}x^|jjƒD]M}    t|    ƒ|kri|t|    ƒ<n|t|    ƒ}
|j|    ƒ} t    j
d||    fƒxé| jjƒD]Ø\} } |j| ƒ}|s„q]n|jƒ} |jƒ}|jƒ}|j}|j}|j}t    j
d| | |||jƒ|jƒ|||f    ƒi| d6|d6|d6|d6|d6|d    6|
t| ƒ<q]WqìWq’Wi|d
6|d 6}|j}|j}|j }t!j"|||||ƒ|j#t$|ƒdS( Ns5--- Õ½¶·½áÊø´¦Àí ---, winFaction=%s, costTime=%ss, %ssÕóÈÝÃ÷ϸ: faction=%s,num=%ssE    Pos:%s ID=%s,npcID=%s,heroID=%s,HP=%s/%s, Êä³ö=%s,³ÐÉË=%s,ÖÎÁÆ=%sR‰RR‹tAtkHurttDefHurttCureHPR6tstatInfo(%RÃR½RHR?R@R6RIRJR7R)RWRRR;RRâRNR"R%RRORbRˆRŠRŒthurtStattdefStattcureStatRR”R.R/R0R˜tOnTurnFightOverRjtFightState_Award(R+RÂRR6RR@Rt facStatInfoRPRtlineupStatInfoRQRgRRhR
RðtatkHurttdefHurtRtoverMsgR.R/R0((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyReÚsR                            /F            cCsdS(N((RRžRŸ((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytOnTurnFightReportViewscCsDtjƒ}||_||_t|jƒ|_tj||ƒdS(N(RwttagSCTurnFightReporttGUIDtReportRKR}R³R´(R.R+treprotR¡((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR¬s          (HRIR5RwR³RÔR)R×RÌRRíRÀRRRàR$RôR°R˜RRHRtR]RÎR
RRotFightState_PrepareOKRÌtFightState_FightEndRERkRlRR!R'R¸RÃRÄRÑRÞRàRR RRRRR¨RœRºR²R³R4R¶R·R«R„RËR`RêRÍRÒRÐRRRÑR#R;RÓReRKR¬(((siD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt<module>s~                      !-ÿ                
        (C         g    %    6             A “    L             F                       C        9