From 6147d46800b735eedf348f7b7b80038b1a5efe7c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 13 三月 2026 17:51:16 +0800
Subject: [PATCH] 16 卡牌服务端(增加广告领奖流向记录;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py |  141 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 108 insertions(+), 33 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
index 135eb26..04d2139 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -163,8 +163,8 @@
     angerOverflow = curBatObj.GetAngerOverflow()
     
     bySkillID = bySkill.GetSkillID() if bySkill else 0
-    GameWorld.DebugLogEx("◆使用技能: curID=%s,skillID=%s,tagCnt=%s,batType=%s,bySkillID=%s,HP:%s/%s,angerOverflow=%s,curXP=%s,oneActionUseCnt=%s", 
-                         objID, skillID, len(tagObjList), batType, bySkillID, curBatObj.GetHP(), curBatObj.GetMaxHP(), angerOverflow, curXP, oneActionUseCnt)
+    GameWorld.DebugLogEx("◆使用技能: skillID=%s,curID=%s,tagCnt=%s,batType=%s,bySkillID=%s,HP:%s/%s,angerOverflow=%s,curXP=%s,oneActionUseCnt=%s", 
+                         skillID, objID, len(tagObjList), batType, bySkillID, curBatObj.GetHP(), curBatObj.GetMaxHP(), angerOverflow, curXP, oneActionUseCnt)
     # 以下为技能可以使用的处理,之后的逻辑默认技能使用成功
     
     if isinstance(useSkill, IpyGameDataPY.IPY_Skill):
@@ -755,7 +755,7 @@
     #执行添加buff
     
     #光环技能,需先添加施法者
-    if useSkill.GetSkillType() == ChConfig.Def_SkillType_Halo:
+    if useSkill.GetSkillType() in ChConfig.Def_HaloSkill_List:
         curID = curBatObj.GetID()
         skillID = useSkill.GetSkillID()
         GameWorld.DebugLogEx("光环技能先给施法者添加光源buff! skillID=%s,ownerID=%s", skillID, curID)
@@ -1569,6 +1569,10 @@
     
     # ========== 以下触发被动 ==========
     
+    curBatLineup = curObj.GetTFBatLineup()
+    curMGObj = curBatLineup.getMinggeObj()
+    mgTriggerWayList = [] # 命格本次技能已触发方式列表,命格固定只触发一次
+    
     # buff消失后置处理的被动,优先处理,如破盾,区别于被动方式  ChConfig.TriggerWay_BuffDel(立即触发)
     for buffObjID, buff, tagObjID, afterTriggerData in delBuffAfterEffList:
         triggerWay, effInfoList = afterTriggerData
@@ -1615,6 +1619,9 @@
         TurnBuff.DoBuffByRevive(turnFight, tagObj)
         TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Revive, curObj, connSkill=useSkill)
         TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_InBattlefield, curObj, connSkill=useSkill)
+    if reviveObjList and curMGObj:
+        tagObj = reviveObjList[0]
+        TurnPassive.OnTriggerPassiveEffect(turnFight, curMGObj, ChConfig.TriggerWay_Revive, tagObj, connSkill=useSkill, byFriendObj=curObj)
         
     # 曹仁防护触发,暂写死
     for tagObj in caorenProtectList:
@@ -1633,9 +1640,7 @@
     triggerOne = False
     batType = useSkill.GetBatType()
     isAttackDirect = (isUseSkill and SkillCommon.isAttackDirectSkill(useSkill)) # 是否直接攻击
-    curBatLineup = curObj.GetTFBatLineup()
-    curMGObj = curBatLineup.getMinggeObj()
-    mgTriggerWayList = [] # 命格本次技能已触发方式列表,命格固定只触发一次
+    objTriigerWayInfo = {} # 敌友已触发的列表,一般用于控制每人只触发一次的 {objID:{triggerWay:triggerCnt, ...}}
     for tagObj in tagObjListAll:
         tagID = tagObj.GetID()
         
@@ -1643,7 +1648,11 @@
         if tagID in missObjIDList:
             TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_BeMiss, tagObj, connSkill=useSkill)
             TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Miss, curObj, connSkill=useSkill)
