| | |
| | | # 继承上一个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)
|
| | |
|
| | |
| | | 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
|
| | | #===========================================================================
|
| | |
| | | # @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)
|
| | |
| | |
|
| | | 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
|
| | |
|
| | |
|
| | |
| | |
|
| | | 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
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | |
| | |
|
| | | 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,外层处理避免错乱
|
| | |
|
| | |
| | | #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)
|
| | |
|