From c82bf80c543ddc6bada1e3085acb8ab9ee7b13db Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 28 十一月 2025 14:26:33 +0800
Subject: [PATCH] 237 【福利内容】每日任务/每周任务/章节奖励-服务端(A340下发已完成的成就)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 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 17425ce..193fe3a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
@@ -78,7 +78,7 @@
     poolMgr.release(useSkill)
     return addBuff
 
-def OnAddBuff(turnFight, batObj, buffSkill, buffOwner=None, bySkill=None, afterLogic=False, isSync=True, setLayerCnt=0):
+def OnAddBuff(turnFight, batObj, buffSkill, buffOwner=None, bySkill=None, afterLogic=False, isSync=True, **kwargs):
     skillID = buffSkill.GetSkillID()
     bySkill = buffSkill.GetBySkill() if not bySkill else bySkill
     relatedSkillID = bySkill.GetSkillID() if bySkill else 0
@@ -114,6 +114,7 @@
     
     skillTypeID = buffSkill.GetSkillTypeID()
     buffRepeat = buffSkill.GetBuffRepeat()
+    setLayerCnt = kwargs.get("setLayerCnt", 0)
     if setLayerCnt > 0:
         addLayerCnt = setLayerCnt
         GameWorld.DebugLog("外部直接指定添加的buff层级: setLayerCnt=%s" % setLayerCnt)
@@ -124,6 +125,7 @@
             # 可指定来源技能技能才生效,不指定的话默认生效
             if not addLayerEff.GetTriggerSrc() or addLayerEff.GetTriggerSrc() == relatedSkillID:
                 addLayerCnt = GameWorld.GetResultByWeightList(addLayerEff.GetEffectValues(), addLayerCnt)
+        addLayerCnt += TurnPassive.GetTriggerEffectValue(turnFight, buffOwner, batObj, ChConfig.PassiveEff_AddBuffLayer, buffSkill)
     maxLayerCnt = buffSkill.GetLayerMax()
     if maxLayerCnt:
         maxLayerCnt += TurnPassive.GetTriggerEffectValue(turnFight, buffOwner, batObj, ChConfig.PassiveEff_AddBuffLayerMax, buffSkill)
@@ -255,7 +257,7 @@
             continue
         
         if curEffect.GetTriggerWay():
-            if curEffect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf] and refreshType == 1:
+            if refreshType == 1 and curEffect.GetTriggerBuffEnable():
                 passiveEffMgr.AddBuffPassiveEffect(curBuff, skillData, curEffect)
                 
         elif effectID in ChConfig.AttrIDList:
@@ -384,7 +386,7 @@
             if triggerWay == ChConfig.TriggerWay_BuffDel:
                 TurnPassive.OnTriggerPassiveEffect(turnFight, batObj, ChConfig.TriggerWay_BuffDel, connBuff=curBuff)
                 
-            if curEffect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf]:
+            if curEffect.GetTriggerBuffEnable():
                 haveBuffPassiveEff = True
                 
         elif effectID in ChConfig.AttrIDList:
@@ -455,8 +457,8 @@
             effID = effect.GetEffectID()
             if effID not in ChConfig.AttrIDList:
                 continue
-            if effect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf]:
-                # 技能时仅技能有效
+            if effect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill]:
+                # 技能属性仅技能时有效
                 continue
             attrID = effID
             attrValue = effect.GetEffectValue(0)
@@ -475,16 +477,25 @@
         layer = max(1, buff.GetLayer())
         skillData = buff.GetSkillData()
         
+        effExDict = buff.GetEffectExDict()
+        for effID, effValueEx in effExDict.items():
+            if effID not in ChConfig.AttrIDList:
+                continue
+            attrID = effID
+            attrValue = effValueEx * layer
+            buffsAttrDict[attrID] = buffsAttrDict.get(attrID, 0) + attrValue
+            skbufAttrDict[attrID] = skbufAttrDict.get(attrID, 0) + attrValue
+            
         for eIndex in range(skillData.GetEffectCount()):
             effect = skillData.GetEffect(eIndex)
             effID = effect.GetEffectID()
             if effID not in ChConfig.AttrIDList:
                 continue
-            if effect.GetTriggerSrc() and effect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Buff, ChConfig.TriggerSrc_BuffSelf]:
+            if not (not effect.GetTriggerSrc() or effect.GetTriggerBuffEnable()):
                 # buff时,不配默认有效,或仅buff有效
                 continue
             attrID = effID
-            attrValue = (effect.GetEffectValue(0) + buff.GetEffectValueEx(attrID)) * layer
+            attrValue = effect.GetEffectValue(0) * layer
             calcType = effect.GetEffectValue(1)
             if calcType == 2: # 减少,其他默认增加
                 attrValue = -attrValue

--
Gitblit v1.8.0