From f9bd22b35e55dfd182205756a9d95348e055a957 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期二, 27 十一月 2018 21:53:14 +0800 Subject: [PATCH] 4923 【后端】【1.3】神兵技能--神兵等级差安全防范,模板30增加清除负面技能(减益,持续减益,控制buff)一个 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py | 56 +++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 41 insertions(+), 15 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py index 123a4a1..fde565d 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py @@ -21,6 +21,7 @@ import PlayerControl import IPY_GameWorld import NPCCommon +import GameWorld #------------------------------------------------------------------------------ @@ -30,24 +31,49 @@ if not defender: return - buffType = ChConfig.Def_SkillBuffList.get(curSkill.GetEffect(0).GetEffectValue(0)) - buffTuple = SkillCommon.GetBuffManagerByBuffType(defender, buffType) - if buffTuple == (): - return + if not GameWorld.CanHappen(curSkill.GetHappenRate(), ChConfig.Def_MaxRateValue): + #清除失败也触发CD + return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill) - buffManager = buffTuple[0] - if buffManager.GetBuffCount() == 0: - return + skillType = curSkill.GetEffect(0).GetEffectValue(0) + if skillType == 0: + # 无配置代表清除负面buff任意1个 + skillTypeList = [ + ChConfig.Def_SkillType_LstDepBuff , #持续减益BUFF 4 + ChConfig.Def_SkillType_DepBuff , #减益BUFF 6 + ChConfig.Def_SkillType_Action , #影响行为BUFF 14 + ] + else: + skillTypeList = [skillType] - curBuff = buffManager.GetBuff(0) - ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType() + delSuccess = False - #删除Buff - BuffSkill.DoBuffDisApper(defender, curBuff, tick) - buffSkill = curBuff.GetSkill() - skillID = buffSkill.GetSkillID() - buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID()) - SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType) + for skillType in skillTypeList: + + buffType = ChConfig.Def_SkillBuffList.get(skillType) + buffTuple = SkillCommon.GetBuffManagerByBuffType(defender, buffType) + if buffTuple == (): + continue + + buffManager = buffTuple[0] + if buffManager.GetBuffCount() == 0: + continue + + curBuff = buffManager.GetBuff(0) + ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType() + + #删除Buff + BuffSkill.DoBuffDisApper(defender, curBuff, tick) + buffSkill = curBuff.GetSkill() + skillID = buffSkill.GetSkillID() + buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID()) + SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType) + delSuccess = True + break + + if not delSuccess: + # 没有可清除BUFF也进入CD + return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill) #刷新属性 curObjType = defender.GetGameObjType() -- Gitblit v1.8.0