From 9aec240e848ba4bb6b473707ad8f48aee5180141 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 29 四月 2019 10:06:52 +0800
Subject: [PATCH] 6632 子 【开发】增加新的符印属性 / 【后端】增加新的符印属性

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py                             |   10 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyWar.py |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4507.py           |   30 +-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4532.py           |   57 ++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_9.py               |    6 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py                      |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4096.py          |   25 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4094.py          |   25 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py                            |    1 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_39.py              |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py                         |   15 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                                  |    4 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4006.py          |   29 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_805.py                     |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4004.py          |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/AttackLogic/AttackCommon.py              |  150 +++++++-----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py                           |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py             |   60 +++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4097.py          |   28 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py                              |    4 
 /dev/null                                                                                                           |   25 --
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py                              |   82 +++---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4095.py          |   21 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4531.py           |    6 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py                 |   61 ++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                                     |   28 +
 26 files changed, 473 insertions(+), 211 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 3b66d80..e828e44 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
@@ -1401,6 +1401,8 @@
     superHitRate = eval(ReadChConfig.GetChConfig("CalcSuperHitRate"))
     superHitRate += PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, None, 
                                                                        ChConfig.TriggerType_Buff_AddSuperHitRate)
+    superHitRate += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, None, 
+                                                                       ChConfig.TriggerType_Buff_AddSuperHitRate)
     if superHitRate <= 0:
         return
     if GameWorld.CanHappen(superHitRate):
@@ -1672,50 +1674,9 @@
     SetFirstDefender(atkObj, defObj, curSkill)
     
     resultHurtType = HurtType()
-    atkObjType = attacker.GetGameObjType()
     defObjType = defObj.GetGameObjType()
     dHP = GameObj.GetHP(defObj)                # 防守方当前血量
     dMaxHP = GameObj.GetMaxHP(defObj)          # 防守方最大血量
-    
-    # 当技能表的技能伤害百分比为0,技能伤害增加值定义为直接伤害值,不经过计算
-    if atkSkillPer == 0:
-        hurtValue, hurtType = int(atkSkillValue), ChConfig.Def_HurtType_Normal
-        hurtValue += atkObj.GetDictByKey(ChConfig.Def_PlayerKey_MoreHurtValue)
-        
-    elif SkillShell.IsPlayerUseSkill(atkObj, curSkill) and SkillShell.isClientHurtValue(defObj.GetID(), defObjType):
-        # 缓存单次攻击中的最大伤害,被动技能概率性增加伤害,此处放大最大伤害
-        hurtValue = atkObj.GetDictByKey(ChConfig.Def_PlayerKey_ClientMaxHurtValue)
-        if hurtValue == 0:
-            #hurtValue, hurtType = CalcHurtHP(atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, tick, None, True)
-            # 理论伤害一致, 多加点预算伤害避免计算误差
-            #hurtValue = min(ShareDefine.Def_UpperLimit_DWord, hurtValue+10)
-            #atkObj.SetDict(ChConfig.Def_PlayerKey_ClientMaxHurtValue, int(hurtValue*1.2))
-            hurtValue = atkObj.GetMaxAtk()*atkSkillPer*40   # 加入被动计算不准确改成估算
-            
-        clientValue, hurtType = SkillShell.GetClientHurtByObj(defObj.GetID(), defObjType)
-        if clientValue <= hurtValue:
-            hurtValue = clientValue
-        else:
-            # 外挂最高伤害基本防范
-            GameWorld.DebugLog(atkObj, "%s----客户端伤害 %s 服务端最高伤害 %s"%(atkObj.GetID(), [clientValue, hurtType], hurtValue))
-            hurtValue = int(hurtValue*0.8)
-        #GameWorld.DebugAnswer(atkObj, "客户端伤害 %s 服务端伤害 %s"%([defObj.GetID(), clientValue, hurtType], hurtValue))
-
-    else:
-        hurtValue, hurtType = CalcHurtHP(atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, tick, orgAtkObj=attacker)
-    
-    WriteHurtLog(attacker, defObj, curSkill, hurtValue, hurtType, "公式层")
-    
-    hurtValue = CalcHurtHPWithBuff(atkObj, defObj, hurtValue, curSkill, tick)
-
-    # buff减少伤害百分比
-    reducePer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(defObj, atkObj, None, ChConfig.TriggerType_ReduceHurtHPPer)
-    
-    # 被攻击被动技能特殊减免 受到单次伤害超过生命上限10%时候,减免50%伤害,CD10秒
-    defObj.SetDict(ChConfig.Def_PlayerKey_curHurtValue, hurtValue)
-    reducePer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_ReduceHurtHPPer)
-    hurtValue = int(hurtValue*(max(ChConfig.Def_MaxRateValue - reducePer, 0))*1.0/ChConfig.Def_MaxRateValue)
-    
     
     # 终极斩杀新效果,必须和斩杀严格区分,会涉及到CD概率,已经触发其他技能等问题
     if PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_ZhongjiZhansha):
@@ -1742,13 +1703,43 @@
         remainHP = 0 # 剩余血量
 
     else:
+        # 当技能表的技能伤害百分比为0,技能伤害增加值定义为直接伤害值,不经过计算
+        if atkSkillPer == 0:
+            hurtValue, hurtType = int(atkSkillValue), ChConfig.Def_HurtType_Normal
+            hurtValue += atkObj.GetDictByKey(ChConfig.Def_PlayerKey_MoreHurtValue)
+            
+        elif SkillShell.IsPlayerUseSkill(atkObj, curSkill) and SkillShell.isClientHurtValue(defObj.GetID(), defObjType):
+            # 缓存单次攻击中的最大伤害,被动技能概率性增加伤害,此处放大最大伤害
+            hurtValue = atkObj.GetDictByKey(ChConfig.Def_PlayerKey_ClientMaxHurtValue)
+            if hurtValue == 0:
+                #hurtValue, hurtType = CalcHurtHP(atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, tick, None, True)
+                # 理论伤害一致, 多加点预算伤害避免计算误差
+                #hurtValue = min(ShareDefine.Def_UpperLimit_DWord, hurtValue+10)
+                #atkObj.SetDict(ChConfig.Def_PlayerKey_ClientMaxHurtValue, int(hurtValue*1.2))
+                hurtValue = atkObj.GetMaxAtk()*atkSkillPer*40   # 加入被动计算不准确改成估算
+                
+            clientValue, hurtType = SkillShell.GetClientHurtByObj(defObj.GetID(), defObjType)
+            if clientValue <= hurtValue:
+                hurtValue = clientValue
+            else:
+                # 外挂最高伤害基本防范
+                GameWorld.DebugLog(atkObj, "%s----客户端伤害 %s 服务端最高伤害 %s"%(atkObj.GetID(), [clientValue, hurtType], hurtValue))
+                hurtValue = int(hurtValue*0.8)
+            #GameWorld.DebugAnswer(atkObj, "客户端伤害 %s 服务端伤害 %s"%([defObj.GetID(), clientValue, hurtType], hurtValue))
+    
+        else:
+            hurtValue, hurtType = CalcHurtHP(atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, tick, orgAtkObj=attacker)
+        
+        WriteHurtLog(attacker, defObj, curSkill, hurtValue, hurtType, "公式层")
+        
+        # 各种减伤 吸收盾处理
+        hurtValue = CalcHurtHPWithBuff(atkObj, defObj, hurtValue, curSkill, tick)
+        
         #伤害结构体
         resultHurtType.HurtHP = hurtValue
         resultHurtType.HurtType = hurtType
         resultHurtType.RealHurtHP = hurtValue
         
