hxp
2025-12-17 d629712afdd7ff097902578febbc93bf1bec490e
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py
@@ -348,6 +348,7 @@
        self._ipyData = ipyData
        self._skillID = self._ipyData.GetSkillID()
        self._skillTypeID = self._ipyData.GetSkillTypeID()
        self._cdTime = self._ipyData.GetCoolDownTime()
        self._effList = [] # [Effect, ...]
        self._effDict = {} # {(effID, triggerWay):Effect, ...} ,确保唯一,同个技能可能配置相同的效果ID
        for num in range(1, 1 + 3):
@@ -393,7 +394,7 @@
            return self._effDict[(effID, triggerWay)]
    def GetConnSkill(self): return self._ipyData.GetConnSkill()
    def GetCoolDownInit(self): return self._ipyData.GetCoolDownInit()
    def GetCoolDownTime(self): return self._ipyData.GetCoolDownTime()
    def GetCoolDownTime(self): return self._cdTime
    def GetBuffStateLimit(self): return self._ipyData.GetBuffStateLimit()
    def GetCurBuffState(self): return self._ipyData.GetCurBuffState()
    def GetLastTime(self): return self._ipyData.GetLastTime() # 持续时间
@@ -421,7 +422,7 @@
        self._value2 = 0
        self._value3 = 0
        self._isCopy = 0 # 是否复制的buff
        self._effExDict = {} # 效果ID额外数值 {effID:value, ...} # 计算方式取决于本buff技能中属性效果ID的配置
        self._effExDict = {} # 效果ID额外数值 {(effID, calcType):value, ...} # 计算方式取决于本buff技能中属性效果ID的配置
        self._haloObjIDList = [] # 光环有效目标ID列表 [objID, ...],ownerID为自己时即为光源,包含光源
        return
    
@@ -465,11 +466,8 @@
    def SetValue3(self, value): self._value3 = value
    def GetIsCopy(self): return self._isCopy
    def SetIsCopy(self, isCopy): self._isCopy = isCopy
    def GetEffectValueEx(self, effID):
        if effID in self._effExDict:
            return self._effExDict[effID]
    def ResetEffectValueEx(self): self._effExDict = {}
    def AddEffectValueEx(self, effID, valueEx): self._effExDict[effID] = self._effExDict.get(effID, 0) + valueEx
    def AddEffectValueEx(self, effID, valueEx, calcType=1): self._effExDict[(effID, calcType)] = self._effExDict.get((effID, calcType), 0) + valueEx
    def GetEffectExDict(self): return self._effExDict
    def GetHaloObjIDList(self): return self._haloObjIDList
    def SetHaloObjIDList(self, haloObjIDList): self._haloObjIDList = haloObjIDList
@@ -582,16 +580,25 @@
            if buff.GetOwnerID() == ownerID:
                return buff
        return
    def FindBuffByState(self, state):
    def FindBuffByState(self, state, ownerID=0):
        ## 查找某种buff状态的buff
        # @param ownerID: 可指定获取归属于某个对象ID的buff
        if state not in self._buffStateDict:
            return
        buffIDList = self._buffStateDict[state]
        if not buffIDList:
            return
        buffID = buffIDList[0]
        if buffID in self._buffIDDict:
            return self._buffIDDict[buffID]
        if ownerID:
            for buffID in buffIDList:
                if buffID not in self._buffIDDict:
                    continue
                buff = self._buffIDDict[buffID]
                if buff.GetOwnerID() == ownerID:
                    return buff
        else:
            buffID = buffIDList[0]
            if buffID in self._buffIDDict:
                return self._buffIDDict[buffID]
    def FindBuffListByState(self, state):
        ## 查找某种buff状态的buff列表
        if state not in self._buffStateDict:
@@ -639,6 +646,7 @@
        self._skillData = SklllData(ipyData)
        self._skillID = self._skillData.GetSkillID()
        self._skillTypeID = self._skillData.GetSkillTypeID()
        self._cdTime = self._skillData.GetCoolDownTime()
        self._remainTime = 0
        self._batType = 0 # 战斗类型,普通、连击、反击、追击等
        self._tagObjList = [] # 本次技能主要目标列表 [BatObj, ...]
@@ -649,6 +657,7 @@
        self._hurtListEx = [] # 额外伤血列表,如平摊、溅射 [HurtObj, ...]
        self._bySkill = None # 由哪个技能触发的
        self._byBuff = None # 由哪个buff触发的
        self._byTriggerWay = 0 # 由哪个被动方式触发的
        self._afterLogicList = [] # 技能释放后需要处理逻辑 [[logicType, logicParams], ...]
        self._energy = 0 # 技能能量,一般用于累计能量达到某种条件后做逻辑
        
@@ -674,6 +683,7 @@
        self._effIgnoreObjIDList = []
        self._bySkill = None
        self._byBuff = None
        self._byTriggerWay = 0
        self._afterLogicList = []
        self.ClearHurtObj()
        return
@@ -704,7 +714,7 @@
    def GetEffectByID(self, effID, triggerWay=0): return self._skillData.GetEffectByID(effID, triggerWay)
    def GetConnSkill(self): return self._skillData.GetConnSkill()
    def GetCoolDownInit(self): return self._skillData.GetCoolDownInit()
    def GetCoolDownTime(self): return self._skillData.GetCoolDownTime()
    def GetCoolDownTime(self): return self._cdTime
    def GetBuffStateLimit(self): return self._skillData.GetBuffStateLimit()
    def GetCurBuffState(self): return self._skillData.GetCurBuffState()
    def GetLastTime(self): return self._skillData.GetLastTime() # 持续时间
@@ -725,6 +735,8 @@
    def SetBySkill(self, bySkill): self._bySkill = bySkill
    def GetByBuff(self): return self._byBuff
    def SetByBuff(self, byBuff): self._byBuff = byBuff
    def GetByTriggerWay(self): return self._byTriggerWay
    def SetByTriggerWay(self, byTriggerWay): self._byTriggerWay = byTriggerWay
    def GetTagObjList(self): return self._tagObjList # 技能主要目标列表
    def SetTagObjList(self, tagObjList): self._tagObjList = tagObjList
    def GetTagObjListEx(self): return self._tagObjListEx # 技能额外目标列表