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
 -fc@sKddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZd„Zd„Zd„Zd„Zded„Zd„Zd„Z d    „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„Z0eej1ddd„Z2eej1ddd„Z3d„Z4d„Z5d„Z6d„Z7d „Z8d!„Z9d"„Z:d#„Z;e<e<d$„Z=e<d%„Z>e<e<ej?e<d&„Z@d'„ZAd(„ZBd)„ZCd*„ZDd+„ZEd,„ZFddd-„ZGdgdd.„ZHd/„ZId0„ZJd1„ZKd2„ZLd3„ZMd4„ZNgd5„ZOd6„ZPd7„ZQd8„ZRd9„ZSd:„ZTd;„ZUd<„ZVd=„ZWd>„ZXd?„ZYd@„ZZdA„Z[dB„Z\dC„Z]dD„Z^dE„Z_dF„Z`dG„ZadH„ZbdI„ZcdJ„ZdejeedK„ZfejgdL„ZhdM„ZidN„ZjdO„ZkdS(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.pytIsBuffLscCstjj|jƒƒS(N(RRtgetR (R!((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetBuffTypeSscCs2t|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.pytGetBuffStateTypeVs 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.pytSetSkillRemainTimebs,     -   *  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.pytResetAllSkillCDbs  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.pytPlayerLoginUpdateSkillCDps        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 CsQ|jƒ}|j|ƒ|jƒ}    |j|    ƒ|j|jƒƒtj||jƒƒ|j    ƒj