-        # 血盾 
-        hurtValue = CalcBloodShield(atkObj, defObj, hurtValue)
         remainHP = min(dMaxHP, max(0, dHP - hurtValue)) # 剩余血量
     
     remainHP = int(remainHP)    #防范
@@ -1872,16 +1863,6 @@
 
     # 伤害吸收盾回血型
     buffManager = defObj.GetBuffState()
-    curEffect, plusValue, skillID = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_AbsorbShieldXMZJ)
-    if skillID:
-        absortValue = hurtValue*curEffect.GetEffectValue(0)/ShareDefine.Def_MaxRateValue
-        if absortValue:
-            hurtValue -= absortValue
-            findBuff = SkillCommon.FindBuffByID(defObj, skillID)[0]
-            if findBuff:
-                # 用于回血
-                findBuff.SetValue(int(findBuff.GetValue() + absortValue))
-
     
     curEffect, plusValue, skillID = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_AbsorbShield)
     if skillID:
@@ -1897,15 +1878,38 @@
                     findBuff.SetRemainTime(1)
     
         
-    # 天罡护法,将期间受到的伤害总值用于回血,不改变伤害
-    curEffect, plusValue, skillID2 = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_StoreBlood)
-    if skillID2:
+    # 天罡护法,将期间受到的伤害总值用于回血,不改变伤害,暂且不用
+    #===========================================================================
+    # curEffect, plusValue, skillID2 = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_StoreBlood)
+    # if skillID2:
+    #    absortValue = hurtValue*curEffect.GetEffectValue(0)/ShareDefine.Def_MaxRateValue
+    #    if absortValue:
+    #        findBuff = SkillCommon.FindBuffByID(defObj, skillID2)[0]
+    #        if findBuff:
+    #            # 用于回血
+    #            findBuff.SetValue(int(findBuff.GetValue() + absortValue))
+    #===========================================================================
+    
+    curEffect, plusValue, skillID = BuffSkill.FindBuffEffectPlusByEffectID(buffManager, ChConfig.Def_Skill_Effect_AbsorbShieldXMZJ)
+    if skillID:
         absortValue = hurtValue*curEffect.GetEffectValue(0)/ShareDefine.Def_MaxRateValue
         if absortValue:
-            findBuff = SkillCommon.FindBuffByID(defObj, skillID2)[0]
+            hurtValue -= absortValue
+            findBuff = SkillCommon.FindBuffByID(defObj, skillID)[0]
             if findBuff:
                 # 用于回血
                 findBuff.SetValue(int(findBuff.GetValue() + absortValue))
+    
+    # buff减少伤害百分比
+    reducePer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(defObj, atkObj, None, ChConfig.TriggerType_ReduceHurtHPPer)
+    
+    # 被攻击被动技能特殊减免 受到单次伤害超过生命上限10%时候,减免50%伤害,CD10秒
+    defObj.SetDict(ChConfig.Def_PlayerKey_curHurtValue, hurtValue)
+    reducePer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(defObj, atkObj, None, ChConfig.TriggerType_ReduceHurtHPPer)
+    hurtValue = int(hurtValue*(max(ChConfig.Def_MaxRateValue - reducePer, 0))*1.0/ChConfig.Def_MaxRateValue)
+    
+    hurtValue = CalcBloodShield(atkObj, defObj, hurtValue)
+    
     return hurtValue
 
 
@@ -1942,7 +1946,7 @@
                         msg, attackerID, attackerName, defenderID, defenderName,
                         skillID, skillName, hurtValue, hurtType))
 
-# 血盾支持多个同时存在
+# 血盾支持多个同时存在, 反弹也会被吸收
 def CalcBloodShield(atkObj, defObj, hurtValue):
     # 伤害值用于血盾抵消
     defObj.SetDict(ChConfig.Def_PlayerKey_BloodShiledHurt, hurtValue)
@@ -1955,9 +1959,11 @@
 # 计算攻击伤害
 # maxHurt参数用于模拟计算最大伤害,防范客户端攻击伤害过高
 def CalcHurtHP(atkObj, defObj, curSkill, atkSkillValue, atkSkillPer, tick, happenState=None, **atkwargs):
-    # 翻滚闪避特殊处理
-    if tick - defObj.GetDictByKey(ChConfig.Def_PlayerKey_SomersaultTime) < 500:
-        return 0, ChConfig.Def_HurtType_Miss
+    #===========================================================================
+    # # 翻滚闪避特殊处理
+    # if tick - defObj.GetDictByKey(ChConfig.Def_PlayerKey_SomersaultTime) < 500:
+    #    return 0, ChConfig.Def_HurtType_Miss
+    #===========================================================================
     
     summonAtkPer = 1    # 召唤继承提高基础攻击力,取表
     summonAtkObj = atkwargs.get('orgAtkObj', None) if atkwargs.get('orgAtkObj', None) else atkObj
@@ -2107,8 +2113,10 @@
             
     #  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)
@@ -2271,7 +2279,14 @@
     if hurtFormulaKey not in hurtDist:
         GameWorld.ErrLog("CalcAttackValue.txt 伤害公式未配置, key=%s" % (hurtFormulaKey))
         return 0, ChConfig.Def_HurtType_Miss
