From 1388ea949201a3fedc71f39c671cacb7389df8a3 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期二, 18 六月 2019 21:58:09 +0800 Subject: [PATCH] 7338 子 【开发】【2.0】称号,灵宠,技能附带效果 / 【后端】【2.0】新增技能 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 44 insertions(+), 1 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py index 813cca8..8b11b82 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py @@ -177,6 +177,11 @@ ChConfig.Def_PDictType_GFPassive) if findSkillID == 0: continue + + passiveEff = GetPassiveEffManager().GetPassiveEff(curPlayer) + if passiveEff: + findSkillID = passiveEff.ChangeSkillTypeID(findSkillID) + skills.append(findSkillID) return skills @@ -393,6 +398,7 @@ 4106:ChConfig.TriggerType_AddHP, # 技能回血 84 4107:ChConfig.TriggerType_SkillValue, # 增加技能伤害固定值 82 4108:ChConfig.TriggerType_SkillSuccess, # 使用技能成功后不触发技能 处理消耗等问题用 87 + 4109:ChConfig.TriggerType_SkillValue, # 增加技能伤害固定值 82 } return tdict.get(effectID, -1) #=========================================================================== @@ -474,6 +480,9 @@ self.AffectDogzSkillDict = {} # 神兽助战技能 self.AffectSuperEquipSkillDict = {} # 特殊装备持有技能,相同技能不重复,数值增长性衰减, 触发使用 self.AffectSuperEquipEffectCntDict = {} # 特殊装备技能效果对应的已计算后的数值,直接调用 + + self.ChangeSkill = {} # 改变释放的技能ID,方便处理特效动作表现等问题 {原SkillTypeID: 改变后的SkillTypeID} + self.IsChangeSkill = False # 当前是否刷新技能替换 #记录会影响其他技能或者被动触发释放技能的BUFF def AddBuffInfoByEffect(self, effect, skillID, onwerID, onwerType): @@ -635,10 +644,26 @@ return self.AffectPassiveSkillSetDict + # 改变技能ID的处理, 先存储释放的时候替换, 并且不登记到被动触发 + def ChangeSkillTypeIDDict(self, curSkill): + hasEffect = SkillCommon.GetSkillEffectByEffectID(curSkill, ChConfig.Def_Skill_Effect_ChangeSkillTypeID) + if not hasEffect: + return + self.ChangeSkill[hasEffect.GetEffectValue(0)] = curSkill.GetSkillTypeID() + + self.IsChangeSkill = True + GameWorld.DebugLog("self.ChangeSkill --- %s"%self.ChangeSkill) + return True + + # 真实替换技能ID + def ChangeSkillTypeID(self, skillID): + return self.ChangeSkill.get(skillID, skillID) + # 重刷被动型技能(含sp,天赋,不含被动技能功能)存储 def RefreshPassiveSkill(self): self.AffectSkillDict = {} + self.ChangeSkill = {} skillManager = self.gameObj.GetSkillManager() for i in range(0 , skillManager.GetSkillCount()): curSkill = skillManager.GetSkillByIndex(i) @@ -651,6 +676,10 @@ if curSkill.GetFuncType() in [ChConfig.Def_SkillFuncType_FbPassiveSkill, ChConfig.Def_SkillFuncType_Dogz]: # 被动技能和神兽需设置才有效 + continue + + # 改变技能ID的处理 + if self.ChangeSkillTypeIDDict(curSkill): continue skillTypeID = curSkill.GetSkillTypeID() @@ -776,9 +805,19 @@ return self.AddPassiveEff(gameObj, passiveEff) elif skillID: + curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID) + if curSkill and passiveEff.ChangeSkillTypeIDDict(curSkill): + # 替换技能不添加 + return + # 单个添加被动技能 passiveEff.AddPassiveSkill(skillID) - + + if passiveEff.IsChangeSkill: + GameWorld.DebugLog("刷被动----") + # 存在替换技能 目前需要刷新镶嵌的被动技能,存在多刷现象 + self.RegistPassiveEffSet(gameObj) + return True return # 人物需同步注册被动技能 @@ -1632,6 +1671,10 @@ # 如灼烧是被动技能 但可以被不断的强化 if useSkill.GetSkillType() != ChConfig.Def_SkillType_PassiveLstDepBuff: return False + + if useSkill.GetFuncType() == ChConfig.Def_SkillFuncType_PassiveSkillWithSP: + # 有专精的被动技能,可以再次触发被动效果 + return False return True -- Gitblit v1.8.0