From f6e55772b80bf536223e6e949e28fb7b1812a54d Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 19 九月 2025 12:02:36 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(甘夫人潜能1、3;增加使用技能后触发方式9;层级buff属性支持;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py | 33 ++++++++++++++++++++++++--------- 1 files changed, 24 insertions(+), 9 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py index 6203538..433c306 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BattleObj.py @@ -47,7 +47,7 @@ if not connSkillTypeID and connSkill: connSkillTypeID = connSkill.GetSkillTypeID() - if connSkill: + if connSkill and self._batObj.GetID() == connSkill.GetObjID(): skillID = connSkill.GetSkillID() skillManager = self._batObj.GetSkillManager() # 非对象身上的技能,读取本技能被动触发的效果,一般是主技能拆分的子技能 @@ -493,7 +493,8 @@ class PySkill(): - def __init__(self, ipyData): + def __init__(self, ipyData, objID): + self._objID = objID # 该技能谁的 self._skillData = ObjPool.GetPoolMgr().acquire(SklllData, ipyData) self._calcTime = 0 self._remainTime = 0 @@ -518,6 +519,7 @@ self.ClearHurtObj() return + def GetObjID(self): return self._objID def GetSkillID(self): return self._skillData.GetSkillID() def GetSkillTypeID(self): return self._skillData.GetSkillTypeID() def GetSkillLV(self): return self._skillData.GetSkillLV() @@ -622,7 +624,8 @@ class SkillManager(): ## 战斗对象技能管理器 - def __init__(self): + def __init__(self, batObj): + self._batObj = batObj self._skillList = [] # 技能列表 [PySkill, ...] self._skillDict = {} # {skillID:PySkill, ...} return @@ -661,7 +664,7 @@ self.__deleteSkill(curSkill) # 学新技能 - curSkill = ObjPool.GetPoolMgr().acquire(PySkill, ipyData) + curSkill = ObjPool.GetPoolMgr().acquire(PySkill, ipyData, self._batObj.GetID()) self._skillDict[skillID] = curSkill self._skillList.append(curSkill) return curSkill @@ -703,7 +706,7 @@ self._kvDict = {} # 自定义kv字典 self._skillUseCntDict = {} # 技能累计使用次数 {skillID:useCnt, ...} self._skillTurnUseCntDict = {} # 技能单回合累计使用次数 {skillID:useCnt, ...} - self._skillMgr = ObjPool.GetPoolMgr().acquire(SkillManager) + self._skillMgr = ObjPool.GetPoolMgr().acquire(SkillManager, self) self._buffMgr = ObjPool.GetPoolMgr().acquire(BuffManager, self) self._passiveEffMgr = ObjPool.GetPoolMgr().acquire(PassiveEffManager, self) self._lastHurtValue = 0 @@ -723,9 +726,10 @@ self._initAttrDict = initAttrDict self._batAttrDict = {} self._batAttrDict.update(initAttrDict) + self.__onUpdBatAttr() self._skillTempAttrDict = {} - self._xp = initXP - self._hp = initAttrDict.get(ChConfig.AttrID_MaxHP, 1) + self.SetXP(initXP, False) + self.SetHPFull(False) TurnBuff.RefreshBuffAttr(self) TurnPassive.RefreshPassive(self) return @@ -749,6 +753,7 @@ def ResetBattleEffect(self): self._batAttrDict = {} self._batAttrDict.update(self._initAttrDict) + self.__onUpdBatAttr() return self._batAttrDict def GetTFGUID(self): return self.tfGUID # 所属的某场战斗 @@ -853,14 +858,16 @@ def SetDead(self): self._isAlive = False self._hp = 0 - def GetMaxHP(self): return self._batAttrDict.get(ChConfig.AttrID_MaxHP, 0) + def GetMaxHP(self): return int(self._batAttrDict.get(ChConfig.AttrID_MaxHP, 0)) def SetMaxHP(self, maxHP, isNotify=False): + maxHP = int(maxHP) self._batAttrDict[ChConfig.AttrID_MaxHP] = maxHP if isNotify: NotifyObjInfoRefresh(self, ChConfig.AttrID_MaxHP, maxHP) return def GetHP(self): return self._hp def SetHP(self, hp, isNotify=False): + hp = int(hp) self._hp = hp if isNotify: NotifyObjInfoRefresh(self, ChConfig.AttrID_HP, hp) @@ -868,6 +875,7 @@ def SetHPFull(self, isNotify=True): self.SetHP(self.GetMaxHP(), isNotify) def GetXP(self): return self._xp def SetXP(self, xp, isNotify=True): + xp = int(xp) self._xp = xp if isNotify: NotifyObjInfoRefresh(self, ChConfig.AttrID_XP, xp) @@ -883,7 +891,14 @@ value += self._skillTempAttrDict[attrID] # 支持正负值 #value = max(1, value) return value - def SetBatAttrValue(self, attrID, value): self._batAttrDict[attrID] = value + def SetBatAttrValue(self, attrID, value): + self._batAttrDict[attrID] = value + self.__onUpdBatAttr() + return + def __onUpdBatAttr(self): + for attrID in [ChConfig.AttrID_MaxHP]: + self._batAttrDict[attrID] = int(self._batAttrDict.get(attrID, 0)) + return def AddSkillTempAttr(self, attrID, value): ## 增加技能临时属性,支持正负值 # @param value: 正值-加属性;负值-减属性 -- Gitblit v1.8.0