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
/¿Efc@sáddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZedƒ\ZZZZZZedd1ƒ\ZZZdZdZ dd2d„ƒYZ!e!ƒa"d„Z#d    „Z$d
„Z%d d „Z&d „Z'd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-dd„Z/d„Z0d„Z1d„Z2d„Z3ej4d„Z5d„Z6d„Z7d„Z8d„Z9d„Z:d„Z;d „Z<d!„Z=d"„Z>dd#„Z?d$„Z@d%„ZAd d&„ZBd'„ZCejDeEd(„ZFd)„ZGd*„ZHd+„ZId,„ZJd-„ZKd.d.d d/„ZLd0„ZMdS(3iÿÿÿÿNiiiitTurnFightBattlecBs>eZd„Zd„Zd„Zd„Zd„Zd„ZRS(cCs|jƒdS(N(t    CleaerBat(tself((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt__init__>s
cCsgd|_d|_d|_d|_d|_g|_i|_i|_i|_    i|_
i|_ dS(Ni( tNonet    curPlayertmapIDt
funcLineIDttagTypettagIDt    valueListtfactionObjListDicttfactionMainObjListDicttobjTotalHurtDicttfactionTotalHurtDicttfbData(R((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRBs                                            cCs:||_||_||_||_||_||_dS(N(RRRRR    R
(RRRRRR    R
((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt    SetBattleQs                        cCs||j|<||j|<dS(N(R R (RtfactiontobjListt mainObjList((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt SetFactionObjZs  cCs2t|jkrdS|jt}|s*dS|dS(Ni(t Def_FactionBR (RR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt GetTagMainObj_s  cCsŸ|jƒ}tj|ƒ}|jj|dƒ|}||j|<|jj|dƒ|}||j|<|tkr›tj|j    |j
|j |||ƒn|S(Ni( tGetIDtGameObjt
GetFactionR tgetRt Def_FactionAtFBLogictOnTurnFightPlayerFactionHurtRRR(RtcurObjt    hurtValuetobjIDRt updHurtValuetfactionHurtValue((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytAddObjHurtValuehs    ((t__name__t
__module__RRRRRR#(((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR<s                             cCstS(N(tg_turnFightBattle(((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytGetTurnFightBattlewscCs™|jƒ}tj|ƒ}|jtjƒ}|jtjƒ}| rj|jƒtj    krj|j
ƒ}nd|t krdnd|||j ƒ|fS(Ns%s%s %s[%s-%s]tAtB( tGetNameRRt GetDictByKeytChConfigtDef_Obj_Dict_FightPetPlaceNumtDef_NPC_Dict_MirrorPlayerIDtGetGameObjTypet IPY_GameWorldtgotNPCtGetNPCIDRR(tgameObjtobjNameRt fightPlaceNumtcurID((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt
GetObjName{s c     CsRtjƒj|ƒ}|j}|j}|j}|j}|j}|jƒ}    |t    j
kr€||    kr€tj d|    ƒdSnt j |ƒ}
t j||ƒ} |
s­| rØt j||||
| ƒtjkrØdSntj||||||ƒ} | sdS|t    jkr2t|d|||||gƒdSt|||||||ƒdS(Ns ²»ÄÜ´ò×Ô¼º!tTurnFightRequest(t    GameWorldtGetPlayerManagertGetPlayerByIndextMapIDt
FuncLineIDtTagTypetTagIDt    ValueListt GetPlayerIDR,tTurnBattle_TagType_PlayertDebugLogtFBCommont GetFBIpyDatatGetFBLineIpyDatatCheckCanEnterFBCommt ShareDefinetEntFBAskRet_OKRtOnTurnFightRequesttDef_TFMapID_SendToGameServertSendToGameServer_TurnFighttDoTurnFightProcess( tindext
clientDatattickRRRRR    R
tplayerIDt    fbIpyDatat fbLineIpyDatatreqRet((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt OnTurnFights0                       $tcCsd|jƒ}t||gƒ}tjƒj|ddd|t|ƒƒtjd||f|ƒdS(Nit    TurnFights»ØºÏÕ½¶··¢ËÍGameServer: %s, %s(RAtstrR9R:tGameServer_QueryPlayerResulttlentLog(RtmsgTypetdataMsgRQtmsgList((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRL°s
 (c
Cs¬|\}}}|sdS|dkrY|\}}}}    }
t|||||    |
|ƒnO|dkr¨|\}}}}    }
} } tj|||||    |
| | |ƒ    ndS(NR8t TurnFightOver(RMRtOnTurnFightOver_GameServerRet( RtmsgDataRPR\R]tretRRRR    R
tfightRett awardItemList((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytGameServer_TurnFight_DoResult·s  (cCs¸|jƒ|jƒkr1tj||jƒƒnt|||||tƒ|tjkrtj    ||t
|||gt ƒdSt |||||||ƒt|||||t ƒdS(N(t GetSightLevelRt PlayerControltSetPlayerSightLeveltSyncTurnFightStatetFightState_StartR,RBtPlayerViewCacheTubetGetPlayerPropDataCalltDoTrunFightVSPlayertTruet DoTrunFighttFightState_Over(RRRRR    R
RP((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRMÈs"c
    Cs„tj}|}|\}}}|rg|jƒ|krgtjƒjƒ}    t|||||||    ƒnt|||||tƒdS(N(    R,RBRAR9t GetGameWorldtGetTickRoRiRp(
Rt tagPlayerIDtcallDatatPropDictRR    RRR
RP((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRmÙs    cCCsµ    |s
dS|jƒ}t|ƒ}|tjkr@t|ƒ}    nÆ|tjkr|}
tj|
ƒ} | jƒ} g} x?t| dƒD].\}}| j    i|d6|d6dd6ƒq†Wg}|j
| j ƒƒ|j
| j ƒƒi|
d6| d6|d6}    ndS|j tƒ|jƒ}||jƒ|jƒ}}}ttd}}}t||||||ƒ}t|||    |||ƒ}|r•|n dgif\}}}|r¹|n dgif\}}}| sß| r||g||g}x|D]} t| |ƒqþWdStƒ}!|!jƒ|!j||||||ƒ|jtjƒ}"|jtjƒ}#t|ƒ}$t|ƒ}%tjd|$|%fƒtjd    dƒ}&||g}'||g}(|'|(g})|!j ||'|gƒ|!j ||(|gƒ|j!tj"|j#ƒƒ|j!tj"|j#ƒƒxh|)D]`}*xW|*D]O} | sWqEnt$j%| ƒ}+|+tkrx|n|},t&||| |,|ƒqEWq8Wd
}-g}|-dkrÚ|'|(}|j'd d „d t(ƒn{|-d
krUt$j)|ƒt$j)|ƒkr|(|'g})nx?t*t+|'ƒƒD](}.x|)D]}*|j    |*|.ƒq3Wq&Wnt,|||||t-d||gƒd}/xQt*d|&dƒD]<}0tjd|0ƒt,|||||t.|0|&ƒxT|D]L} | sãqÑnt$j%| ƒ}+|+tkr|n|},t/| |,|0|ƒqÑWt0||ƒ}/|/dkr@Pnx}t|dƒD]l\}1} | shqPnx!|D]}2t1|0|1|2|ƒqoW| j2ƒ}3| j#ƒ}4t3||0|3|4ƒt$j4| ƒdkrát5| ƒsáqPqánt$j%| ƒ}+t| ƒ}5t$j4| ƒ}6|+tkr|n|},|,j2ƒ}7|,j#ƒ}8t$j4|,ƒ}9tjd|0|1|5|3|4|6| j6ƒ|7|8|9f
ƒt7| |,|dt(ƒsqPnt0||ƒ}/|/dkrPPqPqPW|/dkr”Pq”q”Wt8j9|||||||/ƒ}/tjd|/ƒ|/rdnd}/|!j:}:xs|D]k} | s:q(nt$j%| ƒ}+t| ƒ}5| j#ƒ}4|!j;j<|4dƒ};tjd|5|4|+|;fƒq(Wx1|:j=ƒD]#\}+};tjd|+|;fƒq¤Wtjdt$j4|ƒt$j>|ƒfƒtjdt$j4|ƒt$j>|ƒfƒt,|||||t?|0|&ƒd}<tjd|||"|#|/fƒ|/|0|&|:|<g}=tgi}>}?}@t8j@|||||||=ƒ}A|AdkrÊ|A\}>}?}@n|>sß|tjAkr    tB|d||||||=|?gƒni|/d6tCjD|?ƒtCjE6|:j<tdƒd6}B|<oS    |BjFi|<d6ƒ|@of    |BjF|@ƒt,|||||tG|0|&|Bƒ    x|D]} t| |ƒq    W|!jƒdS(NitnpcIDtstateitqualitytpett skillIDExLists$===== Ö´ÐлغÏÖÆÕ½¶·: %s VS %s =====RWitkeycSs)tj|ƒdtj|ƒ|jƒfS(Ni
(Rt GetAtkSpeedRR(to((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt<lambda>-streversetmsgs"¡¾----- »ØºÏÖÆÕ½¶·ÂÖ´Î: %s -----¡¿sP¡ï»ØºÏ%s.%s %s Ðж¯ : objType-ID-HP(%s-%s-%s),curAtk=%s, tagType-ID-HP(%s-%s-%s)t
checkUseXPs--- Õ½¶·½áÊø´¦Àí --- isWin=%ss"%s objID=%s,faction=%s, ×ÜÊä³ö: %ssfaction=%s, ÕóÓª×ÜÊä³ö: %ssAÊ£ÓàѪÁ¿: %s / %ssBÊ£ÓàѪÁ¿: %s / %ssO===== »ØºÏÖÆÕ½¶·½áÊø: mapID=%s,funcLineID=%s,playerIDA=%s,playerIDB=%s,isWin=%sR_tisWint    totalHurtt
playbackID(HRAtGetPlayerFactionInfoByCacheR,RBtTurnBattle_TagType_NPCt    NPCCommont GetNPCDataExtGetPetNPCIDListt    enumeratetappendtextendtGetElfSkillIDListtGetSTSkillIDListt SetCanAttacktFalsetGetPosXtGetPosYRRt__SummonFactionObjsRtTurnFightObjOverResetR'RRR+R.R7R9RCt IpyGameDataPYt
GetFuncCfgRtSetDicttDef_Obj_Dict_TurnEnemyIDRRRtTurnFightObjStartInittsortRnR|trangeRZRitFightState_PrepareOKtFightState_FightingtTurnFightObjPerTurnStartt
CheckIswintTurnFightObjPerTurnActionnumR/tSyncTurnFightObjActiontGetHPtDoRebornt    GetMaxAtktDoAttackRtOnTurnFightIsWinRR RtitemstGetMaxHPtFightState_FightEndtOnTurnFightOverRKRLRDtGetJsonItemListt Over_itemInfotupdatetFightState_Award(CRRRRR    R
RPRQt factionInfoAt factionInfoBRvt    npcDataExt petNPCIDListt petCacheInfoRwtpetNPCIDRzt
sightLeveltposXtposYtfactionAtfactionBt mainRolePlacetobjRetAtobjRetBtobjAt petObjListAtfactionSyncInfoAtobjBt petObjListBtfactionSyncInfoBt fightObjListR3ttfBattlet    playerIDAt    playerIDBtobjNameAtobjNameBtturnMaxt factionListAt factionListBtatkFactionListtfactionObjListRt
tagGameObjtsortTypetiR‚tturnNumt    actionNumtobjtobjTypeR R4tcurHPt
tagObjTypettagObjIDttagHPRRƒR„RctneedSendGameServerRdt
overInfoExtoverRettoverMsg((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRoãs   &   $$     
 
  %                 ,  !       !))    ! (3" 
c    CsÜtj|tƒ\}}g}|jdiƒ}xt|jƒD]f\}}xW|jƒD]I\}}tj|ƒ}tjƒj|ƒ}|s’qVn|j    |ƒqVWq=Wi|d6|jdƒd6|d6|jddƒd6S(Nt    SkillInfoRQtPetRyt skillIDListt    ModelMarki(
RktGetPlayerPropPlusDictByIDRnRR§R9tToIntDeft GetGameDatatGetSkillBySkillIDR‹(    RQRutPlusDictRßRÝt_t skillLVDicttskillIDt    skillData((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR…¥sc Csˆi}|jdƒ}|jdƒ}|jdƒ}    |jdƒ}
|r¡tj}tj|||d|d|d|    d|
ƒ} ||d<|jddƒ|d<n>|rÛtj|||d|d|    d|
ƒ} ||d<nd    S| séd    Stj| |ƒ| jtj|ƒt    j
| |jd
ƒƒ} g} x*| D]"}|r4| j |j ƒƒq4q4W|j i| j ƒd 6| d 6ƒ| | |fS( sÌÕÙ»½ÕóÓªÕ½¶·ÊµÀý
    @param faction: ËùÊôÕóÓª£¬Ä¿Ç°Ö§³ÖÁ½¸öÕóÓª£¬1»ò2
    @param mainRolePlace: Õ½¶·Ö÷ÌåÔÚ¸ÃÕóÓªÉÏÕóλÖã¬1V1ʱĬÈÏ1£¬¶à¶Ô¶àʱ£¬´ú±íËùÔÚÕóӪλÖÃ
    @param objInfo: ¸ÃÕ½¶·Ö÷Ìå³öÕ½ÐÅÏ¢
    RQRvRßRzRµtmirrorPlayerIDRàiNRyR t petObjIDList(RR,t Def_NPCID_PVPR‡t SummonMapNpcRt
SetFactionR—t#Def_Obj_Dict_TurnFightMainRolePlacet
PetControltCalloutFightPetR‹RR­(RRºtobjInfoRµR¶R·tfactionSyncInfoRQRvRßRztmainObjt
petObjListRëtpetObj((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR“³s2    -
'  !cCs×tj|ƒdko$t|ƒdk}| sCtj|ƒdkoRt|ƒdk}| rg| rgdSd}|r“|r“t}tjd|ƒn@|r³t}tjd|ƒn |rÓt}tjd|ƒn|S(Nis(        Ë«·½±»»÷ɱ£¬Æ½¾ÖËãʧ°Ü: isWin=%ss"        Íæ¼Ò±»»÷ɱ£¬Ê§°Ü: isWin=%ss"        ¶ÔÊÖ±»»÷ɱ£¬Ê¤Àû: isWin=%s(RR¢tGetRebornTypeInfoRRR9RCRn(RttagObjt
playerDeadt
tagObjDeadR‚((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRŸÔs'. cCsÂ|jtjƒsdStjdt|ƒ|jƒfƒtj|dƒ|jtj    ƒ}|sedStj
ƒj |ƒ}|s„dSt j ƒ}|jƒ|_|jƒ|_tj||ƒtS(Ns'        %s »ØºÏÕ½¶·Ö÷Ìå±»»÷ɱ: curID=%si(R+R,RïR9RCR7RRtSetHPtDef_Obj_Dict_TurnFightIDtGetMapCopyPlayerManagertFindPlayerByIDtChPyNetSendPackttagMCTurnFightObjDeadtObjIDR/tObjTypet NetPackCommont SendFakePackRn(R3tkillerRQRt
clientPack((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt    SetKilledês# cCs)|jtjƒ}|sdStj|ƒS(N(R+R,R˜R9t FindNPCByID(R3R    ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt GetEnemyObjsc
Cs|s
dS|jtjƒs dSd}|jtjƒ}||krntjdt|ƒ|jƒ|fƒdS|jƒ}xÝt    |j
ƒƒD]É}|j |ƒ}|j ƒtj kr½qn|jƒrÏqnt||ƒ\}}|r|rt||fSqnt||ƒsqn|jƒtjkr7t|fS|jƒtjkrt|fSqWx¶t    |jƒƒD]¢}|j|ƒ}    |    sŽqmntj|    ƒs£qmn|    jƒ}x]t    |j
ƒƒD]I}|j |ƒ}|j ƒtj kròqÂn|jƒsÂt|    |fSqÂWqmWdS(s9 »ñÈ¡¿É¸´»îµÄ·½Ê½ÐÅÏ¢
    @return: None-´ú±í²»¿É¸´»î
    Nis;%s ÒѾ­³¬¹ý¸´»î´ÎÊý£¬²»ÄÜÔÙ¸´»î! curID=%s,curRebornCount=%s(R+R,RïtDef_Obj_Dict_TurnRebornCountR9RCR7RtGetSkillManagerR›t GetSkillCounttGetSkillByIndext GetSkillTypetDef_SkillType_Revivet GetRemainTimetGetTriggerRebornPettRebornType_PetSkilltCheckRoleStateCanUseRebornSkillt GetFuncTypetDef_SkillFuncType_ElfSkilltRebornType_ElfSkilltDef_SkillFuncType_ShentongSkilltRebornType_ShentongSkilltGetSummonCounttGetSummonNPCAtRðtIsPetNPC(
R3trebornCountMaxtcurRebornCountt skillManagert
skillIndextskillt isPetTriggert
triggerPetRNt curSummonNPC((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR÷sR &   
  cCstd}}tj|ƒtjkr/||fSt}xNt|jƒƒD]:}|j    |ƒ}|siqHnt
