ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnBuff.py
@@ -100,11 +100,11 @@
                if buff.GetOwnerID() != ownerID:
                    continue
                buffID = buff.GetBuffID()
                nowLayerCnt = buff.GetLayer()
                GameWorld.DebugLog("    已经存在该buff: buffID=%s,skillTypeID=%s,ownerID=%s,buffRepeat=%s" % (buffID, skillTypeID, ownerID, buffRepeat))
                
                updLayerCnt = addLayerCnt
                if buffRepeat == 3: # 叠加层级
                    nowLayerCnt = buff.GetLayer()
                    maxLayerCnt = buffSkill.GetLayerMax()
                    updLayerCnt = nowLayerCnt + addLayerCnt
                    if maxLayerCnt and updLayerCnt > maxLayerCnt:
@@ -123,6 +123,8 @@
                else:
                    SyncBuffRefresh(turnFight, batObj, buff, relatedSkillID, isNewAdd=True)
                    
                if nowLayerCnt != updLayerCnt:
                    RefreshBuffEffect(turnFight, batObj, buff, False)
                break
            
            return True
@@ -157,58 +159,44 @@
    else:
        SyncBuffRefresh(turnFight, batObj, buff, relatedSkillID, isNewAdd=True)
        
    DoBuffAddOver(turnFight, batObj, buffSkill, buff, buffOwner)
    RefreshBuffEffect(turnFight, batObj, buff, True)
    return
def DoBuffAddOver(turnFight, batObj, buffSkill, addBuff, buffOwner):
    ## buff添加成功后处理
def RefreshBuffEffect(turnFight, batObj, curBuff, isNewBuff=False):
    ## 刷新buff效果
    
    isRefreshAttr = False # 是否刷属性
    
    #atkType = buffSkill.GetAtkType()
    #if atkType:
    #    callFunc = GameWorld.GetExecFunc(TurnBuffs, "BuffAtkType_%d.%s" % (atkType, "OnBuffAddOver"))
    #    if callFunc:
    #        callFunc(turnFight, batObj, buffSkill, addBuff, buffOwner)
    skillData = curBuff.GetSkillData()
    passiveEffMgr = batObj.GetPassiveEffManager()
    # buff效果加入
    for effectIndex in range(0, buffSkill.GetEffectCount()):
        curEffect = buffSkill.GetEffect(effectIndex)
    for effectIndex in range(0, skillData.GetEffectCount()):
        curEffect = skillData.GetEffect(effectIndex)
        effectID = curEffect.GetEffectID()
        if effectID == 0:
            continue
        
        if curEffect.GetTriggerWay():
            if curEffect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf]:
                passiveEffMgr.AddBuffPassiveEffect(addBuff, buffSkill, curEffect)
            if curEffect.GetTriggerSrc() not in [ChConfig.TriggerSrc_Skill, ChConfig.TriggerSrc_SkillSelf] and isNewBuff:
                passiveEffMgr.AddBuffPassiveEffect(curBuff, skillData, curEffect)
                
        elif effectID in ChConfig.AttrIDList:
            isRefreshAttr = True
            
        else:
            callFunc = GameWorld.GetExecFunc(TurnBuffs, "Buff_%d.%s" % (effectID, "OnBuffAddOver"))
            if callFunc:
                callFunc(turnFight, batObj, buffSkill, addBuff, curEffect, buffOwner)
    if isRefreshAttr:
        RefreshBuffAttr(batObj)
        
    return
def DecBuffLayer(turnFight, batObj, curBuff, decLayer=1, relatedSkillID=0):
    ## 减少buff层级
    curLayer = curBuff.GetLayer()
    if not curLayer:
        return
    updLayer = max(0, curLayer - decLayer)
    curBuff.SetLayer(updLayer)
def DoBuffLayerChange(turnFight, batObj, curBuff, updLayer, relatedSkill=None):
    ## buff层级变更
    if updLayer > 0:
        curBuff.SetLayer(updLayer)
        relatedSkillID = relatedSkill.GetSkillID() if relatedSkill else 0
        SyncBuffRefresh(turnFight, batObj, curBuff, relatedSkillID)
        RefreshBuffEffect(turnFight, batObj, curBuff, False)
        return
    objID = batObj.GetID()
    buffID = curBuff.GetBuffID()
    SyncBuffDel(turnFight, objID, buffID, relatedSkillID)
    DoBuffDel(turnFight, batObj, curBuff, relatedSkill)
    return
def DoBuffDel(turnFight, batObj, curBuff, relatedSkill=None, afterLogic=False, tagObj=None):
@@ -303,6 +291,7 @@
    buffMgr = batObj.GetBuffManager()
    for index in range(buffMgr.GetBuffCount()):
        buff = buffMgr.GetBuffByIndex(index)
        layer = max(1, buff.GetLayer())
        skillData = buff.GetSkillData()
        for eIndex in range(skillData.GetEffectCount()):
            effect = skillData.GetEffect(eIndex)
@@ -310,13 +299,13 @@
            if effID not in ChConfig.AttrIDList:
                continue
            attrID = effID
            attrValue = effect.GetEffectValue(0)
            attrValue = effect.GetEffectValue(0) * layer
            calcType = effect.GetEffectValue(1)
            if calcType == 2: # 减少,其他默认增加
                attrValue = -attrValue
            buffAttrDict[attrID] = buffAttrDict.get(attrID, 0) + attrValue
            
    GameWorld.DebugLog("    __addBuffAttr buffAttrDict=%s" % buffAttrDict)
    GameWorld.DebugLog("    buffAttrDict=%s" % buffAttrDict)
    
    objID = batObj.GetID()
    # 先计算百分比加成或降低的