From ff48a24b8da42998da61b4ff4000e758d8d1b041 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 27 一月 2021 11:18:52 +0800
Subject: [PATCH] 8710 【开发】【主干】【BT2】根据世界等级配置奖励(成长必买改为通知对应不同世界等级的物品信息);
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_30.py | 106 ++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 76 insertions(+), 30 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..cfce1bf 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
#------------------------------------------------------------------------------
@@ -29,25 +30,39 @@
def UseSkill(attacker, defender, curSkill, tagRoundPosX, tagRoundPosY, isEnhanceSkill, tick):
if not defender:
return
+ if not GameWorld.CanHappen(curSkill.GetHappenRate(), ChConfig.Def_MaxRateValue):
+ #清除失败也触发CD
+ return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
- buffType = ChConfig.Def_SkillBuffList.get(curSkill.GetEffect(0).GetEffectValue(0))
- buffTuple = SkillCommon.GetBuffManagerByBuffType(defender, buffType)
- if buffTuple == ():
- return
-
- buffManager = buffTuple[0]
- if buffManager.GetBuffCount() == 0:
- return
-
- 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 = False
+ # 优先清理指定技能
+ mark = curSkill.GetEffect(0).GetEffectValue(1)
+ theSkillID = mark if mark > 10 else 0
+ cleanCnt = mark if 0< mark <= 10 else 1
+ if theSkillID:
+ if not curSkill.GetEffect(0).GetEffectValue(2):
+ findBuff, buffManager, buffType, buffSkill = SkillCommon.FindBuffByID(defender, theSkillID)
+ else:
+ findBuff, buffManager, buffType, buffSkill = SkillCommon.FindBuffByOwnerEx(defender, theSkillID, attacker.GetID(), attacker.GetGameObjType())
+ if findBuff:
+ ownerID, ownerType = findBuff.GetOwnerID(), findBuff.GetOwnerType()
+
+ #删除Buff
+ BuffSkill.DoBuffDisApperEx(defender, findBuff, tick)
+ skillID = buffSkill.GetSkillID()
+ buffManager.DeleteBuffByTypeID(buffSkill.GetSkillTypeID())
+ SkillShell.ClearBuffEffectBySkillID(defender, skillID, ownerID, ownerType)
+ delSuccess = True
+ else:
+ # 某类技能中的一个
+ for _ in range(cleanCnt):
+ delResult = ClearBySkillType(curSkill, defender, tick)
+ if delResult:
+ delSuccess = True
+
+ if not delSuccess:
+ # 没有可清除BUFF也进入CD
+ return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
#刷新属性
curObjType = defender.GetGameObjType()
@@ -56,23 +71,54 @@
#刷新玩家属性
playerControl = PlayerControl.PlayerControl(defender)
- if buffType == IPY_GameWorld.bfActionBuff:
- playerControl.RefreshPlayerActionState()
- if BuffSkill.CheckBuffRefresh(buffSkill, False):
- playerControl.RefreshPlayerAttrByBuff()
- else:
- playerControl.RefreshPlayerAttrByBuff()
+ playerControl.RefreshPlayerActionState()
+ playerControl.RefreshPlayerAttrByBuff()
#NPC
elif curObjType == IPY_GameWorld.gotNPC:
npcControl = NPCCommon.NPCControl(defender)
- if buffType == IPY_GameWorld.bfActionBuff:
- npcControl.RefreshNPCActionState()
- if BuffSkill.CheckBuffRefresh(buffSkill, False):
- npcControl.RefreshNPCAttrState()
- else:
- npcControl.RefreshNPCAttrState()
+ npcControl.RefreshNPCActionState()
+ npcControl.RefreshNPCAttrState()
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
+
+ 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
\ No newline at end of file
--
Gitblit v1.8.0