1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
#!/usr/bin/python
# -*- coding: GBK -*-
#
#
##@package PySkillManager
# @todo: ÓÃÓÚÕ½¶·Ä£¿éËùÐè½Ó¿Ú£¬Ñ§Ï°¼¼ÄÜµÈÆäËûËùÓýӿڿɲ»¿ª·Å
#        Ö§³ÖÁÙʱ¸Ä±äÊý¾ÝÒÔ±ãÕ½¶·¼ÆËãµÈÆäËûЧ¹û
# @author: Alee
# @date: 2013-10-31 14:45
# @version 1.1
#
# ÐÞ¸Äʱ¼ä ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ
# @change: "2016-11-16 15:30" hxp Ôö¼Ó¼õÉÙbuff³ÖÐøÊ±¼ä
#
#---------------------------------------------------------------------
#"""Version = 2016-11-16 15:30"""
#---------------------------------------------------------------------
#µ¼Èë
 
# python Ä£Äâ¼¼ÄÜЧ¹û½á¹¹
class PySkillEffect():
 
    def __init__(self, effObj):
        self.effectID = effObj.GetEffectID()
        
        self.effectValueList = []
        for i in xrange(effObj.GetEffectValueCount()):
            self.effectValueList.append(effObj.GetEffectValue(i))
 
        return
 
    def Clear(self):
        self.effectID = 0
        self.effectValueList = []
 
    def GetEffectID(self):
        return self.effectID
    
    def GetEffectValue(self, index):
        return self.effectValueList[index]
    
    def GetEffectValueCount(self):
        return len(self.effectValueList)
    
    def SetEffectValue(self, index, value):
        self.effectValueList[index] = value
    
    def AddEffectValue(self, index, value):
        self.effectValueList[index] += value
 
 
