From 3432170bf134002130d01f905fe4abe67957a10e Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 29 四月 2019 17:50:28 +0800
Subject: [PATCH] 6603 【后端】【2.0】增加新版的sp和被动技能 - 优化灼烧, 模板44修复通知对象

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py                    |   17 +-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1303.py           |   52 ++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py  |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4533.py  |   44 +++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_44.py     |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4082.py |   11 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py     |   10 -
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_1011.py  |   48 ++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py    |   15 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py             |    7 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py                     |    8 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_901.py     |   62 ++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_902.py     |   62 ++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                            |   13 +
 14 files changed, 325 insertions(+), 28 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
index 3b8bb8a..d47f3b6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py
@@ -2080,7 +2080,7 @@
         thumpPer = 0
         thumpPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddThumpHitPer)
         thumpPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AddThumpHitPer)
-        aSuperHit = aSuperHit*(thumpPer + 10000)/10000
+        aSuperHit = aSuperHit*(thumpPer + ChConfig.Def_MaxRateValue)/ChConfig.Def_MaxRateValue
         
     dDamChanceDef = hurtTypeResultDict[ChConfig.Def_HurtType_Parry][2] # 抵御, 大于0代表触发抵御效果
     isZhuxianHit, aZhuxianHurtPer, dZhuxianReducePer = hurtTypeResultDict[ChConfig.Def_HurtType_Zhuxian] # 诛仙一击
@@ -2111,13 +2111,9 @@
     #  atkSkillPer 包含普攻,所以不是用技能增强处理
     atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
     atkSkillPer += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_AttackAddSkillPer)
-    if hurtType == ChConfig.Def_HurtType_SuperHit:
-        atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitAddSkillPer)
     
-    
-    if isSuperHit:
-        addASuperHit = PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitValue)
-        aSuperHit = aSuperHit*(ChConfig.Def_MaxRateValue + addASuperHit)*1.0/ChConfig.Def_MaxRateValue
+    if isSuperHit and hurtType == ChConfig.Def_HurtType_SuperHit:
+        aSuperHit += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitValue)
 
         # 暴击增加技能伤害
         atkSkillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSkillPer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index cff6e8b..dd01531 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -62,9 +62,14 @@
 (
 Def_Buff_Replace_Better,    # 相同typeid取最高,如果新的是低级的则不处理
 Def_Buff_Replace_New,       # 相同typeid替换最新,即使是低级的
-Def_Buff_Coexist,           # 不同的释放者可共存
 Def_Buff_Recharge,        # 若同类型buff存在不管等级高低,只给原buff充能只改变值或时间
-) = range(4)
+) = range(3)
+
+# CanRepeatTime字段百位数,同一个释放者只能存在同一个技能buff,不同释放者根据情况而定
+(
+Def_Buff_Coexist,  # 不同的释放者可共存,默认可同时存在
+Def_Buff_NoCoexist,  # 不同的释放者亦不可共存,假设战士给别人加攻击buff,A战士加1级攻击BUFF,B战士加2级攻击BUFF,那么只能存在一个高级的2级攻击BUFF
+) = range(2)
 
 Def_BuffValue_Count = 3     # buff记录的value个数
 
@@ -4464,8 +4469,8 @@
 TriggerType_BounceHPPerByAttacker,   # 反弹伤害百分比值, 由攻击方决定 77
 TriggerType_NoControl,   # 使关联技能不受控制 78
 TriggerType_SuperHitSuckBloodPer,   # 暴击百分比吸血, 79
-TriggerType_SuperHitAddSkillPer,    # 暴击增加技能伤害 80
-TriggerType_BurnPer,    # 灼烧伤害百分比 81
+TriggerType_BurnPer,    # 灼烧伤害百分比 80
+TriggerType_BurnDisappear,    # 灼烧消失触发 81
 ) = range(1, 82)
 
 
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 338b59f..76cd193 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -88,6 +88,10 @@
 def GetBuffReplaceType(curSkill):
     return curSkill.GetCanRepeatTime()/10
 