-    hurtFormula = hurtDist[hurtFormulaKey]
+    
+    if atkwargs.get('hurtFormulaKey', None):
+        # 指定公式
+        aBurnValue = atkwargs.get('burnValue', 0)
+        aBurnPer = atkwargs.get('burnPer', 0)
+        hurtFormula = hurtDist[atkwargs.get('hurtFormulaKey', None)]
+    else:
+        hurtFormula = hurtDist[hurtFormulaKey]
     hurtValue = int(eval(FormulaControl.GetCompileFormula(hurtFormulaKey, hurtFormula)))
 
     if hurtType == ChConfig.Def_HurtType_Normal and SuppressValueRealmRate > 10000:
@@ -2334,7 +2349,7 @@
     #反弹伤害
     CalcBounceHP(atkObj, defObj, resultHurtType.LostHP, resultHurtType.HurtType, curSkill)
     #吸血
-    CalcSuckBlood(atkObj, defObj, curSkill, resultHurtType.RealHurtHP, tick)
+    CalcSuckBlood(atkObj, defObj, curSkill, resultHurtType, tick)
         
     if atkObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
         # 记录最后一次伤害值
@@ -2466,10 +2481,12 @@
 #  @param atkObj 攻击者
 #  @param defObj 防守者
 #  @return None
-def CalcSuckBlood(atkObj, defObj, curSkill, hurtValue, tick):
+def CalcSuckBlood(atkObj, defObj, curSkill, resultHurtType, tick):
 
     if atkObj.GetGameObjType() != IPY_GameWorld.gotPlayer:
         return
+    
+    hurtValue, hurtType = resultHurtType.RealHurtHP, resultHurtType.HurtType, 
     if not hurtValue:
         return
     
@@ -2495,6 +2512,9 @@
         atkBackHPPer = PassiveBuffEffMng.GetValueByPassiveBuffTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
         atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_Buff_SuckBloodPer)
         
+        if hurtType == ChConfig.Def_HurtType_SuperHit:
+            atkBackHPPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(atkObj, defObj, curSkill, ChConfig.TriggerType_SuperHitSuckBloodPer)
+            
         atkBackHP += int(hurtValue * atkBackHPPer*1.0 / ChConfig.Def_MaxRateValue)
         
     suckHP += atkBackHP
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
index b8fe78a..78f1a5a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Attack/BaseAttack.py
@@ -1567,6 +1567,7 @@
         return
     if hurtType == ChConfig.Def_HurtType_SuperHit:
         PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SuperHit, tick)
+        PassiveBuffEffMng.OnPassiveBuffTrigger(attacker, defender, curSkill, ChConfig.TriggerType_SuperHit, tick)
     elif hurtType == ChConfig.Def_HurtType_ThumpHit:
         PassiveBuffEffMng.OnPassiveSkillTrigger(attacker, defender, curSkill, ChConfig.TriggerType_ThumpHit, tick)
     return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index c25a68a..447b606 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -63,12 +63,13 @@
 Def_Buff_Replace_Better,    # 相同typeid取最高,如果新的是低级的则不处理
 Def_Buff_Replace_New,       # 相同typeid替换最新,即使是低级的
 Def_Buff_Coexist,           # 不同的释放者可共存
-) = range(3)
+Def_Buff_Recharge,        # 若同类型buff存在不管等级高低,只给原buff充能只改变值或时间
+) = range(4)
 
 Def_BuffValue_Count = 3     # buff记录的value个数
 
 #游戏对象属性--------------------------------------------
-Def_Calc_AllAttrType_MAX = 131
+Def_Calc_AllAttrType_MAX = 135
 #基本属性BUFF计算,顺序与 ObjProperty_AttrByIndex 对应,同时也为buff效果ID同步通知策划
 TYPE_Calc_AttrList = (
 TYPE_Calc_Metal,                        # 金 1
@@ -212,7 +213,11 @@
 TYPE_Calc_FabaoHurt,                    # 法宝技能增伤 
 TYPE_Calc_FabaoHurtPer,                 # 法宝技能加成 
 TYPE_Calc_FinalHurtReducePer,           # 最终伤害减少百分比
-TYPE_Calc_YinjiTime,                    # 每X秒自动消失一个印记
+TYPE_Calc_YinjiTime,                    # 每X秒自动消失一个印记 130
+TYPE_Calc_TheFBSkillsCD,                # 减少指定技能组CD XX%
+TYPE_Calc_BurnValue,                    # 灼烧固定伤害
+TYPE_Calc_BurnTimePer,                     # 延长灼烧时间百分比
+TYPE_Calc_SubSpeedPer,                  # 减移动速度百分比
 ) = range(1, Def_Calc_AllAttrType_MAX)
 
 
@@ -564,6 +569,7 @@
 Def_Skill_Effect_SummonAttr = 1013 # 召唤兽属性
 Def_Skill_Effect_BoomSeedID = 1014 # 引爆BUFF种子
 Def_Skill_Effect_ReCD = 1016 # 重置CD
+Def_Skill_Effect_Burn = 1034 # 灼烧
 Def_Skill_Effect_RandWarn = 1061 # 随机预警
 Def_Skill_Effect_AttackReplaceByNPCSeries = 1062 # 对指定系的伤害
 Def_Skill_Effect_AvgHurtFMCnt = 1064 # NPC技能按仙盟成员数均摊伤害  
@@ -3006,7 +3012,7 @@
     Def_PlayerState_LimitSkill, # 禁魔状态 10
     Def_PlayerState_LimitAddHP, # 禁疗状态 11
     Def_PlayerState_Blind, # 致盲状态 12
-    Def_PlayerState_LoseBlood1, # 职业1持续掉血状态 13
+    Def_PlayerState_LoseBlood1, # 灼烧 13
     Def_PlayerState_LoseBlood2, # 职业2持续掉血状态 14
     Def_PlayerState_LoseBlood3, # 职业3持续掉血状态 15
     Def_PlayerState_MissSneerAtk, # 对嘲讽攻击免疫表现为miss 16
@@ -3019,6 +3025,10 @@
 
 #---SetDict 玩家字典KEY,不存于数据库---
 # key的长度不能超过29个字节
