From 74ba276f01c50ea8cd757a136cd6474777b45c17 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 24 五月 2021 15:21:57 +0800
Subject: [PATCH] 8585 【港台】【BT】【长尾】【后端】竞技场(主干功能ID从189改为195,与bt2一致)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py |   44 +++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py
index 9f93f20..aa713fe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py
@@ -27,7 +27,7 @@
 ## 添加BUFF后的逻辑
 #  @param None
 #  @return None
-def DoAddBuffOver(curObj, addBuff, curEffect, tick):
+def DoAddBuffOver(curObj, addBuff, curEffect, tick, buffOwner):
     stateType = curEffect.GetEffectValue(0)
     GameObj.SetPyPlayerState(curObj, stateType, 1)
     
@@ -36,7 +36,7 @@
     
     buffOwner = SkillCommon.GetBuffOwner(addBuff)
     if buffOwner:
-        PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, None, ChConfig.TriggerType_BuffState, tick)
+        PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, None, ChConfig.TriggerType_TagBuffState, tick)
     
     return
 
@@ -47,7 +47,45 @@
 def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):
 
     stateType = curEffect.GetEffectValue(0)
-    GameObj.SetPyPlayerState(curObj, stateType, 0)
+    if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType):
+        GameObj.SetPyPlayerState(curObj, stateType, 0)
+        GameWorld.DebugLog("取消影响玩家状态效果---%s - %s"%(curObj.GetID(), stateType))
     return
     
     
+def OnBuffDisappearEx(curObj, curSkill, curBuff, curEffect, tick):
+
+    stateType = curEffect.GetEffectValue(0)
+    if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType):
+        GameObj.SetPyPlayerState(curObj, stateType, 0)
+        GameWorld.DebugLog("取消影响玩家状态效果---%s - %s"%(curObj.GetID(), stateType))
+    return
+    
+
+# 大于等于2个状态 则不清理状态
+def CanDelStateEffect(curObj, effectID, stateType):
+    cnt = 0
+    for buffType in xrange(IPY_GameWorld.bfBuff, IPY_GameWorld.btBufMax):
+        if buffType in ChConfig.Def_BuffType_OnlyPlayer:
+            continue
+        
+        buffTuple = SkillCommon.GetBuffManagerByBuffType(curObj, buffType)
+        #通过类型获取目标的buff管理器为空,则跳出
+        if buffTuple == ():
+            continue
+    
+        buffManager = buffTuple[0]
+        
+        for i in range(buffManager.GetEffectCount()):
+            effect = buffManager.GetEffect(i)
+            if not effect:
+                continue
+            if effect.GetEffectID() != effectID:
+                continue
+            
+            if effect.GetEffectValue(0) == stateType:
+                cnt += 1
+            if cnt >= 2:
+                return False
+        
+    return True

--
Gitblit v1.8.0