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
šZÜ[c@sëddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZd„Zd„Zd„Zd„Zdd„Zd„Zd„Zd    „Zd
„Zd „Z d „Z!d „Z"d„Z#d„Z$dd„Z%e&ddd„Z'dd„Z(e&d„Z)d„Z*e&d„Z+e&ej,ddd„Z-e&ej,ddd„Z.d„Z/d„Z0d„Z1d„Z2d„Z3d„Z4d„Z5d „Z6e7e7d!„Z8e7d"„Z9d#„Z:e7e7e7ej;d$„Z<d%„Z=d&„Z>d'„Z?d(„Z@d)„ZAd*„ZBdd+„ZCdgdd,„ZDd-„ZEd.„ZFd/„ZGd0„ZHgd1„ZId2„ZJd3„ZKd4„ZLd5„ZMd6„ZNd7„ZOd8„ZPd9„ZQd:„ZRd;„ZSd<„ZTd=„ZUd>„ZVd?„ZWd@„ZXdA„ZYdB„ZZdC„Z[dD„Z\dE„Z]ej^dF„Z_ej`dG„ZadH„ZbdS(Iiÿÿÿÿ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((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetBuffManagerByBuffType+s,cCstjj|jƒƒS(N(RtDef_SkillBuffListthas_keyt GetSkillType(tcurSkill((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytIsBuffJscCstjj|jƒƒS(N(RRtgetR (R!((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetBuffTypeQscCs2t|tjƒ}|dkr%tjS|jdƒS(Ni(tGetSkillEffectByEffectIDRtDef_Skill_Effect_BuffStatetNonetDef_PlayerState_NormaltGetEffectValue(R!t    curEffect((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetBuffStateTypeTs cCs»|j|ƒ|jƒ}|}t|ƒr<|j|ƒdS|tj|d|tjƒ7}|dkr‘t    |t
dt j |ƒt j ƒ}n|j|ƒ||kr·|j ƒndS(Ni(tSetLastUseTicktGetCoolDownTimetisPassiveSkillt SetRemainTimetPassiveBuffEffMngt!GetPassiveSkillValueByTriggerTypeR'RtTriggerType_ReduceCDtinttmaxt ShareDefinetDef_MaxRateValuet
Sync_Skill(R!treduceSkillCDPertticktatkObjt coolDownTimet
remainTime((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSetSkillRemainTime`s     *   cCsW|jƒ}|dkr|Std|||jƒƒ}|j|ƒ|j|ƒ|S(Ni(t GetRemainTimeR4tGetLastUseTickR,R/(R!R9tremainTime_OldtremainTime_New((sf.\\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 GetSkillCounttGetSkillByIndexR>RB(t    curPlayerR9t skillManagertiR!((sf.\\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(RCRDRERFR>R,(RGR9RHRIR!((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerChangeMapUpdateSkillCD¥s 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_DICTtGetJobRCRt GetGameDatatGetSkillBySkillIDRtGetSkillTypeIDtFindSkillBySkillTypeIDtLVUpSkillBySkillTypeIDtDataRecordPacktDR_LearnORUPSkilltLogt GetPlayerID(    RGtjobLearnSkillDicttjobTypetlearnSkillListRHtgameDatatskillIDR!tcurSkillTypeID((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerLoginCheckLearnSkill¶s& 
     c    Cs¢|jƒ}tjƒs,tjd|ƒdStjdƒ}tjd|ƒg}xttj    tj
ƒD]x}t ||ƒ}|d krŸtjd|ƒqgn|d}|j ƒ}|dkrÇqgntjd||f|ƒxût|ƒD]í}    |j |    ƒ}
|
s&tjd||    fƒqîn|
jƒ} | sUtjd||    fƒqîn| jƒ} | jƒ} | |krŸtjd    ||    | | f|ƒqîn|j| jƒƒtjd
||    | | jƒ| f|ƒqîWqgWx5|D]-}tj|||ƒtjd ||ƒqêW|jƒ}xttd|jƒƒD]]}    |j|    ƒ} | jƒdkr=| jdƒtjd | jƒ| jƒf|ƒq=q=WdS(Ns·Ç¿ç·þ·þÎñÆ÷ÉÏÏß²»Çå³ýbuff...tClearBuffSkillTypeIDs¿ç·þ·þÎñÆ÷ÉÏÏßÇå³ý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((RYRt IsMergeServertDebugLogRMRNRXRDRRtbtBufMaxRt GetBuffCounttGetBufftGetSkillRSt GetSkillNametappendt
GetSkillIDt    BuffSkilltDelBuffBySkillIDRCRERFR>R/(RGR9tplayerIDtClearBuffSkillTypeIDListt clearBuffListRt    buffTuplet    buffStatetbuffCntRItcurBuffR!t skillTypeIDt    skillNameR^RH((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt PlayerLoginMergeServerSkillLogicÖs\   
              (       $cCsÃtj|ƒ}|dkrdS|jƒ}x‘td|jƒƒD]z}|j|ƒ}|jƒ}|dkrtqAn||d}|dkr¡|jdƒqAn|j|ƒ|j|ƒqAWdS(Niiè(    t PlayerControltGetPlayerLeaveServerSecondRCRDRERFR>R/R,(RGR9tleaveServerSecondsRHRIR!tskillRemainTimetlastTime((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerLoginUpdateSkillCDs        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)RQtFindNPCDataByIDt    GetAITypet GetLastTimet    NPCCommont SummonMapNpctSetIsNeedProcessR ( tattackerR!R9tcurPosXtcurPosYR*tnpcIDtcurNPCtaiTypeR{tcurNpc((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSummonMapNPCBySkillJs&        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 RRQR€R'RXRYRtGetTypet__GetSummonByFuncTypeListtlentGetFunctionTypeRƒt
NPCControlt    SetKilled( RGt summonNPCIDR9t summonCountt    curSummont curSummonTypet
summonListt maxBornIndextcurSummonFunctionTypet    summonNPCt
npcControl((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSummonNPCOccurRuleps$      
c Cs¥g}d}d}d}x€td|ƒD]o}|j|ƒ}    |    jƒ|krUq(n|j|    ƒ||    jƒ}
|
|kr|
}|}n|d7}q(W||fS(Nii(RDtGetSummonNPCAtRRit GetBornTime( RGR–R˜R9t summonNPCListt
list_Indext maxBornTimeRšRIRœtsummonNPC_BeingTime((sf.\\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'RRXRjRYRR6tfloatR3(
RGR!t    skillPlusR*tindextskillPerteffecttmaxValuetvaluetplus((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetLastSkillMaxValue½s & ic CsG|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|ƒ|r6|j|jƒƒn|jtƒdS(N(t SummonNewNPCt SetNPCTypeIDtGetLVtSetLVt
SetCountryt
GetCountrytSetDictRtDef_NpcDictKey_CampTypet
GetFactiont GetNPCAngrytInittDef_SummonNPC_Angry_CounttSetSummonNPCPropertyRƒtInitNPCtSetOwnert!Def_NPC_Dict_SummonMapNPCPlayerIDRYtReborntGameMaptGetEmptyPlaceInAreaR}R~t SetBornTimet SetLastTimeR‚t SetCanAttackR( RGR!tsummonIDt
summonDistR9tisAppointBornPostbornPosXtbornPosYRœt lvSummonNPCt    summonPos((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerSummonNPCàs(      !  cCs(|rt|||ƒdSt|ƒdS(N(t Calc_Summon_BaseEffectBySkillPertCalc_Summon_BaseEffect(RGRœR!((sf.\\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 RDRŽRŸtGetNPCIDR'tGameObjtGetHPRtAddSummonCountRjRRtSummonNPCByInstance(RŠR!R–t maxAngryCountR•R9taddAngrytcountt
isAddCountRªRIRœR‰R^((sf.\\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(RDRŽRŸRÑ(RŠRÇRØRIRœ((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSummonCountByNPCIDtsc 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(
R4RÛRÔRDRŽRŸRÑRÒRÓRÕ( RŠR!R•R–RÖR9R×taddCountRØRIRœ((sf.\\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ÔRDRŽRŸRÑRÒRÓRÕ( RŠR!R•tsummonAllCountRÖR9R×tdistt
rebornPosXt
rebornPosYRÜRIRœ((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytDoLogic_NPC_UseSkill_SummonNPC¸s  cCsItj|ƒ|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ƒ} xct d| j!ƒƒD]L}| j"|ƒ}|j#ƒ}|sqën| 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)R6t SetBaseMinAtkR3t    GetMinAtkt SetBaseMaxAtkt    GetMaxAtkRÒtSetMaxHPtGetMaxHPtSetHPtDoNPCAttrStrengthentFBLogictDoFBRebornSummonNPCRºRDt GetAngryCounttGetAngryValueTagtGetObjIDtAddAngryt
GetObjTypet GetAngryValuet NotifyAppear(RŠRœR!R9R×RàtposXtposYt    resultPostatkpert
findEffecttmaxHPPertsummonNPCAngryt curNPCAngryRIt
angryValuet angryValue_ID((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRÕásB !   #)   #
cCsdS(N((RGRœRÇ((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt!__PassiveSkill_AddSummonAttributeRscCsjt|ƒ}g}xQtd|ƒD]@}|j|ƒjdƒ}|||tj}|j|ƒq"W|S(Ni(R‘RDR¥R)RR6Ri(t    valueListR!teffCountt
returnListRªteffValueR®((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetValueBySkillEffectZs cCsNxG|D]?}tj||dƒ}tj||d||d|ƒqWtS(Nii(R¦R§tSetValueByEffIndexR (RÌRœR™R®tcurValue((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt__CalcSummonEffectValuejs '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+ƒ|ƒƒ|j,t |j-ƒ|ƒƒdS(NisÕÙ»½¼¼ÄÜÎÞЧ¹û,skillID = %sis%¼¼ÄÜ %sÌî±í´íÎó,ÕÙ»½¼¼ÄÜÊôÐÔ°Ù·Ö±ÈΪ0(.R¥R'RRXRjRYRR)R¨RR6RåR3RæRçRèt
SetBaseDeftGetDeft
SetBaseHittGetHittSetBasePoisionAtkt GetPoisionAtktSetBaseFireAtkt
GetFireAtkt SetBaseIceAtkt    GetIceAtktSetBaseThunderAtkt GetThunderAtktSetBaseWindAtkt
GetWindAtktSetBasePoisionDeft GetPoisionDeftSetBaseFireDeft
GetFireDeft SetBaseIceDeft    GetIceDeftSetBaseThunderDeft GetThunderDeftSetBaseWindDeft
GetWindDeftSetBaseMissRatetGetMisstSetBaseSuperHiteRatetGetSuperHitRatet SetBaseMaxHPRê(RGRœR!R*R«((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRÏws6   cCsm|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!ƒƒ|j"|j#ƒƒ|j$|j%ƒƒdS(N(&RåRæRçRèR    R
R R R RRRRRRRRRRRRRRRRRRR tSetBaseAtkIntervaltGetAtkIntervalR!R"R#R$R%RêtSetBaseHPRestoret GetHPRestore(Rœ((sf.\\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(RtGetMaptGetTeamRwtGetAreaTeamMemberRitGetIDt    GetPosObjRDt GetObjCountt GetObjByIndextGetGameObjTypeRt    gotPlayertGetObjR'(RGtsrcPosXtsrcPosYt skillMatrixtareatgameMapt curPlayerTeamtteamPlayerListt
teamIDListt
teamPlayertinAreaTeamPlayerListtcurPostmapObjRIRt
curObjTypetcurObjID((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillAreaTeamPlayerÇs2    "    cCsA|jƒj|ƒ}|dkr%dS|jdƒjdƒ}|S(Ni(RCRTR'R¥R)(RGt    skillTypetskillR¬((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetSkillEfføs
 cCsdS(N((RRttaddValue((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddMPscCsdS(N((RRtt
skillOwnert    lostValueR9tviewtreduce((sf.\\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ð?( R1RÒtGetPyPlayerStateRtDef_PlayerState_LimitAddHPRRXRÓR0t GetValueByPassiveBuffTriggerTypeR'tTriggerType_ForbidenCureRR2Rwt
GetCurePerR6R3Rêt AttackCommont ChangeHPViewtDef_HurtTYpe_RecoveryRÞRëRít    OnFBAddHPtgotNPCtGetGameNPCObjTypetgnotPett
PetControltSetPetHPt Notify_HPEx(    RRtRFtisNotifyR@tcurHPtcurePertmaxHPtremainHP((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddHPTs>   ' cCsn|s
|S|jƒ}|tjkrj|jƒ}|tjkrjttjdƒƒ}t    ||ƒ}qjn|S(NtGoblinHurtValue(
R1RRVR’RtDef_NPCFuncType_GoblinR3RMRNRÞ(tdefendert    hurtValuet
defObjTypet npcFuncTypetgoblinHurtValue((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetGoblinLostHP–s  c    Cs|dkr'tjd||fƒdS|jƒ}    tjƒj|dƒ}
|    tjkr‘|jƒtj    kr‘|
r‘t
|
ƒtj kr‘dSn|} t j |ƒ} |rHtj|||ƒ}t| |dƒ} |    tjkr1|jƒtjkr tj|| ƒqEt j|| ƒ|sE|jƒqEqHt j|| | ƒn|rjtj|||| |ƒnt j |ƒdkrºtj|d|
tj|ƒtj|d|
tj|ƒn|sÑtj|ƒdS|    tjkrfd}|jƒtjkr tj|ƒ}nt j |ƒdkrftj |ƒ}|j!||ƒ|dkrc|j!|dƒqcqfn|jƒtjkrtj|ƒ}n|}|dkrõ|jƒtj"krõtj#||| |ƒ|    tj"krõtj$|||dƒqõn|rt%j&||d|ƒndS(Nis1###¼¼ÄÜÉ˺¦ÑªÁ¿Òì³£,ÊýÖµ´íÎó = %s,¼¼ÄÜÀàÐÍID = %sit SkillLostHP('RRXR1RQtFindSkillByTypeRRVt    GetIsBossRtDef_SkillAttack_NPCIsBosstGetSkillBattleTypet!Def_BattleRelationType_CommNoBossRÒRÓRRtCalcBloodShieldR4RWRXRYRZRëR[RSR0tOnPassiveSkillTriggerR'tTriggerType_WillDeadtOnPassiveBuffTriggertDoLogic_ObjDeadRƒtGetNpcObjOwnerDetailR“tAddObjToAngryListR2tNPCAddObjInHurtListt OnPVPDamaget
BaseAttacktDoLogic_AttackResult(RRtt    buffOwnerRIR9RJtreduceHPtisDoAttackResultthurtTypeR@R!tnotifyLostValuetcurObjHP_BeforeAttackR`t attackerOwnert curNPCControl((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRj­s^  $  !cCsŸ|jƒ}|jƒ}|tjks6|tjkr:dS|dkr›tj|ƒdkr›tj}|jƒj|ƒ}|r›t    j
||||ƒq›ndS(NiiÜi(iiÜ( R1RR2RÒRÓRtDef_SkillID_PoisonAtkBuffRCRTt
SkillShelltDoLogic_UseSkill(RtR†tdefObjR9tattackerObjTypeRftpoisionAtkBuffIDR!((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAddPoisonAtkBuff s  !    cCs?|jƒtjkrdS|jƒtjkr1n
|jƒdS(N(R1RRVRWRXR[(R((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt NotifyNPCHP"s
cCsD|jƒ}|jƒ}|dks0|dkr4dStj||ƒS(Ni(t
GetOwnerIDt GetOwnerTypeRR3(tbufft buffOwnerIDt buffOwnerType((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetBuffOwner3s
  cCsŽ|jƒ}|jƒ}tj||ƒ}|dkrftjd|jƒjƒ||||fƒdS||}|jtd||ƒƒ|S(NisJ skillID = %s, lostTime = %s ,value = %s , remainTime = %s , refuTime = %s(    tGetValueR>Rt GetIntUpperRRgRStSetValueR4(RstrefuTimeR9R®R<tlostTimeRI((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetProcessBuffChangeHp_TimeCs   ,
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(R1R    RDReRfRiR‹RŒRR3R'RR2RYRVR-RytSkillAddAuraBuffRg( t curObjDetelR9R@t buffManagert auraBuffListRªtauraBuffRŽRR{tbuffOwnerObjType((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAddAuraSkillZs4         !!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(&R1R    RRDReRfRiRgRjRSR‹RŒRR3R'RkRlR t GetAtkRadiustGetDistR}R~RCRRVt
GetVisibleRTRtDef_SkillID_XuanTianZhenYanR2RƒtGetSummonNPCOwnert    IsSameObjt    GetTeamIDtDef_SuperBuffListRtFindBuffRX(R˜R9R@R™RštreFlashRªR›t    buffSkillt buffSkillIDtauraSkillTypeIDRŽRR{t    atkRadiusRàtbuffOwnerSkillMgrtpetOwnertgankBuff((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAuraSkillŠs„           0   *    $    cCsd}|dkr*tjƒj|ƒ}ntjƒj||ƒ}|dkritjd||fƒdSt|ƒ}t|||jƒ|j    ƒƒsšdSd}|j
ƒt j krtj tdƒ}|dkrñt||d||ƒƒ}qtjdƒntj|||||gƒS(Ns0Ìí¼Óbuffʧ°Ü,Êý¾Ý¿â²éÕÒ¼¼ÄÜ = %s,ʧ°Ü!skillLV=%sis#SkillBuff_AddBuffValue.AddBuffValue(R'RRQRRRkRXR$tCheckCanAddBuffRSt
GetSkillLVR RtDef_LstBuff_Listt GetExecFunct
GameSkillsR3RRkt    DoAddBuff(RRCR9tskillLVR!Rt addBuffValuetcallFunc((sf.\\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'RRQRRRkRXR$R°RSR±RktAddBuffNoRefreshState(RRCR9R¶t plusValueListR{R!R((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytAddBuffBySkillType_NoRefurbish)s   !c    Cs¾t||ƒ}|dkrdS|d}|dkrPtjd||fƒtS|j|ƒ}|dkrotS|tjkr‚tS|jƒ}|j    ƒ}||krªdS|j
ƒsºdStS(Nis+###Òì³£,ÎÞ·¨²éÕÒÕâÀ༼ÄÜ = %s,buffÀàÐÍ = %s(( RR'RRXR R¦RR
RgR±R‚(    RRR_t
curSkillLVRptcurObjBuffManagert
curObjBuffR¨t buffSkillLV((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR°Ds& 
      cCsjxctd|jƒƒD]L}|j|ƒ}|s7qn|jƒ}|jdƒjƒ|kr|SqWdS(Ni(RDReRfRgR¥t GetEffectID(R™teffectIDRItfindBuffR¨((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytFindBuff_BuffM_EffIDns cCsƒtjƒj|ƒ}|dkr6tjd|ƒdSt|t|ƒƒ}|dkrltjd|ƒdS|d}|j|ƒS(Ns0FindBuffBySkillAndEffID skillTypeID= %s DBNoFinds0FindBuffBySkillAndEffID skillTypeID= %s IsNoBuffi((RRQRRR'RRR$t
FindEffect(RGRtteffIDR!RpR™((sf.\\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|ƒ}||d<||d<|S(Ns!FindBuff skillTypeID= %s DBNoFindiiii((R'RRQRRRR$RR¦(ttagObjRtt
returnInfot    findSkillRRpR™RÃ((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt FindBuffByID“s  
 
 
 
 
cCsQ|jƒjƒtj|ƒt|ƒ}t||ƒ|j|jƒ|ƒ|S(N(RtClearRwtKillPlayerSummonNPCtGetPlayerUseSkillPointtClearSkillManagertSetFreeSkillPointtGetFreeSkillPoint(RGtsaveSkillTypeListt    savePoint((sf.\\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(RCRMRNRDRERFRSR±(RGt    usePointsRHtnoPoints_SkillType_ListRIR!((sf.\\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(    RCRDRERFRSRiRjt
ResetSkillt LVUPSkillByID(RGRÒtplayerHasSaveListRHRIR!t curSkillTypeR^((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRÏØs   
 cCs|s tjS|jƒS(N(RtDef_BattleRelationType_Commt GetHurtType(R!((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRnñsc    Cs@|jƒtjtjtjtjtjtjtjtj    gkS(N(
R RtDef_SkillType_PassivetDef_SkillType_PassiveBufftDef_SkillType_AttrSkilltDef_SkillType_PassivePlsBufftDef_SkillType_PassiveDepBufftDef_SkillType_PassiveActionBufftDef_SkillType_PassiveLstPlsBufftDef_SkillType_PassiveLstDepBuff(R!((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR.øscCs:|jƒtjtjtjtjtjtjtjgkS(N(    R RRÞRßRáRâRãRäRå(R!((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisPassiveTriggerSkillscCs|jƒtjkS(N(R RRà(R!((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt isPassiveAttrscCs|jƒtjkS(N(R RRß(R!((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytisPassiveBuffSkillscCs |jdƒS(Nt
UsePassive(t GetDictByKey(R†((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetUsingPassiveSkillscCs|jd|ƒS(NRé(R·(R†R®((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSetUsingPassiveSkillscCstS(s ÑéÖ¤ÊÇ·ñ»ù±¾¹¥»÷¼ä¸ô (R(RGRtR9((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckPlayerAtkIntervalscCs=|jƒ}|dkrtS|td|jƒƒ@r9tStS(Nii(t
GetUseTypeR tpowRPR(RGR!t skillUseType((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt CheckSkillJob,s  cCs|jƒtjkS(N(RÁRtDef_BaseEffectList(R¬((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt IsBaseEffect;scCst|tj||ƒƒS(N(tGetAttackerHurtValueByAtkTypeRRt GetBattleType(R†tuseSkill((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetCureBaseValueDscCst|tj||ƒƒS(N(RôRRRõ(R†Rö((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetHurtBaseValueLscCs(|jƒtjƒ|jƒ|jƒS(N(RætrandomRè(R†tatkType((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRôUscCsX|jƒ}xEt|ƒD]7}|j|ƒ}|jƒjƒ}||krtSqWtS(N(ReRDRfRgR R R(t
buffManagetgivenSkillTypeListt    buffCountRItbuffObjRÛ((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytIsHasGivenBuffgs  cCsbd}t|tjƒ}|dkr?t|jdƒ|ƒ}n|tj|d|tjƒ7}|S(Ni2i(    R%Rt!Def_Skill_Effect_AreaAttackkCountR'RÞR)R0R1tTriggerType_AttackCnt(R†R!t    hurtCountR*((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillArea_Atk_Countxs  cCs^xWtd|jƒƒD]@}|j|ƒ}|jƒ}|sCqn||krUqn|SWdS(Ni(RDtGetEffectCountR¥RÁ(R!RÂRIR*t curEffectID((sf.\\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((RRQRRR'RRR$R¦(RGRtR!RpR™((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetPlayerBuffBySkillTypeID¤s  
cCs;t||ƒ}|dkrdS|jƒj|jdƒƒS(Ni(R%R'RCRTR)(RÈR!RÂt curSkillEff((sf.\\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||ƒ|}nr|tj krËtj|ƒ}nQ|tj krï|jtjƒ}n-|tjkr|s
dn tj|ƒ}n|tj krtd|jƒ|jƒƒt
|jdƒj    dƒƒ}tjd|jƒ|jƒ|fƒn%|jdƒj    dƒt
tj ƒ}|jdƒj    dƒ}    t|||    ||ƒ}
|
S(Ngð?iis!Ó¢Ó¸´ËÕ: Ãô=%s,Á¦=%s,skillPer=%si(RtDef_Cure_AttackR÷tDef_Cure_MaxHPRÒRêt Def_Cure_PNEtGetPNER¥R)R¨R6t Def_Cure_PHYtDef_Cure_HurtValueRêtDef_PlayerKey_LastHurtValuetDef_Cure_TagMaxHPR4tGetPHYtGetSTRRRcR3( tuserObjRÈR!tcureTypet curePercentt cureBaseValuet
addExValuetaddPerR«t
skillValuetcureHP((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt    GetCureHPÍs0 %;)%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_PHYR4RR R¨R¥R)RRcR6R3(RRÈR!t restoreTypeRR«Rt    restoreMP((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetRestoreMP s;)%cCsdS(N((R†RDR9((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytUpdateSkillCombo*s(cRRƒRRRwR´RkRRRÂR¦RíRMRùRyRYR„RVtChPyNetSendPackt NetPackCommonR5RÒR0RR"R$R+R'R=RBRJRKR`RvR|RRžRR°RRÎR½RÚRÛRÝtDef_DropItemDistRãRÕRRRRÏRÐRBRERGR RLRaRitDef_HurtType_NormalRjR‰RŠRR–RR¯R¹R¼R°RÄRÇRËRÔRÎRÏRnR.RæRçRèRëRìRíRñRóR÷RøRôRÿRR%RRR    RRR!R"(((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt<module>s¼                                                             E    /    &    %    ( #, $ D     .'    p                 ,    $    1        %( B    _                    0    y &    *                                  
                                                                    >