+Def_PlayerKey_TheFBSkillsCD = "TheFBSkillsCD"    # 减少指定技能组CD XX%
+Def_PlayerKey_BurnValue = "BurnValue"    # 灼烧固定伤害
+Def_PlayerKey_BurnTimePer = "BurnTimePer"    # 延长灼烧时间百分比
+Def_PlayerKey_SubSpeedPer = "SubSpeedPer"    # 减移动速度百分比
 Def_PlayerKey_YinjiCnt = "YinjiCnt"   # 当前印记数
 Def_PlayerKey_LostYinjiTime = "LostYinjiTime"   # 每X秒自动消失一个印记
 Def_PlayerKey_1314HurtCount = "1314cnt"   # 类剑刃风暴技能的1314效果,伤害次数处理
@@ -3038,7 +3048,6 @@
 Def_PlayerKey_LockHPSkillID = "LockHPSkillID"   # 锁血功能的技能
 Def_PlayerKey_GodWeaponBeforeProDef = "GWBPD"   # 神兵护盾被攻击前的值
 Def_PlayerKey_curHurtValue = "curHurtValue"     # 计算中的临时伤害值,技能特殊用
-Def_PlayerKey_DefenderObjID = "DefenderObjID"     # 后续触发技能需要用到的对象ID,暂用于玩家
 Def_PlayerKey_SomersaultTime = "Somersault"     # 翻滚一定时间内无敌,表现为MISS
 Def_PlayerKey_CopyFuncAttr = "CopyFuncAttr%s"     # 玩家属性刷新中的计算属性缓存,便于buff刷新计算
 Def_Player_RefreshAttrByBuff = "PlayerAttrByBuff"   # 玩家属性刷新功能属性缓存,便于buff刷新计算, 间隔刷新
@@ -4189,6 +4198,10 @@
     ShareDefine.Def_Effect_FinalHurtPer:[[TYPE_Calc_FinalHurtPer], False, TYPE_Linear],   # 最终伤害万分率
     ShareDefine.Def_Effect_FinalHurtReducePer:[[TYPE_Calc_FinalHurtReducePer], False, TYPE_Linear],   # 最终伤害减少万分
     ShareDefine.Def_Effect_YinjiTime:[[TYPE_Calc_YinjiTime], False, TYPE_Linear],   # 每X秒自动消失一个印记
+    ShareDefine.Def_Effect_TheFBSkillsCD:[[TYPE_Calc_TheFBSkillsCD], False, TYPE_Linear],   # 减少指定技能组CD XX%
+    ShareDefine.Def_Effect_BurnValue:[[TYPE_Calc_BurnValue], False, TYPE_Linear],   # 灼烧固定伤害
+    ShareDefine.Def_Effect_BurnTimePer:[[TYPE_Calc_BurnTimePer], False, TYPE_Linear],   # 延长灼烧时间百分比
+    ShareDefine.Def_Effect_SubSpeedPer:[[TYPE_Calc_SubSpeedPer], False, TYPE_Linear],   # 减移动速度百分比
 
     #战斗非线性
     ShareDefine.Def_Effect_SuperHitPer:[[TYPE_Calc_SuperHit], False, TYPE_NoLinear],
@@ -4450,7 +4463,10 @@
 TriggerType_SkillSuccess, # 任何技能释放成功都可触发 76
 TriggerType_BounceHPPerByAttacker,   # 反弹伤害百分比值, 由攻击方决定 77
 TriggerType_NoControl,   # 使关联技能不受控制 78
-) = range(1, 79)
+TriggerType_SuperHitSuckBloodPer,   # 暴击百分比吸血, 79
+TriggerType_SuperHitAddSkillPer,    # 暴击增加技能伤害 80
+TriggerType_BurnPer,    # 灼烧伤害百分比 81
+) = range(1, 82)
 
 
 #不可以佩戴翅膀的地图
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyWar.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyWar.py
index 219316f..50d3bd5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyWar.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyWar.py
@@ -1271,7 +1271,7 @@
     skillTypeID, buffOwner = 0, None
     lostValue = int(GameObj.GetMaxHP(curPlayer) * lostHPPer / 100.0) * lostTime
     #GameWorld.DebugLog("OnCollecting lostHPPer=%s,lostTime=%s,lostValue=%s" % (lostHPPer, lostTime, lostValue), playerID)
-    SkillCommon.SkillLostHP(curPlayer, skillTypeID, buffOwner, lostValue, tick)
+    SkillCommon.SkillLostHP(curPlayer, skillTypeID, buffOwner, lostValue, tick, skillAffect=False)
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 5d406a6..294025a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -6692,7 +6692,20 @@
 def SetYinjiCnt(curPlayer, value): 
     curPlayer.SetDict(ChConfig.Def_PlayerKey_YinjiCnt, value)
     curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_YinjiCnt, value, False)
-    
+
+# 减少指定技能组CD XX%
+def GetTheFBSkillsCD(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TheFBSkillsCD)
+def SetTheFBSkillsCD(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_TheFBSkillsCD, value)
+# 灼烧固定伤害
+def GetBurnValue(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_BurnValue)
+def SetBurnValue(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_BurnValue, value)
+# 延长灼烧时间百分比
+def GetBurnTimePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_BurnTimePer)
+def SetBurnTimePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_BurnTimePer, value)
+# 减移动速度百分比
+def GetSubSpeedPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SubSpeedPer)
+def SetSubSpeedPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_SubSpeedPer, value)
+
 ## 计算功能背包物品属性 
 #  @param curPlayer 当前玩家
 #  @param packType 背包类型
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
index eab101b..7c339df 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerState.py
@@ -614,7 +614,7 @@
     curPlayer.SetDict(ChConfig.Def_PlayerKey_CollectLostHPTick, tick)
     lostValue = int(GameObj.GetMaxHP(curPlayer) * lostHPPer / 100.0) * lostTime
     skillTypeID, buffOwner = 0, None
-    SkillCommon.SkillLostHP(curPlayer, skillTypeID, buffOwner, lostValue, tick)
+    SkillCommon.SkillLostHP(curPlayer, skillTypeID, buffOwner, lostValue, tick, skillAffect=False)
     GameWorld.DebugLog("采集掉血: npcID=%s,lostHPPer=%s,lostTime=%s,lostValue=%s" % (collectNPCIpyData.GetNPCID(), lostHPPer, lostTime, lostValue))
     return
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index ce81d0c..9d1a485 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -545,6 +545,10 @@
 Def_Effect_FinalHurtPer = 142   # 最终伤害万分率
 Def_Effect_FinalHurtReducePer = 143    # 最终伤害减少万分
 Def_Effect_YinjiTime = 144    # 每X毫秒自动消失一个印记