# python Ä£Äâ¼¼Äܽṹ
class PySkillData():
    
    def __init__(self):
        return
    
    def CopySkillData(self, skillData):
        self.Clear()
        
        self.effObjList = []
        for i in xrange(skillData.GetEffectCount()):
            self.effObjList.append(PySkillEffect(skillData.GetEffect(i)))
        
        self.skillID = skillData.GetSkillID()
        self.skillName = skillData.GetSkillName()
        self.skillTypeID = skillData.GetSkillTypeID()
        self.skillLV = skillData.GetSkillLV()
        self.skillMaxLV = skillData.GetSkillMaxLV()
        self.useType = skillData.GetUseType()
        
        self.funcType = skillData.GetFuncType()
        
        self.castTime = skillData.GetCastTime()
        self.skillType = skillData.GetSkillType()
        self.continueUse = skillData.GetContinueUse()
        self.atkType = skillData.GetAtkType()
        self.atkRadius = skillData.GetAtkRadius()
        self.tag = skillData.GetTag()
        self.atkDist = skillData.GetAtkDist()
        self.coolDownTime = skillData.GetCoolDownTime()
        self.mp = skillData.GetMP()
        self.hp = skillData.GetHP()
        self.xp = skillData.GetXP()
        self.useItemID = skillData.GetUseItemID()
        self.useItemCnt = skillData.GetUseItemCount()
        self.skillAngry = skillData.GetSkillAngry()
        self.skillEnhance1 = skillData.GetSkillEnhance1()
        self.skillEnhance2 = skillData.GetSkillEnhance2()
        self.happenRate = skillData.GetHappenRate()
        self.lastTime = skillData.GetLastTime()
        self.canRepeatTime = skillData.GetCanRepeatTime()
        self.commonCD = skillData.GetCommonCD()
        self.hurtType = skillData.GetHurtType()
        self.stiffTime = skillData.GetStiffTime()
        self.clientActionLimit = skillData.GetClientActionLimit()
        self.serverActionLimit = skillData.GetServerActionLimit()
        self.clientSkillSeriesLimit = skillData.GetClientSkillSeriesLimit()
        self.serverSkillSeriesLimit = skillData.GetServerSkillSeriesLimit()
        self.skillOfSeries = skillData.GetSkillOfSeries()
        self.exAttr1 = skillData.GetExAttr1()
        self.exAttr2 = skillData.GetExAttr2()
        self.exAttr3 = skillData.GetExAttr3()
        self.exAttr4 = skillData.GetExAttr4()
        self.exAttr5 = skillData.GetExAttr5()
        
        #·Çͬ²½ÊôÐÔ
        self.buffValueEffDict = {}
        return
    
    
    def Clear(self):
        self.effObjList = []
        self.skillID = 0
        self.skillName = 0
        self.skillTypeID = 0
        self.skillLV = 0
        self.skillMaxLV = 0
        self.useType = 0
        self.weaponTypeList = []
        self.castTime = 0
        self.skillType = 0
        self.continueUse = 0
        self.atkType = 0
        self.atkRadius = 0
        self.tag = 0
        self.atkDist = 0
        self.coolDownTime = 0
        self.mp = 0
        self.hp = 0
        self.xp = 0
        self.useItemID = 0
        self.useItemCnt = 0
        self.skillAngry = 0
        self.skillEnhance1 = 0
        self.skillEnhance2 = 0
        self.happenRate = 0
        self.lastTime = 0
        self.canRepeatTime = 0
        self.commonCD = 0
        self.hurtType = 0
        self.stiffTime = 0
        self.clientActionLimit = 0
        self.serverActionLimit = 0
        self.clientSkillSeriesLimit = 0
        self.serverSkillSeriesLimit = 0
        self.skillOfSeries = 0
        self.exAttr1 = 0
        self.exAttr2 = 0
        self.exAttr3 = 0
        self.exAttr4 = 0
        self.exAttr5 = 0
        
        #·Çͬ²½ÊôÐÔ
        self.buffValueEffDict = {}
        self.buffValue = {}
        return
    
    def GetEffect(self, index): return self.effObjList[index]
    def GetEffectCount(self): return len(self.effObjList)
    def GetSkillID(self): return self.skillID
    def GetSkillName(self): return self.skillID
    def GetSkillTypeID(self): return self.skillTypeID
    def GetSkillLV(self): return self.skillLV
    def GetSkillMaxLV(self): return self.skillMaxLV
    def GetUseType(self): return self.useType
    def GetFuncType(self, index): return self.funcType
    def GetCastTime(self): return self.castTime
    def GetSkillType(self): return self.skillType
    def GetContinueUse(self): return self.continueUse
    def GetAtkType(self): return self.atkType
    def GetAtkRadius(self): return self.atkRadius
    def GetTag(self): return self.tag
    def GetAtkDist(self): return self.atkDist
    def GetCoolDownTime(self): return self.coolDownTime
    def GetMP(self): return self.mp
    def GetHP(self): return self.hp
    def GetXP(self): return self.xp
    def GetUseItemID(self): return self.useItemID
    def GetUseItemCount(self): return self.useItemCnt
    def GetSkillAngry(self): return self.skillAngry
    def GetSkillEnhance1(self): return self.skillEnhance1
    def GetSkillEnhance2(self): return self.skillEnhance2
    def GetHappenRate(self): return self.happenRate
    def GetLastTime(self): return self.lastTime
    def GetCanRepeatTime(self): return self.canRepeatTime
    def GetCommonCD(self): return self.commonCD
    def GetHurtType(self): return self.hurtType
    def GetStiffTime(self): return self.stiffTime
    def GetClientActionLimit(self): return self.clientActionLimit
    def GetServerActionLimit(self): return self.serverActionLimit
    def GetClientSkillSeriesLimit(self): return self.clientSkillSeriesLimit
    def GetServerSkillSeriesLimit(self): return self.serverSkillSeriesLimit
    def GetSkillOfSeries(self): return self.skillOfSeries
    def GetExAttr1(self): return self.exAttr1
    def GetExAttr2(self): return self.exAttr2
    def GetExAttr3(self): return self.exAttr3
    def GetExAttr4(self): return self.exAttr4
    def GetExAttr5(self): return self.exAttr5
    
    #·Çͬ²½½Ó¿Ú--------------------------------------------------------------------
    
    def ReduceCoolDownTime(self, value):
        self.coolDownTime -= value
        
    def AddHappenRate(self, value):
        self.happenRate += value
        
    def AddLastTime(self, value):
        self.lastTime += value
    
    def DecLastTime(self, value):
        self.lastTime = max(0, self.lastTime - value)
        
    # BUFFÀàÐ͵Äbuffvalue´¦Àí
    def GetBuffValueByEffectID(self, effectID):
        return self.buffValueEffDict.get(effectID, 0)
 
    def AddBuffValueEff(self, effectID, value):
        self.buffValueEffDict[effectID] = value + self.buffValueEffDict.get(effectID, 0)
    
    # BUFFÀàÐ͵Äbuffvalue´¦Àí
    def GetBuffValueEx(self, index):
        return self.buffValue.get(index, 0)
 
    def AddBuffValueEx(self, index, value):
        self.buffValue[index] = value + self.buffValueEffDict.get(index, 0)
        
    def GetBuffValueDict(self):
        return self.buffValue
#-------------------------------------------------------------------------------    
    
#È«¾Ö£¬ÊÊÓÃÓÚµ¥Ị̈߳¬É÷ÓÃ
Py_SkillData = PySkillData()    # Ö÷¶¯Êͷŵļ¼ÄÜ
Py_SkillDataTrigger = PySkillData()    # ´¥·¢¼¼ÄÜ