+# buff根据释放者不同判断是否共存buff,百位数 Def_Buff_NoCoexist 
+def GetBuffCoexistType(curSkill):
+    return curSkill.GetCanRepeatTime()/10%10
+
 def GetBuffMaxLayer(curSkill):
     layerMaxCnt = 0
     hasEffect = SkillCommon.GetSkillEffectByEffectID(curSkill, ChConfig.Def_Skill_Effect_LayerCnt)
@@ -148,6 +152,8 @@
     curSkillLV = curSkill.GetSkillLV()
     #替换模式
     buffReplaceType = GetBuffReplaceType(curSkill)
+    #共存模式 
+    buffCoexistType = GetBuffCoexistType(curSkill)
     #时间处理类型
     buffRepeatTimeType = GetBuffRepeatTimeType(curSkill) 
     #用于BUFF满的时候处理刷新逻辑
@@ -176,7 +182,7 @@
         if buffSkill.GetSkillTypeID() != curSkillTypeID:
             continue
         
-        if buffReplaceType == ChConfig.Def_Buff_Coexist and buffOwner:
+        if buffCoexistType == ChConfig.Def_Buff_Coexist and buffOwner:
             #可同时存在的buff,判断释放者是否不一样
             if buffSkill.GetOwnerID() != buffOwner.GetID() or buffSkill.GetOwnerType() != buffOwner.GetGameObjType():
                 continue
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
index 8bec96a..2f97d82 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
@@ -5,6 +5,7 @@
 #
 # @todo: 灼烧(流派专用,额外公式), 持续过程中可能会被改变伤害或者持续时长,无法用次数控制,无层级概念
 #        若同类型buff存在不管等级高低,只给原buff充能只改变值或时间
+#        不同释放者可共存多个灼烧
 # @author: Alee
 # @date 2019-4-28 下午04:12:17
 # @version 1.0
@@ -20,6 +21,7 @@
 import AttackCommon
 import PlayerControl
 import PassiveBuffEffMng
+import GameObj
 #---------------------------------------------------------------------
 #全局变量
 #---------------------------------------------------------------------
@@ -58,3 +60,16 @@
     
     return [hurtValue]
 
