From fc0477a43ec7ad1536a15efd2f229b140ba33fc7 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期六, 25 五月 2019 16:53:05 +0800
Subject: [PATCH] 6942 【后端】视野层级设计

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py |   39 +++++++++++++++++++++++++++++++++++----
 1 files changed, 35 insertions(+), 4 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 c98bdaa..e021870 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)
     
@@ -47,14 +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)
-    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
     
-    
\ No newline at end of file
+
+# 大于等于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