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
ð}hc@s-ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    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)eddd„Z*d„Z+dd„Z,ed„Z-d„Z.ed„Z/eej0ddd„Z1eej0ddd„Z2d„Z3d„Z4d„Z5d„Z6d„Z7d „Z8e9e9d!„Z:e9dd"„Z;e9e9ej<e9d#„Z=d$„Z>d%„Z?d&„Z@d'„ZAd(„ZBd)„ZCdd*„ZDdgdd+„ZEd,„ZFd-„ZGd.„ZHd/„ZId0„ZJd1„ZKgd2„ZLd3„ZMd4„ZNd5„ZOd6„ZPd7„ZQd8„ZRd9„ZSd:„ZTd;„ZUd<„ZVd=„ZWd>„ZXd?„ZYd@„ZZdA„Z[dB„Z\dC„Z]dD„Z^dE„Z_dF„Z`dG„ZaejbedH„ZcejddI„ZedJ„ZfdK„ZgdL„ZhdS(Miÿÿÿÿ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.pytIsBuffLscCstjj|jƒƒS(N(RRtgetR (R!((stD:\SG_ServerCode\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((stD:\SG_ServerCode\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((stD:\SG_ServerCode\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((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 GetSkillCounttGetSkillByIndexRIRM(t    curPlayerRBt 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(RNRORPRQRIR-(RRRBRSRTR!((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
isinstancetdicttGetJobtstrtlistttupleRRNR2RtDebugLogt GetGameDatatGetSkillBySkillIDR't CheckSkillJobt
SkillShelltCheckLearnSkillConditiontFindSkillBySkillIDR t
GetSkillLVR/tFindSkillBySkillTypeIDt GetFightPowert LVUPSkillByIDtGetIDtDataRecordPacktDR_LearnORUPSkillR4tRefreshSkillFightPowerExtRefreshPlayerAttrState( RRt jobSkillInfot jobSkillListtjobt
isLearnNewRSt playerControltskillIDt    skillDatatskillLVRGtbeforeFightPowertbefSkill((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_DICTRZRNRR_R`RR/RftLVUpSkillBySkillTypeIDRjRktLogt GetPlayerID(    RRtjobLearnSkillDicttjobTypetlearnSkillListRStgameDataRsR!tcurSkillTypeID((stD:\SG_ServerCode\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((stD:\SG_ServerCode\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((stD:\SG_ServerCode\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((stD:\SG_ServerCode\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((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 RR_R¤R'R~RRtGetTypet__GetSummonByFuncTypeListtlentGetFunctionTypeR§t
NPCControlt    SetKilled( RRt summonNPCIDRBt 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(ROtGetSummonNPCAtR³RŒt GetBornTime( RRRºR¼RBt summonNPCListt
list_Indext maxBornTimeR¾RTRÀ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_SummonMapNPCPlayerIDRtReborntGameMaptGetEmptyPlaceInAreaR¡R¢t SetBornTimetSetSummonNPCSkillLVt SetLastTimeR¦t SetCanAttackR( RRR!tsummonIDt
summonDistRBtisAppointBornPostbornPosXtbornPosYRÀ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)ReRNRORPRQR/RR_R`RŒtLearnSkillByIDR( RÀR!RuRStlearnSkillIDListtindextuseSkilltuseSkillTypeIDt learnSkillIDt    findSkillRs((stD:\SG_ServerCode\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!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRÕes
 
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((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt$DoLogic_NPC_UseSkill_SummonNPCSingleys: 
 
   cCsdd}xWtd|jƒƒD]@}|j|ƒ}|s=qn|jƒ|kr|d7}qqW|S(Nii(ROR²RÃRó(tgameObjRáRùRTRÀ((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(
R;RýRõROR²RÃRóRÏRôRö( R®R!R¹RºR÷RBRøtaddCountRùRTRÀ((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õROR²RÃRóRÏRôRö( R®R!R¹tsummonAllCountR÷RBRøtdistt
rebornPosXt
rebornPosYRþRTRÀ((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytDoLogic_NPC_UseSkill_SummonNPCs  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)R=t SetBaseMinAtkR:t    GetMinAtkt SetBaseMaxAtkt    GetMaxAtkRÏtSetMaxHPtGetMaxHPtSetHPtDoNPCAttrStrengthentFBLogictDoFBRebornSummonNPCRÒROt GetAngryCounttGetAngryValueTagtGetObjIDtAddAngryt
GetObjTypet GetAngryValuetGetAngryValueExt NotifyAppear(R®RÀR!RBRøRtposXtposYt    resultPostatkpert
findEffecttmaxHPPertsummonNPCAngryt curNPCAngryRTt
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µRORéR)RR=RŒ(t    valueListR!teffCountt
returnListRìteffValuetvalue((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetValueBySkillEffectgs 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)RRR=RR:R    R
R t
SetBaseDeftGetDeft
SetBaseHittGetHittSetBasePoisionAtkt GetPoisionAtktSetBaseFireAtkt
GetFireAtkt SetBaseIceAtkt    GetIceAtktSetBaseThunderAtkt GetThunderAtktSetBaseWindAtkt
GetWindAtktSetBasePoisionDeft GetPoisionDeftSetBaseFireDeft
GetFireDeft SetBaseIceDeft    GetIceDeftSetBaseThunderDeft GetThunderDeftSetBaseWindDeft
GetWindDeftSetBaseMissRatetGetMisstSetBaseSuperHiteRatetGetSuperHitRateRÏt SetBaseMaxHPR (RRRÀR!R*tskillPer((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRñus6   #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('RR    R
R R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;R<R=R>R?R@RAtSetBaseAtkIntervaltGetAtkIntervalRBRCRDRERÏRFR 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(RtGetMaptGetTeamR2tGetAreaTeamMemberRŒRit    GetPosObjROt GetObjCountt GetObjByIndextGetGameObjTypeRt    gotPlayertGetObjR'(RRtsrcPosXtsrcPosYt skillMatrixtareatgameMapt curPlayerTeamtteamPlayerListt
teamIDListt
teamPlayertinAreaTeamPlayerListtcurPostmapObjRTRt
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(RNRfR'RéR)(RRt    skillTypeRšteffect((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetSkillEffös
 cCsdS(N((RRGtaddValue((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddMPscCsdS(N((RRGt
skillOwnert    lostValueRBtviewtreduce((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||ƒnM|tjkr¢|jƒtjkrŒtj||ƒq¢tj||tƒn|rÇtj||||tjƒndS(Nis-###¼¼Äܻظ´ÑªÁ¿Òì³£,ÊýÖµ´íÎó = %s,¼¼ÄÜID = %ssÂúѪ²»ÓûØÑª£¬Ö»Í¨Öª»ØÑª±íÏÖ!(RRRÏtGetPyPlayerStateRtDef_PlayerState_LimitAddHPRR~RôR7t GetValueByPassiveBuffTriggerTypeR'tTriggerType_ForbidenCureR R^t AttackCommont ChangeHPViewtDef_HurtTYpe_RecoveryRt
TurnAttacktAddTurnObjCureHPRRSRRRt    OnFBAddHPtgotNPCtGetGameNPCObjTypetgnotPett
PetControltSetPetHP(
RRsRgtisNotifytsrcObjRatcurHPtmaxHPtremainHPtcureHP((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddHPRs@         
c     Cs…|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|ƒ}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|}|dkr3|jƒtj-kr3|    tj-krtj.|||dƒq3|    tjkr3tj/||| |ƒq3nt0j1||||||
ƒ|rnt2j3||d|ƒnt0j4|||
ƒ|S(Nis1###¼¼ÄÜÉ˺¦ÑªÁ¿Òì³£,ÊýÖµ´íÎó = %s,¼¼ÄÜÀàÐÍID = %siiÿÿÿÿt NPCTimeLostHPs³ÖÐøµôѪt SkillLostHP(5RR~t GetCanAttackRRR_tFindSkillByTypeRRxt    GetIsBossRtDef_SkillAttack_NPCIsBosstGetSkillBattleTypet!Def_BattleRelationType_CommNoBossRbtIsNPCSkillResistRÏRôRrtGetPVERealmLVst
IsGameBosstCalcHurtHPWithBuffR;RyRzR{R|R0tGetIpyGameDataNotLogRótUpdateTimeMonsterHPRt    Notify_HPt WriteHurtLogRsR7tOnPassiveSkillTriggertTriggerType_AttackOverPassiveR'tTriggerType_WillDeadtOnPassiveBuffTriggertDoLogic_ObjDeadR§tGetNpcObjOwnerDetailR·tAddObjToAngryListRSt OnPVPDamagetNPCAddObjInHurtListRutAddTurnObjHurtValuet
BaseAttacktDoLogic_AttackResulttOnTurnfightAttackResult(RRGt    buffOwnerRjRBRktisDoAttackResultthurtTypet skillAffectRaR!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Ü( RRRRSRÏRôRtDef_SkillID_PoisonAtkBuffRNRfRbtDoLogic_UseSkill(RGRªtdefObjRBtattackerObjTypet
defObjTypetpoisionAtkBuffIDR!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAddPoisonAtkBuffs  !    cCs?|jƒtjkrdS|jƒtjkr1n
|jƒdS(N(RRRRxRyRzR’(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 GetOwnerTypeRRT(tbufft buffOwnerIDt buffOwnerType((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetBuffOwner9s
  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(RFtlostTimeRj((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetProcessBuffChangeHp_TimeIs   ,
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(RRR    RORˆR‰RŒR¶R·RRTR'RRSRRxRiRžtSkillAddAuraBuffRŠ( t curObjDetelRBRat 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(&RRR    RRORˆR‰RŒRŠRR/R¶R·RRTR'RŽRR t GetAtkRadiustGetDistR¡R¢RNRRxt
GetVisibleRfRtDef_SkillID_XuanTianZhenYanRSR§tGetSummonNPCOwnert    IsSameObjt    GetTeamIDtDef_SuperBuffListRtFindBuffR~(RÃRBRaRÄRÅtreFlashRìRÆt    buffSkillt buffSkillIDtauraSkillTypeIDR¹RºR¡t    atkRadiusRtbuffOwnerSkillMgrtpetOwnertgankBuff((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'RR_R`R‡R~R$tCheckCanAddBuffR/ReRŽt    DoAddBuff(RRdRBRuR!Rt addBuffValue((stD:\SG_ServerCode\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(RRdRBRut plusValueListR¡R!R((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytAddBuffBySkillType_NoRefurbish1s   !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Ó((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRÛLs& 
       cCsjxctd|jƒƒD]L}|j|ƒ}|s7qn|jƒ}|jdƒjƒ|kr|SqWdS(Ni(RORˆR‰RŠRét GetEffectID(RÄteffectIDRTtfindBuffRÓ((stD:\SG_ServerCode\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Ä((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'RR_R`RR$RRÑR/(ttagObjRGt
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(( RR_R`R$RR'RORˆR‰RŠR/R¶R·(
RüRGtownerIDt    ownerTypeRðRR“RÄRTR–((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( RR_R`R$RR'RORˆR‰RŠR/R¶R·(
RüRGRðRñRðRR“RÄRTR–((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(RtClearR2tKillPlayerSummonNPCtGetPlayerUseSkillPointtClearSkillManagertSetFreeSkillPointtGetFreeSkillPoint(RRtsaveSkillTypeListt    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(RNRzR{RORPRQR/Re(RRt    usePointsRStnoPoints_SkillType_ListRTR!((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(    RNRORPRQR/RŒRt
ResetSkillRh(RRRútplayerHasSaveListRSRTR!t curSkillTypeRs((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Š7scCs|o|jƒdkS(Ni(tGetXP(R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt isAngerSkill=scCs|o|jƒtjkS(N(R5Rt Def_SkillFuncType_TurnNormaSkill(R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisTurnNormalSkillAsc
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.pyR4Fsc    Cs@|jƒtjtjtjtjtjtjtjtj    gkS(N(
R RR    R
R R RRRR(R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisPassiveTriggerSkillSscCs|jƒtjkS(N(R RR (R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt isPassiveAttr^scCs|jƒtjkS(N(R RR
(R!((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisPassiveBuffSkillascCs |jdƒS(Nt
UsePassive(t GetDictByKey(Rª((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetUsingPassiveSkillescCsV|dkr,|jd|jdƒdƒn&|jdtd|jdƒdƒƒdS(NiRi(RØRR;(RªR(((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSetUsingPassiveSkillhs  &cCs|jddƒdS(NRi(RØ(Rª((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytClearUsingPassiveSkilloscCstS(s ÑéÖ¤ÊÇ·ñ»ù±¾¹¥»÷¼ä¸ô (R(RRRGRB((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckPlayerAtkIntervalsscCs=|jƒ}|dkrtS|td|jƒƒ@r9tStS(Nii(t
GetUseTypeR tpowRZR(RRR!t skillUseType((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRa„s  cCs|jƒtjkS(N(RæRtDef_BaseEffectList(Re((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ˆROR‰RŠR R R(t
buffManagetgivenSkillTypeListt    buffCountRTtbuffObjR((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(RRRRSt GetAttackModet    amContestR%Rt!Def_Skill_Effect_AreaAttackkCountR'RR)R7R8tTriggerType_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(ROtGetEffectCountRéRæ(R!RçRTR*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((RR_R`R'RRR$RÑ(RRRGR!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'RNRfR)(RíR!Rçt curSkillEff((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetSkillFromOtherSkillByEffectIDüs c
Cs‰d}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|jdƒj    dƒ}    |jdƒj    dƒ}
|    tj|d|tjƒ7}    |    t
tj ƒ:}    d} d} d} |jtjƒrÙt|ƒrÙttj|ƒtjddƒdƒ} qÙn| t
tj ƒ:} | t
tj ƒ:} td|ƒ}ttjddƒƒ}|sAt|tjƒ}ntdt|ƒƒ}t j!d||j"ƒ|||    | | | fƒ|S(Ngð?iiitAngerXPt CureFormulasi»ñÈ¡ÖÎÁÆÖµ(%s)£ºskillID=%s,cureType=%s,baseValue=%s,skillPer=%s,curePer=%s,cureDefPer=%s,angerOverflow=%s(#RtDef_Cure_AttackR tDef_Cure_MaxHPRÏR t Def_Cure_PNEtGetPNERéR)RR=t Def_Cure_PHYtDef_Cure_HurtValuetGetLastHurtValuetDef_Cure_TagMaxHPR7R8R'tTriggerType_AddHPRtDef_Obj_Dict_TurnFightPosInfoRR;RR0t
GetFuncCfgtevaltGetFuncCompileCfgRtDef_UpperLimit_DWordR:RR^R(tuserObjRíR!tcureTypetlargeNumt curePercentt cureBaseValuet
addExValuetaddPerRGt
skillValuetcurePert
cureDefPert angerOverflowt    baseValueR‚((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt    GetCureHPsJ % .    &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;tGetPHYR6RRéR)RR^R=R:(RARíR!t restoreTypeRERGRHt    restoreMP((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetRestoreMPUs;)%cCsdS(N((RªRšRB((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytUpdateSkillCombotscCsdS(Ni((RRRG((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillAddPerByIDwscCsdS(Ni((RRRG((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillReducePerByIDs(iRR§RRR2t
GameSkillsRŽRrRÛt    EffGetSetRRztrandomRžR{RbRjtChPyNetSendPackt NetPackCommonR<RÏR7R0RuRR"R$R+R'RRHRMRURVRxR…R˜R›R R±RÂR´RèRÞRÕRûRýRÿtDef_DropItemDistRRöR)RñRòRcRfRhR RmRƒtDef_HurtType_NormalR…R´RµR»RÁRÈRÚRÞRáRÛRéRìRïRòRóRüRöR÷RŠRRR4RRRRRRRRaRR R%R+R%R.R0R3RMRNRTRURVRW(((stD:\SG_ServerCode\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt<module>sÊ                                         -                ?         A        /    &    %    -*    $  D     .'    ;        ,    $    1        %(C     |                    0    y (    0                    !                                                                                           G