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
Ì}ic@s'ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZd„Zd„Zd„Zd„Zded„Zd„Zd„Zd    „Zd
„Zd „Z d „Z!d „Z"d„Z#d„Z$d„Z%d„Z&eddd„Z'd„Z(dd„Z)ed„Z*d„Z+ed„Z,eej-ddd„Z.eej-ddd„Z/d„Z0d„Z1d„Z2d„Z3d„Z4d „Z5e6e6d!„Z7e6dd"„Z8e6e6ej9e6d#„Z:d$„Z;d%„Z<d&„Z=d'„Z>d(„Z?d)„Z@dd*„ZAdgdd+„ZBd,„ZCd-„ZDd.„ZEd/„ZFd0„ZGd1„ZHgd2„ZId3„ZJd4„ZKd5„ZLd6d7„ZMd8„ZNd9„ZOd:„ZPd;„ZQd<„ZRd=„ZSd>„ZTd?„ZUd@„ZVdA„ZWdB„ZXdC„ZYdD„ZZdE„Z[dF„Z\dG„Z]dH„Z^dI„Z_dJ„Z`dK„ZaejbedL„ZcejddM„ZedN„ZfdO„ZgdP„ZhdS(Qiÿÿÿÿ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((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetBuffManagerByBuffType*s,cCstjj|jƒƒS(N(RtDef_SkillBuffListthas_keyt GetSkillType(tcurSkill((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytIsBuffIscCstjj|jƒƒS(N(RRtgetR (R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetBuffTypePscCs2t|tjƒ}|dkr%tjS|jdƒS(Ni(tGetSkillEffectByEffectIDRtDef_Skill_Effect_BuffStatetNonetDef_PlayerState_NormaltGetEffectValue(R!t    curEffect((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetBuffStateTypeSs cCsA|j|ƒ|jƒ}|}t|ƒr¼|jƒtjkr˜|tj|d|tj    ƒ7}|dkr˜t
|t dt j |ƒt j ƒ}q˜n|j|ƒ|r¸|jƒndS|tj|d|tjƒ7}|dkrt
|t dt j |ƒt j ƒ}n|j|ƒ|s0||kr=|jƒndS(Ni(tSetLastUseTicktGetCoolDownTimetisPassiveSkillt GetFuncTypeRtDef_SkillFuncType_GiftSkilltPassiveBuffEffMngt!GetPassiveSkillValueByTriggerTypeR'tTriggerType_GiftReduceCDtinttmaxt ShareDefinetDef_MaxRateValuet SetRemainTimet
Sync_SkilltTriggerType_ReduceCD(R!treduceSkillCDPertticktatkObjt    forceSynct coolDownTimet
remainTime((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSetSkillRemainTime_s&    -   *  cCsW|jƒ}|dkr|Std|||jƒƒ}|j|ƒ|j|ƒ|S(Ni(t GetRemainTimeR5tGetLastUseTickR,R8(R!R<tremainTime_OldtremainTime_New((stD:\SG_ServerCode\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 GetSkillCounttGetSkillByIndexRBRF(t    curPlayerR<t skillManagertiR!((stD:\SG_ServerCode\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(RGRHRIRJRBR,(RKR<RLRMR!((stD:\SG_ServerCode\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
isinstancetdicttGetJobtstrtlistttupleRRGt PlayerControlRtDebugLogt GetGameDatatGetSkillBySkillIDR't CheckSkillJobt
SkillShelltCheckLearnSkillConditiontFindSkillBySkillIDR t
GetSkillLVtGetSkillTypeIDtFindSkillBySkillTypeIDt GetFightPowert LVUPSkillByIDtGetIDtDataRecordPacktDR_LearnORUPSkillR.tRefreshSkillFightPowerExtRefreshPlayerAttrState( RKt jobSkillInfot jobSkillListtjobt
isLearnNewRLt playerControltskillIDt    skillDatatskillLVt skillTypeIDtbeforeFightPowertbefSkill((stD:\SG_ServerCode\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_DICTRSRGRRYRZRR`RatLVUpSkillBySkillTypeIDReRftLogt GetPlayerID(    RKtjobLearnSkillDicttjobTypetlearnSkillListRLtgameDataRnR!tcurSkillTypeID((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerLoginCheckLearnSkillþs& 
     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((R{Rt IsCrossServerRXRzRHRRtbtBufMaxRt GetBuffCounttGetBufftGetSkillR`t GetSkillNametappendt
GetSkillIDt    BuffSkilltDelBuffBySkillIDRGRIRJRBR8(RKR<tplayerIDtClearBuffSkillTypeIDListt clearBuffListRt    buffTuplet    buffStatetbuffCntRMtcurBuffR!Rqt    skillNameRnRL((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt PlayerLoginMergeServerSkillLogics\   
              (       $cCsh|jƒ}xUt|jƒƒD]A}|j|ƒ}|jƒdkr|jdƒ|jƒqqWdS(Ni(RGtxrangeRIRJRBR8R9(RKRLRMtskill((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytResetAllSkillCD_s  cCsÃtj|ƒ}|dkrdS|jƒ}x‘td|jƒƒD]z}|j|ƒ}|jƒ}|dkrtqAn||d}|dkr¡|jdƒqAn|j|ƒ|j|ƒqAWdS(Niiè(    RWtGetPlayerLeaveServerSecondRGRHRIRJRBR8R,(RKR<tleaveServerSecondsRLRMR!tskillRemainTimetlastTime((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerLoginUpdateSkillCDms        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)RYtFindNPCDataByIDt    GetAITypet GetLastTimet    NPCCommont SummonMapNpctSetIsNeedProcessR ( tattackerR!R<tcurPosXtcurPosYR*tnpcIDtcurNPCtaiTypeR›tcurNpc((stD:\SG_ServerCode\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 RRYR R'RzR{RtGetTypet__GetSummonByFuncTypeListtlentGetFunctionTypeR£t
NPCControlt    SetKilled( RKt summonNPCIDR<t summonCountt    curSummont curSummonTypet
summonListt maxBornIndextcurSummonFunctionTypet    summonNPCt
npcControl((stD:\SG_ServerCode\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(RHtGetSummonNPCAtR¯Rˆt GetBornTime( RKR¶R¸R<t summonNPCListt
list_Indext maxBornTimeRºRMR¼tsummonNPC_BeingTime((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR°çs      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_SummonMapNPCPlayerIDR{tReborntGameMaptGetEmptyPlaceInAreaRRžt SetBornTimetSetSummonNPCSkillLVt SetLastTimeR¢t SetCanAttackR( RKR!tsummonIDt
summonDistR<tisAppointBornPostbornPosXtbornPosYR¼t lvSummonNPCt    summonPos((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerSummonNPCs*      !   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(t    GetEffectR)R_RGRHRIRJR`RRYRZRˆtLearnSkillByIDR( R¼R!RpRLtlearnSkillIDListtindextuseSkilltuseSkillTypeIDt learnSkillIDt    findSkillRn((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRÚ>s,   
 cCs(|rt|||ƒdSt|ƒdS(N(t Calc_Summon_BaseEffectBySkillPertCalc_Summon_BaseEffect(RKR¼R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRÑbs
 
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 RHR®R¿tGetNPCIDR'RËtGetHPRtAddSummonCountR‰RRtSummonNPCByInstance(RªR!R¶t maxAngryCountRµR<taddAngrytcountt
isAddCountRèRMR¼R©Rn((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt$DoLogic_NPC_UseSkill_SummonNPCSinglevs: 
 
   cCsdd}xWtd|jƒƒD]@}|j|ƒ}|s=qn|jƒ|kr|d7}qqW|S(Nii(RHR®R¿Rï(tgameObjRÝRõRMR¼((stD:\SG_ServerCode\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(
R5RùRñRHR®R¿RïRËRðRò( RªR!RµR¶RóR<RôtaddCountRõRMR¼((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt!DoLogic_NPC_UseSkill_SummonNPCAllÑs   
c
 
Csåt||ƒ|krdSt|t||ƒdƒ}
|
dkrW|j|
||ƒnx‡td|jƒƒD]p} |j| ƒ} | sŽqmn| jƒ|kr¦qmntj| ƒdkrÁqmnt    || ||||||    ƒSWdS(Nii(
RùtminRñRHR®R¿RïRËRðRò( RªR!RµtsummonAllCountRóR<Rôtdistt
rebornPosXt
rebornPosYRúRMR¼((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytDoLogic_NPC_UseSkill_SummonNPCÿs  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_SummonAttrtfloatR)R7t SetBaseMinAtkR4t    GetMinAtkt SetBaseMaxAtkt    GetMaxAtkRËtSetMaxHPtGetMaxHPtSetHPtDoNPCAttrStrengthentFBLogictDoFBRebornSummonNPCRÎRHt GetAngryCounttGetAngryValueTagtGetObjIDtAddAngryt
GetObjTypet GetAngryValuetGetAngryValueExt NotifyAppear(RªR¼R!R<RôRþtposXtposYt    resultPostatkpert
findEffecttmaxHPPertsummonNPCAngryt curNPCAngryRMt
angryValuet angryValue_ID((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRò(sB !   #)   ,
cCsjt|ƒ}g}xQtd|ƒD]@}|j|ƒjdƒ}|||tj}|j|ƒq"W|S(Ni(R±RHRåR)RR7Rˆ(t    valueListR!teffCountt
returnListRèteffValuetvalue((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetValueBySkillEffectds 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'RRzR‰R{RR)RRR7RR4RRRt
SetBaseDeftGetDeft
SetBaseHittGetHittSetBasePoisionAtkt GetPoisionAtktSetBaseFireAtkt
GetFireAtkt SetBaseIceAtkt    GetIceAtktSetBaseThunderAtkt GetThunderAtktSetBaseWindAtkt
GetWindAtktSetBasePoisionDeft GetPoisionDeftSetBaseFireDeft
GetFireDeft SetBaseIceDeft    GetIceDeftSetBaseThunderDeft GetThunderDeftSetBaseWindDeft
GetWindDeftSetBaseMissRatetGetMisstSetBaseSuperHiteRatetGetSuperHitRateRËt SetBaseMaxHPR    (RKR¼R!R*tskillPer((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRírs6   #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('RRRRR&R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;R<R=tSetBaseAtkIntervaltGetAtkIntervalR>R?R@RARËRBR    tSetBaseHPRestoret GetHPRestore(R¼((stD:\SG_ServerCode\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(RtGetMaptGetTeamRWtGetAreaTeamMemberRˆRdt    GetPosObjRHt GetObjCountt GetObjByIndextGetGameObjTypeRt    gotPlayertGetObjR'(RKtsrcPosXtsrcPosYt skillMatrixtareatgameMapt curPlayerTeamtteamPlayerListt
teamIDListt
teamPlayertinAreaTeamPlayerListtcurPostmapObjRMRt
curObjTypetcurObjID((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillAreaTeamPlayerÂs2    "    cCsA|jƒj|ƒ}|dkr%dS|jdƒjdƒ}|S(Ni(RGRaR'RåR)(RKt    skillTypeR–teffect((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetSkillEffós
 cCsdS(N((RRqtaddValue((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddMPscCsdS(N((RRqt
skillOwnert    lostValueR<tviewtreduce((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt SkillLostMP'sc
Cs»|s|}n|jƒ}tj|tjƒr4dS|dkr[tjd||fƒdStj|ƒ}|dkrzdStj    |ddtj ƒr™dStj |ƒ}||krêtj dƒ|rætj||||tjƒn|St|||ƒ}||}    tj||||    |ƒ|tjkrUtj||tƒtj||ƒn=|tjkr’|jƒtjkr|q’tj||tƒn|r·tj||||tjƒndS(Nis-###¼¼Äܻظ´ÑªÁ¿Òì³£,ÊýÖµ´íÎó = %s,¼¼ÄÜID = %ssÂúѪ²»ÓûØÑª£¬Ö»Í¨Öª»ØÑª±íÏÖ!(RNRËtGetPyPlayerStateRtDef_PlayerState_LimitAddHPRRzRðR1t GetValueByPassiveBuffTriggerTypeR'tTriggerType_ForbidenCureR    RXt AttackCommont ChangeHPViewtDef_HurtTYpe_RecoveryRüt
TurnAttacktAddTurnObjCureHPRROR
RR t    OnFBAddHPtgotNPCtGetGameNPCObjTypetgnotPet(
RRnRctisNotifytsrcObjR]tcurHPtmaxHPtremainHPtcureHP((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddHPOs@         
c     CsF|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¥qtjd|jƒƒ}|rÙtj|||ƒntj||ƒ|s|jƒqntj||| ƒ| tj|ƒ}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|rBt.j/||d|ƒn|S(Nis1###¼¼ÄÜÉ˺¦ÑªÁ¿Òì³£,ÊýÖµ´íÎó = %s,¼¼ÄÜÀàÐÍID = %siiÿÿÿÿt NPCTimeLostHPs³ÖÐøµôѪt SkillLostHP(0RRzt GetCanAttackRNRYtFindSkillByTypeRRtt    GetIsBossRtDef_SkillAttack_NPCIsBosstGetSkillBattleTypet!Def_BattleRelationType_CommNoBossR\tIsNPCSkillResistRËRðRntGetPVERealmLVst
IsGameBosstCalcHurtHPWithBuffR5RuRvt IpyGameDataPYtGetIpyGameDataNotLogRïtUpdateTimeMonsterHPR
t    Notify_HPt WriteHurtLogRoR1tOnPassiveSkillTriggertTriggerType_AttackOverPassiveR'tTriggerType_WillDeadtOnPassiveBuffTriggertDoLogic_ObjDeadR£tGetNpcObjOwnerDetailR³tAddObjToAngryListROt OnPVPDamagetNPCAddObjInHurtListt
BaseAttacktDoLogic_AttackResult(RRqt    buffOwnerRfR<RgtisDoAttackResultthurtTypet skillAffectR]R!t
atkObjTypetnotifyLostValuetcurObjHP_BeforeAttacktaRealmLVtdRealmLVR{ttimeLostHPIpyDatatlostHPt attackerOwnert curNPCControl((stD:\SG_ServerCode\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Ü( RNRRORËRðRtDef_SkillID_PoisonAtkBuffRGRaR\tDoLogic_UseSkill(RqR¦tdefObjR<tattackerObjTypet
defObjTypetpoisionAtkBuffIDR!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAddPoisonAtkBuffs  !    cCs?|jƒtjkrdS|jƒtjkr1n
|jƒdS(N(RNRRtRuRvR(R((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt NotifyNPCHP#s
cCsD|jƒ}|jƒ}|dks0|dkr4dStj||ƒS(Ni(t
GetOwnerIDt GetOwnerTypeRRP(tbufft buffOwnerIDt buffOwnerType((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetBuffOwner4s
  cCsŽ|jƒ}|jƒ}tj||ƒ}|dkrftjd|jƒjƒ||||fƒdS||}|jtd||ƒƒ|S(NisJ skillID = %s, lostTime = %s ,value = %s , remainTime = %s , refuTime = %s(    tGetValueRBRt GetIntUpperRR†R`tSetValueR5(R’trefuTimeR<R$R@tlostTimeRf((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetProcessBuffChangeHp_TimeDs   ,
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(RNR    RHR„R…RˆR¯R°RRPR'RROR{RtRdR˜tSkillAddAuraBuffR†( t curObjDetelR<R]t buffManagert auraBuffListRètauraBuffR²R³RštbuffOwnerObjType((stD:\SG_ServerCode\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(&RNR    RRHR„R…RˆR†R‰R`R¯R°RRPR'RŠR‹R t GetAtkRadiustGetDistRRžRGRRtt
GetVisibleRaRtDef_SkillID_XuanTianZhenYanROR£tGetSummonNPCOwnert    IsSameObjt    GetTeamIDtDef_SuperBuffListRtFindBuffRz(R¼R<R]R½R¾treFlashRèR¿t    buffSkillt buffSkillIDtauraSkillTypeIDR²R³Ršt    atkRadiusRþtbuffOwnerSkillMgrtpetOwnertgankBuff((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAuraSkill‹s„           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'RRYRZRRzR$tCheckCanAddBuffR`R_RŠt    DoAddBuff(RR`R<RpR!Rt addBuffValue((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytAddBuffBySkillTypes   ! cCs¶d}|dkr*tjƒj|ƒ}ntjƒj||ƒ}|dkritjd||fƒdSt|ƒ}t|||jƒ|j    ƒƒsšdSt
j ||||||ƒS(Ns0Ìí¼Óbuffʧ°Ü,Êý¾Ý¿â²éÕÒ¼¼ÄÜ = %s,ʧ°Ü!skillLV=%s( R'RRYRZRRzR$RÔR`R_RŠtAddBuffNoRefreshState(RR`R<Rpt plusValueListRšR!R((stD:\SG_ServerCode\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'RRzR RÊRR
R†RR_R¢RŠtGetBuffMaxLayer(RRR€t
curSkillLVRtcurObjBuffManagert
curObjBuffRÌ((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRÔGs& 
       cCsjxctd|jƒƒD]L}|j|ƒ}|s7qn|jƒ}|jdƒjƒ|kr|SqWdS(Ni(RHR„R…R†Råt GetEffectID(R½teffectIDRMtfindBuffRÌ((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytFindBuff_BuffM_EffIDws cCsƒtjƒj|ƒ}|dkr6tjd|ƒdSt|t|ƒƒ}|dkrltjd|ƒdS|d}|j|ƒS(Ns0FindBuffBySkillAndEffID skillTypeID= %s DBNoFinds0FindBuffBySkillAndEffID skillTypeID= %s IsNoBuffi((RRYRZR'RRR$t
FindEffect(RKRqteffIDR!RR½((stD:\SG_ServerCode\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'RRYRZRR$RRÊR`(ttagObjRqt
returnInfoRìRRR½Rá((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt FindBuffByIDœs  
 
 
 
 
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(( RRYRZR$RR'RHR„R…R†R`R¯R°(
RøRqtownerIDt    ownerTypeRìRRR½RMR’((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytFindBuffByOwner³s$  
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( RRYRZR$RR'RHR„R…R†R`R¯R°(
RøRqRéRêRìRRR½RMR’((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytFindBuffByOwnerExÏs$  
cCsQ|jƒjƒtj|ƒt|ƒ}t||ƒ|j|jƒ|ƒ|S(N(RtClearRWtKillPlayerSummonNPCtGetPlayerUseSkillPointtClearSkillManagertSetFreeSkillPointtGetFreeSkillPoint(RKtsaveSkillTypeListt    savePoint((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytDoLogic_ReSetSkillðs    cCs|d}|jƒ}tjdƒ}xTtd|jƒƒD]=}|j|ƒ}|jƒ|krdq7n||jƒ}q7W|S(NitNoSkillPointSkill(RGRvRwRHRIRJR`R_(RKt    usePointsRLtnoPoints_SkillType_ListRMR!((stD:\SG_ServerCode\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(    RGRHRIRJR`RˆR‰t
ResetSkillRc(RKRótplayerHasSaveListRLRMR!t curSkillTypeRn((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRðs   
 cCs|s tjS|jƒdS(Ni
(RtDef_BattleRelationType_Commt GetHurtType(R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR„2sicCs||d}|S(Ni((RqRpRn((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillIDBySkillTypeID8scCs|jƒtjkS(N(t
GetAtkTypeRtBuffAtkType_DamageShield(Ro((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisDamageShieldSkill<scCs|o|jƒtjkS(N(R/RtDef_SkillFuncType_AngerSkill(R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt isAngerSkill@scCs|o|jƒtjkS(N(R/Rt Def_SkillFuncType_TurnNormaSkill(R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisTurnNormalSkillDscCs)|o(t|ƒ o(|jƒtjgkS(N(R"R RtDef_SkillType_Atk(R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisAttackDirectSkillHsc
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!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR.Msc    Cs@|jƒtjtjtjtjtjtjtjtj    gkS(N(
R RRR    R R R RRR(R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisPassiveTriggerSkillZscCs|jƒtjkS(N(R RR
(R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt isPassiveAttrescCs|jƒtjkS(N(R RR    (R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisPassiveBuffSkillhscCs |jdƒS(Nt
UsePassive(t GetDictByKey(R¦((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetUsingPassiveSkilllscCsV|dkr,|jd|jdƒdƒn&|jdtd|jdƒdƒƒdS(NiRi(RÔRR5(R¦R$((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSetUsingPassiveSkillos  &cCs|jddƒdS(NRi(RÔ(R¦((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytClearUsingPassiveSkillvscCstS(s ÑéÖ¤ÊÇ·ñ»ù±¾¹¥»÷¼ä¸ô (R(RKRqR<((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckPlayerAtkIntervalzscCs=|jƒ}|dkrtS|td|jƒƒ@r9tStS(Nii(t
GetUseTypeR tpowRSR(RKR!t skillUseType((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR[‹s  cCs|jƒtjkS(N(RßRtDef_BaseEffectList(Ra((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt IsBaseEffectšscCs
|jƒS(N(R(R¦Ré((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetCureBaseValue£scCsX|jƒ}xEt|ƒD]7}|j|ƒ}|jƒjƒ}||krtSqWtS(N(R„RHR…R†R R R(t
buffManagetgivenSkillTypeListt    buffCountRMtbuffObjRû((stD:\SG_ServerCode\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(RNRROt GetAttackModet    amContestR%Rt!Def_Skill_Effect_AreaAttackkCountR'RüR)R1R2tTriggerType_AttackCnt(R¦R!t    hurtCountR*((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillArea_Atk_Count¼s*  cCs^xWtd|jƒƒD]@}|j|ƒ}|jƒ}|sCqn||krUqn|SWdS(Ni(RHtGetEffectCountRåRß(R!RàRMR*t curEffectID((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR%Õs  cCsƒtjƒj|ƒ}|dkr6tjd|ƒdSt|t|ƒƒ}|dkrltjd|ƒdS|d}|j|ƒS(Ns(GetPlayerBuffBySkillTypeID = %s DBNoFinds)GetPlayerBuffBySkillTypeID  = %s IsNoBuffi((RRYRZR'RRR$RÊ(RKRqR!RR½((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetPlayerBuffBySkillTypeIDìs  
cCs;t||ƒ}|dkrdS|jƒj|jdƒƒS(Ni(R%R'RGRaR)(RæR!Ràt curSkillEff((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetSkillFromOtherSkillByEffectIDs c
Csd}d}d}|tjkr3t||ƒ}no|tjkrTtj|ƒ}nN|tjkrutj|ƒ}n-|tjkr¢|sdn tj|ƒ}n|j    dƒj
dƒ}|j    dƒj
dƒ}    |t j |d|tjƒ7}|ttjƒ:}d}
d} d} |jtjƒrbt|ƒrbttj|ƒtjddƒdƒ} qbn|
ttjƒ:}
| ttjƒ:} td|ƒ} ttjddƒƒ}|sÊt|tjƒ}ntdt|ƒƒ}tjd||jƒ|| ||
| | fƒ|S(Ngð?iitAngerXPit CureFormulasi»ñÈ¡ÖÎÁÆÖµ(%s)£ºskillID=%s,cureType=%s,baseValue=%s,skillPer=%s,curePer=%s,cureDefPer=%s,angerOverflow=%s( RtDef_Cure_AttackRtDef_Cure_MaxHPRËR    tDef_Cure_HurtValuetGetLastHurtValuetDef_Cure_TagMaxHPRåR)R1R2R'tTriggerType_AddHPRR7RtDef_Obj_Dict_TurnFightPosInfoRR5tGetXPRŠt
GetFuncCfgtevaltGetFuncCompileCfgRütDef_UpperLimit_DWordR4RRXR‰(tuserObjRæR!tcureTypetlargeNumt curePercentt cureBaseValuet
addExValueRCt
skillValuetcurePert
cureDefPert angerOverflowt    baseValueR|((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt    GetCureHPs> .    &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_PHYR5tGetPHYtGetPNERRåR)RRXR7R4(R>RæR!t restoreTypeRBRCRDt    restoreMP((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetRestoreMP\s;)%cCsdS(N((R¦R–R<((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytUpdateSkillCombo{scCsdS(Ni((RKRq((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillAddPerByID~scCsdS(Ni((RKRq((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillReducePerByID—s(iRR£RRRWt
GameSkillsRŠRnR×t    EffGetSetR RvtrandomR˜R\ReR6RËR1RŠRqRR"R$R+R'RRARFRNRORtRR”R—RœR­R¾R°RäRÚRÑR÷RùRûtDef_DropItemDistRRòR%RíRîR_RbRdR RiR}tDef_HurtType_NormalRR­R®R´RºRÁRÓR×RÚRÔRâRåRèRëRìRõRïRðR„RþRRRRR.RRRRRRRR[RRR$R*R%R-R/R2RIRJRQRRRSRT(((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt<module>sÊ                                      -                ?         A        /    &    %    -*    $  D     .'    ;        ,    $    1        %(C     z                    0    y (    0                    !                                                                                                    G