ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py
@@ -351,6 +351,11 @@
        # 继承上一个buff的循环记录
        addBuff.SetProcessInterval(updProcessInterval)
        
    turnFightTimeline = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightTimeline)
    if turnFightTimeline:
        addBuff.SetCalcStartTick(turnFightTimeline)
        #GameWorld.DebugLog("        SetCalcStartTick:%s, skillID=%s,objID=%s" % (turnFightTimeline, skillID, curObj.GetID()))
    #设置buff属性
    __SetBuffValue(addBuff , plusValueList , buffOwner)
    
@@ -402,7 +407,7 @@
        PYSync_RefreshBuff(curObj, addBuff, SkillCommon.GetBuffType(curSkill), notifyAll=False, owner = buffOwner, errSkillID=skillID)
        
    #添加BUFF后的特殊处理
    DoAddBuffOver(curObj, curSkill, addBuff, buffOwner, tick)
    DoAddBuffOver(curObj, buffState, curSkill, addBuff, buffOwner, tick)
    #检查是否属于刷新BUFF
    #===========================================================================
@@ -419,7 +424,7 @@
# @param addBuff 玩家身上的BUFF实例
# @param tick 时间戳
# @return None 
def DoAddBuffOver(curObj, curSkill, addBuff, buffOwner, tick):
def DoAddBuffOver(curObj, buffState, curSkill, addBuff, buffOwner, tick):
    #触发被动技能
    if buffOwner:
        PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddBuffOver, tick)
@@ -451,6 +456,10 @@
        
        callFunc(curObj, addBuff, curEffect, tick, buffOwner)
    
    # 回合制下,持续型处理buff添加后立即处理一次
    if isLstSkill and curObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightTimeline):
        SkillShell.ProcessSinglePersistBuff(curObj, buffState, addBuff, tick, True)
    return
@@ -565,7 +574,7 @@
    buffState.Sync_RefreshBuff(buffIndex, curBuff.GetRemainTime())
    
    DoAddBuffOver(curObj, curBuff.GetSkill(), curBuff, buffOwner, GameWorld.GetGameWorld().GetTick())
    DoAddBuffOver(curObj, buffState, curBuff.GetSkill(), curBuff, buffOwner, GameWorld.GetGameWorld().GetTick())
    return
#---------------------------------------------------------------------
@@ -655,7 +664,8 @@
    
    index = 0
    isPlayerTJG = (curObj.GetGameObjType() == IPY_GameWorld.gotPlayer and PlayerTJG.GetIsTJG(curObj))
    turnNum = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightNum) # 回合编号,大于0同时也代表回合制中
    turnFightTimeline = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightTimeline)
    turnNum, actionNum = turnFightTimeline / 100, turnFightTimeline % 100
    
    skillIDListInDelBuff = []   # buff消失中需要处理添加buff,外层处理避免错乱
    
@@ -678,17 +688,42 @@
            #GameWorld.DebugLog("脱机挂状态下不刷新buff时间: skillTypeID=%s" % curSkill.GetSkillTypeID())
            continue
        
        remainTime = curBuffRemainTime - ( tick - curBuff.GetCalcStartTick() )
        # buff回合时长计算
        if turnNum > 0:
            remainTime -= ChConfig.Def_PerTurnTick
            GameWorld.DebugLog("    刷新buff时间: objID=%s,skillID=%s,remainTime=%s,turnNum=%s" % (curObj.GetID(), curSkill.GetSkillID(), remainTime, turnNum))
            #回合制下持续性类型buff由process时机处理 ProcessSinglePersistBuff
            if curSkill.GetSkillType() in ChConfig.Def_LstBuff_List:
                index += 1
                continue
            calcTick = curBuff.GetCalcStartTick()
            calcTurnNum, calcActionNum = calcTick / 100, calcTick % 100
            passTurnNum = turnNum - calcTurnNum # 经过的回合数
            if passTurnNum > 0:
                if actionNum < calcActionNum:
                    passTurnNum -= 1 # 还未到该buff的计算节点,可视为本回合未到,需-1
            remainTime = curBuffRemainTime
            if passTurnNum > 0: # 最小单位1回合,有满1回合才减时长
                remainTime = curBuffRemainTime - ChConfig.Def_PerTurnTick * passTurnNum
                GameWorld.DebugLog("    刷新回合buff时间: objID=%s,skillID=%s,remainTime=%s,calcTick=%s,timeline=%s,passTurnNum=%s"
                                   % (curObj.GetID(), curSkill.GetSkillID(), remainTime, calcTick, turnFightTimeline, passTurnNum))
                curBuff.SetCalcStartTick(turnFightTimeline)
                curBuff.SetRemainTime(remainTime)
            #还有剩余时间
            if remainTime > 0:
                index += 1
                continue
            
        #还有剩余时间
        if remainTime > 0:
            curBuff.SetCalcStartTick( tick )
            curBuff.SetRemainTime( remainTime )
            index += 1
            continue
        # buff常规时长计算
        else:
            remainTime = curBuffRemainTime - ( tick - curBuff.GetCalcStartTick() )
            #还有剩余时间
            if remainTime > 0:
                curBuff.SetCalcStartTick( tick )
                curBuff.SetRemainTime( remainTime )
                index += 1
                continue
        #-------------------无剩余时间了
        curBuff.SetRemainTime(0)