| #!/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()    # ´¥·¢¼¼ÄÜ  | 
|   |