+Def_Effect_TheFBSkillsCD = 145    # 减少指定技能组CD XX%
+Def_Effect_BurnValue = 146    # 灼烧固定伤害
+Def_Effect_BurnTimePer = 147    # 延长灼烧时间百分比
+Def_Effect_SubSpeedPer = 148    # 减移动速度百分比
 
 #增加%d物理伤害值,其中a值为伤害值
 Def_Effect_AddAtk = 1005
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 493b90b..338b59f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -79,23 +79,7 @@
     return result
 
 
-#===============================================================================
-# # CanRepeatTime字段个位数
-# (
-# Def_BuffTime_Reset,     # 0    重置时间
-# Def_BuffTime_Add,   # 1    增加时间
-# Def_BuffTime_Keep,    # 2    时间不变
-# Def_BuffTime_Keep_AddValue, # 3    时间不变只增加值,默认为替换更强值
-# ) = range(4)
-# 
-# # CanRepeatTime字段十位数
-# (
-# Def_Buff_Replace_Better,    # 相同typeid取最高,如果新的是低级的则不处理
-# Def_Buff_Replace_New,       # 相同typeid替换最新,即使是低级的
-# Def_Buff_Coexist,           # 不同的释放者可共存
-# ) = range(3)
-#===============================================================================
-
+# 快捷搜索 CanRepeatTime字段
 # buff时间处理类型,个位数
 def GetBuffRepeatTimeType(curSkill):
     return curSkill.GetCanRepeatTime()%10
@@ -111,6 +95,19 @@
         layerMaxCnt = hasEffect.GetEffectValue(0)   # 能叠加的最大上限
 
     return layerMaxCnt
+
+# 改变BUFF持续时间
+def ChangeLastTime(attacker, curSkill):
+    buffTime = curSkill.GetLastTime() 
+    if not attacker:
+        return buffTime 
+    if curSkill.GetEffect(0).GetEffectID() == ChConfig.Def_Skill_Effect_Burn:
+        # 灼烧的时间特殊处理
+        buffTime = buffTime*(ChConfig.Def_MaxRateValue + PlayerControl.GetBurnTimePer(attacker))/ChConfig.Def_MaxRateValue
+    
+    buffTime += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(attacker, None, curSkill, ChConfig.TriggerType_BuffTime)
+    return buffTime
+    
 
 #---------------------------------------------------------------------
 ## 增加BUFF 减少BUFF(参数 -> 当前对象,buff类型,当前技能,当前时间,Buff总值->用于持续类技能 , Buff拥有者)
@@ -146,7 +143,7 @@
     #技能类型ID
     curSkillTypeID = curSkill.GetSkillTypeID()
     #当前技能持续时间
-    curSkillLastTime = curSkill.GetLastTime()
+    curSkillLastTime = ChangeLastTime(buffOwner, curSkill)
     #当前技能等级
     curSkillLV = curSkill.GetSkillLV()
     #替换模式
@@ -212,31 +209,36 @@
                 
         if buffSkillLV == curSkillLV:
             changeLayer = False
-            if layerMaxCnt:
-                curLayerCnt = curBuff.GetLayer()
-                if curLayerCnt < layerMaxCnt:
-                    if layerCalc == ChConfig.Def_BuffLayer_Add:
-                        curBuff.SetLayer(curLayerCnt + 1)
-                        #BUFF层级变化触发被动
-                        if buffOwner:
-                            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(ChConfig.Def_PlayerKey_AddBuffLayer, 0)
-                    else:
-                        curBuff.SetLayer(layerMaxCnt)
-                    changeLayer = True
+            if layerMaxCnt and curBuff.GetLayer() < layerMaxCnt:
+                if layerCalc == ChConfig.Def_BuffLayer_Add:
+                    curBuff.SetLayer(curBuff.GetLayer() + 1)
+                    #BUFF层级变化触发被动
+                    if buffOwner:
+                        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(ChConfig.Def_PlayerKey_AddBuffLayer, 0)
+                else:
+                    curBuff.SetLayer(layerMaxCnt)
+                changeLayer = True
+                    
+            # Def_Buff_Replace_New和Def_Buff_Recharge 均可走到此逻辑
             __BuffCanRemain(buffState, curBuff, i, resultTime, plusValueList, buffOwner)
             # 此处考虑下plusValue变强是否刷属性
             #DoAddBuffOver(curObj, curSkill, addBuff, tick)
             return changeLayer
         else:
+            if buffReplaceType == ChConfig.Def_Buff_Recharge:
+                # 充能型
+                __BuffCanRemain(buffState, curBuff, i, resultTime, plusValueList, buffOwner)
+                return
+            
             processInterval = curBuff.GetProcessInterval()
             ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
             buffState.DeleteBuffByIndex(i)
             SkillShell.ClearBuffEffectBySkillID(curObj, buffSkillID, ownerID, ownerType)
             return __AddBuff(curObj, buffState, curSkill, plusValueList, buffOwner, isDelRefresh, 
-                             tick, processInterval, layerMaxCnt, layerCalc)
+                             tick, curSkillLastTime, processInterval, layerMaxCnt, layerCalc)
         
         #已经找到同一类型的技能,立即退出不然会导致错乱
         return False
@@ -254,7 +256,7 @@
         isDelRefresh = True
     
     return __AddBuff(curObj, buffState, curSkill, plusValueList, buffOwner, isDelRefresh, 
-                     tick, 0, layerMaxCnt, layerCalc)
+                     tick, curSkillLastTime, 0, layerMaxCnt, layerCalc)
 
 
 ## 是否血包/蓝包buff
@@ -314,15 +316,15 @@
 # @param isDelRefresh 外界删除BUFF是否刷新
 # @param tick 时间戳
 # @return 是否刷新玩家属性
-def __AddBuff(curObj, buffState, curSkill, plusValueList, buffOwner, isDelRefresh, tick, 
-              updProcessInterval, layerMaxCnt, layerCalc):
+def __AddBuff(curObj, buffState, curSkill, plusValueList, buffOwner, isDelRefresh, tick,
+              curSkillLastTime, updProcessInterval, layerMaxCnt, layerCalc):
     skillID = curSkill.GetSkillID()
 
     #是否需要通知客户端
     isNotify = True if curSkill.GetClientEffectType() != 0 else False
     # 增加第四个参数是否立即广播
     addBuff = buffState.AddBuff(skillID, tick, isNotify, False)
-    buffIndex = buffState.GetBuffCount()    # buff在管理器中的索引
+    
     if updProcessInterval > 0:
         # 继承上一个buff的循环记录
         addBuff.SetProcessInterval(updProcessInterval)
