ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -2423,32 +2423,45 @@
    if not buffStateCount:
        return
    
    turnNum = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightNum) # 回合编号,大于0同时也代表回合制中
    #buff持续效果
    for i in range(0, buffStateCount):
    #buff持续效果,回合下可能删除buff,倒序遍历
    for i in range(0, buffStateCount)[::-1]:
        curBuff = buffState.GetBuff(i)
        ProcessSinglePersistBuff(curObj, buffState, curBuff, tick)
        
    #执行ProcessBuff中设定的玩家字典
    __DoProcessBuff_PlayerKey(curObj, tick)
    return
def ProcessSinglePersistBuff(curObj, buffState, curBuff, tick, turnForce=False):
    '''处理单个持续性buff,可能会删除buff,调用时如果是循环遍历,需注意遍历顺序,防止buff删除后索引错乱
    @param turnForce: 回合下强制立刻执行
    '''
        if not curBuff:
            #在以下处理过程中, 对方有可能死亡, 如果死亡, 会清空buff, 导致这里取得None
            #所以一定要continue
            continue
        return
        curBuffSkill = curBuff.GetSkill()
        
        if not __BuffCanProcess(curObj, curBuffSkill):
            continue
        return
        processBuffTick = GetProcessBuffTick(curBuffSkill, curObj)
        
    isDel = False
    remainTime = None
    timeLine = curObj.GetDictByKey(ChConfig.Def_Obj_Dict_TurnFightTimeline)
        #---验证触发间隔TICK---
        if turnNum > 0:
            GameWorld.DebugLog("    buffProcess: objID=%s,skillID=%s,turnNum=%s" % (curObj.GetID(), curBuffSkill.GetSkillID(), turnNum))
    if timeLine > 0:
        turnNum, actionNum = timeLine / 100, timeLine % 100
        if not turnForce and actionNum != 0:
            # 持续型buff暂仅支持回合开始时处理
            return
        remainTime = curBuff.GetRemainTime() - ChConfig.Def_PerTurnTick # 每处理一次固定算一回合
        if remainTime <= 0:
            isDel = True
        GameWorld.DebugLog("    回合buffProcess: objID=%s,skillID=%s,remainTime=%s,turnNum=%s" % (curObj.GetID(), curBuffSkill.GetSkillID(), remainTime, turnNum))
        else:
            if tick - curBuff.GetProcessInterval() <= processBuffTick:
                continue
            return
        curBuff.SetProcessInterval(tick)
        
        #得到当前buff
        for effIndex in range(0, curBuffSkill.GetEffectCount()):
@@ -2468,8 +2481,21 @@
            
            callBuffProcessFunc(curObj, curBuff, curEffect, processBuffTick, tick)
    
    #执行ProcessBuff中设定的玩家字典
    __DoProcessBuff_PlayerKey(curObj, tick)
    # 剩余时间需效果处理后再设置
    if remainTime != None:
        curBuff.SetRemainTime(remainTime)
    if not isDel:
        return
    GameWorld.DebugLog("    buffProcess后删除buff: objID=%s,skillID=%s,turnNum=%s" % (curObj.GetID(), curBuffSkill.GetSkillID(), turnNum))
    skillID = curBuffSkill.GetSkillID()
    skillTypeID = curBuffSkill.GetSkillTypeID()
    ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType()
    BuffSkill.DoBuffDisApper(curObj, curBuff, tick)
    buffState.DeleteBuffByTypeID(skillTypeID)
    SkillShell.ClearBuffEffectBySkillID(curObj, skillID, ownerID, ownerType)
    return
#---------------------------------------------------------------------
##执行ProcessBuff中设定的玩家字典
@@ -3410,10 +3436,23 @@
def CheeckTrigSkillandTag(attacker, exSkill, defender, tick):
    #再次验证附加技能是否对目标可用
    if attacker.GetGameObjType() != IPY_GameWorld.gotPlayer:
        skillTag = GetSkillAffectTag(exSkill)
        #该技能是对自己使用的 防守者应该改为攻击者
        if GetSkillAffectTag(exSkill) in [ChConfig.Def_UseSkillTag_Self,
        if skillTag in [ChConfig.Def_UseSkillTag_Self,
                                          ChConfig.Def_UseSkillTag_SelfAndFriend]:
            return True, attacker
        # 召唤兽对主人释放技能
        if skillTag == ChConfig.Def_UseSkillTag_SummonMaster:
            if not NPCCommon.IsSummonNPC(attacker):
                return False, None
            curSummonOwner =  NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotPlayer, attacker)
            if curSummonOwner == None:
                curSummonOwner = NPCCommon.GetSummonNPCOwner(IPY_GameWorld.gotNPC, attacker)
            if curSummonOwner == None:
                return False, None
            return True, curSummonOwner
        return True, defender
    
    #该技能是对自己使用的 防守者应该改为攻击者