From 6551123a8a4a9c55380ebf4dff41c9d3bdbb2c47 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 15 四月 2019 17:10:07 +0800
Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(分流地图配置)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py |   54 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 49 insertions(+), 5 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
index 74463eb..493b90b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -18,13 +18,13 @@
 import GameBuffs
 import ChConfig
 import FBLogic
-import ReadChConfig
 import SkillShell
 import PassiveBuffEffMng
 import ChNetSendPack
 import PlayerTJG
 import OperControlManager
 import GameObj
+import CrossPlayerData
 #---------------------------------------------------------------------
 
 #---------------------------------------------------------------------
@@ -156,6 +156,9 @@
     #用于BUFF满的时候处理刷新逻辑
     isDelRefresh = False
     
+    # 向跨服发送数据
+    CrossPlayerData.SendMergeData_Buff(curObj, curSkillID, plusValueList)
+    
     # buff层级
     layerMaxCnt = 0
     layerCalc = 0
@@ -190,8 +193,8 @@
         
         if buffReplaceType == ChConfig.Def_Buff_Replace_Better:
             if buffSkillLV > curSkillLV:
-                # 只取最好的
-                continue
+                # 只取最好的, 不可加直接退出
+                return False
         
         resultTime = -1 #不改变时间的情况
         if buffRepeatTimeType == ChConfig.Def_BuffTime_Reset:
@@ -216,10 +219,10 @@
                         curBuff.SetLayer(curLayerCnt + 1)
                         #BUFF层级变化触发被动
                         if buffOwner:
-                            curObj.SetDict("addBuffLayer", curBuff.GetLayer())
+                            curObj.SetDict(ChConfig.Def_PlayerKey_AddBuffLayer, curBuff.GetLayer())
                             PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddLayer, tick)
                             PassiveBuffEffMng.OnPassiveBuffTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddLayer, tick)
-                            curObj.SetDict("addBuffLayer", 0)
+                            curObj.SetDict(ChConfig.Def_PlayerKey_AddBuffLayer, 0)
                     else:
                         curBuff.SetLayer(layerMaxCnt)
                     changeLayer = True
@@ -729,6 +732,47 @@
     if passiveEff:
         passiveEff.DelBuffInfo(skillData)
     return
+
+
+#---------------------------------------------------------------------
+## 执行buff消失触发逻辑,不处理buff的功能逻辑,只处理需要的必须状态逻辑
+#  如不处理buff的 伤害,爆炸等,但必须处理恢复眩晕状态等
+def DoBuffDisApperEx( curObj, curBuff, tick ):
+    #这个函数里面不能做Buff添加和删除逻辑!!!!!不然指针会错乱
+    curSkill = curBuff.GetSkill()
+
+    skillData = GameWorld.GetGameData().GetSkillBySkillID(curSkill.GetSkillID())
+    
+    #是否是持续性技能
+    isLstSkill = curSkill.GetSkillType() in ChConfig.Def_LstBuff_List
+    
+    PassiveBuffEffMng.OnPassiveSkillTrigger(curObj, None, curSkill, ChConfig.TriggerType_BuffDisappear, tick)
+    
+    #buff消失的触发
+    for effectIndex in range( 0, curSkill.GetEffectCount() ):
+        curEffect = curSkill.GetEffect( effectIndex )
+        effectID = curEffect.GetEffectID()
+        
+        if not effectID:
+            continue
+        
+        if isLstSkill:
+            callFunc = GameWorld.GetExecFunc( GameBuffs, "BuffProcess_%d.%s"%( effectID, "OnBuffDisappearEx") )
+            if not callFunc:
+                callFunc = GameWorld.GetExecFunc( GameBuffs, "Buff_%d.%s"%( effectID, "OnBuffDisappearEx") )
+        else:        
+            callFunc = GameWorld.GetExecFunc( GameBuffs, "Buff_%d.%s"%( effectID, "OnBuffDisappearEx") )
+        
+        if not callFunc:
+            continue
+        
+        callFunc( curObj, curSkill, curBuff, curEffect, tick )
+            
+    passiveEff = PassiveBuffEffMng.GetPassiveEffManager().GetPassiveEff(curObj)
+    if passiveEff:
+        passiveEff.DelBuffInfo(skillData)
+    return
+
 #---------------------------------------------------------------------
 ## buff消失
 #  @param curObj 当前目标

--
Gitblit v1.8.0