@@ -337,11 +339,7 @@
         else:
             addBuff.SetLayer(layerMaxCnt)
 
-    if buffOwner:
-        addTime = PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(buffOwner, None, curSkill, ChConfig.TriggerType_BuffTime)
-        if addTime:
-            #有改变持续时间的技能
-            addBuff.SetRemainTime(curSkill.GetLastTime() + addTime)
+    addBuff.SetRemainTime(curSkillLastTime)
     
     # 同步主从技能时间
     SyncMasterBuffTime(curObj, addBuff, curSkill)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py
index e814874..bd8af1a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/EffGetSet.py
@@ -170,6 +170,10 @@
    [lambda curObj:PlayerControl.GetFabaoHurtPer(curObj), lambda curObj, value:PlayerControl.SetFabaoHurtPer(curObj, value), ShareDefine.CDBPlayerRefresh_FabaoHurtPer, 1, 0],  # 属性法宝技能加成
    [lambda curObj:PlayerControl.GetFinalHurtReducePer(curObj), lambda curObj, value:PlayerControl.SetFinalHurtReducePer(curObj, value), ShareDefine.CDBPlayerRefresh_FinalHurtReducePer, 1, 0],      # 最终伤害减少百分比
    [lambda curObj:PlayerControl.GetLostYinjiTime(curObj), lambda curObj, value:PlayerControl.SetLostYinjiTime(curObj, value), ShareDefine.CDBPlayerRefresh_YinjiTime, 1, 0],    # 每X秒自动消失一个印记 毫秒
+   [lambda curObj:PlayerControl.GetTheFBSkillsCD(curObj), lambda curObj, value:PlayerControl.SetTheFBSkillsCD(curObj, value), 0, 0, 0],    # 减少指定技能组CD XX%
+   [lambda curObj:PlayerControl.GetBurnValue(curObj), lambda curObj, value:PlayerControl.SetBurnValue(curObj, value), ShareDefine.CDBPlayerRefresh_YinjiTime, 0, 0],    # 灼烧固定伤害
+   [lambda curObj:PlayerControl.GetBurnTimePer(curObj), lambda curObj, value:PlayerControl.SetBurnTimePer(curObj, value), 0, 0, 0],    # 延长灼烧时间百分比
+   [lambda curObj:PlayerControl.GetSubSpeedPer(curObj), lambda curObj, value:PlayerControl.SetSubSpeedPer(curObj, value), 0, 0, 0],    # 减移动速度百分比
 ]
 
 ## 通过索引获得属性值
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
new file mode 100644
index 0000000..8bec96a
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/BuffProcess_1034.py
@@ -0,0 +1,60 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 灼烧(流派专用,额外公式), 持续过程中可能会被改变伤害或者持续时长,无法用次数控制,无层级概念
+#        若同类型buff存在不管等级高低,只给原buff充能只改变值或时间
+# @author: Alee
+# @date 2019-4-28 下午04:12:17
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+
+#导入
+import SkillCommon
+import GameWorld
+import ChConfig
+import AttackCommon
+import PlayerControl
+import PassiveBuffEffMng
+#---------------------------------------------------------------------
+#全局变量
+#---------------------------------------------------------------------
+
+#---------------------------------------------------------------------
+#逻辑实现
+## 持续性Buff处理 
+#  @param defender 承受者
+#  @param curBuff 当前Buff
+#  @param curEffect Buff效果
+#  @param tick 当前时间
+#  @return None
+#  @remarks 函数详细说明.
+def ProcessBuff(defender, curBuff, curEffect, processBuffTick, tick):
+    #单次伤害
+    singleDecHP = curBuff.GetValue()
+    buffOwner = SkillCommon.GetBuffOwner(curBuff)
+    
+    curBuffSkillID = curBuff.GetSkill().GetSkillTypeID()
+    
+    SkillCommon.SkillLostHP(defender, curBuffSkillID, buffOwner, singleDecHP, tick, hurtType=ChConfig.Def_HurtType_Bleed)
+    
+    return
+
+# 灼烧的特征为延长buff时间,重算伤害
+def CalcBuffValue(attacker, defender, curSkill, changeBuffValueDict):
+    curEffect = curSkill.GetEffect(0)
+    skillPer = curEffect.GetEffectValue(0)
+    skillPer += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(attacker, defender, curSkill, ChConfig.TriggerType_BurnPer)
+    skillEnhance = curEffect.GetEffectValue(1) + PlayerControl.GetBurnValue(attacker)
+    skillPer = skillPer*1.0/ChConfig.Def_MaxRateValue
+    # 灼烧特殊公式
+    hurtValue, hurtType = AttackCommon.CalcHurtHP(attacker, defender, curSkill, 
+                            0, 0, GameWorld.GetGameWorld().GetTick(), ChConfig.Def_Skill_HappenState_HitOn, 
+                            hurtFormulaKey="Burn", burnValue=skillEnhance, burnPer=skillPer)
+    
+    return [hurtValue]
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4507.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4507.py
deleted file mode 100644
index dbc01c0..0000000
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4507.py
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/python
-# -*- coding: GBK -*-
-#
-##@package
-#
-# @todo: buff中只对目标提高暴击率(记录在buffvalue)
-#
-# @author: Alee
-# @date 2018-4-23 下午07:46:03
-# @version 1.0
-#
-# @note: 
-#
-#---------------------------------------------------------------------
-
-import ChConfig
-
-
-## 将目标ID记录在buffvalue中  触发时判断
-#  @param None
-#  @return None
-def DoAddBuffOver(curObj, addBuff, curEffect, tick):
-    addBuff.SetValue(curObj.GetDictByKey(ChConfig.Def_PlayerKey_DefenderObjID))
-    curObj.SetDict(ChConfig.Def_PlayerKey_DefenderObjID, 0)
-    return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_805.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_805.py
index 278cdee..6d5dcad 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_805.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_805.py
@@ -27,7 +27,7 @@
     if GameObj.GetHP(curObj) <= 0:
         return
     SkillCommon.SkillLostHP(curObj, curBuff.GetBuffID(), SkillCommon.GetBuffOwner(curBuff), 
-                            curBuff.GetValue(), tick, curBuff.GetValue1())
+                            curBuff.GetValue(), tick, hurtType=curBuff.GetValue1())
     return
 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
index 87b5128..bc90b1e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -1222,18 +1222,15 @@
             
     return
 
