From 552251b8776bb04709b5d3fca1e26238369e3366 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 05 十一月 2019 18:50:11 +0800
Subject: [PATCH] 8321 【主干】【后端】GM工具优化(查询排行榜展示优化)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py |   52 +++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 35 insertions(+), 17 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 88f9e7d..cf93871 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -25,6 +25,7 @@
 import OperControlManager
 import GameObj
 import CrossPlayerData
+import AttackCommon
 #---------------------------------------------------------------------
 
 #---------------------------------------------------------------------
@@ -51,6 +52,8 @@
     and SkillCommon.GetSkillBattleType(curSkill) == ChConfig.Def_BattleRelationType_CommNoBoss:
         # 释放后 对指定BOSS无效的技能
         return True
+    
+    buffOwner = AttackCommon.ElfChangeAttacker(buffOwner)  # Elf灵为替身攻击,要取玩家的属性
     
     result = AddBuffNoRefreshState(curObj, buffType, curSkill, tick, addBuffValueList, buffOwner, addForce)
     
@@ -123,7 +126,7 @@
     if not SkillCommon.IsBuff(curSkill):
         GameWorld.ErrLog("%s 不能加这个buff, 因为它是攻击技能! %s-->TypeID = %d"%(curObj.GetName(), curSkill.GetSkillName(), curSkill.GetSkillType()))
         return False
-    
+
     buffTuple = SkillCommon.GetBuffManagerByBuffType( curObj, buffType )
     #通过类型获取目标的buff管理器为空,则跳出
     if buffTuple == ():
@@ -229,14 +232,13 @@
                 changeLayer = True
                     
             # Def_Buff_Replace_New和Def_Buff_Recharge 均可走到此逻辑
-            __BuffCanRemain(buffState, curBuff, i, resultTime, plusValueList, buffOwner)
-            # 此处考虑下plusValue变强是否刷属性
-            #DoAddBuffOver(curObj, curSkill, addBuff, tick)
+            __BuffCanRemain(curObj, buffState, curBuff, i, resultTime, plusValueList, buffOwner)
+
             return changeLayer
         else:
             if buffReplaceType == ChConfig.Def_Buff_Recharge:
                 # 充能型
-                __BuffCanRemain(buffState, curBuff, i, resultTime, plusValueList, buffOwner)
+                __BuffCanRemain(curObj, buffState, curBuff, i, resultTime, plusValueList, buffOwner)
                 return
             
             processInterval = curBuff.GetProcessInterval()
@@ -378,7 +380,7 @@
         if triggerType == -1:
             continue
         passiveEff = PassiveBuffEffMng.GetPassiveEffManager().InitObjPassiveEff(curObj)
-        passiveEff.AddBuffInfoByEffect(curEffect, skillID)
+        passiveEff.AddBuffInfoByEffect(curEffect, skillID, onwerID, onwerType)
 
         
     #添加BUFF后的特殊处理
@@ -408,7 +410,11 @@
     #触发被动技能
     if buffOwner:
         PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddBuffOver, tick)
-    
+        # 此处不能传技能curSkill 屏蔽被动触发被动限制
+        # 暂且特殊处理控制类buff才触发
+        if SkillCommon.GetBuffType(curSkill) == IPY_GameWorld.bfActionBuff:
+            PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(curObj, buffOwner, curSkill, ChConfig.TriggerType_AddBuffOver, False)
+        
     #是否是持续性技能
     isLstSkill = curSkill.GetSkillType() in ChConfig.Def_LstBuff_List
     
@@ -430,7 +436,7 @@
         if not callFunc:
             continue
         
-        callFunc(curObj, addBuff, curEffect, tick)
+        callFunc(curObj, addBuff, curEffect, tick, buffOwner)
     
     return
 
@@ -538,14 +544,15 @@
 #  @param tick 当前时间
 #  @return None
 #  @remarks 函数详细说明.
-def __BuffCanRemain(buffState, curBuff, buffIndex, resultTime, plusValueList, buffOwner):
+def __BuffCanRemain(curObj, buffState, curBuff, buffIndex, resultTime, plusValueList, buffOwner):
     if resultTime != -1:
         curBuff.SetRemainTime(resultTime)
     #重置buff总值
     __SetBuffValue(curBuff , plusValueList , buffOwner)
 
     buffState.Sync_RefreshBuff(buffIndex, curBuff.GetRemainTime())
-        
+    
+    DoAddBuffOver(curObj, curBuff.GetSkill(), curBuff, buffOwner, GameWorld.GetGameWorld().GetTick())  
     return
 
 #---------------------------------------------------------------------
@@ -568,6 +575,8 @@
         return curBuff, i
     
     return None, 0
+
+
 #---------------------------------------------------------------------
 ## 刷新BUFF的时间
 #  @param curBuff 当前BUFF
@@ -685,9 +694,12 @@
         SkillShell.ClearBuffEffectBySkillID(curObj, curSkill.GetSkillID(), ownerID, ownerType)
         
         addSkillID = curObj.GetDictByKey(ChConfig.Def_PlayerKey_SkillInDelBuff) 
-        if addSkillID and addSkillID not in skillIDListInDelBuff:
-            skillIDListInDelBuff.append(addSkillID)
-        
+        if addSkillID:
+            skillInfo = [addSkillID, ownerID, ownerType]
+            if skillInfo not in skillIDListInDelBuff:
+                skillIDListInDelBuff.append(skillInfo)
+            curObj.SetDict(ChConfig.Def_PlayerKey_SkillInDelBuff, 0) 
+            
     OnSkillAfterBuffDisappear(curObj, skillIDListInDelBuff, tick)
     
     #执行DoBuffDisApper中,标记的玩家处理要求
@@ -699,12 +711,15 @@
 # DoBuffDisApper不能做Buff添加和删除逻辑!!!!!不然指针会错乱, 故在外层处理
 def OnSkillAfterBuffDisappear(curObj, skillIDListInDelBuff, tick):
     posX, posY = curObj.GetPosX(), curObj.GetPosY()
-    for skillID in skillIDListInDelBuff:
-        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
+    for skillInfo in skillIDListInDelBuff:
+        attacker = GameWorld.GetObj(skillInfo[1], skillInfo[2])
+        if not attacker:
+            attacker = curObj
+        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillInfo[0])
         if not skillData:
             continue
         
-        SkillShell.Trigger_UseSkill(curObj, curObj, skillData, tick, posX, posY)
+        SkillShell.Trigger_UseSkill(attacker, curObj, skillData, tick, posX, posY)
     return
 
 #---------------------------------------------------------------------
@@ -987,7 +1002,10 @@
 
 def PYSync_RefreshBuff(gameObj, curBuff, buffType, notifyAll=True, owner = None):
     sendPack = ChNetSendPack.tagObjAddBuff()
-
+    if not curBuff:
+        return
+    if not curBuff.GetSkill():
+        return
     sendPack.ObjType = gameObj.GetGameObjType()
     sendPack.ObjID = gameObj.GetID();
     sendPack.SkillID = curBuff.GetSkill().GetSkillID();

--
Gitblit v1.8.0