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
f«\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ƒtjkr˜|tj|d|tj    ƒ7}|dkr˜t
|t dt j |ƒt j ƒ}q˜n|j|ƒdS|tj|d|tjƒ7}|dkrþt
|t dt j |ƒt j ƒ}n|j|ƒ||kr$|jƒndS(Ni(tSetLastUseTicktGetCoolDownTimetisPassiveSkillt GetFuncTypeRtDef_SkillFuncType_GiftSkilltPassiveBuffEffMngt!GetPassiveSkillValueByTriggerTypeR'tTriggerType_GiftReduceCDtinttmaxt ShareDefinetDef_MaxRateValuet SetRemainTimetTriggerType_ReduceCDt
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 GetRemainTimeR5tGetLastUseTickR,R8(R!R<tremainTime_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 GetSkillCounttGetSkillByIndexRARE(t    curPlayerR<t 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(RFRGRHRIRAR,(RJR<RKRLR!((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_DICTtGetJobRFRt GetGameDatatGetSkillBySkillIDRtGetSkillTypeIDtFindSkillBySkillTypeIDtLVUpSkillBySkillTypeIDtDataRecordPacktDR_LearnORUPSkilltLogt GetPlayerID(    RJtjobLearnSkillDicttjobTypetlearnSkillListRKtgameDatatskillIDR!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((R\Rt IsMergeServertDebugLogRPRQR[RGRRtbtBufMaxRt GetBuffCounttGetBufftGetSkillRVt GetSkillNametappendt
GetSkillIDt    BuffSkilltDelBuffBySkillIDRFRHRIRAR8(RJR<tplayerIDtClearBuffSkillTypeIDListt clearBuffListRt    buffTuplet    buffStatetbuffCntRLtcurBuffR!t skillTypeIDt    skillNameRaRK((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 PlayerControltGetPlayerLeaveServerSecondRFRGRHRIRAR8R,(RJR<tleaveServerSecondsRKRLR!tskillRemainTimetlastTime((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytPlayerLoginUpdateSkillCD!s        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)RTtFindNPCDataByIDt    GetAITypet GetLastTimet    NPCCommont SummonMapNpctSetIsNeedProcessR ( tattackerR!R<tcurPosXtcurPosYR*tnpcIDtcurNPCtaiTypeR~tcurNpc((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSummonMapNPCBySkillPs&        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 RRTRƒR'R[R\RtGetTypet__GetSummonByFuncTypeListtlentGetFunctionTypeR†t
NPCControlt    SetKilled( RJt summonNPCIDR<t summonCountt    curSummont curSummonTypet
summonListt maxBornIndextcurSummonFunctionTypet    summonNPCt
npcControl((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSummonNPCOccurRulevs$      
c Cs¥g}d}d}d}x€td|ƒD]o}|j|ƒ}    |    jƒ|krUq(n|j|    ƒ||    jƒ}
|
|kr|
}|}n|d7}q(W||fS(Nii(RGtGetSummonNPCAtR’Rlt GetBornTime( RJR™R›R<t summonNPCListt
list_Indext maxBornTimeRRLRŸ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'RR[RmR\RR7tfloatR4(
RJR!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_SummonMapNPCPlayerIDR\tReborntGameMaptGetEmptyPlaceInAreaR€Rt SetBornTimet SetLastTimeR…t SetCanAttackR( RJR!tsummonIDt
summonDistR<tisAppointBornPostbornPosXtbornPosYRŸ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(RJRŸ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 RGR‘R¢tGetNPCIDR'tGameObjtGetHPRtAddSummonCountRmRRtSummonNPCByInstance(RR!R™t maxAngryCountR˜R<taddAngrytcountt
isAddCountR­RLRŸRŒRa((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt$DoLogic_NPC_UseSkill_SummonNPCSingle5s: 
 
   cCsdd}xWtd|jƒƒD]@}|j|ƒ}|s=qn|jƒ|kr|d7}qqW|S(Nii(RGR‘R¢RÔ(tgameObjRÊRÛRLRŸ((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSummonCountByNPCIDzsc 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×RGR‘R¢RÔRÕRÖRØ( RR!R˜R™RÙR<RÚtaddCountRÛRLRŸ((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×RGR‘R¢RÔRÕRÖRØ( RR!R˜tsummonAllCountRÙR<RÚtdistt
rebornPosXt
rebornPosYRàRLRŸ((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)R7t SetBaseMinAtkR4t    GetMinAtkt SetBaseMaxAtkt    GetMaxAtkRÕtSetMaxHPtGetMaxHPtSetHPtDoNPCAttrStrengthentFBLogictDoFBRebornSummonNPCR½RGt GetAngryCounttGetAngryValueTagtGetObjIDtAddAngryt
GetObjTypet GetAngryValuet NotifyAppear(RRŸR!R<RÚRätposXtposYt    resultPostatkpert
findEffecttmaxHPPertsummonNPCAngryt curNPCAngryRLt
angryValuet angryValue_ID((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRØçsB !   #)   #
cCsdS(N((RJRŸRÊ((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt!__PassiveSkill_AddSummonAttributeXscCsjt|ƒ}g}xQtd|ƒD]@}|j|ƒjdƒ}|||tj}|j|ƒq"W|S(Ni(R”RGR¨R)RR7Rl(t    valueListR!teffCountt
returnListR­teffValueR±((sf.\\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((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt__CalcSummonEffectValueps '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'RR[RmR\RR)R«RR7RéR4RêRëRìt
SetBaseDeftGetDeft
SetBaseHittGetHittSetBasePoisionAtkt GetPoisionAtktSetBaseFireAtkt
GetFireAtkt SetBaseIceAtkt    GetIceAtktSetBaseThunderAtkt GetThunderAtktSetBaseWindAtkt
GetWindAtktSetBasePoisionDeft GetPoisionDeftSetBaseFireDeft
GetFireDeft SetBaseIceDeft    GetIceDeftSetBaseThunderDeft GetThunderDeftSetBaseWindDeft
GetWindDeftSetBaseMissRatetGetMisstSetBaseSuperHiteRatetGetSuperHitRatet SetBaseMaxHPRî(RJRŸR!R*R®((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRÒ}s6   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 RRRRRRRRRRRRRRRRRRR R!R"R#R$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(RtGetMaptGetTeamRztGetAreaTeamMemberRltGetIDt    GetPosObjRGt GetObjCountt GetObjByIndextGetGameObjTypeRt    gotPlayertGetObjR'(RJtsrcPosXtsrcPosYt skillMatrixtareatgameMapt curPlayerTeamtteamPlayerListt
teamIDListt
teamPlayertinAreaTeamPlayerListtcurPostmapObjRLRt
curObjTypetcurObjID((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillAreaTeamPlayerÍs2    "    cCsA|jƒj|ƒ}|dkr%dS|jdƒjdƒ}|S(Ni(RFRWR'R¨R)(RJt    skillTypetskillR¯((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetSkillEffþs
 cCsdS(N((RRwtaddValue((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddMP scCsdS(N((RRwt
skillOwnert    lostValueR<tviewtreduce((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt SkillLostMP2sc    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ð?( R5RÕtGetPyPlayerStateRtDef_PlayerState_LimitAddHPRR[RÖR1t GetValueByPassiveBuffTriggerTypeR'tTriggerType_ForbidenCureRR6Rzt
GetCurePerR7R4Rît AttackCommont ChangeHPViewtDef_HurtTYpe_RecoveryRâRïRñt    OnFBAddHPtgotNPCtGetGameNPCObjTypetgnotPett
PetControltSetPetHPt Notify_HPEx(    RRwRJtisNotifyRDtcurHPtcurePertmaxHPtremainHP((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt
SkillAddHPZs>   ' cCsn|s
|S|jƒ}|tjkrj|jƒ}|tjkrjttjdƒƒ}t    ||ƒ}qjn|S(NtGoblinHurtValue(
R5RRZR•RtDef_NPCFuncType_GoblinR4RPRQRâ(tdefendert    hurtValuet
defObjTypet npcFuncTypetgoblinHurtValue((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetGoblinLostHPœs  c    CsL|dkr'tjd||fƒdS|jƒs7dS|jƒ}    tjƒj|dƒ}
|    tjkr¡|jƒt    j
kr¡|
r¡t |
ƒt    j kr¡dSn|} t j|ƒ} |rstj||||
|ƒ}tj|||ƒ}t| |dƒ} |    tjkr\|jƒtjkr6tj|| ƒqpt j|| ƒ|sp|jƒqpqst j|| | ƒn|r•tj|||| |ƒnt j|ƒdkråtj|d|
t    j|ƒtj|d|
t    j|ƒn|stjd||
|ƒdS|    tjkršd}|jƒtjkrAt j!|ƒ}nt j|ƒdkršt j"|ƒ}|j#||ƒ|dkr—|j#|dƒq—qšn|jƒtjkrÁt j!|ƒ}n|}|dkr)|jƒtj$kr)tj%||| |ƒ|    tj$kr)tj&|||dƒq)n|rHt'j(||d|ƒndS(Nis1###¼¼ÄÜÉ˺¦ÑªÁ¿Òì³£,ÊýÖµ´íÎó = %s,¼¼ÄÜÀàÐÍID = %sit SkillLostHP()RR[t GetCanAttackR5RTtFindSkillByTypeRRZt    GetIsBossRtDef_SkillAttack_NPCIsBosstGetSkillBattleTypet!Def_BattleRelationType_CommNoBossRÕRÖRVt CalcAtkProDeftCalcBloodShieldR5R[R\R]R^RïR_RWR1tOnPassiveSkillTriggerR'tTriggerType_WillDeadtOnPassiveBuffTriggertDoLogic_ObjDeadR†tGetNpcObjOwnerDetailR–tAddObjToAngryListR6tNPCAddObjInHurtListt OnPVPDamaget
BaseAttacktDoLogic_AttackResult(RRwt    buffOwnerRMR<RNtreduceHPtisDoAttackResultthurtTypeRDR!tnotifyLostValuetcurObjHP_BeforeAttackRdt attackerOwnert curNPCControl((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRn³sd   $ !cCsŸ|jƒ}|jƒ}|tjks6|tjkr:dS|dkr›tj|ƒdkr›tj}|jƒj|ƒ}|r›t    j
||||ƒq›ndS(NiiÜi(iiÜ( R5RR6RÕRÖRtDef_SkillID_PoisonAtkBuffRFRWt
SkillShelltDoLogic_UseSkill(RwR‰tdefObjR<tattackerObjTypeRjtpoisionAtkBuffIDR!((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAddPoisonAtkBuffs  !    cCs?|jƒtjkrdS|jƒtjkr1n
|jƒdS(N(R5RRZR[R\R_(R((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt NotifyNPCHP-s
cCsD|jƒ}|jƒ}|dks0|dkr4dStj||ƒS(Ni(t
GetOwnerIDt GetOwnerTypeRR7(tbufft buffOwnerIDt buffOwnerType((sf.\\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(    tGetValueRARt GetIntUpperRRjRVtSetValueR5(RvtrefuTimeR<R±R?tlostTimeRM((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetProcessBuffChangeHp_TimeNs   ,
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(R5R    RGRhRiRlR‘R’RR7R'RR6R\RZR1RtSkillAddAuraBuffRj( t curObjDetelR<RDt buffManagert auraBuffListR­tauraBuffR”R•RtbuffOwnerObjType((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckAddAuraSkilles4         !!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(&R5R    RRGRhRiRlRjRmRVR‘R’RR7R'RnRoR t GetAtkRadiustGetDistR€RRFRRZt
GetVisibleRWRtDef_SkillID_XuanTianZhenYanR6R†tGetSummonNPCOwnert    IsSameObjt    GetTeamIDtDef_SuperBuffListRtFindBuffR[(RžR<RDRŸ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'RRTRURpR[R$tCheckCanAddBuffRVt
GetSkillLVR RtDef_LstBuff_Listt GetExecFunct
GameSkillsR4RRnt    DoAddBuff(RRGR<tskillLVR!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'RRTRURpR[R$R¶RVR·RntAddBuffNoRefreshState(RRGR<R¼t plusValueListRR!R((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytAddBuffBySkillType_NoRefurbish4s   !c    Cs¾t||ƒ}|dkrdS|d}|dkrPtjd||fƒtS|j|ƒ}|dkrotS|tjkr‚tS|jƒ}|j    ƒ}||krªdS|j
ƒsºdStS(Nis+###Òì³£,ÎÞ·¨²éÕÒÕâÀ༼ÄÜ = %s,buffÀàÐÍ = %s(( RR'RR[R R¬RR
RjR·R…(    RRRbt
curSkillLVRstcurObjBuffManagert
curObjBuffR®t buffSkillLV((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyR¶Os& 
      cCsjxctd|jƒƒD]L}|j|ƒ}|s7qn|jƒ}|jdƒjƒ|kr|SqWdS(Ni(RGRhRiRjR¨t GetEffectID(RŸteffectIDRLtfindBuffR®((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytFindBuff_BuffM_EffIDys cCsƒtjƒj|ƒ}|dkr6tjd|ƒdSt|t|ƒƒ}|dkrltjd|ƒdS|d}|j|ƒS(Ns0FindBuffBySkillAndEffID skillTypeID= %s DBNoFinds0FindBuffBySkillAndEffID skillTypeID= %s IsNoBuffi((RRTRUR'RRR$t
FindEffect(RJRwteffIDR!RsRŸ((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'RRTRURR$RR¬(ttagObjRwt
returnInfot    findSkillRRsRŸ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(RtClearRztKillPlayerSummonNPCtGetPlayerUseSkillPointtClearSkillManagertSetFreeSkillPointtGetFreeSkillPoint(RJtsaveSkillTypeListt    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(RFRPRQRGRHRIRVR·(RJt    usePointsRKtnoPoints_SkillType_ListRLR!((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(    RFRGRHRIRVRlRmt
ResetSkillt LVUPSkillByID(RJRØtplayerHasSaveListRKRLR!t curSkillTypeRa((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.pyRsü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.pytGetUsingPassiveSkill scCs|jd|ƒS(NRï(Rº(R‰R±((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytSetUsingPassiveSkill#scCstS(s ÑéÖ¤ÊÇ·ñ»ù±¾¹¥»÷¼ä¸ô (R(RJRwR<((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytCheckPlayerAtkInterval&scCs=|jƒ}|dkrtS|td|jƒƒ@r9tStS(Nii(t
GetUseTypeR tpowRSR(RJR!t skillUseType((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt CheckSkillJob7s  cCs|jƒtjkS(N(RÇRtDef_BaseEffectList(R¯((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt IsBaseEffectFscCst|tj||ƒƒS(N(tGetAttackerHurtValueByAtkTypeRVt GetBattleType(R‰tuseSkill((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetCureBaseValueOscCst|tj||ƒƒS(N(RúRVRû(R‰Rü((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetHurtBaseValueWscCs(|jƒtjƒ|jƒ|jƒS(N(RêtrandomRì(R‰tatkType((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyRú`scCsX|jƒ}xEt|ƒD]7}|j|ƒ}|jƒjƒ}||krtSqWtS(N(RhRGRiRjR R R(t
buffManagetgivenSkillTypeListt    buffCountRLtbuffObjRá((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytIsHasGivenBuffrs  cCsbd}t|tjƒ}|dkr?t|jdƒ|ƒ}n|tj|d|tjƒ7}|S(Ni2i(    R%Rt!Def_Skill_Effect_AreaAttackkCountR'RâR)R1R2tTriggerType_AttackCnt(R‰R!t    hurtCountR*((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetSkillArea_Atk_Countƒs  cCs^xWtd|jƒƒD]@}|j|ƒ}|jƒ}|sCqn||krUqn|SWdS(Ni(RGtGetEffectCountR¨RÇ(R!RÈRLR*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((RRTRUR'RRR$R¬(RJRwR!RsRŸ((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytGetPlayerBuffBySkillTypeID¯s  
cCs;t||ƒ}|dkrdS|jƒj|jdƒƒS(Ni(R%R'RFRWR)(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«R7t Def_Cure_PHYtDef_Cure_HurtValueRðtDef_PlayerKey_LastHurtValuetDef_Cure_TagMaxHPR5tGetPHYtGetSTRRRfR4( 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_PHYR5RRR«R¨R)RRfR7R4(RRÎR!t restoreTypeRR®Rt    restoreMP((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt GetRestoreMPs;)%cCsdS(N((R‰RHR<((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pytUpdateSkillCombo5s(cRR†RRRzRºRnRVRÅR©RñRPRÿRR]RŠRYtChPyNetSendPackt NetPackCommonR6RÕR1RR"R$R+R'R@RERMRNRcRyRRR¡R“R³RRÑRÀRÝRßRátDef_DropItemDistRçRØRR    R RÒRÓRFRIRKR RPReRmtDef_HurtType_NormalRnRRR–RœR£RµR¿RÂR¶RÊRÍRÑRÚRÔRÕRsR.RìRíRîRñRòRóR÷RùRýRþRúRR    R%R RRR!R"R'R((((sf.\\ServerPython\ZoneServerGroup\map1_8G\MapServer\MapServerData\Script\Skill\GameSkills\SkillCommon.pyt<module>s¼                                       &                     E    /    &    %    ( #, $ D     .'    p                 ,    $    1        %( B    d                    0    y &    *                                  
                                                                    >