-            
+            tagMGObj = tagObj.GetTFBatLineup().getMinggeObj()
+            if tagMGObj and ChConfig.TriggerWay_Miss not in mgTriggerWayList:
+                mgTriggerWayList.append(ChConfig.TriggerWay_Miss)
+                TurnPassive.OnTriggerPassiveEffect(turnFight, tagMGObj, ChConfig.TriggerWay_Miss, curObj, connSkill=useSkill, byBatObj=tagObj)
+                
         # 免疫
         if tagID in immuneObjIDList:
             TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_ImmuneHurt, curObj, connSkill=useSkill)
@@ -1691,7 +1700,10 @@
         if tagID in stunObjIDList:
             TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_Stun, tagObj, connSkill=useSkill)
             TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeStun, curObj, connSkill=useSkill)
-            
+            if curMGObj and ChConfig.TriggerWay_Stun not in mgTriggerWayList:
+                mgTriggerWayList.append(ChConfig.TriggerWay_Stun)
+                TurnPassive.OnTriggerPassiveEffect(turnFight, curMGObj, ChConfig.TriggerWay_Stun, tagObj, connSkill=useSkill, byBatObj=curObj)
+                
         # 控制
         if tagID in beControlledHardDict:
             buff = beControlledHardDict[tagID]
@@ -1711,22 +1723,37 @@
         if tagID in superHitObjIDList:
             TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_SuperHit, tagObj, connSkill=useSkill)
             TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeSuperHit, curObj, connSkill=useSkill)
-            
+            if curMGObj and ChConfig.TriggerWay_SuperHit not in mgTriggerWayList:
+                mgTriggerWayList.append(ChConfig.TriggerWay_SuperHit)
+                TurnPassive.OnTriggerPassiveEffect(turnFight, curMGObj, ChConfig.TriggerWay_SuperHit, tagObj, connSkill=useSkill, byBatObj=curObj)
+                
         # 格挡
         if tagID in parryObjIDList:
             TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_BeParry, tagObj, connSkill=useSkill)
             TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_Parry, curObj, connSkill=useSkill)
-            
+            tagMGObj = tagObj.GetTFBatLineup().getMinggeObj()
+            if tagMGObj and ChConfig.TriggerWay_Parry not in mgTriggerWayList:
+                mgTriggerWayList.append(ChConfig.TriggerWay_Parry)
+                TurnPassive.OnTriggerPassiveEffect(turnFight, tagMGObj, ChConfig.TriggerWay_Parry, curObj, connSkill=useSkill, byBatObj=tagObj)
+                
         # 吸血
         if tagID in suckObjIDList:
             if not triggerOne:
                 TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_SuckHPOne, tagObj, connSkill=useSkill)
             TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeSuckHP, curObj, connSkill=useSkill)
-            
+            if curMGObj and ChConfig.TriggerWay_SuckHPOne not in mgTriggerWayList:
+                mgTriggerWayList.append(ChConfig.TriggerWay_SuckHPOne)
+                TurnPassive.OnTriggerPassiveEffect(turnFight, curMGObj, ChConfig.TriggerWay_SuckHPOne, tagObj, connSkill=useSkill, byBatObj=curObj)
+                
         # 连击
         if batType == ChConfig.TurnBattleType_Combo:
+            if not triggerOne:
+                TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_ComboOne, tagObj, connSkill=useSkill)
             TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_Combo, tagObj, connSkill=useSkill)
             TurnPassive.OnTriggerPassiveEffect(turnFight, tagObj, ChConfig.TriggerWay_BeCombo, curObj, connSkill=useSkill)
+            if curMGObj and ChConfig.TriggerWay_Combo not in mgTriggerWayList:
+                mgTriggerWayList.append(ChConfig.TriggerWay_Combo)
+                TurnPassive.OnTriggerPassiveEffect(turnFight, curMGObj, ChConfig.TriggerWay_Combo, tagObj, connSkill=useSkill, byBatObj=curObj)
         # 追击
         elif batType == ChConfig.TurnBattleType_Pursue:
             TurnPassive.OnTriggerPassiveEffect(turnFight, curObj, ChConfig.TriggerWay_Pursue, tagObj, connSkill=useSkill)
@@ -1748,6 +1775,10 @@
                 if not lineupObj.IsAlive():
                     continue
                 
+                if lineupObjID not in objTriigerWayInfo:
+                    objTriigerWayInfo[lineupObjID] = {}
+                objTriigerWayCntDict = objTriigerWayInfo[lineupObjID]
+                
                 # 直接攻击
                 if isAttackDirect:
                     if not triggerOne:
