hwj35
2025-06-09 10ea36a10bd1e001505fa77aa03e481c0570af1c
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
òRFhc@s{ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZdddgZdZddd„ƒYZdddedd    „Z d
„Z!d „Z"d „Z#ddddd „Z%d„Z&d„Z'd„Z(eded„Z)d„Z*dd„Z+edd„Z,d„Z-d„Z.ed„Z/ed„Z0eed„Z1d„Z2d„Z3d„Z4d„Z5d„Z6dS( 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__6s
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.pytGetTagPlayerIDWscCsŸ|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.pytSyncFBStepTimeYs         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__SyncRealPlayerTickgs cCsRtjd|j|f|jƒ||_||_|jƒ|_|j|ƒdS(Ns#¾µÏñÕ½¶·½×¶Î±ä¸ü: mapID=%s,state=%s(    R+tDebugLogR R
R RtGetStateTickMaxRR*(RR)R(((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytChangeBattleStateps           cCs6|jƒ}||j}td||ƒ|_|jS(Ni(R7RtmaxR(RR(t stateTickMaxtpassTick((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyRxs  cCs|jS(N(R(R((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytGetStateTickRemainscCs·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(RFRRGR7(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(RORtGetJobR>tIPY_DatatrangetGetSkillMatchCounttGetSkillMatchByIndext    GetSkillsRAtappendt
GetSettingtCommFunctParseSetting_AutoSkillListR?R+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"R8RR<R7RJRLRfR|(((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR3s                                                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(RPtGetMirrorBattleByIDt GetDictByKeyR RTRO(R4((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytGetMirrorBattleÚs cCs;d}|tjkr%tj|}ntr7tƒ}n|S(N(RR€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=%sitisAddSuperBuffRNRM(/R€RtpopRR    RRR+R6tGetPlayerManagert GetGameWorldtGetTickRR-R.RXt DeleteMirrorRtitemsRSR RTtDef_PlayerKey_MirrorBattleTimetGetPlayerActiont IPY_GameWorldtpaDieR\tGetHPtChPlayertPlayerRebornByTypetrebornType_SystemRRWR@RYRZR[R]R^R_R`Rat SetAttackTickt__Sync_ClientBuffRtGameWorldProcesstCloseFB( R
R‚t ownerPlayerIDRRR3R(tmirrorIDt mirrorPlayerRetinfoR4((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 RORŠtCreateMirrorPlayerRRXt SetCustomMaptGetIDRPt GetFightPowerR6tGetAccIDRRnR“tInitPlayerPackt PlayerHorsetPlayerRideHorseUpRtSendToBServerServerInitOKt SetMapLoadOKR0tInitPostGetPosXtGetPosYRVt
SetCanMovetSetIsNeedProcesst    SetInitOKt
EndLoadMaptSetGameServerInitOKtPassiveBuffEffMngtOnLoadMapGFPassivetReCalcAllStateRft
SetVisiblet RefreshViewt
PetControltDoLogic_PetLoadMapOKt GetDebugLeveltDebugLogPlayerInfo(R
tmirrorPlayerIDtmirrorPlayerDataRcRdRbR4R‚R R R    RœR›RetdataFightPowert 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-------------------------------------------------------(5ROR+R6RPR«R¬RRRQtGetSightR\R’tGetMaxHPRXt    GetProDefR_txrangeR tDef_Calc_AllAttrType_MAXt    EffGetSettGetValueByEffIndexR£tGetSkillManagerRjt GetSkillCounttGetSkillByIndext GetFuncTypet GetSkillNamet
GetSkillIDRR-tsortRAR²tGetPassiveEffManagert GetPassiveEfftAffectSkillDicttAffectPassiveSkillSetDicttAffectBuffDicttAffectDogzSkillDictt    GetPetMgrt GetFightPett    PlayerPettGetPetLearnSkillRtrptEquipt ShareDefinetrptPett rptDogzEquiptGetItemManagertGetPacktGetCounttGetAtt GetItemTypeID(R4R    ReRcRdRbt
sightLeveltsighttattrInfoRutvaluet    skillDictt skillManagertitcurSkilltfuncTypet    skillInfot skillIDListt
passiveEfftfightPettpackTypetcurPackt    itemCounttitem((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyRºpsz               #    
 
' 'cCs/tjƒj|ƒ}tj||dtƒdS(Nt forcePackData(R+R‰tGetPlayerByIndextPlayerViewCacheTubetUpdateGameServerPlayerCacheR0(Rut
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
TagPlayeIDtCmdTypeROtOnRequestCreateMirrorBattleRR0R†tDoMirrorBattleQuickR
(
RuR÷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 IsCrossServerR6tFBLogictOnMirrorBattleRequestROR…R RTRŽRXt
NotifyCodeRSR0t    enumerateRnRŠt GetRealMapIDt PlayerEnterFBRõtNormalSyncPackDatatstrR‰tGameServer_QueryPlayerResultRA(R R RRRR4RR    tcurTimeRRRbtbatPlayerIDListt batPlayerIDRRtsendMsg((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyRþûsR     "
 (cCs| s |jƒs |jƒ r$dSt|ƒ}|rªtjd|jƒƒ|jtj|j    ƒ|j
dƒt j ||j    ƒt j |tjdƒ|j|ƒdS|jƒ}|tjkrÉdStj|}| sït|ƒdkródS|\}}t|||ƒdS(sr ¾µÏñÕ½¶·³õʼ»¯  - ÐèÒªÇÐͼµÄ£¬Íæ¼ÒÇÐͼ³É¹¦»òµØÍ¼ÊÕµ½´ò°üÊý¾Ýͬ²½Ê±»á´¥·¢£¬¼´ÕâÁ½¸öÌõ¼þ¶¼×¼±¸ºÃºó²Å¿ªÊ¼³õʼ»¯
    Ns¾µÏñÕ½¶·Íæ¼Ò¶ÏÏßÖØÁ¬³É¹¦!iii(tIsEmptyt GetMapLoadOKR†R+R6RORSR RTR
RWRXRYRZR[R*R€tg_playerReqEnterFBExRAtOnMirrorBattleInit(R4R(R‚R    treqInfotmsgInfot packDataDict((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytOnMirrorBattleEnterMapInit=s(       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(R@RjR€RRƒR+RŸRR6R-tOnGetMirrorBattlePosRRfR RŠR‹R8R R!tOnMirrorBattleStartRÿRž(R R!R4RR    RR R RRR
tsysBattleIDStarttnumR‚tfactionPosListRbRtposInfot factionPosXt factionPosYRuRRcRdtpackDataR(((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyRWs\
 
       %$
 
 
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>R?R@(    R tlineIDRR4RcRdtgameMapR'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‹R8(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†RORPRRRR R R!R$R
R$tOnMirrorAttackOverR&RžRR\R’tGetPlayerAttackTicktGetAtkIntervalR€tg_singleAtkRecordListR|tGetPlayerVehicleRtpvHorseR¦tPlayerRideHorseDownRt PlayerStatet__GetCanAttack_ObjDetelt PlayerAttackRRR+R,RRR¢R.R( R4R(R‚R    ReRytisOKt    actionObjt
curFactionR3RRbttagObj((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’ROR«R¬tGetGameObjTypeR¢t SetActionObjtClearUseSkillRectSetAttackTargetPostSetUseSkillPosXtSetUseSkillPosYtSetUseSkillTagTypetSetUseSkillTagIDRRÈtFindSkillBySkillTypeIDRÍR`tisPassiveSkilltRefreshSkillRemainTimet AttackCommontCheckPlayerAttackDistR0t SetUseSkillt GetSkillDatat GetUseSkillR:t__DoClientUseSkillExR tDef_SkillID_SomersaultR·tPetFighttSummonFollowAtkR–t    MoveToObjRSR(R4R@R(RyRR    RcRdt
tagObjTypettagObjIDttagPosXttagPosYt
needMovetotuseSkillResulttskillMgrt skillTypeIDRétskillIDt useSkillData((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR<ö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…RRStGetSpeedRGR+t    GetDistExRR tmathtceilt ChNetSendPackt
tagObjMoveRR¢tObjIDRBtObjTypetmtNormaltMoveTypetDestPosXtDestPosYtSpeedt    StartPosXt    StartPosYt    NotifyAllt    GetBuffert    GetLength(R4R@R(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.pyRV6s\          
   %%  
                     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>R?R+R6R    RŠR‹R0RRR,RRR-R.tSetForbiddenSyncClientStateRjRRR\R’t
SkillShelltProcessPersistBuffR:tProcessRefreshBuffStatetProcessRefreshActionBuffStateRXtRefreshPlayerActionStatetRefreshPlayerAttrStateExtRefreshPlayerAttrByBufftRefreshPlayerAttrByBuffExRARR3(R
RRùR‚R tquickLimitMapIDListR(R3t perLoopTickt maxLoopCountRR4t    loopCountt reFlashBufftattrBuffResultt actBuffResultt playerControl((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyRÿwsl              
               
          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 RTR„RORRRRnR+R6RRRR3(R4R
R‚R    R?RRRb((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tStopMoveRPRÂRXR£RÃR_RRRRRtOnMirrorBattleOverR8(R
R‚R(R R RRRR3R    R4RbtplayerRethpthpMaxt
fightPower((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyR3Þsh                                    
     5 cCsJ|jƒrdSt|ƒ}|s&dStjd|jƒƒt|ƒdS(Ns%Íæ¼ÒÖ÷¶¯Í˳ö¾µÏñÕ½¶·Ç¿ÖÆ¿ìËÙ½áËãÕ½¶·!(RPR†R+R6ROtDoQuickOverByExit(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!Íæ¼ÒµôÏßÍ˳ö¾µÏñÕ½¶·¿ìËÙ½áËãÕ½¶·!(
RPR†R R>R?R+R6R    RORª(R4R(R‚R tlogoutQuickLimitMapIDList((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pytDoExitFB-s       
cCstt|ƒ}|sdS|j}|jtjkr>t|ƒn|jtjkrft|jdtƒnt|ƒdS(NR(    R†R
R R R$R$RÿR0Rž(R4R‚R
((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyRª>s      
((7R+R“R RÆR×R·R€RÚR¦RRXRaRõR²R˜RlR>RMR`R:RRptPlayerFBReRR\R RjRBRRRRƒR†R„RžRR RºRøRRþR"RR#R$RAR<RVRÿRŸR3R«R­Rª(((slD:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Attack\MirrorAttack.pyt<module>sh                            ˜                3T    R        *B     @         D @ AJ        D