t j ƒt |||ƒtj|ƒ|j|ƒ|jt j|jƒƒ|rÍ|j||ƒn=tj|jƒ|jƒ|ƒ}
|j|
jƒ|
jƒƒ|j|ƒt||ƒ|r@|j|jƒƒn|jtƒdS(N(t SummonNewNPCt SetNPCTypeIDtGetLVtSetLVt
SetCountryt
GetCountrytGameObjt
SetFactiont
GetFactiont GetNPCAngrytInitRtDef_SummonNPC_Angry_CounttSetSummonNPCPropertyR§tInitNPCtSetOwnertSetDictt!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.pytPlayerSummonNPC7s*      !   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êas,   
 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'RÛtGetHPRtAddSummonCountR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_SummonNPC1s  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.pyRZsB !   #)   ,
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 GetSkillEffqs
 cCsdS(N((RRGtaddValue((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddMP€scCsdS(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|}tj |ƒ}||krô|rÐt j||||tjƒntjd|jƒ||fƒ|St|||ƒ}|tjkr=tj||| ƒtj||ƒn]|tjkrš|jƒtjkrttj||ƒqštj||ƒ|sš|jƒqšn|r¿t j||||tjƒntjd|jƒ||||fƒ|S(Nis1###¼¼Äܻظ´ÑªÁ¿Òì³£,ÊýÖµ´íÎó = %s,¼¼ÄÜÀàÐÍID = %ss6        ÖÎÁÆÊ±ÒÑÂúѪ: curID=%s,skillTypeID=%s,maxHP=%ssH        ÖÎÁÆ: curID=%s,skillTypeID=%s,addValue=%s,addValueFianl=%s,HP=%s(R]RÛtGetPyPlayerStateRtDef_PlayerState_LimitAddHPRR~RþR7t GetValueByPassiveBuffTriggerTypeR'tTriggerType_ForbidenCureRt AttackCommont ChangeHPViewtDef_HurtTYpe_RecoveryR^RiR
RR^RRt    OnFBAddHPtgotNPCtGetGameNPCObjTypetgnotPett
PetControltSetPetHPt    Notify_HP(    RRGRqtisNotifyRltcurHPt addValueFianltmaxHPtremainHP((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddHPÍsB         c     Csl|r|jƒnd}    |dkr?tjd||    fƒdS|jƒsOdS|jƒ}
|rm|jƒnd} |
tjkrÈ|jƒtj    krÈ|rÈt
|ƒtj krÈt j |ƒrÈdSntj|ƒ} | dkrçdS|rAtj||| |
ƒ\} }|
tjkrAtj|ƒrA|| krAd}qAn|retj|||||ƒ}nt| |dƒ}|
tjkr    |jƒtjkr¯tj||ƒqtjd|jƒƒ}|rãtj|||ƒntj||ƒ|s|jƒqntj||| ƒ| tj|ƒ}tj|||||dƒ|r“tj |||    ||ƒ|r“t!j"|||tj#|ƒq“ntj|ƒdkrãt!j"|d|tj%|ƒt!j&|d|tj%|ƒn|stj'd|||ƒdS|
tjkr’d}| tjkr9t(j)|ƒ}ntj|ƒdkr’t(j*|ƒ}|j+||ƒ|dkr|j+|dƒqq’n| tjkr³t(j)|ƒ}n|}|dkr-|jƒtj,kr-|
tj,krtj-|||dƒq-|
tjkr-tj.||| |ƒq-nt/j0||||||ƒ|rht1j2||||ƒn|S(Nis1###¼¼ÄÜÉ˺¦ÑªÁ¿Òì³£,ÊýÖµ´íÎó = %s,¼¼ÄÜÀàÐÍID = %siÿÿÿÿit NPCTimeLostHPs³ÖÐøµôѪt SkillLostHP(3RRR~t GetCanAttackR]RR€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
TurnAttacktAddTurnObjHurtValuet
BaseAttacktDoLogic_AttackResult(RR!t    buffOwnerRtRBRutisDoAttackResultthurtTypet skillAffectRsRlt
atkObjTypetcurObjHP_BeforeAttacktaRealmLVtdRealmLVRŠttimeLostHPIpyDatatlostHPt 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`tFindSkillByTypeR~R$tCheckCanAddBuffR/ReRŽt    DoAddBuff(RRoRBRuR§R!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 FindBuffEff    s  
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.pytFindBuffByOwner6s$  
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.pytFindBuffByOwnerExRs$  
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_ReSetSkillss    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(RRRtplayerHasSaveListRSRTR!t curSkillTypeRs((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRýœs   
 cCs.|s tjS|jƒd}|s*tjS|S(Ni
(RtghtPhyt GetHurtType(R!t
battleType((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetBattleTypeµs cCs|s tjS|jƒdS(Ni
(RtDef_BattleRelationType_CommR
(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 RRRRRRRRR(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åscCs|jd|ƒS(NR(Rä(RªRÒ((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSetUsingPassiveSkillè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 IsBaseEffect scCst|tj||ƒƒS(N(tGetAttackerHurtValueByAtkTypeR|R (RªR÷((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetCureBaseValuescCst|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.pytIsHasGivenBuff7s  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_CountHs*  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%as  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.pytGetPlayerBuffBySkillTypeIDxs  
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 cCsõd}d}d}|tjkr3t||ƒ}nk|tjkrTtj|ƒ}nJ|tjkrª|jƒ}|jdƒj    dƒt
tj ƒ}t||ƒ|}nô|tj krËtj|ƒ}nÓ|tj krìtj|ƒ}n²|tjkr|sdn tj|ƒ}n…|tjkrF|s4dn t||ƒ}nX|tjkr}tdtj|ƒtj|ƒƒ}n!|tjkržtj|ƒ}n|tj krtd|jƒ|jƒƒt
|jdƒj    dƒƒtj }    tjd|jƒ|jƒ|    fƒn|jdƒj    dƒ}    |jdƒj    dƒ}
|    tj|d|tjƒ7}    d} d} d} d}|jtjƒrPt j!|ƒ}d}|rót j"|ƒ}t#j$|ƒ}| tj%|ƒ7} | tj&|ƒ7} n"t#j$|ƒ}| tj%|ƒ7} |rP| tj'|ƒ7} |rM|tj(|ƒ7}qMqPn| s\|r|tj | |t
tj ƒ}ntd|ƒ}|    | | 7}    t)||    t
tj ƒ|
||ƒ}|sât*|tj+ƒ}ntd|ƒ}|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_TagMaxHPtDef_Cure_TagAtktDef_Cure_LostHPR;RþtDef_Cure_BeHurtValuetGetLastBeHurtValuetGetPHYtGetSTRRR^R7R8R'tTriggerType_AddHPRtDef_Obj_Dict_TurnFightTimelineRƒtIsPetNPCtGetPetNPCOwnerR£t GetEnemyObjt
GetCurePertGetPetStrengthenPert GetCureDefPertGetPetWeakenPerR:R
tDef_UpperLimit_DWord(tuserObjRóR!tcureTypetlargeNumt curePercentt cureBaseValuet
addExValuetaddPerRÏt
skillValuetcurePert
cureDefPertbaseValueAddPertbaseValueDefPertisPetNPCtenemyObjRÝtcureHP((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt    GetCureHP¡sp %(B) %)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;RER<RÌRÉR)RR^R=R:(RQRóR!t restoreTypeRURÏRXt    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Ë( RRRGRhtskillPlusAttrIDDictt    attrIDStrtskillTypeIDListtattrIDtcfgSkillTypeIDt    curAttrIDtattrInfoteffIndex((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillAddPerByID‰    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(NtSkillReducePerAttrIDDictRiii( R0RjR1RkR:R<tSkillReducePerAttrIDListRmRRnR#RÊRË( RRRGRxRoRpRqRrRsRtRuRv((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillReducePerByID¡    s&   
 (lRR§RRR2t
GameSkillsRŽR|RçRÊRRzR'R¥RƒRbRjtChPyNetSendPackt NetPackCommonR<RÛR7R0R£RR"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 R‘R4RRRRRRRaR#R%R&R$R-R3R%R6R8R9R`RaRfRgRwRz(((suE:\SnxxServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt<module>sÐ                                         -                ?         A        /    &    %    ( %*    $ $ D     .'    p                 ,    $    1        %( H     z                    0    y(    0                    !             
                                                                                  h    a