cehua_hzl
2018-08-23 4005e472b1ea765ff5145b46a2bef7ff7a7bf3f3
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
241
242
243
244
245
246
247
248
249
À~[c@s”ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z d„Z!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd    „Z(d
„Z)d „Z*d „Z+d „Z,d„Z-d„Z.e/d„Z0d„Z1d„Z2d„Z3d„Z4d„Z5d„Z6d„Z7d„Z8d„Z9d„Z:d„Z;d„Z<d„Z=d„Z>d„Z?d „Z@d!„ZAd"„ZBeCd#„ZDeCd$„ZEd%„ZFd&„ZGd'„ZHd(„ZId)„ZJd*„ZKd+„ZLd,„ZMd-„ZNd.„ZOd/„ZPd0dVd1„ƒYZQd2„ZRd3„ZSd4„ZTd5„ZUd6„ZVd7„ZWd8„ZXd9„ZYd:„ZZd;„Z[d<„Z\de/d=„Z^d>„Z_d?„Z`d@„ZadA„ZbdB„ZcdC„ZddD„ZedE„ZfdF„ZgdG„ZhdH„ZidI„ZjdJ„ZkdK„ZldL„ZmdM„ZndN„ZodO„ZpdP„ZqdQ„ZrdR„ZsdS„ZtdT„ZudU„ZvdS(WiÿÿÿÿNcCsx|jƒ}t|dƒsF|j||jƒ|||jƒdƒn.|j||jƒ|||jƒ|jƒƒdS(NtGetHPExi(tGetGameObjTypethasattrtAddHurttGetIDtGetHPR(ttagObjthurtListthurtTypet    hurtValuet
tagObjType((s.\\AttackCommon.pyREs +cCsa|jƒ}t|dƒs2|j|||ƒdStj|jƒ|ƒ}|j|||ƒdS(Nt
GetMaxHPEx(tGetPlayerHurtListRt AddHurtValuet    NPCCommontFixValueByValueExR (tdefendertattackIDtattackHurtTypetvaluetdefendHurtList((s.\\AttackCommon.pyR Ps  c    Cs¦|s
dS|jƒtjkr#dStj}tjƒjƒ}||jƒ|j    ƒf}||krri||<n||}||f}|j
|dƒ|||<dS(Ni( Rt IPY_GameWorldtgotNPCt
PyGameDatatg_teamPlayerHurtValuet    GameWorldt GetGameWorldt    GetLineIDRtGetNPCIDtget(    RtteamIDtplayerIDRtteamPlayerHurtDicttlineIDtkeythurtDictthurtKey((s.\\AttackCommon.pytAddTeamPlayerHurtValueZs      
 cCs¡tj}|jƒ}|sdS|jƒtjkr8dStjƒjƒ}||j    ƒ|j
ƒf}||krudS||}||j ƒf}|j |dƒS(Ni( RRt    GetTeamIDRRRRRRRRt GetPlayerIDR(t    curPlayerRR RR!R"R#R$((s.\\AttackCommon.pytGetTeamPlayerHurtValuels      
cCs$tj}|jƒ}|sdS|jƒtjkr8dStjƒjƒ}||j    ƒ|j
ƒf}||krudS|j ƒ}d}d}||}    xW|    j ƒD]I\}}
|\} } | |krÎq¤n||
7}| |kr¤|
}q¤q¤W|dks    |dkrd} n|d|} | S(Nigð?( RRR&RRRRRRRRR'titems(R(RR RR!R"RtplayerHurtValuet teamHurtValueR#R    t
hurtTeamIDt hurtPlayerIDthurtPer((s.\\AttackCommon.pytGetTeamPlayerHurtPer}s2       
 
      cCsotj}|jƒtjkr"dStjƒjƒ}||jƒ|j    ƒf}||krk|j
|ƒndS(N( RRRRRRRRRRtpop(RR R!R"((s.\\AttackCommon.pytClearTeamPlayerHurtValue s     cCs£|dks|dkrtStjtjg}tj|jƒ|jƒƒ|ksvtj|jƒ|jƒƒ|krztSt    ||ƒs›|j
ƒdkrŸtSt S(Ni( tNonetTrueRt    gatFreePKt gatFamilyPKtGameMaptGetAreaTypeByMapPostGetPosXtGetPosYtIsMaliciousAttackPlayert
GetPKValuetFalse(R(t    tagPlayertlegalityAreaList((s.\\AttackCommon.pytGetIsPKLegality²s$$!cCsCt||ƒrdStj||ƒ|j|jƒ|jƒƒdS(N(R@t PlayerControltAddPlayerPKValuetGameServer_AddEnemyRtGetName(R(t curTagPlayerttick((s.\\AttackCommon.pyt
AddPKValueÐs
cCs÷|dks|dkrdStj|jƒ|jƒƒ}tj|jƒ|jƒƒ}|tjksv|tjkrzdS|tjks˜|tjkrœdS|jƒdkr²dS|j    ƒ}|tj
krÑdSt j |ƒ}|tj
kródSdS(Ni( R3R7R8R9R:RR5R6RtGetPlayerNameColort    pncNormalt PlayerTrucktGetTruckNameColor(R(tcurTruckRFtcurPlayerAreaTypet truckAreaTypetcurPlayerNameColortcurTruckNameColor((s.\\AttackCommon.pytOnPlayerKillTruckås" cCsÊtj||ƒtj||ƒtj||ƒtj|d|jƒgƒt|||ƒt    j
|||ƒrudSt |||ƒt ||ƒt jƒjƒtjkrÆtj|tjdƒndS(Nt PK_lhs_318691i(t PlayerStatetSetPKStateTickt
EventShelltEventResponse_OnKillEnemytEventResponse_OnEnemyKillRAt
NotifyCodeRDt__GiveKill_Player_ValuePrizetFBLogictDoFBOnKill_PlayerRGt__DoKillPlayerNotifyRtGetMapt GetMapFBTypeRtfbtNulltNomalDictSetPropertytChConfigtDef_PDict_IsAddReviveTired(R(RRF((s.\\AttackCommon.pytOnPlayerKillPlayers c    Cs |jƒ}|dkrdS|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}|jƒ}tjƒjƒt    j
krƒdStj ƒj ƒ}    |jƒdkré|j ƒ}
|jƒ} d} ||||
| ||||    g    } n!d} |||||||    g} tj|| | ƒ|dkr-dS|j ƒ}|jtj|jƒƒd}|jtj|jƒ|ƒ|jtj|jƒdƒtjdƒ}t|jƒƒ}d}x$|D]}||kr×Pn|}qÁW||kr||}tjd||||||gƒndS(Nit PK_pan_671654t PK_pan_318691itFamilyKilledNotify(t GetFamilyIDtGetFamilyMemberLVRDtGetMapIDR9R:RR]R^RR_RRt GetFamilyNameRAt FamilyNotifyt GetDictByKeyRatDef_PlayerKey_KillPlayerCntR'tSetDictt IpyGameDataPYtGetFuncEvalCfgtsortedtkeyst WorldNotify(tattackerRt defFamilyIDtdefFamilyMemberLvtdefNametatkNametdefMapIDtdefPosXtdefPosYR!t atkFamilyNametatkFamilyMemberLvt
notifyCodet    paramListt defFamilyNametkillCnttkillPlayerNotifyDicttkillKeyst    notifyKeyt
killCntKeyt
notifyMark((s.\\AttackCommon.pyR\5sJ          $     
 
%cCs&tj|ƒr"tj||ƒndS(N(Rat
IsGameBossRStSetBossStateTick(tcurNPCRRF((s.\\AttackCommon.pytOnNPCHitPlayernscCs‚|jƒ|jƒkrdSt||ƒs>t|||ƒnt|||ƒt|||ƒtj||ƒtj||ƒdS(N(RR@tAddMaliciousAttackPlayertUpdMaliciousAttackTicktAddPlayerHitPlayerHurtRSRT(RtRRF((s.\\AttackCommon.pytOnPlayerHitPlayeryscCsE|jƒ}|jƒtjkr%dSt||jƒtjdƒdS(Ni(R t GetHurtCountRatDef_PlayerHurtListCountR R'tDef_NPCHurtTypePlayer(RtRRFtdefPlayerHurtList((s.\\AttackCommon.pyR˜s
 cCsdS(N((RERFt
isSuperHit((s.\\AttackCommon.pytDefenderSpringBuff©scCsK|s tjSt|ƒ\}}t|ƒ\}}|rD|rDtjStjS(N(RatDef_BattleRelationType_CommtGetAttackPlayertDef_BattleRelationType_PVPtDef_BattleRelationType_PVE(RtRt attackPlayert    attackNPCtdefenderPlayert defenderNPC((s.\\AttackCommon.pytGetBattleRelationType®s cCstjS(N(RtghtPhy(tattacktattackUseSkill((s.\\AttackCommon.pyt GetBattleTypeÁscCsL|jdƒjdƒ}|jdƒjdƒ}t||tj|dƒS(Nii(t    GetEffecttGetEffectValuetmaxRatDef_MaxRateValue(Rtskilltperteff((s.\\AttackCommon.pytGetEnhanceValueÖscCs:|jdƒ}|jdƒ}t||tj|dƒS(Nii(R£R¤RaR¥(RR¨R§((s.\\AttackCommon.pytGetEnhanceValue_EffáscCsk|jdƒ}|jdƒ}|jdƒ}tj||ƒ}|dkrOdSt||tj|dƒS(Niii(R£t    EffGetSettGetValueByEffIndexR3R¤RaR¥(R(t    curEffecttindextskillPerteffecttmaxValue((s.\\AttackCommon.pytGetEnhanceIndexValue_Effìs cCs|j|ƒ|jtƒdS(N(tSetLastBattleTicktSetBattleStateR4(RRF((s.\\AttackCommon.pytSetPlayerBattleStateýs  c        Cs-|jƒtjkr)t||ƒ r)dS|jƒtjkrW|jƒtjkrWdSx‰td|jƒƒD]r}|j    |ƒ}t
|ƒs”qmn|j ƒ rºt ||dƒ rºqmntj|ƒ}|j||ttƒqmW|jƒ}|jƒ}|dkr)tj|ƒ}|j||ƒndS(Ni(RRt    gotPlayertCheckPlayerAttackMode_PlayerRtGetTypetntFairytrangetGetSummonCounttGetSummonNPCAttGetNPC_Has_Attackt GetOrgSpeedtCheckNPCAttackDistR3Rt
NPCControltAddObjToAngryListR4R=t    GetPetMgrt GetFightPet(    tcurObjR(t
angryValuetit curTagSummont summonControltpetMgrt fightPetObjt
petControl((s.\\AttackCommon.pytSummonAddAngryByOwner s&%     cCs|jƒp|jƒS(N(t    GetMinAtkt    GetMaxAtk(R‰((s.\\AttackCommon.pyR½2scCsd|tjkrdStj}||jƒkrLtjd||jƒƒdStj|||ƒdS(Ns7Íæ¼Ò¹¥»÷ʧ°ÜϵͳÌáʾÕÒ²»µ½¶ÔÓ¦µÄÌáʾmark,´«ÈëµÄÔ­Òò£º%s(    RatDef_PASysMessage_NonetDef_MessageDicRrRtErrLogR'RARX(R(tmessaget
messageDic((s.\\AttackCommon.pytPlayerAttackFailSysMessanage=s    cCstS(N(R4(R(RE((s.\\AttackCommon.pyR·UscCs#|jƒtjdƒkrtStS(NtMinPKLV(tGetLVt ReadChConfigtGetEvalChConfigR4R=(R(((s.\\AttackCommon.pyt GetIsNewGuycscCs5tjƒjƒ}|tjkr%tStj||ƒS(N(RR]R^RR_R=RZtCheckPlayersRelationInFB_IsNone(R(REtmapType((s.\\AttackCommon.pyRÚqscCstj||ƒS(N(RZt!CheckPlayersRelationInFB_IsFriend(R(RE((s.\\AttackCommon.pyRÜ~scCstj||ƒS(N(RZtDoCanAttackTeamer(R(RE((s.\\AttackCommon.pytPlayerCanAttackTeamerInFBscCs«|dkrtjdƒdS||kr2|}n|jƒ}|jƒ}|tjkrhtj|||ƒ|jƒtj    kr—t
j |||ƒnt j |ƒdkrÈ|jtj|jƒƒn|jƒ}|jƒtj    krþ|jƒtjks
|dkr*t||jƒtj|ƒtSt||jƒtj|ƒt||jƒ|jƒ|ƒn?|tj    kr–t||jƒtj|ƒntjd|ƒtS(NsNPCAddObjInHurtList NoFindObjis'NPCAddObjInHurtList UnKnow ObjType = %s(R3RRÑR RRR¶t BossHurtMngtBossAddPlayerInHurtListRRZtDoFB_Player_HurtNPCtGameObjRRnRatDef_PlayerKey_LastHurtR'tGetTeamtGetGameNPCObjTypet    gnotTruckR R‘R4R&tDef_NPCHurtTypeTeamR%RtDef_NPCHurtTypeNPC(RÄt    curTagObjtcurTaglNPCHPBeforethurtHPtdefNPCHurtListt
curObjTypetcurTeam((s.\\AttackCommon.pytNPCAddObjInHurtListŸs0          !"cCstj|||ƒdS(N(RZt OnPVPDamage(R(t damageValueR>t    damageMsg((s.\\AttackCommon.pyRðÉscCs1t||ƒstS|jƒs#tS|jƒ}|jƒ}|tjkro|tjkrot||ƒstSn•|tjkr¦|tjkr¦t||tƒstSn^|tjkr|tjkrtj    |ƒsè|j
ƒtj krt||tƒstSqnt ||ƒstSt j||ƒs-tStS(N(tCheckIsAvailableTagR=t GetCanAttackRRR¶RtCheckKillNPCByCntt
PetControltIsPetRåt
gnotSummontCheckCanAtkByAreaRZtCheckCanAttackTagObjInFBR4(RtRt
atkObjTypet
defObjType((s.\\AttackCommon.pytCheckCanAttackTagÙs*   $
c    CsG|jƒtjkrtS|jƒ}tjdƒ}||krDtS||\}}t|ƒ\}}|sptS|dkr‚|nd}||jƒko¥|knr®tS|dkrC|dkrî|dkrît
j |d||gƒqC|dkrt
j |d|dgƒqC|dkrCt
j |d|dgƒqCnt S(    s Åжϵ±Ç°µÈ¼¶¿É·ñ¹¥»÷¸ÃNPC tAttackNPCLVLimitiiŸ†tGeRen_liubo_689354tGeRen_liubo_198823itGeRen_liubo_437659N( RRRR4RR×RØR–RÖR3RARXR=(    RtRtnpcIDtattackLVLimitDicttminLVtmaxLVt    atkPlayert
npcObjTypet
judgeMaxLV((s.\\AttackCommon.pytCheckCanAttackNPCByLVs*  "    cCsò|jƒtjkrtStj|ƒs,tS|jƒ}tjdƒ}t    j
||ƒ}|dkritSt |ƒ\}}|s…tStjddiƒ}||krß||\}    }
t j||    ƒsßtj||
ƒdSn|jtj|dƒ} |jtj|dƒ} tjddiƒj|dƒ} | rMtj|| ƒ}n!tjddiƒj|dƒ}| || krîtj||ƒr¡t    jdƒtS|dkrê|rêtjddiƒj|d    ƒ}tj||ƒqêntStS(
s Åжϵ±ÈÕ»÷ɱ¸ÃNPC´ÎÊýÊÇ·ñÒÑÂú tKillBossCntLimitiNiiis¹¥»÷¹ý¸Ãboss¿É¼ÌÐø¹¥»÷it(RRRR4RaR‡RRoRpRtGetDictValueByKeyR3R–t GameFuncCommt GetFuncCanUseRARXtNomalDictGetPropertytDef_PDict_Boss_KillCntt Def_PDict_Boss_KillCntItemAddCntRt    PlayerViptGetPrivilegeValueRßtGetPlayerBossHurttDebugLogR=(RtRtisNotifyRtkillBossCntLimitDictR®RRt funcInfoDicttfuncIDt funcSysMarkt
hasKillCnttitemAddKillCnttkillLimitPrivilegetlimitCnttsysMark((s.\\AttackCommon.pyRõ4sD   !!  !c    Csí|jƒtjkrtStj|ƒs,tStjdƒ\}}|jƒ}||kr]tSt    |ƒ\}}|sytS|j
tj dƒ}||krét j ||ƒr½tjdƒtS|dkrå|råtj|dƒqåntStS(s Åжϵ±ÈÕ¹¥»÷¸ÃNPC´ÎÊýÊÇ·ñÒÑÂú tAttackBossCntLimitis¹¥»÷¹ý¸Ãboss¿É¼ÌÐø¹¥»÷tGeRen_liubo_759061N(RRRR4RaR‡R×RØRR–RtDef_PDict_WorldBoss_HurtCntRßRRRR3RARXR=(    RtRRtlimitBossIDListRRRRt hasAttackCnt((s.\\AttackCommon.pytCheckAttackNPCByCntes*     cCsß|jƒ}|tjkr%|dfS|jƒ}|tjkr¤tj|ƒ}|rÛ|jƒ}|r¡tj|ƒ}|rž|jƒtjkrž||fSq¡qÛn7|tj    krÛt
j |ƒ}|dkrÛ||fSndS(sè »ñÈ¡¹¥»÷ÕßËùÊôÍæ¼ÒʵÀý
    @return:
             µ±Êµ¼Ê¹¥»÷ÕßÎªÍæ¼Òʱ£¬·µ»Ø [curPlayer, None] 
             µ±Êµ¼Ê¹¥»÷ÕßÊÇÆÕͨNPCʱ£¬·µ»Ø [None, None]
             µ±Êµ¼Ê¹¥»÷ÕßÊdzèÎï»òÕÙ»½ÊÞʱ£¬·µ»Ø [Ö÷ÈËcurPlayer, npcObjType]
    N(NN( RRR¶R3RåRøRt GetObjDetailtGetOwnertgnotPetRöt GetPetOwner(tatkObjRûRt curNPCDetailt curNPCOwnert summonOwnert ownerPlayer((s.\\AttackCommon.pyR–†s" 
    cCsbtj|jƒ|jƒƒ}tj|jƒ|jƒƒ}|tjksZ|tjkr^tStS(N(R7R8R9R:RtgatSafeR=R4(RÄRtareaTypet tagAreaType((s.\\AttackCommon.pyRùªs
cCst|dks|jƒdkr"tStj|ƒdksLtj|ƒdkrPtS|jƒs`tS|jƒsptStS(Ni(R3RR=RâRt
GetVisibleR4(RtR((s.\\AttackCommon.pyRó¾s*  cCsO|dks|jƒdkr"tStj|ƒdkr;tS|jƒsKtStS(Ni(R3RR=RâRR2R4(RÄ((s.\\AttackCommon.pytCheckObjCanDoLogicÓs cCsdt||ƒsG|j|jƒ|jƒ|jƒ|jƒtjƒtS|j    ƒt
j kr`tSt S(N( RýtNotify_AttackFailRRR9R:RtafrNullR=tGetPlayerActionRatDef_PlayerCanAttackStateR4(R(R((s.\\AttackCommon.pytCheckPlayerCanAttackTagçs                
  cCsÏ|jƒ}|jƒ}ttj|||jƒ|jƒƒtj|jƒ|jƒ|jƒ|jƒƒƒ}|sytS|jƒ}|dkr•tS|t    j
|||t j ƒ7}||t j krËtStS(Ni(tGetAttackTargetPosXtGetAttackTargetPosYtminRtGetDistR9R:R4t
GetAtkDisttPassiveBuffEffMngt!GetPassiveSkillValueByTriggerTypeRatTriggerType_SkillDisttDef_PlayerAttackDistZoomR=(R(tcurTagtuseSkillt atkStartPosXt atkStartPosYtdistt    skillDist((s.\\AttackCommon.pytCheckPlayerAttackDists  $3  cCsCt||ƒstSt|||ƒs)tStj||ƒr?tStS(N(RýR=R¿Rt    IsSameObjR4(R‰RR¦((s.\\AttackCommon.pytCheckNPCCanAttackTag3scCsotj|jƒ|jƒ|jƒ|jƒƒ}|dkrU||jƒkrkdSn||jƒkrkdStS(N(RR<R9R:R3R=R4(R‰RBR¦RF((s.\\AttackCommon.pyR¿Gs cCsdS(N((RE((s.\\AttackCommon.pytSuperAttackedBuffYscCs—|dks|jƒdkr"tS|jƒtjkr;tStj||ƒsQtStj    |ƒdkrjtSt
|||ƒs€tSt ||ƒr“tSt S(Ni( R3RR=RRR¶Rt IsSameCountryRâRRHR·R4(R(RBR¦((s.\\AttackCommon.pytCheckSkill_ReBorndscCsÝ|dks|jƒdkr"tStj||ƒr8tS|jƒtjkrQtSt    j
|ƒdkrjtSt |||ƒs€tSt ||ƒr“tS|j ƒ}|j ƒ}|dksÃ|dkrÇtS|jƒ|jƒkS(Ni(R3RR=RRIR4RRR¶RâRRHR·RäR&(R(RBR¦t
curTagTeamt curPlayerTeam((s.\\AttackCommon.pytCheckSkill_Team†s"  tHurtTypecBseZdZdZd„ZRS(icCs(d|_d|_d|_d|_dS(Ni(tHurtHPRQtLostHPt
RealHurtHP(tself((s.\\AttackCommon.pyt__init__ºs            (t__name__t
__module__RRRQRV(((s.\\AttackCommon.pyRQ²scCs||@S(N((t happenStatetcmpType((s.\\AttackCommon.pytIsHappenStateByTypeÆscCstj}itddgtj6tddgtj6tddgtj6}g}|tjkrv|tjtjg7}n|tjkr˜|tjg7}n|s¨||fStj    dƒ\}}    id„tj6d„tj6d„tj6}
g} x‘|    D]‰} t} xz| D]r}||kr"q
n|| kr4q
n| j
|ƒ| rMq
n|
||||ƒ}|r
|||<t } q
q
Wq÷Wx‹|D]ƒ}||kr£q‹n|| krè| j
|ƒ|
||||ƒ}|rè|||<qèn||dr‹|tjkr‹|}q‹q‹W||fS(s´ »ñÈ¡É˺¦ÀàÐͽá¹û 
    Ö§³Ö¶àÖÖÉ˺¦ÀàÐÍͬʱ´¥·¢, Æ®×Ö±íÏÖÒÔ×îÖÕ±íÏÖÉ˺¦ÀàÐÍΪÖ÷
    @return: ×îÖÕ±íÏÖÉ˺¦ÀàÐÍ, {É˺¦ÀàÐÍ:[ÊÇ·ñ´¥·¢, É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ], ...}
    itCalcHurtTypeInfocSst|||ƒS(N(t__HurtTypeHappen_LuckyHit(taObjtdObjthState((s.\\AttackCommon.pyt<lambda>âscSst|||ƒS(N(t__HurtTypeHappen_SuperHit(R^R_R`((s.\\AttackCommon.pyRaãscSst|||ƒS(N(t__HurtTypeHappen_Parry(R^R_R`((s.\\AttackCommon.pyRaäs( RatDef_HurtType_NormalR=tDef_HurtType_LuckyHittDef_HurtType_SuperHittDef_HurtType_ParryRR¶R×RØtappendR4(R*tdefObjRûRüRYRthurtTypeResultDictt calcTypeListt priorityListt    mutexListt
happenFunct hadCheckListtmutexHurtTypeListt curMHHappenthTypetresult((s.\\AttackCommon.pytCalcHurtTypeResultÉsV    
 
     cCst|tjƒr.t|jƒtj|ƒfS|jƒ}tj|ƒ}t    t
j dƒƒ}|dkrndSt j |ƒr™t|jƒtj|ƒfSdS(sg ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - ÐÒÔËÒ»»÷
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ
    tCalcLuckyHitRateiN(R[RatDef_Skill_HappenState_LuckyHitR4tGetLuckyHitValRAtGetLuckyHitReducePertGetLuckyHitRatetGetLuckyHitRateReducetevalR×t GetChConfigRt    CanHappen(R*RiRYt aLuckyHitRatetdLuckyHitRateReducetatkLuckyHitRate((s.\\AttackCommon.pyR] s  cCs¼t|tjƒr.t|jƒtj|ƒfS|jƒ}tj|ƒ}t    t
j dƒƒ}|t j ||dtjƒ7}|dkrdStj|ƒr¸t|jƒtj|ƒfSdS(sc ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - ±©»÷
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ
    tCalcSuperHitRateiN(R[RatDef_Skill_HappenState_SuperHitR4t GetSuperHitRAtGetSuperHitReducePertGetSuperHitRatetGetSuperHitRateReduceR{R×R|R>t GetValueByPassiveBuffTriggerTypeR3t TriggerType_Buff_AddSuperHitRateRR}(R*RiRYt aSuperHitRatetdSuperHitRateReducet superHitRate((s.\\AttackCommon.pyRbs   cCs<tj|ƒ}|sdStjtjƒr8td|fSdS(si ÅжÏÉ˺¦ÀàÐÍÊÇ·ñ·¢Éú - ·ÀÊØ·½µÖÓù
    @return: ÊÇ·ñ´¥·¢, ´¥·¢Ê±É˺¦¼ÆËãÖµ, ´¥·¢Ê±·ÀÊØ·½µÄÉ˺¦¼õÃâÖµ
    Ni(RAtGetDamChanceDefRR}RatDef_ChanceDefRateR4(R*RiRYt chanceDefPer((s.\\AttackCommon.pyRc0s  cCsKt|||ƒ}|s"||fS|jdƒttjƒ|jdƒfS(Nii(tGetCanChangeSkillHurtEffectR£tfloatRaR¥(R(RitcurSkillR¯t
skillValuet
findEffect((s.\\AttackCommon.pytChangeSkillHurt=s
cCs‚|s
dS|jƒtjkr#dS|jƒtjkrQ|jƒtjkrQdS|jƒtjkrjdStj    ƒj
ƒtj kr­tj    ƒj ƒt jddƒkr­dSt|tjtjgƒ\}}|sØdS|tjkrF|jƒtjkrdStj    ƒj
ƒtj kr~tj    ƒj ƒt jddƒkr~dSn8|tjkr~|jdƒtj|ƒ@dkr~dSn|S(NtSkillXPAddByFBiii(RRRR¸t    ntMonstert    GetIsBossRatDef_NPCType_Ogre_SuperRR]R^R_RiRoRptGetSkillEffectByEffectIDstDef_Skill_Effect_AttackReplacet)Def_Skill_Effect_AttackReplaceByNPCSeriesR£Rt GetNPCSeries(RtRiR‘R“teffectID((s.\\AttackCommon.pyRHs2*$ $"cCsdx]td|jƒƒD]F}|j|ƒ}|jƒ}|sCqn||krUqn||fSWdS(Ni(Ni(RºtGetEffectCountR¢t GetEffectIDR3(R‘t effectIDListRÆR­t curEffectID((s.\\AttackCommon.pyR™ns   cCs[|jƒtjkr|S|jƒ}|tjkrWtjtj|ƒ}|sS|S|S|S(N(RRRR¸tntElfRtGetSummonNPCOwnerR¶(RttnpcTypetowner((s.\\AttackCommon.pytElfChangeAttackerƒs cCsNt|ƒ}tƒ}|jƒ}tj|ƒ}tj|ƒ}    |dkrzt|ƒtj}
} |
|j    tj
ƒ7}
nùt j ||ƒrRt j |jƒ|ƒrR|j    tjƒ}
|
dkrã|jƒ|d|jƒ}
nt j|jƒ|ƒ\} } | |
kr| }
qstj|d|jƒ| | g|
fƒt|
dƒ}
n!t||||||ƒ\}
} |j    tjƒrt|j    tjƒttjƒ|
ƒ} |
| 8}
|j    tjƒ}||j    tjƒkrt|| |j    tjƒƒ}|jtj|ƒqntj||dtj!ƒ}|jtj"|
ƒ|tj#||dtj!ƒ7}t|
t$tj|dƒdtjƒ}
tj#|||tj%ƒràtj|ƒ}
|
|_&| |_|
|_'d}nI|
|_&| |_|
|_'t(|||
ƒ}
t|    t$d||
ƒƒ}t|ƒ}|t)j*krZtj+||t,ƒnŸ|t)j-krä|j.ƒt)j/kr‘t0j1||ƒqù|j.ƒt)j2krÑt$t3j4|ƒ|ƒ}tj+||ƒqùtj+||ƒntj5d|ƒ|S|tj|ƒ}||_6|t)j*kr7t7j8||ƒnt9||||ƒ|S(Nii
s%%s----¿Í»§¶ËÉ˺¦ %s ·þÎñ¶Ë×î¸ßÉ˺¦ %sgš™™™™™é?gð?s,¼ÆËãÉËѪֵʱ,·ÀÊØ·½ÀàÐÍ´íÎó£ºdefObjType = %s(:R¦RQRRâRtGetMaxHPtintRaRdRltDef_PlayerKey_MoreHurtValuet
SkillShelltIsPlayerUseSkilltisClientHurtValueRt Def_PlayerKey_ClientMaxHurtValueRÎRƒtGetClientHurtByObjRt DebugAnswert
CalcHurtHPtDef_PlayerKey_AbsorbShieldValueRt ShareDefineR¥tDef_PlayerKey_AbsorbShieldtDef_PlayerKey_AbsorbShieldMaxR;RnR>R‡R3tTriggerType_ReduceHurtHPPertDef_PlayerKey_curHurtValueR?R¤tTriggerType_AttackKillRRRTtCalcBloodShieldRR¶tSetHPR=RRåR(RötSetPetHPRæRJtGetTruckDestroyMinHPRÑRSRZt
OnFBLostHPtAttackEventTrigger(R*RiR‘t atkSkillValuet atkSkillPerRFtresultHurtTypeRütdHPtdMaxHPR    Rt clientValuet absortValuet
absorbHurtR±t    reducePertremainHPt    lostValue((s.\\AttackCommon.pyt    GetHurtHPœst       * !     )!)
+                                 cCs<|jtj|ƒtj||dtjƒ|jtjƒS(N(RnRatDef_PlayerKey_BloodShiledHurtR>R‡R3tTriggerType_BloodShieldRl(R*RiR    ((s.\\AttackCommon.pyR¸ scVCs– ||jtjƒdkr)dtjfS|jƒ}|jƒ}    t||ƒ}
|r\|n tj|ƒ}|tj    |||tj
ƒ7}|j ƒ} |j ƒ} |j ƒ} |t jkrÌtj|ƒntj}|jƒ}|tj    ||dtjƒ7}|    t jkrtj|ƒnd}|tj    ||dtjƒ7}|rU|jƒnd}d}d}d}d\}}d}d}|t jkr™|    t jkr™|rõ|jƒtjkrõt||||    ƒ\}}||krõdtjfSntj|ƒr
dnd}tj|ƒret d| | ƒ}|retj!| ƒ}|sSdn    |j"ƒ}qentj#|ƒ}|r™t d||j$ƒƒ}q™nt%j&dƒ}| r€tj'|||tj(ƒ r€|    t jkr|j)ƒtj*krt+j,|ƒtj-krdtjfSt.j/|tj0ƒrKt.j/|tj1ƒrKdtjfSt2|tj3ƒ r€t4|ƒdkr€dtjfSn|rÒd}t5|j6ƒd}}} t5|j7ƒd}!}"}#d}$tj8}%n[t9||||    |ƒ\}%}&|&tj:\}}} |&tj8\}!}"}#|&tj;d}$tj    ||dtj<ƒrRd|%fSt=|||||ƒ\}}|tj    |||tj>ƒ7}|tj'|||tj>ƒ7}d}'|'tj    |||tj?ƒ7}'|'tj'|||tj?ƒ7}'|!rQtj    |||tj@ƒ}(|"tj|(dtj}"|tj    |||tjAƒ7}ntBjBƒ}|jCƒ})|jDƒ}*|jEƒ}+|+tj    |||tjFƒ7}+|jCƒ},|jDƒ}-|jGƒ}.t.jH|ƒ}/t.jI|ƒ}0|jJƒ}1|t jkrÜ|jKƒ}2|jLƒ}3tjM|ƒ}4|4tj    |||tjNƒ7}4|4tj'|||tjNƒ7}4tjO|ƒ}5tjP|ƒ}6|6tj    |||tjQƒ7}6|6tj'|||tjQƒ7}6tjR|ƒ}7|j$ƒ}8nvd}2tjL|ƒ}3|t jkr(|jSƒt jTkr(|3|jLƒ7}3nd}4d}5tjP|ƒ}6tj#|ƒ}8|    t jkrtjU|ƒ}9tjV|ƒ}:|jWƒ};|;tj    ||dtjXƒ7};tjY|ƒ}<|<tj    ||dtjZƒ7}<tj[|ƒ}=tj\|ƒ}>|j$ƒ}?n3d}9d}:d};d}<d}=d}>tj#|ƒ}?t%j]dƒ}@|r‹d|}A|A|@kr‹|@|A}Bt4t^j_|A|Bƒƒ}q‹n|rÏd    |}C|C|@krÏ|@|C}Dt4t^j_|C|Dƒƒ}qÏnd
}Ed}F|t jkrØ    |    t jkrØ    t`jad dƒ}G|jbƒ|jbƒ}}d\}H}Ixatc|GdƒD]P\}J}K|rn    ||Kkrn    |H rn    |J}Hn|r@    ||Kkr@    |I r@    |J}Iq@    q@    W|H|I}Fd }L|L|@krG
tdt4t^j_|L|@|Lƒƒƒ}EqG
not||||    ƒ\}}||dkrG
||}Fd }L|L|@krG
tdt4t^j_|L|@|Lƒƒƒ}EqG
nte|ƒ}Mte|ƒ}Nd|M|N|
f}Od}Ptfjgthjiƒjjƒƒ}Qd|O|Qf}R|R|@kr¸
|R}OnT|Mdkrâ
|Ndkrâ
tj|ƒ}Pn*|Mdkr |Ndkr tj|ƒ}Pn|Pr: d|O|Pf}S|S|@kr: |S}Oq: n|O|@krd thjkd|OƒdtjfS|@|O}Ttdt4t^j_|O|Tƒƒƒ}U|U|%fS(Niôiit
CalcCanHitigð?tCalcAttackValuesSuppressValueLV_%ssSuppressValueFP_%si't
RealmGrouptPVPSuppressValueRealmtPVESuppressValueRealms%sV%s_%ss%s_%stEtPs*CalcAttackValue.txt É˺¦¹«Ê½Î´ÅäÖÃ, key=%s(ii(ii(lRlRatDef_PlayerKey_SomersaultTimetDef_HurtType_MissRR¡RªtGetHappenStateR>R?tTriggerType_HappenStateRÖtGetHitRR¶RAtGetHitSucessRateR¥tGetMissR3tTriggerType_MissPertGetMissSucessRatetTriggerType_MissSuccessPert
GetSkillIDRt GetFuncTypetDef_SkillFuncType_RealmSuppresstGetPVERealmLVstDef_HurtType_ImmuneR‡RtGetIsLVSuppressR¤tGetPlayerLVIpyDatat
GetReMaxHPtGetSuppressFightPowert GetFightPowerR×R|R‡tTriggerType_Buff_MustBeHitR—tDef_SkillAttack_NPCIsBosst SkillCommontGetSkillBattleTypet!Def_BattleRelationType_CommNoBossRâtGetPyPlayerStatetDef_PlayerState_SneertDef_PlayerState_MissSneerAtkR[tDef_Skill_HappenState_HitOnR{R4RwRƒRfRtReRgtTriggerType_OneDamageR”tTriggerType_AttackAddSkillPertTriggerType_AddIceAtkPertTriggerType_SuperHitValuetTriggerType_SuperHitSkillPertrandomRÍRÎt    GetIceAtktTriggerType_AddIceAtktGetDefRR§t    GetIceDeftGetIgnoreDefRatetGetSkillAtkRatet GetDamagePertTriggerType_AddDamagePertGetDamagePerPVPt GetFinalHurttTriggerType_AttackAddFinalValuetGetOnlyFinalHurtRåR(tGetIgnoreDefRateReducetGetSkillAtkRateReducetGetDamageReduceRatetTriggerType_DamageReducetGetDamagePerPVPReducetTriggerType_DamageReducePVPtGetFinalHurtReducet GetBeHurtPerRØtFormulaControltGetCompileFormulaRoRptGetOfficialRankt    enumerateR¨tGetObjAtkStateMarktFBCommontGetRecordMapIDRR]RiRÑ(VR*RiR‘R¾R¿RFRYtmaxHurtRûRütatkTypetaLVtdLVtaHittaHitSuccessRatetdMisstdMissSuccessRatetskillIDt    atkIsBosstsuppressValueLVtsuppressValueFPt
suppressLVtsuppressFightPowertsuppressReMaxHPtsuppressNPCFightPowertaRealmLVtdRealmLVtsuppressLVIpyDatat
hitFormulatrandt
isLuckyHitt    aLuckyHittdLuckyHitReduceR“t    aSuperHittdSuperHitReducet dDamChanceDefRRjtaIceAtkSuperHitt addASuperHittaMinAtktaMaxAtktaIceAtktdMinAtktdMaxAtktdDefRÁRÂtdIceDeftaIgnoreDefRatet aSkillAtkRatet
aDamagePert aDamagePerPVPt
aFinalHurttaOnlyFinalHurtt aFightPowertdIgnoreDefRateReducetdSkillAtkRateReducet
dDamReducetdDamagePerPVPReducetdFinalHurtReducet
dBeHurtPert dFightPowerthurtDisttsuppressFormulaKeyLVtsuppressLVFormulatsuppressFormulaKeyFPtsuppressFPFormulatSuppressValueRealmRatet suppressRealmtRealmGroupListt aRealmGroupt dRealmGrouptgt gMaxRealmLVtsuppressFormulaKeyRealmt atkStateMarkt defStateMarkthurtFormulaKeytsuppressLVGrouptmapIDt
mapHurtKeytsuppressLVHurtKeyt hurtFormulaR    ((s.\\AttackCommon.pyR°sX      ' $   $   
"          $ 
 
 
 
      
 (
 (           
cCs„|tjkr1tj|ƒ}|dkr=dSn |jƒ}|tjkrntj|ƒ}|dkrzdSn |jƒ}||fS(Ni(ii(ii(RRRt
GetRealmLVR (R*RiRûRüR!R"((s.\\AttackCommon.pyRà s    cCsat|||j|jƒt|||j|ƒ|jƒtjkr]|jt    j
|jƒndS(N( t CalcBounceHPRSRQt CalcSuckBloodRTRRR¶RnRatDef_PlayerKey_LastHurtValue(R*RiRÀRF((s.\\AttackCommon.pyR½"s
cCsB|jƒ}|tjkrdS|jƒ}|tjkr>dSdS(NRÒtPetRÑ(RRR¶RåR((tobjtobjType((s.\\AttackCommon.pyR1s  cCsCtj|ƒ}t|ƒs't|ƒr5|s1dSdS|s?dSdS(NsPVE_%ssPetVE_%ssPVP_%ssPetVP_%s(RöR÷t IsPVENPCObj(R*RitisPet((s.\\AttackCommon.pyt GetAtkState?scCsy|jƒ}|tjkrtS|jƒ}|tjkr>tS|tjkrutjtj|ƒ}|dkrutSnt
S(N( RRR¶R=RåR(RøRR£R3R4(R]R^tnpcOwner_Player((s.\\AttackCommon.pyR_Js   c
Cs|jƒsdS|jƒ}|tjkr/dStj|ƒdkrHdSt||tƒs^dS|jƒ}|t    j
|ddt j ƒ7}||tt jƒ}t|t    j
|ddt jƒƒ}t|t    j|ddt jƒƒ}|dkrúdS|tj|ƒkr|ntj|ƒd}t|||ƒ}ttj|ƒ|dƒ}|jƒ}    |    tjkr¬|jƒtjkr™tj||ƒqötj||ƒnJ|    tjkrötj||tƒ|tjkröt|||dƒqönt||d|t jƒdS(NiisPlayer bounce Player(RôRRR¶RâRRõR=tGetDamageBackRateR>R?R3RatTriggerType_BounceHPPerRR¥R¨tTriggerType_BounceHPR‡R¸R¤RRåR(RöRºR¹Rðt ChangeHPViewtDef_HurtType_BounceHurt(
R*RiR    RRütdefObj_DamageBackRatetbounceHPt    realSubHPRÇRû((s.\\AttackCommon.pyRY`s<   %% . cCs’|jƒtjkrdS|s#dStjƒjƒ}||jtjƒtj    tjkr_dS|j
tj|ƒd}|jƒtj krµt j |ƒdkrµ||jƒ7}ntj|ƒ}|jƒtjkr)|tj|ƒ7}tj|ddtjƒ}|t||dtjƒ7}n||7}|dkrCdSt j|tt j|ƒt j |ƒ|ƒtƒt|dd|tjƒdS(Nigð?(RRR¶RRtGetTickt GetTickByTypeRatTYPE_Player_Tick_SuckBloodtTYPE_Player_Tick_Timet SetTickByTypeRRâRt GetKillBackHPRAtGetAtkBackHPPertGetPVPAtkBackHPR>R‡R3tTriggerType_Buff_SuckBloodPerR¨R¥R¹R;R§R=RftDef_HurtTYpe_Recovery(R*RiR    RFtsuckHPt    atkBackHPt atkBackHPPer((s.\\AttackCommon.pyRZ¡s.*"
 2cCs$|jƒtjkrdStjƒjƒ}||jtjƒtj    tjkrUdS|j
tj|ƒd}|jƒtj kr«t j |ƒdkr«||jƒ7}ntj|ƒ}|dkrê|t||ttjƒƒ7}n|dkrúdS|jt|jƒ|jƒ|ƒƒdS(Ni(RRR¶RRRkRlRatTYPE_Player_Tick_SuckMagicRnRoRRâRt GetKillBackMPRAtGetAtkBackMPPerR¨RR¥tSetMPR;tGetMaxMPtGetMP(R*RiR    RFtsuckMPt atkBackMPPer((s.\\AttackCommon.pyt CalcSuckMagicÌs"* $ &cCs|s
tS|jƒ}|tjkr8|jƒtjkS|tjkrz|jƒtjkrg|j    ƒ S|j
ƒtj kSt j d|ƒtS(Ns###GetIsDead = %s (R4RRR¶R6tpaDieRRåRæRôt GetCurActiontlaNPCDieRtLogR=(ttagett    tagetType((s.\\AttackCommon.pyt    GetIsDeadîs  cCs<|jƒ}|tjkrtS|jƒtj|jƒkS(N(R'Rtg_maliciousAttackDictR=Rr(R(R>R((s.\\AttackCommon.pyR;s cCsŒ|jƒ}|jƒ}i}|tjkr=tj|}n||krqtjƒ}||_tj||ƒn|||<|tj|<dS(N(R'RRˆtChPyNetSendPackttagMCAddMaliciousAtkPlayert AtkPlayerIDt NetPackCommont SendFakePack(Rt    defPlayerRFt atkPlayerIDt defPlayerIDtdefMaliciousAttackPlayerDicttaddAtkPlayerPack((s.\\AttackCommon.pyR‹s        
 cCsV|jƒ}|tjkrdStj|}|jƒ}||krHdS|||<dS(N(R'RRˆ(RRŽRFRtmaliciousAtkPlayerDictR((s.\\AttackCommon.pyRŒs    
cCsÄ|jƒ}|tjkrdStjddƒd}tj|}xb|jƒD]T\}}|||krqqOn|j|ƒtjƒ}||_    t
j ||ƒqOW|sÀtjj|ƒndS(NtPKConfigiiè( R'RRˆRot
GetFuncCfgR*R1R‰ttagMCDelMaliciousAtkPlayerR‹RŒR(R(RFRt
defendTimeR‘RtatkTicktdelAtkPlayerPack((s.\\AttackCommon.pytProcessMaliciousAttackPlayer*s        cCsUt||ƒrtjtjfStj|jƒ|jƒƒ}tj|jƒ|jƒƒ}|tj    ksy|tj    kr‰tj
tj fS||kr¥tjtj fS|j ƒtjkrÊtjtjfSt||ƒrétjtjfS|jƒ}|tjkrtj
tjfS|tjkrƒt||ƒrBtj
tjfSt||ƒratj
tjfSt||ƒrÆtj
tjfSnC|tjkr´t||ƒrÆtj
tjfSn|tjkrÆn|tj kr&|j!ƒt"j#ƒkrýtj
tj$fS|j!ƒ r&t%ƒr&tj
tj&fSnt'||ƒrEtj
tjfStjtjfS(s¿
    PKģʽ
        0    ºÍƽģʽ    IPY_GameWorld.amPeace            ¶ÔËùÓÐÍæ¼Ò¶¼ÊÇÓѺ㬶ñÒâ¹¥»÷×Ô¼ºµÄÍæ¼Ò³ýÍâ
        1    È«Ìåģʽ    IPY_GameWorld.amAll              ¶ÔËùÓÐÍæ¼Ò¶¼Êǵжԣ¬¼Ò×åÇøÓòͬÃËÍæ¼Ò³ýÍâ  
        2    ·ÀÎÀģʽ    IPY_GameWorld.amCountry          ±¾·þÍæ¼ÒÓѺã¬Ëû·þÍæ¼Ò¶¼ÊǵжÔ
        5    Ç¿ÖÆÄ£Ê½    IPY_GameWorld.amFamily           ¶ÓÓÑ¡¢ÏÉÃ˳ÉÔ±¡¢Í¬ÕóÓªÓѺã¬ÆäËûÍæ¼ÒµÐ¶Ô
        
    ³¡¾°ÇøÓò
        ÆÕÍ¨ÇøÓò    IPY_GameWorld.gatNormal    ¿É¸ù¾Ý²»Í¬PKģʽPK£¬»÷É±Íæ¼ÒÓгͷ£
        °²È«ÇøÓò    IPY_GameWorld.gatSafe      ²»ÄÜPK
        ×ÔÓÉÇøÓò    IPY_GameWorld.gatFreePK    ¿É¸ù¾Ý²»Í¬PKģʽPK£¬»÷É±Íæ¼ÒÎ޳ͷ£
        
    ¼ò»¯¹ØÏµÅжÏÂß¼­£º ¿É·ñ¹¥»÷È«Óɹ¥»÷ģʽ¾ö¶¨£¬²ß»®Í¨¹ýµØÍ¼Ä¬ÈÏģʽ¼°¿ÉÇл»Ä£Ê½¿ØÖÆPK¹ØÏµ
    
    Ç±¹æÔò:
        °²È«ÇøÓò²»¿É¹¥»÷
        ÆÕÍ¨ÇøÓòÖÐPKÖµ´ïµ½ÉÏÏÞ²»Äܹ¥»÷±ðÈË
        Ë«·½²»Í¬ÔÚÍ¬Ò»ÇøÓò²»¿É¹¥»÷
        ²»¿É¹¥»÷´ò×øÖеÄÍæ¼Ò
        ¶ñÒâ¹¥»÷×Ô¼ºµÄÍæ¼ÒÎÞÂÛʲôÇé¿ö϶¼¿É·´»÷£¬²»ÓÃÇл»Ä£Ê½
    ((RÚRatType_Relation_NoneRÏR7R8R9R:RR/tType_Relation_FriendtDef_PASysMessage_IsSafeAreatDef_PASysMessage_CurAreaNotPKR6tpaSittDef_PASysMessage_SitNotPKR;tType_Relation_Enemyt GetAttackModetamPeacetDef_PASysMessage_AttackModetamFamilyt CanAlikeTeamtDef_PASysMessage_NotAttackTeamtCanAlikeFamilyt Def_PASysMessage_NotAttackFamilytCanAlikeFactiont!Def_PASysMessage_NotAttackFactiont    amCountryt IsSameServert Def_PASysMessage_NotAttackServertamAllt    gatNormalR<RAt GetMaxPKValuetDef_PASysMessage_AttackNotPKtIsPKProtectTimetDef_PASysMessage_PKProtectTimeRÜ(R(R>RMttagPlayerAreaTypetcurPlayerAttackMode((s.\\AttackCommon.pytGetPlayersRelationIsF      c
Cs2|dks|dkr(tjtjfStj|jƒ|jƒƒ}tj|jƒ|jƒƒ}|tj    ks‚|tj    kr’tjtj
fS||kr®tjtj fSt j tj|ƒ}|rô|jƒ|jƒkrôtjtjfSntj|tjƒs;tj|dtjtjƒgƒtjtjfStj|ƒ}tj|ƒ}tj|ƒ}|tjkrº|jƒtjkrº|tjtjgkr·tj tj fSqºn|j!ƒ}|j"ƒ}    |rú|rú||krútj tj#fS|r"|    r"||    kr"tj tj$fStj%tjfS(NtTruck_hgg_31379(&R3RaR›RÏR7R8R9R:RR/RRžRR£R¶RR RR²tGameFuncID_TruckRARXtGetFuncLimitLVRJtGetTruckTeamIDtGetTruckFamilyIDRKR°R¢R£tpncGraytpncRedRœR&RgR§R©R¡(
R(t curTagTruckRMRNREtcurTruckOTeamIDtcurTruckFamilyIDRPtcurPlayerTeamIDtcurPlayerFamilyID((s.\\AttackCommon.pytGetPlayerAndTruckRelation©s: "  c CsÅtjddƒ}|stS|\}}|\}}|\}}tjƒ}|j|j|j}}    }
tj||    |
||dƒ} tj||    |
||dƒ} || ks½|| krÁt    StS(NR”ii(
RoRpR=RtGetCurrentTimetyeartmonthtdaytdatetimeR4( tpkProtecTimeListt    startTimetendTimet    startHourt startMinutetendHourt    endMinutetcurTimetcurYeartcurMonthtcurDayt startDateTimet endDateTime((s.\\AttackCommon.pyR³ßs    cCstS(N(R4(R(RE((s.\\AttackCommon.pyR­óscCs.|jƒ}|jƒ}|o-|o-||kS(N(t
GetFaction(R(REt
curFactiont
tagFaction((s.\\AttackCommon.pyRªüs  cCs.|jƒ}|jƒ}|o-|o-||kS(N(Rg(R(REt curFamilyIDt tagFamilyID((s.\\AttackCommon.pyR¨    s  cCs.|jƒ}|jƒ}|o-|o-||kS(N(R&(R(RERÂt curTagTeamID((s.\\AttackCommon.pyR¦    s  cCshtj|ƒdkrdS|jƒtjkrKtj|ƒ}|jƒdStj|ƒ}|j    ƒdS(Ni(
RâRRRR¶RAtSetDeadRRÀt    SetKilled(t curObjDetelt playerControlt
npcControl((s.\\AttackCommon.pytDoLogic_ObjDead    s
 
cCstjƒjƒ}tjƒjƒ}|tjkrDtjdƒdS|jƒ}tj    |ƒ}|j
ƒ}|j ƒ}|j ƒ}    |jƒ}
tj    |ƒ} |j
ƒ} |j ƒ} |j ƒ}|j t|tjtjƒƒ|j t| tjdƒƒdS(Ns;    __GiveKill_Player_ValuePrize ¸±±¾µØÍ¼É±È˲»¸ø½±Àø£¡£¡£¡i(RR]R^RiRR_RRÖRAt GetPrestigetGetInfamyValueR<RætSetInfamyValueR;RatDef_KillValue_NotorietytDef_UpperLimit_DWordR¤tDef_BeKilledValue_Notoriety(R(RRFRÛRTtattackLVtattackPrestigetattackNotorietyt attackPkValuetattackFightPowertdefendLVtdefendPrestigetdefendNotorietyt defendPkValuetdefendFightPower((s.\\AttackCommon.pyRY,    s&          cCsš|jƒtjkr1|jƒtjkr1tSntjƒj    |j
ƒ|j ƒ|j
ƒ|j ƒƒ}|jƒtj kr–| r–t j|dƒn|S(NtPK_liubo_827276(RRRR—RatDef_NPCType_Boss_BlueR4RR]t    CanLineToR9R:R¶RARX(RtRt    canLineTo((s.\\AttackCommon.pytCanAttackByPathz    scCsxd\}}|r.|jƒ|jƒ}}nt|dƒsCdn    |jƒ}|j||||||jƒ|ƒdS(NiR(ii(RRRRRfR(RÄtsrcObjRtchangeHPt    changTypetsrcIDtsrcTypetHPEx((s.\\AttackCommon.pyRf‹    s  !%((wRõRRaRRARRéR«RZRUR×RöR7RJt PlayerFamilyRßR>t PlayerSuccessR R²RªRR
RoRRât    BuffSkillRSR‰RŒRRÉtmathRR R%R)R0R2R@RGRQRcR\RŠRŽRR=R”RR¡R©RªR²RµRÌR½RÔR·RÙRÚRÜRÞRïRðRýR    R4RõR%R–RùRóR3R8RHRJR¿RKRMRPRQR[RtR]RbRcR”RR™R¦RÉR¸R3R°RàR½RRaR_RYRZR€R‡R;R‹RŒRšR·RÄR³R­RªR¨R¦RâRYR÷Rf(((s.\\AttackCommon.pyt<module>sæ                                          
            #                *    &    9                                            %                                  *        6    % 1 !    $                +    !                 "    ,        B                      &            q     ó                         A    +    "                        `    6                                            N