j |ƒrH|}PqHqHW||fS(N( RRt
SkillShelltGetSkillAffectTagR,tDef_UseSkillTag_SummonMasterRnR›RRRðR(R3R R!R"RNR#((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR@s 
cCstS(N(Rn(R3R ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRQsc
Cs‹t|ƒ}|dkrdSt|ƒ}|jƒ}|jƒ}|d}d\}}|tkr¸|d\}    }
|
j|
jƒƒ|
jdƒj    dƒ}|    jƒ}|
j
ƒ}nV|t t gkr|d}
|
j|
jƒƒ|
jdƒj    dƒ}|
j
ƒ}n|j tjƒd} |jtj| ƒttj|ƒ|ttjƒƒ} tj|| ƒ|tjkr|jtjƒn|jtjƒtj|ƒ} tjd||||| | ||fƒ|j tjƒ}|sódStj ƒj!|ƒ}|sdSt"j#ƒ}|jƒ|_$|jƒ|_%| tj&|_'| tj&|_(||_)||_*||_+t,j-||ƒt.S(Niis`¸´»î %s: rebornType=%s,objID=%s,hpPer=%s,curHP=%s,rebornCount=%s,rebornValue1=%s,rebornValue2=%s(ii(/R÷RR7RR/Rt SetRemainTimetGetCoolDownTimet    GetEffecttGetEffectValuet
GetSkillIDRRR+R,R
R—tintRR¨tfloattDef_MaxRateValueRûR0t    gotPlayert ChangeActiontpaNullt    laNPCNullR¢R9RCRüRýRþRÿttagMCTurnFightObjRebornRRtDef_PerPointValuetHPtHPExt
RebornTypet RebornValue1t RebornValue2RRRn(R3thpPertrebornTypeInfoR4R RÔt
rebornTypet rebornValue1t rebornValue2tpetNPCR t rebornCounttsetHPRÕRQRR((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR£WsZ     
 
&                  cCs|dS(Nid((ttimeline((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt
GetTurnNumscCs|jtj|d|ƒdS(sëÉèÖûغÏÖÆÕ½¶·ËùÔÚʱ¼ä½Úµã
    @param turnNum: µÚ¼¸»ØºÏ£¬Èç¹ûÔڻغÏÖÆÕ½¶·ÖУ¬Ôò»ØºÏÊýÒ»¶¨´óÓÚ0,
    @param actionNum: µÚ¼¸¸öÐж¯½Úµã£¬Ã¿»ØºÏµÄÐж¯½Úµã»áÖØÖã¬Ò²¾ÍÊÇ˵Ðж¯½Úµã0¿ÉÊÓΪÿ»ØºÏµÄÆðʼ½Úµã£¬1λµÚÒ»¸öÐж¯Ä¿±ê½Úµã£¬ÒÔ´ËÀàÍÆ
    idN(R—R,tDef_Obj_Dict_TurnFightTimeline(R3RÑRÒ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt SetTimeline‘sc    Cs|s
dS|jtjƒ}|jtj|ƒ|jtj|ƒ|jtjdƒ|jtjdƒ|jtjdƒt    |ddƒt
j |ƒ}t
j |t ƒ|jƒ|jƒ}|tjkrÛ|jƒnd}t|ƒ}    |jtjƒ}
tjd|    tj|ƒ|jƒ|t
j|ƒ||fƒt} |tjkrš|jƒ} xt| jƒƒD]"} | j | ƒ}|j!dƒqqWnâ|tjkr|g}|jƒ} x¤t| jƒƒD]} | j | ƒ}|sïqÎn|r
|j"ƒr
t } n|j#|j$ƒƒ|
rÎ|j%ƒtj&kr^|j'|ƒ|j!|j(ƒƒq^qÎqÎWtjd||fƒn| r×t
j)|t*j+ddƒƒt
j,|dƒ|jtj-dƒ|jtj.dƒnt/j0||dtj2|ƒt3|ƒdS(NiisL¡¾ %s ³õʼ»¯ %s ¡¿ objID=%s,npcID=%s,atkSpeed=%s,faction=%s,mainRolePlace=%ss$    NPC¼¼ÄÜ: npcID=%s,skillIDList=%st TurnFightXP(4R+R,RïR—tDef_Obj_Dict_TurnFightMapIDRüR
t%Def_Obj_Dict_TurnSkillSuccessPetStatet#Def_Obj_Dict_TurnAttackOverPetStateRERRt    SetHPFullRnt RefreshViewR/R0R1R2R7R-R9RCt
BaseAttacktGetObjAttackNameRR|RR/R R›R R R'tGetXPR‹R+RRtSetLastUseTickR(tSetMaxXPR•R–tSetXPtDef_Obj_Dict_TurnAtkAddXPCounttDef_Obj_Dict_TurnXPFullTimelinetPassiveBuffEffMngtOnPassiveSkillTriggerRtTriggerType_TurnFightStartt__logGameObjAttr(RRQR3RøRPRºRRÔRvR4R5t haveXPSkillRRÐtcurSkillRß((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR™™s^
 !     5       
cCs|tjdtj|ƒtj|ƒ|jƒ|jƒ|jƒtj|ƒfƒ|j    t
j ƒsfdStjdtj |ƒtj |ƒtj|ƒtj|ƒtj|ƒtj|ƒtj|ƒtj|ƒtj|ƒtj|ƒtj|ƒtj|ƒf ƒtjdtj|ƒtj|ƒtj|ƒtj|ƒtj|ƒtj|ƒtj|ƒtj|ƒfƒdS(Ns)    HP=%s/%s,atk=%s~%s,Def=%s,atkSpeed=%ss?    ÉÁ(%s,%s),±©(%s,%s),ÔÎ(%s,%s),Á¬(%s,%s),·´(%s,%s),Îü(%s,%s)s<    XP=%s/%s,Ç¿ÁÆ=%s,ÈõÁÆ=%s,Ç¿Áé=%s,ÈõÁé=%s,Ç¿±©=%s,Èõ±©=%s( R9RCRR¢R¨t    GetMinAtkR¤tGetDefR|R+R,Rït GetMissRatetGetMissDefRatetGetSuperHitRatetGetSuperHitRateReducet GetFaintRatetGetFaintDefRatet GetComboRatetGetComboDefRatetGetAtkBackRatetGetAtkBackDefRatet GetSuckHPPertGetSuckHPDefPerRNtGetMaxXPt
GetCurePert GetCureDefPertGetPetStrengthenPertGetPetWeakenPertGetSuperHitHurtPertGetSuperHitHurtDefPer(R3((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRWÔs"    *         0 c Cs™|s
dSt||dƒ|jtjdƒ|jtjdƒ|jtjdƒ|jtjdƒ|jtjdƒ|jƒ}|j    ƒ}t
|ƒ}t j d||||t j|ƒfƒ|jƒ}xŠt|jƒƒD]v}|j|ƒ}    |    jƒ}
|
sqån|    jƒ} td|
tjƒ} |    j| ƒt j d| |
| fƒqåWtj||ƒtj||dtj|ƒt|ƒdS(Nis3ObjPerTurnStart: »ØºÏ%s, %s objType-ID-HP(%s-%s-%s)s-    skillID=%s,remainTime=%s,updRemainTime=%s(RER—R,tDef_Obj_Dict_TurnComboNumtDef_Obj_Dict_TurnAtkBackNumRRtDef_Obj_Dict_TurnXPUseStatetDef_PlayerKey_AttrFaintCDR/RR7R9RCRR¢R R›R R RR+tmaxtDef_PerTurnTickR'R$tProcessPersistBuffRTRURtTriggerType_TurnNumRW( R3RøRÑRPRÔR R4RRÐR t
remainTimeRèt updRemainTime((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRžés4   )    
c
Cs!|s
dSt|||ƒ|jƒ}|tjkrÉ|jtjdƒtj||ƒ}tj    ||ƒ\}}t
j
|ƒ}|r”|j ƒn|j ƒs|s¬|r¹|j ƒn|jƒqnT|tjkr|jtjdƒ|jtjdƒtj|ƒ}    |    j|ƒndS(Ni(RER/R0R/t SetTickByTypeR,tTYPE_Player_Tick_Bufft PlayerStatetProcessRefreshBuffStatetProcessRefreshActionBuffStateRgtRefreshPlayerActionStatetRefreshPlayerAttrStateExtRefreshPlayerAttrByBufftRefreshPlayerAttrByBuffExR1tTYPE_NPC_Tick_BufftTYPE_NPC_Tick_Buff_TimelyR‡t
NPCControltRefreshBuffState(
RÑRÒR3RPRÔt reFlashBufftattrBuffResultt actBuffResultt playerControlt
npcControl((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR s*     cCsÐ|s
dS|jƒ}|tjkr3t|ƒdS|tjkrFdS|jtjƒ}t|||ƒ}t    |ddƒ|j
tj dƒt j |dƒt j|ƒ|rÌtj|ƒ}|jƒndS(Ni(R/R0R1t
RecycleObjR/R+R,RDtClearTurnFightBuffRER—tDef_Obj_Dict_TurnBattleTypeRRîRJRgR€(R3RPRÔRBt isDelRefreshR‰((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR”2s$ 
  cCsxt}|jƒ}|jƒ}xSttjtjƒD]<}|tjkr^|tj    kr^q4nt
j ||ƒ}|dkr‚q4n|d}xátd|j ƒƒddd…D]½}    |j |    ƒ}
|
jƒ} | jƒ} | sèq¯n|
jƒ|krq¯ntjd|| fƒ|
jƒ|
jƒ} }tj||
|ƒ|j|    ƒtj|| | |ƒt}q¯Wq4W|S(Niiÿÿÿÿs+    É¾³ý»ØºÏÖÆbuff: objID=%s,buffSkillID=%s((RR/RR›R0tbfBufftbtBufMaxR/R,tDef_BuffType_OnlyPlayert SkillCommontGetBuffManagerByBuffTypet GetBuffCounttGetBufftGetSkillR+tGetCalcStartTickR9RCt
GetOwnerIDt GetOwnerTypet    BuffSkilltDoBuffDisAppertDeleteBuffByIndexR$tClearBuffEffectBySkillIDRn(R3ttimeLineRPRŽRÔR tbuffTypet    buffTuplet    buffStateRÐtcurBuffRYt buffSkillIDtownerIDt    ownerType((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRŒLs2   
)   cCsp|jƒ}|tjkrdS|tjkr_tj|ƒ}|r_|jƒtjkr_dSntj|ƒdS(N(    tGetGameNPCObjTypeR0tgnotPett
gnotSummonR‡tGetSummonOwnerDetelR/R1t    SetDeadEx(R3t
npcObjTypetcurOwner((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR‹js  c Cs'|jtjƒsdStƒ}|jƒ}|jƒ}|rI|jƒnd}    ||kr¢|j||ƒ}
tjd|||    |||
|t    j
|ƒfƒn2tjd|||    |||
|t    j
|ƒfƒ|r#||kr#t |t ||ƒd|    ƒt |t ||ƒd|    ƒndS(Nisc        ÉËѪ: curTD=%s,tagID=%s,skillID=%s,hurtType=%s,hurtValue=%s,totalHurt=%s,lostHP=%s,tagHP=%ssc        ×Ô²Ð: curTD=%s,tagID=%s,skillID=%s,hurtType=%s,hurtValue=%s,totalHurt=%s,lostHP=%s,curHP=%ss
skillID:%s(R+R,RDR'RR+R#R9RCRR¢tAddTurnFightXPt__GetAddXP_Defendert__GetAddXP_Attack( RRøthurtTypeRtlostHPRYRÄR6R    RèRƒ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pytAddTurnObjHurtValue|s            ,    ) cCs| p|jƒtjk}|s&dS|jtjƒ}tjddƒ}|t|ƒkr`dS|jtj|dƒ||S(NiRFii(    RR,tDef_SkillType_AtkR+RRR•tGetFuncEvalCfgRZR—(tattackRYt isAddXPSkillt atkAddXPCountt    addXPList((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR¯‘scCsNtj|ƒ}|sdStj|ƒ}|t|ƒ}ttjddƒƒS(NiRFi(RRhR¨R-tevalR•tGetFuncCompileCfg(tdefenderR±tmaxXPtmaxHPt    lostHPPer((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR®s cCs|s
dStj|ƒ}|s#dStj|ƒ}||krBdSt|||ƒ}tj||ƒtjd|jƒ||||fƒdS(Ns=        ¸üÐÂXP: curID=%s,curXP=%s,addXP=%s,updXP=%s,reason=%s(RRhRNtminRQR9RCR(R3taddXPtreasonR¼tcurXPtupdXP((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR­§s &c
CsÏtj|ƒ}tj|ƒ}| s1||kr5dSt|jtjƒƒ}t|jtjƒƒ}||krudS|jtj    dƒd}|j
ƒ}x.t d|j ƒƒD]}    |j |    ƒ}
|
sÞ|
jƒdkrâPn|
jƒ} tj|
ƒrq°ntj|
|ƒdkr!q°n|
jƒ} | s°| |krFq°n|jƒ} |jƒ}tj|||
||ƒs™tjd| || fƒq°ntjd| || fƒ|jtj    dƒ| SWdS(Niis4        XP¼¼Äܹ¥»÷ʧ°Ü: curID=%s,tagID=%s,skillID=%ss4        XP¼¼Äܹ¥»÷³É¹¦: curID=%s,tagID=%s,skillID=%si(RRhRNRCR+R,RDRSR—RqR R›R R tGetSkillTypeIDR+R’tisPassiveSkilltRefreshSkillRemainTimeRtAICommont DoNPCUseSkillR9RC(RRøRPR¼RÂRÑt xpFullTurnNumttagDistRRNRYRètneedXPR6R    ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt__CheckUseXPSkill¹s@      c CsÍ|jƒ}|jƒ}t|ƒ}tjd||||fƒ|r`t|||ƒr`tSn|tjkrŽtj    ||dtj |ƒn|j tj |ƒ|jƒtjkrËt|||ƒ}n9|jtjƒròt|||ƒ}nt|||ƒ}|j tj dƒ|s!dStj|ƒ}    tj|ƒ}
tjd||    ||
fƒ|
dkst|    dkrxtSt||ƒr¡t|||tjƒtSt||ƒrÉt|||tjƒntS(Ns7    ¡ñ %s DoAttack: curID=%s,tagID=%s,turnBattleType=%sis-            curID-HP=(%s-%s),tagID-HP=(%s-%s)(RR7R9RCRÌRnR,tTurnBattleType_AtkBackRTRURtTriggerType_AtkBackBefR—RR/R0R/t PlayerAttackR+R.tPlayerMirrorAttackt    NPCAttackRR¢t
CanAtkBackR¥tCanCombotTurnBattleType_Combo( RRøRPtturnBattleTypeRR6R    R4tatkOKRÕRØ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR¥ãs:   cCs:|jtjƒdkrtStj|ƒ}|jtjƒ}|dkrMtS|dkr¨tjddƒ}t    |ƒ|kr‹||dnd}t
||dƒ}ntj |ƒ}t d||ƒ}|dksæt j|ƒ rt jd|jƒ||||fƒtSt jd|jƒ||||fƒtS(    Nii
RWiigY@sf            ÎÞ·¨·´»÷: defID=%s,atkBackNum=%s,atkBackRate=%s=(defAtkBackRate=%s - atkAtkBackDefRate=%s)sf            ¿ÉÒÔ·´»÷: defID=%s,atkBackNum=%s,atkBackRate=%s=(defAtkBackRate=%s - atkAtkBackDefRate=%s)(R+R,R-RRRdRpR•R´RZR,ReRsR9t    CanHappenRCRRn(tatkObjtdefObjtdefAtkBackRatet
atkBackNumt validPerListtvaildPertatkAtkBackDefRatet atkBackRate((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRÒ s&  &        cCstj|ƒ}|jtjƒ}|dkr1tS|dkrŒtjddƒ}t|ƒ|kro||dnd}t    ||dƒ}ntj
|ƒ}t d||ƒ}|dksÊt j |ƒ rôt jd|jƒ||||fƒtSt jd|jƒ||||fƒtS(    Ni
iRWiigY@s]            ÎÞ·¨Á¬»÷: atkID=%s,comboNum=%s,comboRate=%s=(atkComboRate=%s - defComboReduce=%s)s]            ¿ÉÒÔÁ¬»÷: atkID=%s,comboNum=%s,comboRate=%s=(atkComboRate=%s - defComboReduce=%s)(RRbR+R,RoRR•R´RZR,RcRsR9R×RCRRn(RØRÙt atkComboRatetcomboNumRÜRÝtdefComboReducet    comboRate((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRÓ%s"  &        c CsÔ|s
dS|jtjƒ}|dkrðtjddƒ}|t|ƒkrPdS||d}tjddiƒ}|jtjƒ}|jt|ƒdƒ}||7}|dkrðt    j
|dƒ rðt    j d|j ƒ|||fƒdSnd}    t j|||    |ƒ}
|
sª|r:t    j d|j ƒ|fƒqÐtj||d|ƒ}
|
rt    j d    |j ƒ|j ƒ|
fƒqÐt    j d
|j ƒ|j ƒ|
fƒn&t    j d |j ƒ|j ƒ|
fƒ|
S( Nit PetGoOutFightiiiidsO        Áé³è¸ÅÂʲ»¹¥»÷: curID=%s,fightPlaceNum=%s,petQuality=%s,fightRatePer=%ss3        Áé³è²»¿ÉÆÕͨ¹¥»÷: curID=%s,fightPlaceNum=%ss,        ÆÕͨ¹¥»÷: curID=%s,tagID=%s,atkOK=%ss,        ¹¥»÷ʧ°Ü: curID=%s,tagID=%s,atkOK=%ss,        ¼¼Äܹ¥»÷: curID=%s,tagID=%s,atkOK=%s(R+R,R-R•R´RZtDef_Obj_Dict_FightPetQualityRRXR9R×RCRRÇtDoAutoUseSkillRLtAttackR( RRøRPR5t fightRateListt fightRatePertqualityAddRateInfot
petQualityt qualityAddPerRÊRÖ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRÑ<s6 
     ))&c CsE|jtjƒ}|jƒ}tjddiƒ}d}|jƒ}x¤|D]œ}|j|ƒ}    |    smqLn|    jƒ}
