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)
@@ -455,7 +457,7 @@
            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
@@ -475,6 +477,15 @@
        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()
@@ -484,7 +495,7 @@
                # 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