@@ -1759,17 +1790,26 @@
                     if not triggerOne:
                         TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendDotHurt, tagObj, connSkill=useSkill, byFriendObj=curObj)
                         
-                # 敌方被控时
+                # 敌方被控时 - 默认为友军造成的
                 if tagID in beControlledHardDict and lineupObj.GetFaction() != tagObj.GetFaction():
                     TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_EnemyBeControlledHard, tagObj, connSkill=useSkill)
-                    
+                    tagBuff = beControlledHardDict[tagID]
+                    # 敌方被冰冻
+                    if tagBuff.GetCurBuffState() == ChConfig.BatObjState_Frozen:
+                        if ChConfig.TriggerWay_FriendCausesFrozen not in objTriigerWayCntDict:
+                            objTriigerWayCntDict[ChConfig.TriggerWay_FriendCausesFrozen] = 1
+                            TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendCausesFrozen, tagObj, connSkill=useSkill)
+                            
                 # 连击
                 if batType == ChConfig.TurnBattleType_Combo:
                     TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendCombo, tagObj, connSkill=useSkill, byFriendObj=curObj)
-                    
+                    if isAttackDirect:
+                        TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendComboHurt, tagObj, connSkill=useSkill, byFriendObj=curObj)
                 # 追击
                 elif batType == ChConfig.TurnBattleType_Pursue:
                     TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendPursue, tagObj, connSkill=useSkill, byFriendObj=curObj)
+                    if isAttackDirect:
+                        TurnPassive.OnTriggerPassiveEffect(turnFight, lineupObj, ChConfig.TriggerWay_FriendPursueHurt, tagObj, connSkill=useSkill, byFriendObj=curObj)
                     
         triggerOne = True # 设置已经触发过一次
         
@@ -1834,10 +1874,10 @@
     
     fightPoint = max(curPlayer.GetFightPoint(), 1) # 主线战斗消耗倍值,默认1
     costZhanchuiTotal = costZhanchui * fightPoint
-    if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_Xiantao, costZhanchuiTotal, isNotify=False):
+    if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_Xiantao, costZhanchuiTotal, "UseSkill", isNotify=False):
         # 不足时,有多少扣多少
         nowMoney = PlayerControl.GetMoney(curPlayer, ShareDefine.TYPE_Price_Xiantao)
-        PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_Xiantao, min(nowMoney, costZhanchuiTotal), isNotify=False)
+        PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_Xiantao, min(nowMoney, costZhanchuiTotal), "UseSkill", isNotify=False)
         
     return
 
@@ -2060,9 +2100,11 @@
         bySkillID = connBuff.GetSkillID()
     passiveSkillID = passiveSkill.GetSkillID()
     if passiveSkillID == bySkillID:
-        #GameWorld.DebugLogEx("###被动触发技能不触发自身,防止死循环! effSkillID=%s,effectID=%s,passiveSkillID=%s", effSkillID, effectID, passiveSkillID)
-        return
-    
+        if not connSkill or connSkill.GetObjID() == batObj.GetID():
+            GameWorld.DebugLogEx("###被动触发技能不触发自身,防止死循环! effSkillID=%s,effectID=%s,passiveSkillID=%s", effSkillID, effectID, passiveSkillID)
+            return
+        # 不同施法者的相同技能ID可触发,如双方都有相同武将相同技能的情况下,如吕玲绮
+        
     if hasattr(passiveSkill, "GetRemainTime") and passiveSkill.GetRemainTime() > 0:
         #GameWorld.DebugLogEx("被动触发技能CD中! skillID=%s,RemainTime=%s", passiveSkillID, passiveSkill.GetRemainTime())
         return
@@ -2128,6 +2170,8 @@
     pmType = GetPMType(atkObj, curSkill)
     ignoreDef = IsIgnoreDef(curSkill)
     batType = curSkill.GetBatType()
+    atkMGObj = atkObj.GetTFBatLineup().getMinggeObj()
+    defMGObj = defObj.GetTFBatLineup().getMinggeObj()
     
     changeHurtType = TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_ChangeHurtType, curSkill)
     if not changeHurtType:
@@ -2144,23 +2188,33 @@
     isAngerSkill = SkillCommon.isAngerSkill(curSkill)
     isDot = ("damageoftime" in kwargs)
     