-## 技能伤血
-#  @param curObj 当前对象
-#  @param skillTypeID 技能类型ID
-#  @param buffOwner buff拥有者
-#  @param lostValue 丢失值
-#  @param tick 当前时间
-#  @param view 是否广播
-#  @param reduce 是否扣血
-#  @return None
-#  @remarks 函数详细说明.
-def SkillLostHP(curObj, skillTypeID, buffOwner, lostValue, tick, view=True, reduceHP=True, 
-                isDoAttackResult=True, hurtType=ChConfig.Def_HurtType_Normal):
+## 直接扣血不走公式
+# view 是否广播客户端飘血
+# isDoAttackResult 是否立即处理结果,为False必须外层有处理
+# hurtType 飘血类型
+# skillAffect 默认True 会被各种技能BUFF盾等影响伤血数值
+#             False代表一些特殊处理纯固定伤害飘字(如采集固定掉1点血)
+def SkillLostHP(curObj, skillTypeID, buffOwner, lostValue, tick, view=True, 
+                isDoAttackResult=True, hurtType=ChConfig.Def_HurtType_Normal,
+                skillAffect=True):
     if lostValue <= 0:
         GameWorld.Log('###技能伤害血量异常,数值错误 = %s,技能类型ID = %s' % (lostValue, skillTypeID))
         return
@@ -1257,28 +1254,26 @@
         # 没有血量不能再触发
         return
     
-    if reduceHP :
-        lostValue = AttackCommon.CalcAtkProDef(buffOwner, curObj, lostValue, curSkill, tick)
-        # 血盾 
-        lostValue = AttackCommon.CalcBloodShield(buffOwner, curObj, lostValue)
-        
-        #剩余血量
-        remainHP = max(curObjHP_BeforeAttack - lostValue , 0)
-        
-        #NPC处理
-        if curObjType == IPY_GameWorld.gotNPC:
-            #宠物特殊处理
-            if curObj.GetGameNPCObjType() == IPY_GameWorld.gnotPet:
-                PetControl.SetPetHP(curObj, remainHP)
-            else:
-                GameObj.SetHP(curObj, remainHP)
-                if not view :   # 已广播的不重复
-                    curObj.Notify_HPEx()
-
-        #其他对象逻辑处理
+    if skillAffect:
+        lostValue = AttackCommon.CalcHurtHPWithBuff(buffOwner, curObj, lostValue, curSkill, tick)
+    
+    #剩余血量
+    remainHP = max(curObjHP_BeforeAttack - lostValue , 0)
+    
+    #NPC处理
+    if curObjType == IPY_GameWorld.gotNPC:
+        #宠物特殊处理
+        if curObj.GetGameNPCObjType() == IPY_GameWorld.gnotPet:
+            PetControl.SetPetHP(curObj, remainHP)
         else:
-            # 已广播的不重复
-            GameObj.SetHP(curObj, remainHP, not view)
+            GameObj.SetHP(curObj, remainHP)
+            if not view :   # 已广播的不重复
+                curObj.Notify_HPEx()
+
+    #其他对象逻辑处理
+    else:
+        # 已广播的不重复
+        GameObj.SetHP(curObj, remainHP, not view)
     
     AttackCommon.WriteHurtLog(buffOwner, curObj, curSkill, lostValue, hurtType, "持续掉血")
     
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_39.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_39.py
index 21b35a6..5030299 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_39.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_39.py
@@ -12,12 +12,8 @@
 #------------------------------------------------------------------------------ 
 import ChConfig
 import BaseAttack
-import GameObj
 import SkillCommon
 import IPY_GameWorld
-import GameWorld
-import SkillShell
-import AttackCommon
 import NPCCommon
 #------------------------------------------------------------------------------ 
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_9.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_9.py
index 4801d83..c948028 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_9.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillModule_9.py
@@ -65,7 +65,9 @@
     #GameWorld.DebugLog("-----技能冲锋模板9 %s %s"%([attacker.GetPosX(), attacker.GetPosY()], [destX, destY]))
     attacker.ChangePos(destX, destY)
 
-    if curSkill.GetSkillID() == ChConfig.Def_SkillID_Somersault:
-        attacker.SetDict(ChConfig.Def_PlayerKey_SomersaultTime, tick)
+    #===========================================================================
+    # if curSkill.GetSkillID() == ChConfig.Def_SkillID_Somersault:
+    #    attacker.SetDict(ChConfig.Def_PlayerKey_SomersaultTime, tick)
+    #===========================================================================
     return result
     
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4507.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4507.py
index db170f6..74bd207 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4507.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4507.py
@@ -14,7 +14,7 @@
 import ChConfig
 import GameWorld
 import IPY_GameWorld
-import SkillCommon
+import AttackCommon
 
 def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
     if not defender:
@@ -22,21 +22,19 @@
     if defender.GetGameObjType() != IPY_GameWorld.gotPlayer:
         return False
 
-    curSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
-    if not curSkill:
-        return
-    
-    buffType = SkillCommon.GetBuffType(curSkill)
-    buffTuple = SkillCommon.GetBuffManagerByBuffType(attacker, buffType)
-    #通过类型获取目标的buff管理器为空,则跳出
-    if buffTuple == ():
-        return
-    
-    buffManager = buffTuple[0]
-    buff = buffManager.FindBuff(skillID)
-    if not buff:
-        return
-    return buff.GetValue() == defender.GetID()
+    if passiveEffect.GetEffectValue(1):
+        # 第一目标
+        if AttackCommon.GetFirstDefenderID(attacker) != defender.GetID():
+            return False
+        
+    if passiveEffect.GetEffectValue(2):
+        useSkill = skillkwargs.get("useSkill", None)
+        if not useSkill:
+            return False
+        # 普通攻击有效
+        if useSkill.GetFuncType() != ChConfig.Def_SkillFuncType_NormalAttack:
+            return False
+    return True
 
 
 def GetValue(attacker, defender, passiveEffect):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4531.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4531.py
index 7d31dd6..a1601e2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4531.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4531.py
@@ -1,10 +1,12 @@
 #!/usr/bin/python
 # -*- coding: GBK -*-
 #
-# @todo: buff中被攻击反弹自身最大攻击力XX%伤害
+##@package
+#
+# @todo: buff中被标记的攻击者攻击标记方,层级最后一次反弹伤害
 #
 # @author: Alee
-# @date 2018-1-30 下午05:11:45
+# @date 2019-4-27 下午10:25:12
 # @version 1.0
 #
 # @note: 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4532.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4532.py