+def OnBuffDisappear(defender, curSkill, curBuff, curEffect, tick):
+    #已经死亡不触发
+    if GameObj.GetHP(defender) <= 0:
+        return
+    
+    # 在防御者身上同时取消同一个释放者的相关buff
+    defender.SetDict("burnOwnerID", curBuff.GetOwnerID())
+    
+    PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(defender, None, None, ChConfig.TriggerType_BurnDisappear)
+    
+    defender.SetDict("burnOwnerID", 0)
+    return
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_901.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_901.py
new file mode 100644
index 0000000..f76e44b
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_901.py
@@ -0,0 +1,62 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 持续减益根据值加成,百分比(非线性)
+#
+# @author: Alee
+# @date 2019-4-29 下午02:32:15
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+#导入
+import PlayerControl
+import NPCCommon
+import IPY_GameWorld
+import GameWorld
+import ChConfig
+#---------------------------------------------------------------------
+#全局变量
+#---------------------------------------------------------------------
+
+#---------------------------------------------------------------------
+def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
+    
+    attrType = curEffect.GetEffectValue(0)
+    value = curEffect.GetEffectValue(1)*curBuff.GetValue()
+    calcDict[attrType] = calcDict.get(attrType, 0) - value
+        
+    return 
+
+
+## 返回buff类型,线性与否
+#  @param 
+#  @return None
+#  @remarks 函数详细说明.  
+def GetCalcType():
+    return ChConfig.TYPE_NoLinear
+
+def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
+    # 触发加成 属性刷新
+    value = curBuff.GetValue()
+    if value >= curEffect.GetEffectValue(2):
+        return
+    
+    curBuff.SetValue(value+1)
+    #刷新属性
+    curObjType = defender.GetGameObjType()
+    #玩家
+    if curObjType == IPY_GameWorld.gotPlayer:
+        #刷新玩家属性
+        playerControl = PlayerControl.PlayerControl(defender)
+        #playerControl.CalcPassiveBuffAttr()
+        playerControl.RefreshPlayerAttrByBuff()
+    #NPC
+    elif curObjType == IPY_GameWorld.gotNPC:
+        npcControl = NPCCommon.NPCControl(defender)
+        npcControl.RefreshNPCAttrState()
+    return
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_902.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_902.py
new file mode 100644
index 0000000..8d448aa
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_902.py
@@ -0,0 +1,62 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 持续减益根据值加成,减法(线性)
+#
+# @author: Alee
+# @date 2019-4-29 下午02:32:15
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+#导入
+import PlayerControl
+import NPCCommon
+import IPY_GameWorld
+import GameWorld
+import ChConfig
+#---------------------------------------------------------------------
+#全局变量
+#---------------------------------------------------------------------
+
+#---------------------------------------------------------------------
+def OnCalcBuffEx(defender, curEffect, calcDict, curBuff):
+    
+    attrType = curEffect.GetEffectValue(0)
+    value = curEffect.GetEffectValue(1)*curBuff.GetValue()
+    calcDict[attrType] = calcDict.get(attrType, 0) - value
+        
+    return 
+
+
+## 返回buff类型,线性与否
+#  @param 
+#  @return None
+#  @remarks 函数详细说明.  
+def GetCalcType():
+    return ChConfig.TYPE_Linear
+
+def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
+    # 触发加成 属性刷新
+    value = curBuff.GetValue()
+    if value >= curEffect.GetEffectValue(2):
+        return
+    
+    curBuff.SetValue(value+1)
+    #刷新属性
+    curObjType = defender.GetGameObjType()
+    #玩家
+    if curObjType == IPY_GameWorld.gotPlayer:
+        #刷新玩家属性
+        playerControl = PlayerControl.PlayerControl(defender)
+        #playerControl.CalcPassiveBuffAttr()
+        playerControl.RefreshPlayerAttrByBuff()
+    #NPC
+    elif curObjType == IPY_GameWorld.gotNPC:
+        npcControl = NPCCommon.NPCControl(defender)
+        npcControl.RefreshNPCAttrState()
+    return
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1303.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1303.py
new file mode 100644
index 0000000..5b7939b
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_1303.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: buff自然消失后触发指定技能(放第一个效果ID)
+#
+# @author: Alee
+# @date 2019-4-29 下午03:59:40
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+
+import GameWorld
+import ChConfig
+import GameObj
+import SkillShell
+
+
+
+def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
+    return [GameWorld.GetGameWorld().GetTick()]
+
+def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick):
+    if tick - curBuff.GetValue() < curSkill.GetLastTime():
+        return
+    
+    if curEffect.GetEffectValue(1):
+        if not GameObj.GetPyPlayerState(defender, pyPlayerState):
+            return False
+    
+    boomValue = curBuff.GetValue()
+    # 剩余护盾值用于爆炸
+    if boomValue == 0:
+        return
+    
+    boomValue = int(boomValue*float(curEffect.GetEffectValue(1))/ChConfig.Def_MaxRateValue)
+    #效果值 第三个值为技能ID
+    boomID = curEffect.GetEffectValue(2)
+    skillData = GameWorld.GetGameData().GetSkillBySkillID(boomID)
+    if not skillData:
+        return
+    
+    # 存储起来用于伤害
+    curObj.SetDict(ChConfig.Def_PlayerKey_MoreHurtValue, boomValue)
+    
+    SkillShell.Trigger_UseSkill(curObj, None, skillData, tick, curObj.GetPosX(), curObj.GetPosY())
+    curObj.SetDict(ChConfig.Def_PlayerKey_MoreHurtValue, 0)
+
+    return
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_44.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_44.py
index 1a25054..a5f8cff 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_44.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_44.py
@@ -27,6 +27,6 @@
     if not curPlayerSkill:
         return
     curPlayerSkill.SetRemainTime(0)
-    curSkill.Sync_Skill()
+    curPlayerSkill.Sync_Skill()
     #处理技能触发和攻击成功逻辑
     return BaseAttack.DoSkillEx_AttackSucess(attacker, defender, curSkill, tick, isEnhanceSkill)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_1011.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_1011.py