-    mustHit = False # 是否必命中
-    if not isTurnNormalSkill: # 仅普攻判断是否闪避
-        mustHit = True
-        
-    angerOverflow = atkObj.GetAngerOverflow() # 怒气溢出值
-    
-    #命中公式 攻击方类型不同,公式不同
-    if not mustHit and not curSkill.GetEffectByID(ChConfig.SkillEff_MustHit) and not defObj.IsInControlledHard():
+    # 常规闪避 - 仅针对普攻
+    if isTurnNormalSkill and not curSkill.GetEffectByID(ChConfig.SkillEff_MustHit) and not defObj.IsInControlledHard():
         aMissRateDef = atkObj.GetBatAttrValue(ChConfig.AttrID_MissRateDef) #atkObj.GetHit() # 抗闪避率 - 命中
         dMissRate = defObj.GetBatAttrValue(ChConfig.AttrID_MissRate) # 闪避率
         missNum = curSkill.GetTagMissNum(defID)
         missRate = eval(IpyGameDataPY.GetFuncCompileCfg("MissCfg", 1))
         if GameWorld.CanHappen(missRate):
             GameWorld.DebugLogEx("闪避了! missRate=%s,dMissRate=%s,aMissRateDef=%s,missNum=%s", missRate, dMissRate, aMissRateDef, missNum)
-            curSkill.SetTagMissNum(defID, missRate + 1)
+            curSkill.SetTagMissNum(defID, missNum + 1)
             return 0, pow(2, ChConfig.HurtAtkType_Miss)
         
+    # 绝对闪避 - 除dot外的所有技能,因为绝对闪避不触发常规闪避的被动,所以在常规闪避后判断
+    if not isDot:
+        aMissRateDef = atkObj.GetBatAttrValue(ChConfig.AttrID_AbsoluteMissRateDef)
+        dMissRate = defObj.GetBatAttrValue(ChConfig.AttrID_AbsoluteMissRate)
+        if defMGObj:
+            dMissRate += defMGObj.GetBatAttrValue(ChConfig.AttrID_AbsoluteMissRate)
+        missNum = curSkill.GetTagMissNum(defID)
+        if dMissRate > 0:
+            missRate = eval(IpyGameDataPY.GetFuncCompileCfg("MissCfg", 1))
+            if GameWorld.CanHappen(missRate):
+                GameWorld.DebugLogEx("绝对闪避了! missRate=%s,dAbsoluteMissRate=%s,aAbsoluteMissRateDef=%s,missNum=%s", missRate, dMissRate, aMissRateDef, missNum)
+                curSkill.SetTagMissNum(defID, missNum + 1)
+                return 0, pow(2, ChConfig.HurtAtkType_AbsoluteMiss)
+            
+    angerOverflow = atkObj.GetAngerOverflow() # 怒气溢出值
+    
     hurtTypes = pow(2, ChConfig.HurtAtkType_Hurt)
     
     isSuperHit, isParry, isStun = False, False, False
@@ -2179,7 +2233,8 @@
         aSuperDamPer = IpyGameDataPY.GetFuncCfg("SuperHitCfg", 2) * 10000
         aSuperDamPer += atkObj.GetBatAttrValue(ChConfig.AttrID_SuperDamPer)
         aSuperDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_SuperDamPer, curSkill)
-        
+        if atkMGObj:
+            aSuperDamPer += atkMGObj.GetBatAttrValue(ChConfig.AttrID_SuperDamPer)
         dSuperDamPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_SuperDamPerDef)
         
     if isParry:
@@ -2208,6 +2263,9 @@
     aFinalDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddFinalDamPer, curSkill)
     aFinalDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_FinalDamPer, curSkill)
     
+    if defMGObj:
+        dFinalDamPerDef += defMGObj.GetBatAttrValue(ChConfig.AttrID_FinalDamPerDef)
+        
     #招架  - 无视攻击方最终增伤百分比
     dZhaojia = defObj.GetBatAttrValue(ChConfig.AttrID_Zhaojia)
     aZhaojiaDef = atkObj.GetBatAttrValue(ChConfig.AttrID_ZhaojiaDef)
@@ -2255,6 +2313,8 @@
             aDOTPer += atkObj.GetBatAttrValue(ChConfig.AttrID_DOTBurnPer)
             dDOTPerDef += defObj.GetBatAttrValue(ChConfig.AttrID_DOTBurnPerDef)
             GameWorld.DebugLogEx("是灼烧: aDOTPer=%s,dDOTPerDef=%s", aDOTPer, dDOTPerDef)
