From bc915a9b717eccef3c8d825f9af79a7596394ac7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期四, 09 五月 2019 11:34:27 +0800
Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py |   91 ++++++++++++++++++++++++++++-----------------
 1 files changed, 56 insertions(+), 35 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 165c6f0..18b1bbb 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
@@ -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)
-        delSuccess = True
-        break
+    # 优先清理指定技能
+    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
+            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
     
\ No newline at end of file

--
Gitblit v1.8.0