hch
2019-05-09 bc915a9b717eccef3c8d825f9af79a7596394ac7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py
@@ -35,43 +35,24 @@
        #清除失败也触发CD
        return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
    
    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]
    delSuccess = False
    buffSkill = None
    buffType = 0
    
    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.DoBuffDisApperEx(defender, curBuff, tick)
        buffSkill = curBuff.GetSkill()
        if not buffSkill:
            continue
        skillID = buffSkill.GetSkillID()
        buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID())
        SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType)
    # 优先清理指定技能
    theSkillID = curSkill.GetEffect(0).GetEffectValue(1)
    if theSkillID:
        if curSkill.GetEffect(0).GetEffectValue(1):
            findBuff = SkillCommon.FindBuffByID(defender, theSkillID)
        else:
            findBuff = SkillCommon.FindBuffByOwner(defender, theSkillID, attacker.GetID(), attacker.GetGameObjType())
        if findBuff:
        delSuccess = True
        break
            buffSkill = findBuff.GetSkill()
            buffType = ChConfig.Def_SkillBuffList.get(buffSkill.GetSkillType())
    else:
        # 某类技能中的一个
        delSuccess, buffSkill, buffType = ClearBySkillType(curSkill, defender, tick)
    
    if not delSuccess:
        # 没有可清除BUFF也进入CD
@@ -103,4 +84,44 @@
        
    return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
def ClearBySkillType(curSkill, defender, tick):
    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]
    delSuccess = False
    buffSkill = None
    buffType = 0
    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.DoBuffDisApperEx(defender, curBuff, tick)
        buffSkill = curBuff.GetSkill()
        if not buffSkill:
            continue
        skillID = buffSkill.GetSkillID()
        buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID())
        SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType)
        delSuccess = True
        break
    return delSuccess, buffSkill, buffType