+        if atkMGObj:
+            aDOTPer += atkMGObj.GetBatAttrValue(ChConfig.AttrID_DOTPer)
             
     #aAddSkillPer = 0 # 技能增伤
     dBatDamPerDef = 0 # 战斗增减伤
@@ -2262,7 +2322,9 @@
     aBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.AttrID_BatDamPer, curSkill)
     aBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddBatDamPerByTagLostHP, curSkill)
     aBatDamPer += addBatDamPer
-    
+    if atkMGObj:
+        aBatDamPer += TurnPassive.GetTriggerEffectValue(turnFight, atkMGObj, defObj, ChConfig.AttrID_BatDamPer, curSkill)
+        
     # 物法增减伤
     if pmType == IPY_GameWorld.ghtMag: # 法伤
         aPMDamPer = atkObj.GetBatAttrValue(ChConfig.AttrID_MagDamPer)
@@ -2286,12 +2348,15 @@
     if batType == ChConfig.TurnBattleType_Combo:
         aComboDamPer = atkObj.GetBatAttrValue(ChConfig.AttrID_ComboDamPer)
         dComboDamPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_ComboDamPerDef)
-        
+        if atkMGObj:
+            aComboDamPer += atkMGObj.GetBatAttrValue(ChConfig.AttrID_ComboDamPer)
     aPursueDamPer, dPursueDamPerDef = 0, 0 # 追击增伤
     if batType == ChConfig.TurnBattleType_Pursue:
         aPursueDamPer = atkObj.GetBatAttrValue(ChConfig.AttrID_PursueDamPer)
         dPursueDamPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_PursueDamPerDef)
-        
+        if atkMGObj:
+            aPursueDamPer += atkMGObj.GetBatAttrValue(ChConfig.AttrID_PursueDamPer)
+            
     aPVPDamPer, dPVPDamPerDef = 0, 0 # PVP
     if turnFight.isPVP() > 0:
         aPVPDamPer = atkObj.GetBatAttrValue(ChConfig.AttrID_PVPDamPer)
@@ -2406,6 +2471,7 @@
     atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByBuffLayer, curSkill)
     atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByDeadTeammate, curSkill)
     atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByBuffState, curSkill)
+    atkSkillPer += TurnPassive.GetTriggerEffectValue(turnFight, atkObj, defObj, ChConfig.PassiveEff_AddSkillPerByBeFrozenCnt, curSkill)
     return atkSkillPer
 
 def CanSuperHit(turnFight, atkObj, defObj, curSkill):
@@ -2891,10 +2957,16 @@
     damBackPer = 0
     buffMgr = defObj.GetBuffManager()
     for buff in buffMgr.FindBuffListByState(ChConfig.BatObjState_DamBackShield):
-        damBackPer += buff.GetValue1()
+        damBackPer += buff.GetValue1() * max(1, buff.GetLayer())
         connSkillTypeID = buff.GetSkillTypeID()
         damBackPer += TurnPassive.GetTriggerEffectValue(turnFight, defObj, atkObj, ChConfig.PassiveEff_AddDamBackPerByBuffLayer, connSkillTypeID=connSkillTypeID)
         
+    defMGObj = defObj.GetTFBatLineup().getMinggeObj()
+    if defMGObj:
+        mgBuffMgr = defMGObj.GetBuffManager()
+        for buff in mgBuffMgr.FindBuffListByState(ChConfig.BatObjState_DamBackShield):
+            damBackPer += buff.GetValue1() * max(1, buff.GetLayer())
+            
     if damBackPer <= 0:
         return
     
@@ -2923,7 +2995,10 @@
         # dot施法者已死亡不再吸血
         return
     
+    atkMGObj = atkObj.GetTFBatLineup().getMinggeObj()
     aSuckHPPer = atkObj.GetBatAttrValue(ChConfig.AttrID_SuckHPPer)
+    if atkMGObj:
+        aSuckHPPer += atkMGObj.GetBatAttrValue(ChConfig.AttrID_SuckHPPer)
     aCurePer = atkObj.GetBatAttrValue(ChConfig.AttrID_CurePer)
     
     dSuckHPPerDef = defObj.GetBatAttrValue(ChConfig.AttrID_SuckHPPerDef)

--
Gitblit v1.8.0