hwj35
5 天以前 a5dfefad61af0eecec503b2a43be7eb3963f8d7c
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
øôÛgc@s<ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZd„Zd„Zd„Zd„Zded„Zd„Zd„Zd    „Z d
„Z!d „Z"d „Z#d „Z$d„Z%d„Z&d„Z'd„Z(dd„Z)eddd„Z*d„Z+dd„Z,ed„Z-d„Z.ed„Z/eej0ddd„Z1eej0ddd„Z2d„Z3d„Z4d„Z5d„Z6d „Z7d!„Z8d"„Z9d#„Z:e;e;d$„Z<e;d%„Z=e;e;ej>e;d&„Z?d'„Z@d(„ZAd)„ZBd*„ZCd+„ZDd,„ZEdd-„ZFdgdd.„ZGd/„ZHd0„ZId1„ZJd2„ZKd3„ZLd4„ZMgd5„ZNd6„ZOd7„ZPd8„ZQd9„ZRd:„ZSd;„ZTd<„ZUd=„ZVd>„ZWd?„ZXd@„ZYdA„ZZdB„Z[dC„Z\dD„Z]dE„Z^dF„Z_dG„Z`dH„ZadI„ZbdJ„ZcejdedK„ZeejfdL„ZgdM„ZhdN„ZidO„ZjdS(PiÿÿÿÿNcCs‡|tjkr%|jƒtjtfS|tjkrJ|jƒtjtfS|tjkro|j    ƒtjtfS|tj
kr”|j ƒtjt fS|tj kr¹|jƒtjt fS|tjkrÞ|jƒtjtfS|tjkr|jƒtjt fS|tjkr(|jƒtjtfS|tjkrM|jƒtjtfS|tjkrr|jƒtjtfStjd|ƒdS(NsÎÞ·¨»ñÈ¡¼¼ÄÜÀàÐÍ = %s((t IPY_GameWorldtbfBufft GetBuffStatetChConfigtDef_Max_Buff_CounttFalsetbfDeBufftGetDeBuffStatetbfAuratGetAurat    bfIncBufft
GetIncBufftTruet bfEquipBufft GetEquipBufft    bfMapBufft
GetMapBufft btPassiveBuft GetPassiveBuft bfActionBufftGetActionBuffManagert bfProcessBufftGetProcessBuffStatetbfProcessDeBufftGetProcessDeBuffStatet    GameWorldtErrLog(tcurObjtbuffType((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetBuffManagerByBuffType,s,cCstjj|jƒƒS(N(RtDef_SkillBuffListthas_keyt GetSkillType(tcurSkill((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytIsBuffKscCstjj|jƒƒS(N(RRtgetR (R!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetBuffTypeRscCs2t|tjƒ}|dkr%tjS|jdƒS(Ni(tGetSkillEffectByEffectIDRtDef_Skill_Effect_BuffStatetNonetDef_PlayerState_NormaltGetEffectValue(R!t    curEffect((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetBuffStateTypeUs cCs|j|ƒ|jƒ}|}|jƒ}|r_|tjddƒkr_|tj|ƒ7}nt|ƒrü|jƒt    j
krØ|t j |d|t    jƒ7}|dkrØt|tdtj|ƒtjƒ}qØn|j|ƒ|rø|jƒndS|t j |d|t    jƒ7}|dkrQt|tdtj|ƒtjƒ}n|j|ƒ|sp||kr}|jƒndS(NtSkillCDii(tSetLastUseTicktGetCoolDownTimetGetSkillTypeIDt IpyGameDataPYtGetFuncEvalCfgt PlayerControltGetTheFBSkillsCDtisPassiveSkillt GetFuncTypeRtDef_SkillFuncType_GiftSkilltPassiveBuffEffMngt!GetPassiveSkillValueByTriggerTypeR'tTriggerType_GiftReduceCDtinttmaxt ShareDefinetDef_MaxRateValuet SetRemainTimet
Sync_SkilltTriggerType_ReduceCD(R!treduceSkillCDPertticktatkObjt    forceSynct coolDownTimet
remainTimet skillTypeID((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSetSkillRemainTimeas,     -   *  cCsW|jƒ}|dkr|Std|||jƒƒ}|j|ƒ|j|ƒ|S(Ni(t GetRemainTimeR;tGetLastUseTickR-R>(R!RBtremainTime_OldtremainTime_New((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytRefreshSkillRemainTimeŽs    cCsd|jƒ}xQtd|jƒƒD]:}|j|ƒ}|jƒdkrOq"nt||ƒq"WdS(Ni(tGetSkillManagertranget GetSkillCounttGetSkillByIndexRIRM(t    curPlayerRBt skillManagertiR!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytRefreshAllSkillRemainTime s cCsd|jƒ}xQtd|jƒƒD]:}|j|ƒ}|jƒdkrOq"n|j|ƒq"WdS(Ni(RNRORPRQRIR-(RRRBRSRTR!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerChangeMapUpdateSkillCD³s c Cs.|s
dSg}t|tƒrl|jƒ}||krD||}q“t|ƒ|kr“|t|ƒ}q“n't|tƒsŠt|tƒr“|}nt|ƒ}|s©dSt}|jƒ}tj|ƒ}t    j
d|ƒx9|D]1}t    j ƒj |ƒ}|dkrqânt||ƒs$qântj||ƒs<qân|j|ƒrQqânt}|jƒ}    |jƒ}
d} |    dkr«|j|
ƒ} | sœdn    | jƒ} n|j|ƒt    j
d|
||    f|jƒƒtj||
|    ƒt|ƒrýn|j|| dtƒqâW|r*|jƒn|S(Ns¸øÍæ¼Ò¼¼ÄÜ: %siis4    ¸øÍæ¼Ò¼¼ÄÜ: skillTypeID=%s,skillID=%s,skillLV=%stisRefreshState(t
isinstancetdicttGetJobtstrtlistttupleRRNR2RtDebugLogt GetGameDatatGetSkillBySkillIDR't CheckSkillJobt
SkillShelltCheckLearnSkillConditiontFindSkillBySkillIDR t
GetSkillLVR/tFindSkillBySkillTypeIDt GetFightPowert LVUPSkillByIDtGetIDtDataRecordPacktDR_LearnORUPSkillR4tRefreshSkillFightPowerExtRefreshPlayerAttrState( RRt jobSkillInfot jobSkillListtjobt
isLearnNewRSt playerControltskillIDt    skillDatatskillLVRGtbeforeFightPowertbefSkill((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGivePlayerSkillByJobSkillÁsX               #  c    Csðtjdƒ}tj|jƒ}||kr2dS||}|jƒ}tjƒ}x•|D]}|j|ƒ}|stj    d|ƒq[n|j
ƒ}|j |ƒr®q[n|j |ƒt j||dƒtjd||jƒƒq[WdS(NtLoginLearnSkillsDataBase No SkillId:%disÉÏÏßѧϰ¼¼ÄÜ£º%s(t ReadChConfigtGetEvalChConfigRt JOB_TYPE_DICTRZRNRR_R`RR/RftLVUpSkillBySkillTypeIDRjRktLogt GetPlayerID(    RRtjobLearnSkillDicttjobTypetlearnSkillListRStgameDataRsR!tcurSkillTypeID((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerLoginCheckLearnSkills& 
     c    Cs™|jƒ}tjƒs,tjd|ƒdSg}tjd|ƒg}xttjtjƒD]x}t    ||ƒ}|d kr–tjd|ƒq^n|d}|j
ƒ}|dkr¾q^ntjd||f|ƒxût|ƒD]í}    |j |    ƒ}
|
stjd||    fƒqån|
j ƒ} | sLtjd||    fƒqån| j ƒ} | jƒ} | |kr–tjd||    | | f|ƒqån|j| jƒƒtjd    ||    | | jƒ| f|ƒqåWq^Wx5|D]-}tj|||ƒtjd
||ƒqáW|jƒ}xttd|jƒƒD]]}    |j|    ƒ} | jƒdkr4| jdƒtjd | jƒ| j ƒf|ƒq4q4WdS( Ns·Ç¿ç·þ·þÎñÆ÷ÉÏÏß²»Çå³ýbuff...s¿ç·þ·þÎñÆ÷ÉÏÏßÇå³ýbuff...s    buffTuple == () buffType=%sis    buffType=%s,buffCnt=%ss!    buffType=%s,i=%s  not curBuffs!    buffType=%s,i=%s not curSkillsA    buffType=%s,i=%s,skillTypeID=%s,skillName=%s not in clearListsL        addClearBuff buffType=%s,i=%s,skillName=%s,skillID=%d,skillTypeID=%ds        delBuff skillID=%ds3        SetRemainTime 0 skillName=%s,skillTypeID=%s((RRt IsCrossServerR^R~RORRtbtBufMaxRt GetBuffCounttGetBufftGetSkillR/t GetSkillNametappendt
GetSkillIDt    BuffSkilltDelBuffBySkillIDRNRPRQRIR>(RRRBtplayerIDtClearBuffSkillTypeIDListt clearBuffListRt    buffTuplet    buffStatetbuffCntRTtcurBuffR!RGt    skillNameRsRS((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt PlayerLoginMergeServerSkillLogic s\   
              (       $cCsh|jƒ}xUt|jƒƒD]A}|j|ƒ}|jƒdkr|jdƒ|jƒqqWdS(Ni(RNtxrangeRPRQRIR>R?(RRRSRTtskill((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytResetAllSkillCDas  cCsÃtj|ƒ}|dkrdS|jƒ}x‘td|jƒƒD]z}|j|ƒ}|jƒ}|dkrtqAn||d}|dkr¡|jdƒqAn|j|ƒ|j|ƒqAWdS(Niiè(    R2tGetPlayerLeaveServerSecondRNRORPRQRIR>R-(RRRBtleaveServerSecondsRSRTR!tskillRemainTimetlastTime((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerLoginUpdateSkillCDos        c Csø|jƒ}|jƒ}t|tjƒ}|dkrNtjdtjƒtS|j    dƒ}tj
ƒj |ƒ}|dkr“tjd|ƒtS|j ƒ}|dkrÀtjd|ƒtS|j ƒ}    tj|||||    ƒ}
|
jtƒtS(NsûÓÐÕÒµ½ÏàÓ¦µÄЧ¹ûID %sis
ûÓÐNPC %ss AIÀàÐͲ»¶Ô %s(tGetPosXtGetPosYR%RtDef_Skill_Effect_SummonMapNPCR'RRRR)R_tFindNPCDataByIDt    GetAITypet GetLastTimet    NPCCommont SummonMapNpctSetIsNeedProcessR ( tattackerR!RBtcurPosXtcurPosYR*tnpcIDtcurNPCtaiTypeRŸtcurNpc((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSummonMapNPCBySkillžs&        c Csè|jƒ}|dkrtStjƒj|ƒ}|dkr[tjd||jƒƒtS|j    ƒ}t
||||ƒ\}}t |ƒdkr˜tS|j ƒ}x=|D]5}    |    j ƒ|kr«t j|    ƒ}
|
jƒtSq«WtS(Nis%¼¼ÄÜÌî±í´íÎó,ÎÞ´ËNPC,summonNPCID = %s(tGetSummonCountR RR_R¤R'R~RRtGetTypet__GetSummonByFuncTypeListtlentGetFunctionTypeR§t
NPCControlt    SetKilled( RRt summonNPCIDRBt summonCountt    curSummont curSummonTypet
summonListt maxBornIndextcurSummonFunctionTypet    summonNPCt
npcControl((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSummonNPCOccurRuleÄs$      
c Cs¥g}d}d}d}x€td|ƒD]o}|j|ƒ}    |    jƒ|krUq(n|j|    ƒ||    jƒ}
|
|kr|
}|}n|d7}q(W||fS(Nii(ROtGetSummonNPCAtR³RŒt GetBornTime( RRRºR¼RBt summonNPCListt
list_Indext maxBornTimeR¾RTRÀtsummonNPC_BeingTime((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR´és      c
Csè|jdƒ}|jdƒ}|jdƒ}|jdƒ}tj||ƒ}|dkr„tjd|jƒ|f|jƒƒ|Sd}|dkr®||t    j
|}n0d|t t    j
ƒ}    |||    t    j
|}t |ƒS(Niiis,¼ÆË㸽¼Ó¼¼ÄÜ×ÜÁ¿´íÎó,skillID = %s,index = %s( t    GetEffectR)t    EffGetSettGetValueByEffIndexR'RR~RRRR=tfloatR:(
RRR!t    skillPlusR*tindextskillPerteffecttmaxValuetvaluetplus((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetLastSkillMaxValues & ic CsT|jƒ}|j|ƒ|jƒ}    |j|    ƒ|j|jƒƒ|jtj|j    ƒƒ|j
ƒj tj ƒt |||ƒtj|ƒ|j|ƒ|jtj|jƒƒ|rÐ|j||ƒn=tj|jƒ|jƒ|ƒ}
|j|
jƒ|
jƒƒ|j|ƒt||ƒ|rC|j|jƒƒn|jtƒdS(N(t SummonNewNPCt SetNPCTypeIDtGetLVtSetLVt
SetCountryt
GetCountrytSetDictRtDef_NpcDictKey_CampTypet
GetFactiont GetNPCAngrytInittDef_SummonNPC_Angry_CounttSetSummonNPCPropertyR§tInitNPCtSetOwnert!Def_NPC_Dict_SummonMapNPCPlayerIDRtReborntGameMaptGetEmptyPlaceInAreaR¡R¢t SetBornTimetSetSummonNPCSkillLVt SetLastTimeR¦t SetCanAttackR( RRR!tsummonIDt
summonDistRBtisAppointBornPostbornPosXtbornPosYRÀt lvSummonNPCt    summonPos((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerSummonNPC6s*      !   c Cs!|jdƒjdƒdkr"dS|jƒd}|dkrBdS|jƒ}g}x¥td|jƒƒD]Ž}|j|ƒ}| s˜|jƒdkrœPn|jƒ}||}tj    ƒj
|ƒ}    |    sÓqjn|    jƒ|krëqjn|j |ƒqjWx|D]}
|j |
t ƒqWdS(Nii(RÉR)ReRNRORPRQR/RR_R`RŒtLearnSkillByIDR( RÀR!RuRStlearnSkillIDListRÎtuseSkilltuseSkillTypeIDt learnSkillIDt    findSkillRs((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRé`s,   
 cCs(|rt|||ƒdSt|ƒdS(N(t Calc_Summon_BaseEffectBySkillPertCalc_Summon_BaseEffect(RRRÀR!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRá„s
 
cCs]d}t}d}    x‘td|jƒƒD]z}
|j|
ƒ} | sIq(n| jƒ|kraq(n||krqdS|d7}tj| ƒdkr–q(nt}|
}    q(W|rÒ|j    d||ƒ|jƒd}    n|jƒ} |j
ƒ} |    dkrt j d| | |fƒdS|j|    ƒ} | sGt j d| | |fƒdSt || |||ƒS(Niiÿÿÿÿis.AddSummonErr NPCID=%s£¬ skillID=%s summonID=%ss+SummonErr NPCID=%s£¬ skillID=%s summonID=%s(R ROR²RÃtGetNPCIDR'tGameObjtGetHPRtAddSummonCountRRRtSummonNPCByInstance(R®R!Rºt maxAngryCountR¹RBtaddAngrytcountt
isAddCountRÎRTRÀR­Rs((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt$DoLogic_NPC_UseSkill_SummonNPCSingle§s: 
 
   cCsdd}xWtd|jƒƒD]@}|j|ƒ}|s=qn|jƒ|kr|d7}qqW|S(Nii(ROR²RÃRü(tgameObjRìRRTRÀ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSummonCountByNPCIDìsc Csæt|t||ƒdƒ}|dkr>|j|||ƒnd}x›td|jƒƒD]„}    |j|    ƒ}
|
s{qZn|
jƒ|kr“qZn||kr£dS|d7}tj|
ƒdkrÈqZnt    ||
|||ƒqZWdS(Nii(
R;RRÿROR²RÃRüRýRþR( R®R!R¹RºRRBRtaddCountRRTRÀ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt!DoLogic_NPC_UseSkill_SummonNPCAlls   
c
 
Csåt||ƒ|krdSt|t||ƒdƒ}
|
dkrW|j|
||ƒnx‡td|jƒƒD]p} |j| ƒ} | sŽqmn| jƒ|kr¦qmntj| ƒdkrÁqmnt    || ||||||    ƒSWdS(Nii(
RtminRÿROR²RÃRüRýRþR( R®R!R¹tsummonAllCountRRBRtdistt
rebornPosXt
rebornPosYRRTRÀ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytDoLogic_NPC_UseSkill_SummonNPC0s  cCsRtj|ƒ|dkr;|dkr;|j||tƒn@tj|jƒ|jƒ|ƒ}|j|jƒ|jƒtƒ|j|ƒ|j    |j
ƒƒ|j t ƒd}    t |tjƒ}
|
r“t|
jdƒƒtj}    t|
jdƒƒtj} |    rA|jt|jƒ|    ƒƒ|jt|jƒ|    ƒƒn| r£tj|ttj|ƒ| ƒƒtj|ttj|ƒ| ƒƒq£ntj|t ƒtj||ƒ|s½|S|jƒ} |jƒ} xlt d| j!ƒƒD]U}| j"|ƒ}|j#ƒ}|sqën| j$||j%ƒ|j&ƒ|j'ƒƒqëW|j(ƒ|S(Niii()R§RâRåRRæRçR¡R¢RèRêR¦R©R R%RtDef_Skill_Effect_SummonAttrRÌR)R=t SetBaseMinAtkR:t    GetMinAtkt SetBaseMaxAtkt    GetMaxAtkRýtSetMaxHPtGetMaxHPtSetHPtDoNPCAttrStrengthentFBLogictDoFBRebornSummonNPCRÞROt GetAngryCounttGetAngryValueTagtGetObjIDtAddAngryt
GetObjTypet GetAngryValuetGetAngryValueExt NotifyAppear(R®RÀR!RBRR tposXtposYt    resultPostatkpert
findEffecttmaxHPPertsummonNPCAngryt curNPCAngryRTt
angryValuet angryValue_ID((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRYsB !   #)   ,
cCsdS(N((RRRÀRì((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt!__PassiveSkill_AddSummonAttributeÊscCsjt|ƒ}g}xQtd|ƒD]@}|j|ƒjdƒ}|||tj}|j|ƒq"W|S(Ni(RµRORÉR)RR=RŒ(t    valueListR!teffCountt
returnListRÎteffValueRÒ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetValueBySkillEffectÒs cCsNxG|D]?}tj||dƒ}tj||d||d|ƒqWtS(Nii(RÊRËtSetValueByEffIndexR (RñRÀR½RÒtcurValue((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt__CalcSummonEffectValueâs 'cCs‚|jdƒ}|dkr?tjd|jƒ|jƒƒtS|jdƒ}|sxtjd|jƒ|jƒƒtS|tt    j
ƒ}|j t |j ƒ|ƒƒ|jt |jƒ|ƒƒ|jt |jƒ|ƒƒ|jt |jƒ|ƒƒ|jt |jƒ|ƒƒ|jt |jƒ|ƒƒ|jt |jƒ|ƒƒ|jt |jƒ|ƒƒ|jt |jƒ|ƒƒ|jt |jƒ|ƒƒ|j t |j!ƒ|ƒƒ|j"t |j#ƒ|ƒƒ|j$t |j%ƒ|ƒƒ|j&t |j'ƒ|ƒƒ|j(t |j)ƒ|ƒƒ|j*t |j+ƒ|ƒƒt,j-|t t,j.|ƒ|ƒƒdS(NisÕÙ»½¼¼ÄÜÎÞЧ¹û,skillID = %sis%¼¼ÄÜ %sÌî±í´íÎó,ÕÙ»½¼¼ÄÜÊôÐÔ°Ù·Ö±ÈΪ0(/RÉR'RR~RRRR)RÌRR=RR:RRRt
SetBaseDeftGetDeft
SetBaseHittGetHittSetBasePoisionAtkt GetPoisionAtktSetBaseFireAtkt
GetFireAtkt SetBaseIceAtkt    GetIceAtktSetBaseThunderAtkt GetThunderAtktSetBaseWindAtkt
GetWindAtktSetBasePoisionDeft GetPoisionDeftSetBaseFireDeft
GetFireDeft SetBaseIceDeft    GetIceDeftSetBaseThunderDeft GetThunderDeftSetBaseWindDeft
GetWindDeftSetBaseMissRatetGetMisstSetBaseSuperHiteRatetGetSuperHitRateRýt SetBaseMaxHPR(RRRÀR!R*RÏ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRúïs6   #cCss|j|jƒƒ|j|jƒƒ|j|jƒƒ|j|jƒƒ|j|j    ƒƒ|j
|j ƒƒ|j |j ƒƒ|j|jƒƒ|j|jƒƒ|j|jƒƒ|j|jƒƒ|j|jƒƒ|j|jƒƒ|j|jƒƒ|j|jƒƒ|j|jƒƒ|j |j!ƒƒt"j#|t"j$|ƒƒ|j%|j&ƒƒdS(N('RRRRR6R7R8R9R:R;R<R=R>R?R@RARBRCRDRERFRGRHRIRJRKRLRMtSetBaseAtkIntervaltGetAtkIntervalRNRORPRQRýRRRtSetBaseHPRestoret GetHPRestore(RÀ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRûs(cCsTtjƒ}|jƒ}tj||||ƒ}g}x!|D]}    |j|    jƒƒq=Wg}
xí|D]å} |j|| d|| dƒ} | s›qgnx®td| j    ƒƒD]—} | j
| ƒ}|j ƒ}|t j krçq±n|jƒ}||jƒkr||krq±ntj||ƒ}|dkr;q±n|
j|ƒq±WqgW|
S(Nii(RtGetMaptGetTeamR2tGetAreaTeamMemberRŒRit    GetPosObjROt GetObjCountt GetObjByIndextGetGameObjTypeRt    gotPlayertGetObjR'(RRtsrcPosXtsrcPosYt skillMatrixtareatgameMapt curPlayerTeamtteamPlayerListt
teamIDListt
teamPlayertinAreaTeamPlayerListtcurPostmapObjRTRt
curObjTypetcurObjID((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillAreaTeamPlayer?s2    "    cCsA|jƒj|ƒ}|dkr%dS|jdƒjdƒ}|S(Ni(RNRfR'RÉR)(RRt    skillTypeRšRÐ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetSkillEffps
 cCsdS(N((RRGtaddValue((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddMPscCsdS(N((RRGt
skillOwnert    lostValueRBtviewtreduce((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt SkillLostMP¤sc    Csß|jƒ}tj|tjƒr%dS|dkrLtjd||fƒdStj|ƒ}|dkrkdStj    |ddtj ƒrŠdS|t j kr¨tj|ƒntj}t||dtjƒ}tj|ƒ}||kr|r tj||||tjƒndSt|||ƒ}|t j krYtj||| ƒtj||ƒn]|t jkr¶|jƒt jkrtj||ƒq¶tj||ƒ|s¶|jƒq¶n|rÛtj||||tjƒndS(Nis1###¼¼Äܻظ´ÑªÁ¿Òì³£,ÊýÖµ´íÎó = %s,¼¼ÄÜÀàÐÍID = %sgð?( R]RýtGetPyPlayerStateRtDef_PlayerState_LimitAddHPRR~RþR7t GetValueByPassiveBuffTriggerTypeR'tTriggerType_ForbidenCureRR^R2t
GetCurePerR=R:Rt AttackCommont ChangeHPViewtDef_HurtTYpe_RecoveryR
RRt    OnFBAddHPtgotNPCtGetGameNPCObjTypetgnotPett
PetControltSetPetHPt    Notify_HP(    RRGRqtisNotifyRltcurHPtcurePertmaxHPtremainHP((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddHPÌs>   ' c     CsC|dkr'tjd||fƒdS|jƒs7dS|jƒ}    tjƒj|dƒ}
|rm|jƒnd} |    tjkrÈ|jƒt    j
krÈ|
rÈt |
ƒt    j krÈt j|ƒrÈdSn|} tj|ƒ} | dkrídS|rGtj||| |    ƒ\}}|    tjkrGt    j|ƒrG||krGd}qGn|rktj||||
|ƒ}nt| |dƒ}|    tjkr|jƒtjkrµtj||ƒq#tjd|jƒƒ}|rétj|||ƒntj||ƒ|s#|jƒq#ntj||| ƒtj |||
||dƒ|r†tj!|||| |ƒ|r†t"j#|||
t    j$|ƒq†ntj|ƒdkrÖt"j#|d|
t    j&|ƒt"j'|d|
t    j&|ƒn|sötj(d||
|ƒdS|    tjkr…d}| tjkr,t)j*|ƒ}ntj|ƒdkr…t)j+|ƒ}|j,||ƒ|dkr‚|j,|dƒq‚q…n| tjkr¦t)j*|ƒ}n|}|dkr |jƒtj-kr |    tj-krõtj.|||dƒq |    tjkr tj/||| |ƒq n|r?t0j1||d|ƒndS(Nis1###¼¼ÄÜÉ˺¦ÑªÁ¿Òì³£,ÊýÖµ´íÎó = %s,¼¼ÄÜÀàÐÍID = %siiÿÿÿÿt NPCTimeLostHPs³ÖÐøµôѪt SkillLostHP(2RR~t GetCanAttackR]R_tFindSkillByTypeRRt    GetIsBossRtDef_SkillAttack_NPCIsBosstGetSkillBattleTypet!Def_BattleRelationType_CommNoBossRbtIsNPCSkillResistRýRþR}tGetPVERealmLVst
IsGameBosstCalcHurtHPWithBuffR;R‚RƒR„R…R0tGetIpyGameDataNotLogRütUpdateTimeMonsterHPRR†t WriteHurtLogR~R7tOnPassiveSkillTriggertTriggerType_AttackOverPassiveR'tTriggerType_WillDeadtOnPassiveBuffTriggertDoLogic_ObjDeadR§tGetNpcObjOwnerDetailR·tAddObjToAngryListR^t OnPVPDamagetNPCAddObjInHurtListt
BaseAttacktDoLogic_AttackResult(RRGt    buffOwnerRtRBRutisDoAttackResultthurtTypet skillAffectRlR!t
atkObjTypetnotifyLostValuetcurObjHP_BeforeAttacktaRealmLVtdRealmLVR‹ttimeLostHPIpyDatat attackerOwnert curNPCControl((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRŽs~   $* * " !cCsŸ|jƒ}|jƒ}|tjks6|tjkr:dS|dkr›tj|ƒdkr›tj}|jƒj|ƒ}|r›t    j
||||ƒq›ndS(NiiÜi(iiÜ( R]RR^RýRþRtDef_SkillID_PoisonAtkBuffRNRfRbtDoLogic_UseSkill(RGRªtdefObjRBtattackerObjTypet
defObjTypetpoisionAtkBuffIDR!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAddPoisonAtkBuff‹s  !    cCs?|jƒtjkrdS|jƒtjkr1n
|jƒdS(N(R]RRR‚RƒR†(R((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt NotifyNPCHP s
cCsD|jƒ}|jƒ}|dks0|dkr4dStj||ƒS(Ni(t
GetOwnerIDt GetOwnerTypeRR_(tbufft buffOwnerIDt buffOwnerType((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetBuffOwner±s
  cCsŽ|jƒ}|jƒ}tj||ƒ}|dkrftjd|jƒjƒ||||fƒdS||}|jtd||ƒƒ|S(NisJ skillID = %s, lostTime = %s ,value = %s , remainTime = %s , refuTime = %s(    tGetValueRIRt GetIntUpperRRŠR/tSetValueR;(R–trefuTimeRBRÒRFtlostTimeRt((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetProcessBuffChangeHp_TimeÁs   ,
c CsR|jƒ}|jƒ}g}xEtd|jƒƒD].}|j|ƒ}|sUq4n|j|ƒq4W|spdSxÛ|D]Ó}|jƒ}|jƒ}|dkr§qwntj    ||ƒ}    |    dkrËqwn|    jƒ}
||
kréqwn|t j kr
||j ƒksw|t jkr1||jƒkr1qwntj||jƒ|ƒqwWdS(Ni(R]R    RORˆR‰RŒR»R¼RR_R'RR^RRRiR¥tSkillAddAuraBuffRŠ( t curObjDetelRBRlt buffManagert auraBuffListRÎtauraBuffR¾R¿R§tbuffOwnerObjType((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAddAuraSkillØs4         !!cCsg|jƒ}|jƒ}g}t}xEtd|jƒƒD].}|j|ƒ}|s[q:n|j|ƒq:Wxô|D]ì}|jƒ}|jƒ}    |j    ƒ}
|j
ƒ} |j ƒ} | dkrÇqsnt j | | ƒ} | dkrtj||    |ƒt}qsn|jƒ}t j|jƒ|jƒ| jƒ| jƒƒ}|ru||dkrutj||    |ƒt}qsn| jƒ}| tjkrž| jƒs»tj||    |ƒt}qsn|j|
ƒsétj||    |ƒt}qsn|
tjkr_|tjkr qsntjtj| ƒ}|dkr4qsnt j ||ƒrLqsn|j!ƒdkr||j!ƒ|j!ƒkr|qsntj||    |ƒt}qsq_qs| tjkr2|
tj"krÂqsn|j|
ƒs_| j#ƒj$|
ƒ}|dkr|jƒjƒ|    krqsntj||    |ƒt}qsq_qstj||    |ƒt}t j%d| ƒqsqsW|S(Niis!###¹â»·Òì³£,ÎÞ·¨²éÕÒ¹âÔ´ÀàÐÍ = %s(&R]R    RRORˆR‰RŒRŠRR/R»R¼RR_R'RŽRR t GetAtkRadiustGetDistR¡R¢RNRRt
GetVisibleRfRtDef_SkillID_XuanTianZhenYanR^R§tGetSummonNPCOwnert    IsSameObjt    GetTeamIDtDef_SuperBuffListRtFindBuffR~(RÈRBRlRÉRÊtreFlashRÎRËt    buffSkillt buffSkillIDtauraSkillTypeIDR¾R¿R§t    atkRadiusR tbuffOwnerSkillMgrtpetOwnertgankBuff((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAuraSkills„           0   *    $    cCs¼d}|dkr*tjƒj|ƒ}ntjƒj||ƒ}|dkritjd||fƒdSt|ƒ}t|||jƒ|j    ƒƒsšdSd}t
j |||||gƒS(Ns0Ìí¼Óbuffʧ°Ü,Êý¾Ý¿â²éÕÒ¼¼ÄÜ = %s,ʧ°Ü!skillLV=%si( R'RR_R`RR~R$tCheckCanAddBuffR/ReRŽt    DoAddBuff(RRoRBRuR!Rt addBuffValue((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytAddBuffBySkillTypes   ! cCs¶d}|dkr*tjƒj|ƒ}ntjƒj||ƒ}|dkritjd||fƒdSt|ƒ}t|||jƒ|j    ƒƒsšdSt
j ||||||ƒS(Ns0Ìí¼Óbuffʧ°Ü,Êý¾Ý¿â²éÕÒ¼¼ÄÜ = %s,ʧ°Ü!skillLV=%s( R'RR_R`RR~R$RàR/ReRŽtAddBuffNoRefreshState(RRoRBRut plusValueListR§R!R((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytAddBuffBySkillType_NoRefurbish©s   !cCsÛt||ƒ}|dkrdS|d}|dkrPtjd||fƒtS|j|ƒ}|dkrotS|tjkr‚tS|jƒ}|tj    kr¶|j
ƒ|kr¶dSn|j ƒ r×t j |ƒ r×dStS(Nis+###Òì³£,ÎÞ·¨²éÕÒÕâÀ༼ÄÜ = %s,buffÀàÐÍ = %s((RR'RR~R RÖRR
RŠRReR¦RŽtGetBuffMaxLayer(RRR„t
curSkillLVR“tcurObjBuffManagert
curObjBuffRØ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRàÄs& 
       cCsjxctd|jƒƒD]L}|j|ƒ}|s7qn|jƒ}|jdƒjƒ|kr|SqWdS(Ni(RORˆR‰RŠRÉt GetEffectID(RÉteffectIDRTtfindBuffRØ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytFindBuff_BuffM_EffIDôs cCsƒtjƒj|ƒ}|dkr6tjd|ƒdSt|t|ƒƒ}|dkrltjd|ƒdS|d}|j|ƒS(Ns0FindBuffBySkillAndEffID skillTypeID= %s DBNoFinds0FindBuffBySkillAndEffID skillTypeID= %s IsNoBuffi((RR_R`R'RRR$t
FindEffect(RRRGteffIDR!R“RÉ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt FindBuffEffs  
cCs¸ddddg}tjƒj|ƒ}|sBtjd|ƒ|St|ƒ}t||ƒ}||d<||d<|dkr|S|d}|j|jƒƒ}||d<||d<|S(Ns!FindBuff skillTypeID= %s DBNoFindiiii((    R'RR_R`RR$RRÖR/(ttagObjRGt
returnInfoRùRR“RÉRí((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt FindBuffByIDs  
 
 
 
 
c
CsØtjƒj|ƒ}t|ƒ}t||ƒ}|dkr@dS|d}x‡td|jƒƒD]p}|j|ƒ}    |    sq`n|    j    ƒj
ƒ|krŸq`n|    j ƒ|kr·q`n|    j ƒ|krÏq`n|    SWdS(Ni(( RR_R`R$RR'RORˆR‰RŠR/R»R¼(
RRGtownerIDt    ownerTypeRùRR“RÉRTR–((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytFindBuffByOwner0s$  
c
Csätjƒj|ƒ}t|ƒ}t||ƒ}|dkr@dS|d}x“td|jƒƒD]|}|j|ƒ}    |    sq`n|    j    ƒj
ƒ|krŸq`n|    j ƒ|kr·q`n|    j ƒ|krÏq`n|    |||fSWdS(Ni((NNNN(NNNN( RR_R`R$RR'RORˆR‰RŠR/R»R¼(
RRGRõRöRùRR“RÉRTR–((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytFindBuffByOwnerExLs$  
cCsQ|jƒjƒtj|ƒt|ƒ}t||ƒ|j|jƒ|ƒ|S(N(RtClearR2tKillPlayerSummonNPCtGetPlayerUseSkillPointtClearSkillManagertSetFreeSkillPointtGetFreeSkillPoint(RRtsaveSkillTypeListt    savePoint((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytDoLogic_ReSetSkillms    cCs|d}|jƒ}tjdƒ}xTtd|jƒƒD]=}|j|ƒ}|jƒ|krdq7n||jƒ}q7W|S(NitNoSkillPointSkill(RNRzR{RORPRQR/Re(RRt    usePointsRStnoPoints_SkillType_ListRTR!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRû€s cCsžg}|jƒ}x]td|jƒƒD]F}|j|ƒ}|jƒ}||kr[q(n|j|jƒƒq(W|jƒx|D]}|j|ƒqƒWdS(Ni(    RNRORPRQR/RŒRt
ResetSkillRh(RRRÿtplayerHasSaveListRSRTR!t curSkillTypeRs((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRü–s   
 cCs|s tjS|jƒS(N(RtDef_BattleRelationType_Commt GetHurtType(R!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR“¯sc
CsF|jƒtjtjtjtjtjtjtjtj    tj
g    kS(N( R RtDef_SkillType_PassivetDef_SkillType_PassiveBufftDef_SkillType_AttrSkilltDef_SkillType_PassivePlsBufftDef_SkillType_PassiveDepBufftDef_SkillType_PassiveActionBufftDef_SkillType_PassiveLstPlsBufftDef_SkillType_PassiveLstDepBufft"Def_SkillType_PassiveLstPlsBuffAtk(R!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR4¶sc    Cs@|jƒtjtjtjtjtjtjtjtj    gkS(N(
R RR
R R RRRRR(R!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisPassiveTriggerSkillÃscCs|jƒtjkS(N(R RR (R!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt isPassiveAttrÎscCs|jƒtjkS(N(R RR (R!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisPassiveBuffSkillÑscCs |jdƒS(Nt
UsePassive(t GetDictByKey(Rª((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetUsingPassiveSkillÕscCsV|dkr,|jd|jdƒdƒn&|jdtd|jdƒdƒƒdS(NiRi(RÛRR;(RªRÒ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSetUsingPassiveSkillØs  &cCs|jddƒdS(NRi(RÛ(Rª((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytClearUsingPassiveSkillßscCstS(s ÑéÖ¤ÊÇ·ñ»ù±¾¹¥»÷¼ä¸ô (R(RRRGRB((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckPlayerAtkIntervalãscCs=|jƒ}|dkrtS|td|jƒƒ@r9tStS(Nii(t
GetUseTypeR tpowRZR(RRR!t skillUseType((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRaôs  cCs|jƒtjkS(N(RëRtDef_BaseEffectList(RÐ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt IsBaseEffectscCst|tj||ƒƒS(N(tGetAttackerHurtValueByAtkTypeR}t GetBattleType(RªRö((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetCureBaseValue scCst|tj||ƒƒS(N(R!R}R"(RªRö((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetHurtBaseValuescCs(|jƒtjƒ|jƒ|jƒS(N(RtrandomR(RªtatkType((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR!scCsX|jƒ}xEt|ƒD]7}|j|ƒ}|jƒjƒ}||krtSqWtS(N(RˆROR‰RŠR R R(t
buffManagetgivenSkillTypeListt    buffCountRTtbuffObjR((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytIsHasGivenBuff/s  cCs|jƒtjkr.|jƒtjkr.dSd}t|tjƒ}|dkrmt    |j
dƒ|ƒ}n|t j |d|tj ƒ7}|S(Nii2i(R]RR^t GetAttackModet    amContestR%Rt!Def_Skill_Effect_AreaAttackkCountR'R
R)R7R8tTriggerType_AttackCnt(RªR!t    hurtCountR*((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillArea_Atk_Count@s*  cCs^xWtd|jƒƒD]@}|j|ƒ}|jƒ}|sCqn||krUqn|SWdS(Ni(ROtGetEffectCountRÉRë(R!RìRTR*t curEffectID((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR%Ys  cCsƒtjƒj|ƒ}|dkr6tjd|ƒdSt|t|ƒƒ}|dkrltjd|ƒdS|d}|j|ƒS(Ns(GetPlayerBuffBySkillTypeID = %s DBNoFinds)GetPlayerBuffBySkillTypeID  = %s IsNoBuffi((RR_R`R'RRR$RÖ(RRRGR!R“RÉ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetPlayerBuffBySkillTypeIDps  
cCs;t||ƒ}|dkrdS|jƒj|jdƒƒS(Ni(R%R'RNRfR)(RòR!Rìt curSkillEff((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetSkillFromOtherSkillByEffectID‡s c Cs0d}d}d}|tjkr3t||ƒ}næ|tjkrTtj|ƒ}nÅ|tjkrª|jƒ}|jdƒj    dƒt
tj ƒ}t||ƒ|}no|tj krËtj|ƒ}nN|tj krìtj|ƒ}n-|tjkr|sdn tj|ƒ}n|tj krŒtd|jƒ|jƒƒt
|jdƒj    dƒƒ}    tjd|jƒ|jƒ|    fƒn%|jdƒj    dƒt
tj ƒ}    |jdƒj    dƒ}
|    tj|d|tjƒt
tj ƒ7}    t||    |
||ƒ} |s,t| tjƒ} n| S(Ngð?iis!Ó¢Ó¸´ËÕ: Ãô=%s,Á¦=%s,skillPer=%si(RtDef_Cure_AttackR#tDef_Cure_MaxHPRýRt Def_Cure_PNEtGetPNERÉR)RÌR=t Def_Cure_PHYtDef_Cure_HurtValuetGetLastHurtValuetDef_Cure_TagMaxHPR;tGetPHYtGetSTRRR^R7R8R'tTriggerType_AddHPR:R
tDef_UpperLimit_DWord( tuserObjRòR!tcureTypetlargeNumt curePercentt cureBaseValuet
addExValuetaddPerRÏt
skillValuetcureHP((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt    GetCureHP™s6 %;)%,cCs
d}|tjkr$|jƒ}n|tjkrB|jƒ}n|tjkrµtd|jƒ|jƒƒt|jdƒj    dƒƒ}t
j d|jƒ|jƒ|fƒn%|jdƒj    dƒttj ƒ}|jdƒj    dƒ}t |||ƒ}|S(Nis!ħȪӿ¶¯: Ãô=%s,ÖÇ=%s,skillPer=%si(RtDef_Restore_MaxMPtGetMaxMPtDef_Restore_PHYR;R?R:RÌRÉR)RR^R=R:(RCRòR!t restoreTypeRGRÏRJt    restoreMP((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetRestoreMPÚs;)%cCsdS(N((RªRšRB((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytUpdateSkillComboùsc Csùtjdƒ}|sœi}tjddiƒ}xV|jƒD]H\}}t|ƒ}|tjkrjq=nx|D]}|||<qqWq=Wtjd|ƒn||kr¬dS||}tj    j
|gƒ}    |    gkrÛdS|    dd}
t j ||
ƒS(NtSkillAddPerAttrIDDicttSkillPlusAttrIDii( R0t GetConfigExR1titemsR:R<tSkillAddPerAttrIDListt SetConfigExRtItemEffect_AttrDictR#RÊRË( RRRGRTtskillPlusAttrIDDictt    attrIDStrtskillTypeIDListtattrIDtcfgSkillTypeIDt    curAttrIDtattrInfoteffIndex((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillAddPerByIDZ    s&   
 c Csùtjdƒ}|sœi}tjddiƒ}xV|jƒD]H\}}t|ƒ}|tjkrjq=nx|D]}|||<qqWq=Wtjd|ƒn||kr¬dS||}tj    j
|gƒ}    |    gkrÛdS|    dd}
t j ||
ƒS(NtSkillReducePerAttrIDDictRUii( R0RVR1RWR:R<tSkillReducePerAttrIDListRYRRZR#RÊRË( RRRGRdR[R\R]R^R_R`RaRb((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillReducePerByIDr    s&   
 (kRR§RRR2t
GameSkillsRŽR}RæRÊRRzR%R¥R„RbRjtChPyNetSendPackt NetPackCommonR<RýR7R0RR"R$R+R'RRHRMRURVRxR…R˜R›R R±RÂR´RÔRóRéRáRRR    tDef_DropItemDistRRR-R2R5RúRûRnRpRrR RwRŒtDef_HurtType_NormalRŽR¹RºRÀRÆRÍRßRãRæRàRîRñRôR÷RøRRûRüR“R4RRRRRRRRaR R#R$R!R+R1R%R4R6R7RLRMRRRSRcRf(((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt<module>sÎ                                        -                ?         A        /    &    %    ( %*    $ $ D     .'    p                 ,    $    1        %( G     v                    0    y (    0                    !                                                                                               A    a