new file mode 100644
index 0000000..48d586b
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_1011.py
@@ -0,0 +1,48 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+# @todo: buff攻击减层 1011 添加默认攻击减层
+#
+# @author: Alee
+# @date 2018-1-30 下午05:11:45
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import SkillCommon
+import BuffSkill
+import SkillShell
+import IPY_GameWorld
+
+def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
+    # 关联技能
+    if not passiveEffect.GetEffectValue(2):
+        return False
+     
+    curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
+    if not curSkill:
+        return False
+    
+    buffType = SkillCommon.GetBuffType(curSkill)
+    buffTuple = SkillCommon.GetBuffManagerByBuffType(attacker, buffType)
+    #通过类型获取目标的buff管理器为空,则跳出
+    if buffTuple == ():
+        return False
+    
+    buffManager = buffTuple[0]
+    buff = buffManager.FindBuff(curSkill.GetSkillTypeID())
+    if not buff:
+        return False
+
+    if buff.GetLayer() <= 0:
+        return False
+    
+    BuffSkill.SetBuffLayer(attacker, buff, buff.GetLayer()-1, skillTypeID=curSkill.GetSkillTypeID())
+    
+    return False
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py
index 07c913c..0d861dd 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4508.py
@@ -65,6 +65,6 @@
             triggerSkill = GameWorld.GetGameData().GetSkillBySkillID(triggerSkillID)
             if triggerSkill:
                 SkillShell.UsePassiveTriggerSkill(attacker, triggerSkill, defender, GameWorld.GetGameWorld().GetTick(), isEnhanceSkill = True)
-    return True
+    return False
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4533.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4533.py
new file mode 100644
index 0000000..75175e5
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4533.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: buff中灼烧buff消失触发本buff消失
+#
+# @author: Alee
+# @date 2019-4-29 下午03:09:42
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+import GameWorld
+import SkillCommon
+
+
+def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
+    curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
+    if not curSkill:
+        return False
+    
+    buffType = SkillCommon.GetBuffType(curSkill)
+    buffTuple = SkillCommon.GetBuffManagerByBuffType(attacker, buffType)
+    #通过类型获取目标的buff管理器为空,则跳出
+    if buffTuple == ():
+        return False
+    
+    buffManager = buffTuple[0]
+    buff = buffManager.FindBuff(curSkill.GetSkillTypeID())
+    if not buff:
+        return False
+    if buff.GetOwnerID() != defender.GetDictByKey("burnOwnerID"):
+        return False
+    buff.SetRemainTime(1)   # 此处必须设置为1 无限时长的buff亦可消失
+    return True
+
+
+def GetValue(attacker, defender, passiveEffect):
+    return 1
+
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4082.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4082.py
index c88d538..81bacd0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4082.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4082.py
@@ -25,9 +25,10 @@
         SkillShell.UsePassiveTriggerSkill(attacker, useSkill, defender, GameWorld.GetGameWorld().GetTick(), True)
         
         return False
-        
-    if not GameObj.GetPyPlayerState(attacker, effect.GetEffectValue(1)):
-        #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
-        return False
-        
+    
+    if effect.GetEffectValue(2):
+        if not GameObj.GetPyPlayerState(attacker, effect.GetEffectValue(2)):
+            #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
+            return False
+    
     return GameWorld.CanHappen(effect.GetEffectValue(0))
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
index 81787a1..b2a98e5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -289,7 +289,7 @@
              4004:ChConfig.TriggerType_AttackOver,  # 攻击(对敌技能)后被动技能被触发 4
              4005:ChConfig.TriggerType_AttackAddSkillPer,  # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
              4006:ChConfig.TriggerType_SuperHit, # 暴击时 触发技能6,
-             4007:ChConfig.TriggerType_SuperHitValue, # 暴击时 增加暴击值7,
+             4007:ChConfig.TriggerType_SuperHitValue, # 暴击时 增加暴击值百分比7,
              4008:ChConfig.TriggerType_AttackAddSkillPer,  # 所有攻击伤害(SkillPer)增加,含普攻,计算时 5
              4009:ChConfig.TriggerType_HurtObjAddBuff, # 击中玩家(群攻多次触发)8,
              4010:ChConfig.TriggerType_ReduceCD, # 减少CD9, #CD
