From 367fd9c77f82b2c7960dc9281c270e550d3ecbb0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 30 一月 2026 15:23:37 +0800
Subject: [PATCH] 438 【方案】方案预设-服务端(修复当前流派子方案切换时如切武将方案,定军阁进攻武将不会刷新的bug;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py |   40 +++++++++++++++++++++++++++++++++-------
 1 files changed, 33 insertions(+), 7 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 3636b76..6debe17 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnSkill.py
@@ -2084,9 +2084,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
@@ -2152,6 +2154,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:
@@ -2183,6 +2187,8 @@
     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))
@@ -2211,7 +2217,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:
@@ -2240,6 +2247,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)
@@ -2287,6 +2297,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 # 战斗增减伤
@@ -2294,7 +2306,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)
@@ -2318,12 +2332,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)
@@ -2927,6 +2944,12 @@
         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
     
@@ -2955,7 +2978,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