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