new file mode 100644
index 0000000..a6c34b0
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveBuff_4532.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: buff中对第一目标暴击触发技能  附加第X倍数次普攻暴击触发
+#
+# @author: Alee
+# @date 2019-4-27 下午10:19:51
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+import ChConfig
+import GameWorld
+import SkillCommon
+import BuffSkill
+
+def CheckCanHappen(attacker, defender, passiveEffect, skillID, **skillkwargs):
+    if passiveEffect.GetEffectValue(0):
+        useSkill = skillkwargs.get("useSkill", None)
+        if not useSkill:
+            return False
+        # 普通攻击有效
+        if useSkill.GetFuncType() != ChConfig.Def_SkillFuncType_NormalAttack:
+            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
+    
+        buff.SetValue2(buff.GetValue2() + 1)
+        
+        if buff.GetValue2()%passiveEffect.GetEffectValue(0) != 0:
+            return False
+        
+    return True
+
+
+def GetSkillData(passiveEffect):
+    skillID = passiveEffect.GetEffectValue(1)
+    return GameWorld.GetGameData().GetSkillBySkillID(skillID)
+
+
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4004.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4004.py
index d379e6d..617b7ad 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4004.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4004.py
@@ -29,7 +29,5 @@
         if GameObj.GetHP(defender)*ChConfig.Def_MaxRateValue/GameObj.GetMaxHP(defender) >= hpPer:
             return False
         
-        # 记录此目标,不使用其他接口是因为有可能被改变,如一段时间只对触发的目标玩家提高暴击率
-        attacker.SetDict(ChConfig.Def_PlayerKey_DefenderObjID, defender.GetID())
         
     return GameWorld.CanHappen(effect.GetEffectValue(0))
\ No newline at end of file
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4006.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4006.py
new file mode 100644
index 0000000..86cb187
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4006.py
@@ -0,0 +1,29 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 对第一目标暴击时触发技能 --特殊效果转为附加效果触发,且需主效果不使被动技能进入CD才可触发
+#
+# @author: Alee
+# @date 2019-4-25 下午01:57:16
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+import GameWorld
+import SkillShell
+import GameObj
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+    skillID = effect.GetEffectValue(0)
+    if skillID:
+        # 转为附加效果触发,且需主效果不使被动技能进入CD才可触发
+        useSkill = GameWorld.GetGameData().GetSkillBySkillID(skillID)
+        if not useSkill:
+            return False
+        SkillShell.UsePassiveTriggerSkill(attacker, useSkill, defender, GameWorld.GetGameWorld().GetTick(), True)
+        return False
+            
+    return True
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4094.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4094.py
new file mode 100644
index 0000000..3442543
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4094.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 提高暴击概率
+#
+# @author: Alee
+# @date 2019-4-27 下午10:43:37
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+import GameObj
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+    if not GameObj.GetPyPlayerState(defender, effect.GetEffectValue(1)):
+        #GameWorld.DebugLog("状态触发----%s"%effect.GetEffectValue(1))
+        return False
+    return True
+    
+
+def GetValue(attacker, defender, effect):
+    return effect.GetEffectValue(0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4095.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4095.py
new file mode 100644
index 0000000..a4265df
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4095.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 提高暴击概率
+#
+# @author: Alee
+# @date 2019-4-27 下午10:43:37
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+    return True
+    
+
+def GetValue(attacker, defender, effect):
+    return effect.GetEffectValue(0)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4096.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4096.py
new file mode 100644
index 0000000..39f9838
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4096.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 暴击增加技能伤害
+#
+# @author: Alee
+# @date 2019-4-27 下午11:31:01
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+    
+    return True
+    
+
+def GetValue(attacker, defender, effect):
+    return float(effect.GetEffectValue(0))/ChConfig.Def_MaxRateValue
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4097.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4097.py
new file mode 100644
index 0000000..44c9904
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuff/PassiveSkill_4097.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#
+##@package
+#
+# @todo: 暴击增加技能伤害
+#
+# @author: Alee
+# @date 2019-4-27 下午11:31:01
+# @version 1.0
+#
+# @note: 
+#
+#---------------------------------------------------------------------
+
+import ChConfig
+import GameWorld
+import GameObj
+import PlayerControl
+
+
+def CheckCanHappen(attacker, defender, effect, curSkill):
+    
+    return True
+    
+
+def GetValue(attacker, defender, effect):
+    return 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 3d1af13..81787a1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/PassiveBuffEffMng.py
@@ -373,6 +373,10 @@
              4091:ChConfig.TriggerType_SkillOverNoAttack,   # 技能释放后 与TriggerType_AttackOver相反19,
              4092:ChConfig.TriggerType_SkillSuccess,  # 任何技能释放成功都可触发 76  减印记
              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
              }
     return tdict.get(effectID, -1) 
     #===========================================================================
@@ -420,6 +424,7 @@
              4529:ChConfig.TriggerType_Buff_SuckBloodPer,   # BUFF类: 百分比吸血, 此处非属性类
              4530:ChConfig.TriggerType_Buff_AttackSubLayer,  # BUFF类:攻击减buff层,0消失
              4531:ChConfig.TriggerType_BounceHPPerByAttacker,  # 反弹伤害百分比值, 由攻击方决定 77
+             4532:ChConfig.TriggerType_SuperHit,    # buff中对第一目标暴击触发技能
              
              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 8f260a8..e7b262f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -3436,16 +3436,6 @@
     return True
 
 
-#===============================================================================
-# Def_Effect_GoddessAddHP = 1300    # 加血 (压总值血量百分比)
-# Def_Effect_AddHPValue_All = 1027    # 持续加血(压总值攻击)
-# Def_Effect_LostHPValue_All = 1033    # 持续减血(压总值攻击)
-# Def_Effect_LostAndAddHPValue_All = 1050    # 持续吸血(压总值攻击)
-# Def_Effect_LostHPValue_Single = 1201    # 持续单次减血计算 攻击
-# Def_Effect_AddHPValue_Single = 1202    # 持续单次加血计算 攻击
-# Def_Effect_LostHP_MaxHP = 1089    # 持续减血(压总值, 血量百分比)
-#===============================================================================
-
 #waring: 此值影响了BUFF的替换规则,值大替换小的
 ##添加BUFF前压入BUFF的值,这边只计算和攻击者相关,仅支持放在效果1的buff
 # @param attacker 攻击方

--
Gitblit v1.8.0