@@ -375,8 +375,7 @@
              4093:ChConfig.TriggerType_NoControl,   # 使关联技能不受控制 78
              4094:ChConfig.TriggerType_Buff_AddSuperHitRate, # BUFF类:增加暴击率
              4095:ChConfig.TriggerType_SuperHitSuckBloodPer, # BUFF类: 暴击百分比吸血, 79
-             4096:ChConfig.TriggerType_SuperHitAddSkillPer, # 暴击增加技能伤害
-             4097:ChConfig.TriggerType_BurnPer, # 灼烧伤害百分比 81
+             4097:ChConfig.TriggerType_BurnPer, # 灼烧伤害百分比 80
              }
     return tdict.get(effectID, -1) 
     #===========================================================================
@@ -393,6 +392,7 @@
 # 获得【BUFF】被动触发的方式 与GetTriggerTypeByEffectID互补
 def GetBuffTriggerTypeByEffectID(effectID):
     tdict = {
+             1011:ChConfig.TriggerType_Buff_AttackSubLayer,  # BUFF类:攻击减buff层,0消失
              4500:ChConfig.TriggerType_AttackOver, # BUFF类:攻击触发新技能
              4501:ChConfig.TriggerType_AttackAddSkillPer, # BUFF类:提高主动技能的技能伤害
              4502:ChConfig.TriggerType_BeAttackOver, # BUFF类:被攻击触发技能
@@ -425,6 +425,7 @@
              4530:ChConfig.TriggerType_Buff_AttackSubLayer,  # BUFF类:攻击减buff层,0消失
              4531:ChConfig.TriggerType_BounceHPPerByAttacker,  # 反弹伤害百分比值, 由攻击方决定 77
              4532:ChConfig.TriggerType_SuperHit,    # buff中对第一目标暴击触发技能
+             4533:ChConfig.TriggerType_BurnDisappear, # 灼烧消失触发 81
              
              803:ChConfig.TriggerType_BloodShield,  # 血盾
              806:ChConfig.TriggerType_BloodShield,  # 血盾
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
index 6dac2ad..ffae739 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -2679,6 +2679,11 @@
         callFunc = GameWorld.GetExecFunc(GameBuffs, "Buff_%s.%s"%(moduleSuffix, "OnCalcBuffEx"))
         if callFunc:
             callFunc(objDetel, curEffect, allAttrList[index], curBuff)
+    
+    # 持续性属性变化的buff,目前只有持续减益
+    callFunc = GameWorld.GetExecFunc(GameBuffs, "BuffProcess_%s.%s"%(moduleSuffix, "OnCalcBuffEx"))
+    if callFunc:
+        callFunc(objDetel, curEffect, allAttrList[index], curBuff)
     return
 
 ## 获得buff效果的计算模块文件后缀
@@ -2926,15 +2931,15 @@
 def CalcBuffers_Effect(curPlayer, allAttrList, calcEffectIDList=[]):
     
     for buffType in range(IPY_GameWorld.bfBuff, IPY_GameWorld.btBufMax):
+        #这些类型不影响玩家计算属性
+        if buffType in [IPY_GameWorld.bfProcessBuff, #IPY_GameWorld.bfProcessDeBuff, 
+                        IPY_GameWorld.bfMapBuff,
+                        IPY_GameWorld.bfEquipBuff]:
+            continue
+        
         buffTuple = SkillCommon.GetBuffManagerByBuffType(curPlayer, buffType)
         #通过类型获取目标的buff管理器为空,则跳出
         if buffTuple == ():
-            continue
-        
-        #这些类型不影响玩家计算属性
-        if buffType in [IPY_GameWorld.bfProcessBuff,
-                        IPY_GameWorld.bfProcessDeBuff, IPY_GameWorld.bfMapBuff,
-                        IPY_GameWorld.bfEquipBuff]:
             continue
         
         buffManager = buffTuple[0]

--
Gitblit v1.8.0