From 2350f87cbba3da859d02632aa8116c1511d6d60b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 24 九月 2025 18:54:13 +0800
Subject: [PATCH] 129 【战斗】战斗系统-服务端(马超所有技能;增加触发方式20 21 22;增加效果5006 6010 6011 6012 6013;修复非学习的子技能加载触发效果bug;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
index bd8ae78..b319418 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
@@ -74,16 +74,21 @@
             return False
         
     buffValueList = GetAddBuffValue(turnFight, buffOwner, batObj, buffSkill)
-    GameWorld.DebugLog("OnAddBuff: curID=%s,skillID=%s,atkType=%s,buffValueList=%s,ownerID=%s,relatedSkillID=%s" 
-                       % (curID, skillID, buffSkill.GetAtkType(), buffValueList, ownerID, relatedSkillID))
     
     skillTypeID = buffSkill.GetSkillTypeID()
     buffRepeat = buffSkill.GetBuffRepeat()
     addLayerCnt = buffSkill.GetLayerCnt()
     addLayerEff = buffSkill.GetEffectByID(ChConfig.PassiveEff_AddBuffLayerByWeight)
     if addLayerEff:
-        addLayerCnt = GameWorld.GetResultByWeightList(addLayerEff.GetEffectValues(), addLayerCnt)
+        # 可指定来源技能技能才生效,不指定的话默认生效
+        if not addLayerEff.GetTriggerSrc() or addLayerEff.GetTriggerSrc() == relatedSkillID:
+            addLayerCnt = GameWorld.GetResultByWeightList(addLayerEff.GetEffectValues(), addLayerCnt)
+    maxLayerCnt = buffSkill.GetLayerMax()
+    if maxLayerCnt:
+        maxLayerCnt += TurnPassive.GetTriggerEffectValue(turnFight, buffOwner, batObj, ChConfig.PassiveEff_AddBuffLayerMax, buffSkill)
         
+    GameWorld.DebugLog("OnAddBuff: curID=%s,skillID=%s,atkType=%s,buffValueList=%s,addLayerCnt=%s/%s,ownerID=%s,relatedSkillID=%s" 
+                       % (curID, skillID, buffSkill.GetAtkType(), buffValueList, addLayerCnt, maxLayerCnt, ownerID, relatedSkillID))
     #buff重复获得时的叠加规则
     #以下规则默认针对的是相同施法者,即相同来源的处理
     #如果有针对不同施法者的规则会说明
@@ -97,7 +102,6 @@
     buffMgr = batObj.GetBuffManager()
     
     if buffRepeat == 4: # 4 独立:回合、效果独立计算
-        maxLayerCnt = buffSkill.GetLayerMax()
         # 如果有限制最大层数,达到上限时如果有新的层数进来,就替换掉持续时间最短的,只算相同来源
         if maxLayerCnt:
             buffList = buffMgr.FindBuffListBySkillTypeID(skillTypeID)
@@ -136,11 +140,10 @@
             
             updLayerCnt = addLayerCnt
             if buffRepeat == 3: # 叠加层级
-                maxLayerCnt = buffSkill.GetLayerMax()
                 updLayerCnt = nowLayerCnt + addLayerCnt
                 if maxLayerCnt and updLayerCnt > maxLayerCnt:
                     updLayerCnt = maxLayerCnt
-                GameWorld.DebugLog("        叠加层级: nowLayerCnt=%s,addLayerCnt=%s,updLayerCnt=%s" % (nowLayerCnt, addLayerCnt, updLayerCnt))
+                GameWorld.DebugLog("        叠加层级: nowLayerCnt=%s,addLayerCnt=%s,updLayerCnt=%s,maxLayerCnt=%s" % (nowLayerCnt, addLayerCnt, updLayerCnt, maxLayerCnt))
             else:
                 GameWorld.DebugLog("        默认覆盖")
                 

--
Gitblit v1.8.0