t    j
|    ƒrŽqLnt    j |    |ƒdkr¬qLnt j |||    ||ƒsÍqLntjd|||
fƒ|
SWtj||d|ƒ} | r'tjd||| fƒntjd||| fƒ| S(NRWiis5        ¼¼Äܹ¥»÷³É¹¦: playerID=%s,tagID=%s,skillID=%ss,        ÆÕͨ¹¥»÷: curID=%s,tagID=%s,atkOK=%ss,        ¹¥»÷ʧ°Ü: curID=%s,tagID=%s,atkOK=%s(R+R,R.RR•R´R tFindSkillBySkillTypeIDR+R’RÅRÆRÇRÈR9RCRLRçR( t    playerNPCRøRPRQR×tautoUseSkillTypeIDListRÊRt skillTypeIDRYRèRÖ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRÐcs.    cCs|jƒ}tjddiƒ}|jƒ|jƒf\}}\}}|jƒ|jƒ}    }
|jƒ|j||ƒ|j    |ƒ|j
|ƒ|j |    ƒ|j |
ƒt } |jƒ} xÝ|D]Õ} | j| ƒ}|sêqÉn|jƒ}tj|ƒr qÉntj||ƒdkr)qÉn|j|jƒƒ|jƒ}tj|||ƒs}tjd||
|fƒqÉnt} tjd||
|fƒPqÉW|jƒ| stj||d|ƒ}|rót} tjd||
|fƒqtjd||
|fƒn| S(NRWiis5        ¼¼Äܹ¥»÷ʧ°Ü: playerID=%s,tagID=%s,skillID=%ss5        ¼¼Äܹ¥»÷³É¹¦: playerID=%s,tagID=%s,skillID=%ss,        ÆÕͨ¹¥»÷: curID=%s,tagID=%s,atkOK=%ss,        ¹¥»÷ʧ°Ü: curID=%s,tagID=%s,atkOK=%s(RAR•R´R‘R’R/RtClearUseSkillRectSetAttackTargetPostSetUseSkillPosXtSetUseSkillPosYtSetUseSkillTagTypetSetUseSkillTagIDRR RíR+R’RÅRÆt SetUseSkillt GetSkillDatat GetUseSkillR{t__DoClientUseSkillExR9RCRnRLRçR(RRøRPRQRïR¶R·ttagPosXttagPosYRÖR×tuseSkillResulttskillMgrRðRYRèt useSkillDataRÖ((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRψsJ (
 
ic    
Cs”|s
dStjƒ}    |    jƒ||    _||    _||    _||    _||    _||    _||    _    t
|ƒ|    _ t |    j ƒ|    _ tj||    ƒdS(N(RÿttagMCTurnFightStatetClearR<R=R>R?tStatetTurnNumtTurnMaxRXtMsgRZtLenRR(
RRRRR    RwRÑRÉR€R((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyRiÀs 
                            cCsO|s
dStjƒ}|jƒ||_||_||_tj||ƒdS(N(RÿttagMCTurnFightObjActionRRRRRR(RRÑRÔR R((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyR¡Ñs 
            i((NR,RÇRLR{R•R0RÿRkRRgR’R‡R9RRðR$RšRDRTRRHR›RjRœRR©R®RpRRRRRRR&R'R7RURLReRMRmRoR…R“RŸRRR    R÷RRR.R£RCRER™RWRžR R”RŒR‹R²R¯R®R­RÌtTurnBattleType_NormalRR¥RÒRÓRÑRÐRÏRiR¡(((sjE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\TurnAttack.pyt<module>s‚                    
:                              
    Â        !             9        9            ;        &    #                      
    *)            '    %    8