hwj35
2025-06-23 aa0f971ae9a59f0fd98d57b6c1d1663a270be92c
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
TFhc@s‡ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZdddgZdZddd„ƒYZddde dd    „Z!d
„Z"d „Z#d „Z$ddddd „Z&d„Z'd„Z(d„Z)e de d„Z*d„Z+dd„Z,e dd„Z-d„Z.d„Z/e d„Z0e d„Z1e e d„Z2d„Z3d„Z4d„Z5d„Z6d„Z7dS( iÿÿÿÿNii<i
tMirror_StartMoveTickt MirrorBattlecBsƒeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z d d d „Z d „ZRS(cCs|jƒdS(N(tClear(tself((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyt__init__7s
cCsÜd|_t|_d|_d|_d|_d|_d|_d|_d|_    d|_
i|_ i|_ i|_ i|_g|_g|_t|_t|_t|_d|_d|_d|_d|_d|_dS(Ni(t isChangeMaptFalsetisSysbgt    requestIDtplayerIDtbattleIDtmapIDt
funcLineIDtbatStatet    stateTicktstateTickRemaint mirrorIDDictt
realIDDicttplayerFactionDicttplayerAutoSkillInfotdeadPlayerIDListttagPlayerIDListtisLogouttisQuicktisWint
winFactiontcurHPtcurHPMaxttagHPttagHPMax(R((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR;s2                                                                                                cCs|jr|jdSdS(Ni(R(R((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytGetTagPlayerIDXscCsŸ|jr dS|j|ƒ|j}|tjkrK|jtj|jƒnP|tjkrs|jtj    |jƒn(|tj
kr›|jtj |jƒndS(N( Rt CaclStateTickR tChConfigtDef_MirrorBatState_Preparet!_MirrorBattle__SyncRealPlayerTickt tttWaitStartRtDef_MirrorBatState_Fightt tttTowerTaketDef_MirrorBatState_Overt tttLeaveMap(Rtticktstate((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytSyncFBStepTimeZs         cCs[tjƒ}xH|jjƒD]7}|j|ƒ}|s=qn|j|d|tƒqWdS(Ni(t    GameWorldtGetMapCopyPlayerManagerRtkeystFindPlayerByIDt Sync_TimeTicktTrue(RtmsgTypetmsgTickt    playerMgrR    t    curPlayer((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyt__SyncRealPlayerTickhs cCsbtjd|j|f|jƒ||_||_|jƒ|_|j|ƒt    j
||ƒdS(Ns#¾µÏñÕ½¶·½×¶Î±ä¸ü: mapID=%s,state=%s( R+tDebugLogR R
R RtGetStateTickMaxRR*tFBCommont    SetFBStep(RR)R(((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytChangeBattleStateqs          cCs6|jƒ}||j}td||ƒ|_|jS(Ni(R7RtmaxR(RR(t stateTickMaxtpassTick((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyRzs  cCs|jS(N(R(R((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytGetStateTickRemainscCs·tjddiƒ}|j|jgƒ}| sCt|ƒdkrLt}n|j}d}|tjkrw|d}n8|tj    kr“|d}n|tj
kr¯|d}n|dS(Nt MirrorAttackiiiiiè( t IpyGameDataPYtGetFuncEvalCfgtgetR tlentDef_StateTimeListR R R!R$R&(RtfightTimeLimitDictt stateTimeListR)t    stateTime((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR7‚s           cCsh|j s|j rdSt|jt|jƒddƒ}t|jt|jƒddƒ}||fS(Niidi(ii(RRtroundRtfloatR(RtcurHPPerttagHPPer((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyt    CalcHPPer’s
##cCs't|jt|jƒƒdƒ}|S(Nid(RHRRIR7(Rt remainTimePer((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytCalcRemainTimePer™s#icCs|jƒ}|jƒ}|r.||j|<n'i|jƒd6|jƒd6|j|<||j|<|jtj    |j
ƒ|r—|r—|j ||ƒn|j t ƒ|j|ƒtj||j
ƒtj|tjdƒtj|ƒtj|tj|ƒƒtj|ƒdS(Nt
SightLeveltFactioni(t GetPlayerIDtGetRealPlayerIDRt GetSightLevelt
GetFactionRRtSetDictR tDef_PlayerKey_MirrorBattleIDR
tResetPost SetCanAttackR0t
SetFactiont PlayerControltSetPlayerSightLeveltSetSighttDef_PlayerSight_DefaulttGameObjt    SetHPFullt    SetProDeft GetMaxProDeft SkillCommontResetAllSkillCD(RR4tfactiontposXtposYR    t realPlayerID((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytAddBattlePlayeržs"  '      c Cs|jƒ}||jkr&|j|S|jƒ}g}tjƒ}xbt|jƒƒD]N}|j|ƒ}|jƒ}|t    |ƒkrqWn|j
||dƒqWW|j ƒ}    t j |    |ƒ}
tjd|ƒ} x| D]} |
j
| ƒqàWtjd|
|ƒ|
|j|<|
S(NitJobFitterSkills¼ÓÔØÍæ¼ÒÉèÖõÄ×Ô¶¯¼¼ÄÜ: %s(RQRtGetJobR@tIPY_DatatrangetGetSkillMatchCounttGetSkillMatchByIndext    GetSkillsRCtappendt
GetSettingtCommFunctParseSetting_AutoSkillListRAR+R6( RR4R    tjobtdefaultSkillListt
ipyDataMgrtindextipyDatatskillst playerSettingtautoUseSkillListtcurJobCommAtkSkillIDListt commSkillID((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytGetPlayerAutoUseSkillList³s(        (t__name__t
__module__RRRR*R"R:RR>R7RLRNRhR~(((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR4s                                                    icCsnd}|rj|tjkrjtƒ}||_||_||_||_||_||_    |tj|<n|S(N(
tNonet
PyGameDatatg_mirrorBattleDictRR
R R RRR    (R
R R RRR    tbattle((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytAddMirrorBattleÍs                            cCs2|jƒr"t|jtjƒƒSt|jƒƒS(N(RRtGetMirrorBattleByIDt GetDictByKeyR RVRQ(R4((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytGetMirrorBattleÜs cCs;d}|tjkr%tj|}ntr7tƒ}n|S(N(RR‚RƒRR(R
R„((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR†âs  c Csltjj|dƒ}|sdS|j}|j}|j}tjd||||f|ƒtj    ƒ}tj
ƒj ƒ}x?|j j ƒD].}|j|ƒ}|rˆtj||ƒqˆqˆWxH|jjƒD]7\}    }
|j|    ƒ} | sñqÊn| jtjdƒ| jtjdƒ| jƒtjksAtj| ƒdkr`tj| tj|dtƒn| j |
j!ddƒƒtj"| |
j!ddƒƒtj#| tj$ƒ|s´qÊntj%| ƒtj&| tj'| ƒƒt(j)| ƒ| j*|ƒtj+| ƒqÊW|j|ƒ} | rC| jtjdƒ| jtjdƒn|j,rht-j.tj
ƒj ƒƒndS(Ns@Çå³ý¾µÏñÕ½¶·: battleID=%s,ownerPlayerID=%s,isSysbg=%s,isQuick=%sitisAddSuperBuffRPRO(/R‚RƒtpopRR    RRR+R6tGetPlayerManagert GetGameWorldtGetTickRR-R.RZt DeleteMirrorRtitemsRUR RVtDef_PlayerKey_MirrorBattleTimetGetPlayerActiont IPY_GameWorldtpaDieR^tGetHPtChPlayertPlayerRebornByTypetrebornType_SystemRRYRBR[R\R]R_R`RaRbRct SetAttackTickt__Sync_ClientBuffRtGameWorldProcesstCloseFB( R
R„t ownerPlayerIDRRR3R(tmirrorIDt mirrorPlayerRgtinfoR4((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytClearMirrorBattleByIDësL              *       c Cs¾t|ƒ}|s'tjd|ƒdS|j}|j}    d}
|rT|jƒ}
ntjƒj|||ƒ} | s™tjd||||f|
ƒdS|js¸t    j
| ||    ƒnt    j
| ddƒ| j ƒ} | j ƒ} t    j | ƒ}tjd| | ||    ||||| jƒf    |
ƒ|dkrF|jj| ƒntj| ƒtj| ttƒ| jƒ| jtƒ| j| jƒ| jƒƒ| jtƒ| jtƒ| jtƒ| j tƒ| j!ƒ| j"tƒt#j$| ƒt    j    | ƒ}|j%ƒt    j | ƒ}||krHtjd| | ||f|
ƒn|j&| |||ƒ| j'tƒ| j(ƒt)j*| ƒtjƒj+ƒrºt,| ƒ|
| krºt,|ƒqºn| S(s² ´´½¨¾µÏñÍæ¼Ò 
    @param battleID: ËùÊôµÄÕ½¶·ID
    @param mirrorPlayerID: Ä¿±ê¾µÏñÍæ¼ÒID
    @param mirrorPlayerData: Ä¿±ê¾µÏñÍæ¼ÒÊý¾Ý
    @param curPlayer: Ö´Ðд´½¨µÄÍæ¼Ò
    s/ûÓиþµÏñÕ½¶·ID£¬ÎÞ·¨´´½¨Íæ¼Ò¾µÏñ! battleID=%sNis?CreateMirrorPlayer mirrorPlayerID=%s,posX=%s,posY=%s,faction=%ss|CreateMirrorPlayer mirrorID=%s,realPlayerID=%s,mapID=%s,funcLineID=%s,posX=%s,posY=%s,faction=%s,dataFightPower=%s,,accID=%sisXCreateMirrorPlayer mirrorID=%s,realPlayerID=%s,dataFightPower=%s != refreshFightPower=%s(-R†R+tErrLogR R RQRŒtCreateMirrorPlayerRRZt SetCustomMaptGetIDRRt GetFightPowerR6tGetAccIDRRpR•tInitPlayerPackt PlayerHorsetPlayerRideHorseUpRtSendToBServerServerInitOKt SetMapLoadOKR0tInitPostGetPosXtGetPosYRXt
SetCanMovetSetIsNeedProcesst    SetInitOKt
EndLoadMaptSetGameServerInitOKtPassiveBuffEffMngtOnLoadMapGFPassivetReCalcAllStateRht
SetVisiblet RefreshViewt
PetControltDoLogic_PetLoadMapOKt GetDebugLeveltDebugLogPlayerInfo(R
tmirrorPlayerIDtmirrorPlayerDataReRfRdR4R„R R R    RžRRgtdataFightPowert mirrorControltrefreshFightPower((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR¢sf                       ,  
 
 
 
      
 
 cCs|jƒ}tjd|ƒ|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}tjd||||||f|ƒtjdt    j
|ƒt    j |ƒt j |ƒt j|ƒf|ƒd}xHtdtjƒD]4}    tj||    ƒ}
|
rçd||    |
f}qçqçWtjd||ƒtjdt j|ƒ|ƒi} |jƒ} x}td    | jƒƒD]f} | j| ƒ}|s™qxn|jƒ}|| kr¾i| |<n| |}|jƒ||jƒ<qxWxS| jƒD]E\}}|jƒ}|jƒtjd
|t|ƒ|f|ƒqïWt j!ƒj"|ƒ}|r²tjd |j#|ƒtjd |j$|ƒtjd |j%|ƒtjd|j&|ƒntjd|ƒ|j'ƒj(ƒ}|rVtjdt)j*|ƒ|ƒt j!ƒj"|ƒ}|rCtjd|j#|ƒtjd|j%|ƒqVtjd|ƒnx©t+j,t-j.t-j/gD]}|j0ƒj1|ƒ}d    }xHtd    |j2ƒƒD]1} |j3| ƒ}|j4ƒsÍq¦n|d7}q¦Wtjd|||j2ƒf|ƒqoWtjd|ƒdS(Ns8-------------- DebugLogPlayerInfoÍæ¼ÒÐÅÏ¢ --------------sArealPlayerID=%s,posX=%s,posY=%s,faction=%s,sightLevel=%s,sight=%ssÉúÃü=%s/%s, »¤¶Ü=%s/%stis%s,%s=%ss AttrInfo=%ss FightPower=%sisSkill FuncType=%s,count=%s,%ss ±»¶¯Ð§¹û £º%ssÑ¡Öеı»¶¯¼¼ÄÜЧ¹û £º%ss±»¶¯BUFFЧ¹û £º%ssÉñÊÞ±»¶¯Ð§¹û £º%ssÎÞ¼¼Äܱ»¶¯Ð§¹û!s³öÕ½³èÎï¼¼ÄÜ%s-%ss³èÎï±»¶¯Ð§¹û £º%ss³èÎï±»¶¯BUFFЧ¹û £º%sspackType:%s,count=%s/%ss7-------------------------------------------------------(5RQR+R6RRR­R®RTRStGetSightR^R”tGetMaxHPRZt    GetProDefRatxrangeR tDef_Calc_AllAttrType_MAXt    EffGetSettGetValueByEffIndexR¥tGetSkillManagerRlt GetSkillCounttGetSkillByIndext GetFuncTypet GetSkillNamet
GetSkillIDRR-tsortRCR´tGetPassiveEffManagert GetPassiveEfftAffectSkillDicttAffectPassiveSkillSetDicttAffectBuffDicttAffectDogzSkillDictt    GetPetMgrt GetFightPett    PlayerPettGetPetLearnSkillR’trptEquipt ShareDefinetrptPett rptDogzEquiptGetItemManagertGetPacktGetCounttGetAtt GetItemTypeID(R4R    RgReRfRdt
sightLeveltsighttattrInfoRwtvaluet    skillDictt skillManagertitcurSkilltfuncTypet    skillInfot skillIDListt
passiveEfftfightPettpackTypetcurPackt    itemCounttitem((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR¼rsz               #    
 
' 'cCs/tjƒj|ƒ}tj||dtƒdS(Nt forcePackData(R+R‹tGetPlayerByIndextPlayerViewCacheTubetUpdateGameServerPlayerCacheR0(Rwt
clientDataR(R4((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytOnSycnPlayerPackDataÄsc
Csøtjƒj|ƒ}|j}|j}|j}|j}|sCdS|jƒ}|dkr‡t||||g|ggt    |t
ƒdS|dkr¿t |ƒ}    |    r»t |    j dt
ƒndS|dkrôt||||g|ggt
|ƒdSdS(NiitisClicki(R+R‹RötMapIDt
FuncLineIDt
TagPlayeIDtCmdTypeRQtOnRequestCreateMirrorBattleRR0RˆtDoMirrorBattleQuickR
(
RwRùR(R4R R t
tagPlayeIDtcmdTypeR    R„((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyt OnMirrorFightÓs(                  (
  %c Csˆd}ttjƒƒ}|røtjƒr>tjd|ƒdStj||||ƒsttjd||f|ƒdS|jƒ}|jt    j
ƒr¦tjd|ƒdS|jt    j ƒ}    |    râ||    dkrât j |dƒdS|jt    j |ƒnt}g}
xot|dƒD]^\} } xO| D]G} | |krR| dkrR| rRq'n| |
kr'|
j| ƒq'q'WqWi|d    6|d
6|d 6|d 6}|}    tjƒjƒ}id d6|d6|
d6|    d6|d6|d6|d6}|rd|d<t j|||d|ƒtS|r<|r<||
kr<tj|ƒnt|ƒ}tjƒjdddd|t|ƒƒtjd||ƒtS(sû ÇëÇó´´½¨¾µÏñÕ½¶·£¬Ö§³Ö¶à¶Ô¶à£¬Ö§³Ö¿ç·þ£¬±¾·þ¿ç·þµØÍ¼Öоù¿ÉÖ±½ÓÇëÇó
    @param mapID: ¹¦ÄܵØÍ¼ID
    @param funcLineID: ¹¦ÄܵØÍ¼Ïß·ID
    @param requestID: ÇëÇóID£¬Èç¹ûÊÇÍæ¼Ò·¢ÆðµÄ£¬Ò»°ã´«ÈëÍæ¼ÒID£»Èç¹ûÊÇϵͳ·¢ÆðµÄ£¬ÓÉϵͳ×ÔÐоö¶¨£¬±ÈÈçroomIDÖ®Àà
    @param factionPlayerList: Õ½¶·µÄÕóÓªÍæ¼ÒÁбí [[ÕóÓª1Íæ¼ÒID, ...], [ÕóÓª2Íæ¼ÒID, ...]]
    @param isSysbg: ÊÇ·ñºǫ́ս¶·£¬Ä¬ÈÏ·ñ£¬µ«ÊÇϵͳ·¢ÆðµÄĬÈÏÊÇ
    @param curPlayer: ·¢ÆðµÄÍæ¼Ò£¬Îª¿Õʱ´ú±íϵͳ·¢Æð´´½¨µÄ
    @param isChangeMap: ÊÇ·ñÇÐÕ½¶·³¡¾°µØÍ¼
    is#¿ç·þ·þÎñÆ÷Öв»ÔÊÐíÍæ¼Ò¾µÏñÕ½¶·ÇëÇó!Ns0µ±Ç°²»ÔÊÐí¸Ã¾µÏñÕ½¶·ÇëÇó! mapID=%s,funcLineID=%ss¾µÏñÕ½¶·³¡¾°ÖУ¬ÎÞ·¨ÇëÇó!it RequestLateriR R tfactionPlayerListRRR1tmsgDatat mirrorIDListt requestTimeRt
sceneMapIDR    Rt    reqInfoExtReuestPlayerPackDatasÇëÇó´´½¨¾µÏñÕ½¶·: %s(tintttimeR+t IsCrossServerR6tFBLogictOnMirrorBattleRequestRQR‡R RVRRZt
NotifyCodeRUR0t    enumerateRpRŒt GetRealMapIDt PlayerEnterFBR÷tNormalSyncPackDatatstrR‹tGameServer_QueryPlayerResultRC(R R RRRR4RR    tcurTimeR    RRdtbatPlayerIDListt batPlayerIDRR
tsendMsg((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyRýsR     "
 (cCsR| s |jƒs |jƒ r$dStjƒjƒ}|tjkrctjd||jƒƒdSt    |ƒ}|rétj
d|jƒƒ|j tj |j ƒ|jdƒtj||j ƒtj|tjdƒ|j|ƒdS|jƒ}|tjkrdStj|}| s.t|ƒdkr2dS|\}}t|||ƒdS(sr ¾µÏñÕ½¶·³õʼ»¯  - ÐèÒªÇÐͼµÄ£¬Íæ¼ÒÇÐͼ³É¹¦»òµØÍ¼ÊÕµ½´ò°üÊý¾Ýͬ²½Ê±»á´¥·¢£¬¼´ÕâÁ½¸öÌõ¼þ¶¼×¼±¸ºÃºó²Å¿ªÊ¼³õʼ»¯
    Ns)¾µÏñÕ½¶·¸Ã½×¶ÎÒѾ­²»Äܳõʼ»¯ÁË! fbStep=%ss¾µÏñÕ½¶·Íæ¼Ò¶ÏÏßÖØÁ¬³É¹¦!iii(tIsEmptyt GetMapLoadOKR+t    GetGameFBt    GetFBStepR tDef_MirrorBatState_InitR¡RQRˆR6RURVR
RYRZR[R\R]R*R‚tg_playerReqEnterFBExRCtOnMirrorBattleInit(R4R(tfbStepR„R    treqInfotmsgInfot packDataDict((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytOnMirrorBattleEnterMapInit?s0       c Cs¥|d}|jddƒ}|d}|jddƒ}|jddƒ}|jdgƒ}|jddƒ}    d}
|    rºd    } xFt| | d
ƒD]} | tjkr”| }
Pq”q”Wn|rÉ|}
nt|
||||    |ƒ} | stjd |
|f|ƒd S|jd dƒ| _tjd||j    ƒf|
ƒt
|||    |ƒ}|s\d Sxõt |dƒD]ä\}}||d}|\}}x»t |ƒD]­\}}|||d}}|r||kr|dkr|     r| j ||||ƒqŸn|j|ƒ}|s0tjd||ƒqŸnt |
||||||ƒqŸWqlWtjƒjƒ}| jtj|ƒ|    sƒd St|
ƒt|
ƒt|
ƒd S(sÒ ¾µÏñÕ½¶·³õʼ»¯ 
    @param msgInfo: OnRequestCreateMirrorBattle ·¢ËÍGameServerµÄÐÅÏ¢
    @param packDataDict: ·µ»ØÐèÒªµÄÍæ¼Ò´ò°üÊý¾Ý {playerID:packData, ...}
    @param curPlayer: Èç¹ûÊÇÍæ¼Ò·¢ÆðµÄÔò²»Îª¿Õ
    RR    iRR R RRiʚ;iès(¾µÏñÕ½³¡IDÒÑ´æÔÚ! battleID=%s,msgInfo=%sNRs(¾µÏñÕ½¶·³õʼ»¯: msgData=%s,packIDList=%siis0³õʼ»¯¾µÏñÕ½¶·Ê±Ã»ÓÐÍæ¼Ò¾µÏñÊý¾Ý! batPlayerID=%s(RBRlR‚RƒR…R+R¡RR6R-tOnGetMirrorBattlePosRRhR¢RŒRR:R R!tOnMirrorBattleStartRR (R&R'R4RR    RR R RRR
tsysBattleIDStarttnumR„tfactionPosListRdRtposInfot factionPosXt factionPosYRwRReRftpackDataR(((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR#^s\
 
       %$
 
 
c    CsØ|r›|r(|jƒ|jƒ}}n%tjƒ}|jƒ|jƒ}}tjƒj||ƒs€tjd||fƒdS||g||gg}n9tj    ddiƒ}|j
|ddgddggƒ}|S(Ns&¾µÏñÕ½¶·´´½¨×ø±êÒì³£! posX=%s, posY=%sR?ii
ii(i%( R­R®R+tGetMapt GetRebornMapXt GetRebornMapYtCanMoveR¡R@RARB(    R tlineIDRR4ReRftgameMapR-tfactionPosDict((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR)žs $cCsUt|ƒ}|sdS|jtjkr,dStjƒjƒ}|jtj|ƒdS(N(R†R R R$R+RŒRR:(R
R„R(((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR*®s c     Csdt|ƒ}|sdS|jƒ}|jƒ}|rÓ||jƒkrà|jrÐ|j|ƒdkrÐ|jtjkr†t    |j
ƒqÍ|jtj kr¨t |j
ƒqÍ|jtj krÍt|j
ƒqÍqÐqàn |jsàdS|jtj krödStj|ƒdkrdS||jƒ|jƒkr/dSgt_|j|ƒ}|jƒtjkrltj|ƒnt}tj||ƒ}|r¨t|||||jƒ}n|sM|j ƒ}t!j"ƒ}    x„|j#j$ƒD]p\}
} | |krôqÖn|r|j%ƒ|
krqÖn|    j&|
ƒ} t|| |||jƒ}|rÖPqÖqÖWndt_|r`dSdS(Ni((RˆRQRRRRRR R R!R*R
R$tOnMirrorAttackOverR&R RR^R”tGetPlayerAttackTicktGetAtkIntervalR‚tg_singleAtkRecordListR~tGetPlayerVehicleR’tpvHorseR¨tPlayerRideHorseDownRt PlayerStatet__GetCanAttack_ObjDetelt PlayerAttackRTR+R,RRR¤R.R( R4R(R„R    RgR{tisOKt    actionObjt
curFactionR3RRdttagObj((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytProcessPlayerMirrorAI¹s\                   cCsI| stj|ƒdkr dS|jƒ}|jƒ|jƒ}}|jƒ|jƒ}}    |jƒ|jƒ}
} |j|ƒ|jƒ|j    ||ƒ|j
|
ƒ|j | ƒ|j |ƒ|j |    ƒt} t} |jƒ}x |D]}|j|ƒ}|sqñn|jƒ}tj|ƒr3qñntj||ƒdkrQqñntj|||tƒsut} qñn|j|jƒƒ|jƒ}tj|||ƒs¯qñnt} |ró|jƒtjkrótj ||ƒtj!||ƒnPqñW|jƒ| r|j"|ƒn| r5t#||||ƒdS|j$t%dƒ| S(Ni(&R^R”RQR­R®tGetGameObjTypeR¤t SetActionObjtClearUseSkillRectSetAttackTargetPostSetUseSkillPosXtSetUseSkillPosYtSetUseSkillTagTypetSetUseSkillTagIDRRÊtFindSkillBySkillTypeIDRÏRbtisPassiveSkilltRefreshSkillRemainTimet AttackCommontCheckPlayerAttackDistR0t SetUseSkillt GetSkillDatat GetUseSkillR@t__DoClientUseSkillExR tDef_SkillID_SomersaultR¹tPetFighttSummonFollowAtkR˜t    MoveToObjRUR(R4RFR(R{RR    ReRft
tagObjTypettagObjIDttagPosXttagPosYt
needMovetotuseSkillResulttskillMgrt skillTypeIDRëtskillIDt useSkillData((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyRBýsZ  
 
cCsWtj|tjtjƒsdS|jƒ|jƒ}}|jƒ}|jƒ}tj    ||dƒ}|jƒ}    |jƒ}
|r—|j
|    |
ƒdS|j t ƒ} | sÀ|j t |ƒdS|jƒ} | sÖdS|| } | t| ƒ}|dkrdS|    |
}}||}}tj||||tƒ}ttj|||||ƒƒ}ttj|||||ƒƒ}tj||||tƒ}|dkrªdS|j
||ƒ|j t |ƒtjƒ}|jƒ|jƒ|_|jƒ|_tj|_||_||_ | |_!||_"||_#|j$|j%ƒ|j&ƒƒdS(Nii('tOperControlManagertIsObjCanDoActionR tDef_Obj_ActState_ServerActR’toalMoveR­R®tGameMaptGetEmptyPlaceInAreat    ChangePosR‡RRUtGetSpeedRIR+t    GetDistExRR tmathtceilt ChNetSendPackt
tagObjMoveRR¤tObjIDRHtObjTypetmtNormaltMoveTypetDestPosXtDestPosYtSpeedt    StartPosXt    StartPosYt    NotifyAllt    GetBuffert    GetLength(R4RFR(RtcurPosXtcurPosYtdestXtdestYt    resultPost    moveDestXt    moveDestYt startMoveTicktspeedtintervaltmoveDistt
m_DestPosXt
m_DestPosYt m_StartPosXt m_StartPosYt
m_DestDisttupdPosXtupdPosYtcDisttsendPack((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR\=s\          
   %%  
                     cCs±t|ƒ}|sdS|jtjkr,dS|jr9dS|j}|js|rtjddƒ}||krt    j
d||j ƒdSqnt    j ƒj ƒ}t|_||_|j|ƒt    jƒ}d}|j|}    t    j
d|ƒt    j
d||    ||jf|ƒx?|jjƒD].}
|j|
ƒ} | sDq#n| jtƒq#Wx/t|    ƒD]!} |jtjkr~Pn||7}xø|jjƒD]ç}
|
|jkr³q˜n|j|
ƒ} | s˜tj| ƒdkräq˜ntj| |ƒtj| |ƒ} tj | |ƒ\}}t!j!| ƒ}|r@|j"ƒn|j#ƒsr| sX|re|j$ƒn|j%ƒnt&| |ƒq˜WqbW|j's­t    j
d|ƒt(|ƒntS(    NR?is"Õ½¶·Öв»ÔÊÐíµã»÷¿ìËÙÕ½¶·! mapID=%sids@------------------------ ¾µÏñPK¿ìËÙ½áËã ------------------------sF¾µÏñPK¿ìËÙ½áËã: isLogout=%s,maxLoopCount=%s,tick=%s,stateTickRemain=%sisûÓл÷°Ü¶Ô·½ÕóÓª!()R†R R R$RR RR@RAR+R6R    RŒRR0RRR,RRR-R.tSetForbiddenSyncClientStateRlRRR^R”t
SkillShelltProcessPersistBuffR@tProcessRefreshBuffStatetProcessRefreshActionBuffStateRZtRefreshPlayerActionStatetRefreshPlayerAttrStateExtRefreshPlayerAttrByBufftRefreshPlayerAttrByBuffExRGRR9(R
RRûR„R tquickLimitMapIDListR(R3t perLoopTickt maxLoopCountRR4t    loopCountt reFlashBufftattrBuffResultt actBuffResultt playerControl((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR~sl              
               
          cCs|jtjƒ}|sdSt|ƒ}|s2dS|jƒ}|jƒ}||jkrl|jj|ƒntj    d|||jf|ƒd}xH|j
j ƒD]7\}}||krÆ|}q¢n||jkr¢dSq¢W||_ tj    d||ƒt |ƒdS(NsE¾µÏñÕ½¶·Õ½³¡Íæ¼Ò±»»÷ɱ! playerID=%s,curFaction=%s,deadPlayerIDList=%sisijһÕóÓªÒѱ»»÷°Ü! winFaction=%s(R‡R RVR†RQRTRRpR+R6RRRR9(R4R
R„R    RERRRd((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyt OnPlayerDeadÈs.            
c Csít|ƒ}|sdS|jtjkr,dStjƒjƒ}|jsW|j|ƒn|j    sld|_    n|j    dkrdnd|_
|j }|j }|j    }|j }|j}tjd||||j
||f|ƒtjƒ}|r¿x?|jjƒD].}    |j|    ƒ}
|
s#qn|
jtƒqWxˆ|jjƒD]t}    |j|    ƒ}
|
seqDntj|
tj|
ƒƒ|    |jkrD|
j|
jtjƒ|
jtjƒƒqDqDWnx|jjƒD]ó\}    } |j|    ƒ} | söqÏn| j ƒ| j!ƒ} tj| ƒ}tj"| ƒ}t#j$| ƒ}tjd||t#j%| ƒt#j&| ƒ|    | | |f|ƒ| dkr¤|j'|7_'|j(|7_(qÏ|j)|7_)|j*|7_*qÏWt+j,||ƒ|j-tj|ƒdS(NiiisR¾µÏñÕ½¶·½áÊø: mapID=%s,funcLineID=%s,winFaction=%s,isWin=%s,isQuick=%s,isLogout=%ssPÊ£ÓàѪÁ¿: %s/%s, »¤¶Ü:%s/%s,playerID=%s,realPlayerID=%s,faction=%s,fightPower=%s(.R†R R R&R+RŒRRRRRR R RRR6R,RR-R.R”RRR^tSetHPR”RtSetDeadR‡tDef_NPCDead_KillerIDtDef_NPCDead_KillerTypeRtStopMoveRRRÄRZR¥RÅRaRRRRRtOnMirrorBattleOverR:(R
R„R(R R RRRR3R    R4RdtplayerRgthpthpMaxt
fightPower((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR9åsh                                    
     5 cCsJ|jƒrdSt|ƒ}|s&dStjd|jƒƒt|ƒdS(Ns%Íæ¼ÒÖ÷¶¯Í˳ö¾µÏñÕ½¶·Ç¿ÖÆ¿ìËÙ½áËãÕ½¶·!(RRRˆR+R6RQtDoQuickOverByExit(R4R(R„((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytDoPlayerLeaveFB)s  
cCsŒ|jƒrdSt|ƒ}|s&dS|j}tjddƒ}||krhtjd||jƒdStjd|jƒƒt    |ƒdS(NR?isµôÏß²»ÔÊÐí¿ìËÙÕ½¶·! mapID=%ss!Íæ¼ÒµôÏßÍ˳ö¾µÏñÕ½¶·¿ìËÙ½áËãÕ½¶·!(
RRRˆR R@RAR+R6R    RQR°(R4R(R„R tlogoutQuickLimitMapIDList((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytDoExitFB4s       
cCstt|ƒ}|sdS|j}|jtjkr>t|ƒn|jtjkrft|jdtƒnt|ƒdS(NR(    RˆR
R R R$R*RR0R (R4R„R
((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR°Es      
((8R+R•R RÈRÙR¹R‚RÜR¨R’RZRgR÷R´RšRrR@RSRbR@R•RrR8tPlayerFBRkRR^RRpRDRRRR…RˆR†R RR¢R¼RúRRR(R#R)R*RGRBR\RR¥R9R±R³R°(((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyt<module>sj                             ™                3T    R        *B     @         D @ AJ        D