From 9aec240e848ba4bb6b473707ad8f48aee5180141 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期一, 29 四月 2019 10:06:52 +0800 Subject: [PATCH] 6632 子 【开发】增加新的符印属性 / 【后端】增加新的符印属性 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py | 82 ++++++++++++++++++++--------------------- 1 files changed, 40 insertions(+), 42 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py index 493b90b..338b59f 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/BuffSkill.py @@ -79,23 +79,7 @@ return result -#=============================================================================== -# # CanRepeatTime字段个位数 -# ( -# Def_BuffTime_Reset, # 0 重置时间 -# Def_BuffTime_Add, # 1 增加时间 -# Def_BuffTime_Keep, # 2 时间不变 -# Def_BuffTime_Keep_AddValue, # 3 时间不变只增加值,默认为替换更强值 -# ) = range(4) -# -# # CanRepeatTime字段十位数 -# ( -# Def_Buff_Replace_Better, # 相同typeid取最高,如果新的是低级的则不处理 -# Def_Buff_Replace_New, # 相同typeid替换最新,即使是低级的 -# Def_Buff_Coexist, # 不同的释放者可共存 -# ) = range(3) -#=============================================================================== - +# 快捷搜索 CanRepeatTime字段 # buff时间处理类型,个位数 def GetBuffRepeatTimeType(curSkill): return curSkill.GetCanRepeatTime()%10 @@ -111,6 +95,19 @@ layerMaxCnt = hasEffect.GetEffectValue(0) # 能叠加的最大上限 return layerMaxCnt + +# 改变BUFF持续时间 +def ChangeLastTime(attacker, curSkill): + buffTime = curSkill.GetLastTime() + if not attacker: + return buffTime + if curSkill.GetEffect(0).GetEffectID() == ChConfig.Def_Skill_Effect_Burn: + # 灼烧的时间特殊处理 + buffTime = buffTime*(ChConfig.Def_MaxRateValue + PlayerControl.GetBurnTimePer(attacker))/ChConfig.Def_MaxRateValue + + buffTime += PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(attacker, None, curSkill, ChConfig.TriggerType_BuffTime) + return buffTime + #--------------------------------------------------------------------- ## 增加BUFF 减少BUFF(参数 -> 当前对象,buff类型,当前技能,当前时间,Buff总值->用于持续类技能 , Buff拥有者) @@ -146,7 +143,7 @@ #技能类型ID curSkillTypeID = curSkill.GetSkillTypeID() #当前技能持续时间 - curSkillLastTime = curSkill.GetLastTime() + curSkillLastTime = ChangeLastTime(buffOwner, curSkill) #当前技能等级 curSkillLV = curSkill.GetSkillLV() #替换模式 @@ -212,31 +209,36 @@ if buffSkillLV == curSkillLV: changeLayer = False - if layerMaxCnt: - curLayerCnt = curBuff.GetLayer() - if curLayerCnt < layerMaxCnt: - if layerCalc == ChConfig.Def_BuffLayer_Add: - curBuff.SetLayer(curLayerCnt + 1) - #BUFF层级变化触发被动 - if buffOwner: - curObj.SetDict(ChConfig.Def_PlayerKey_AddBuffLayer, curBuff.GetLayer()) - PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddLayer, tick) - PassiveBuffEffMng.OnPassiveBuffTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddLayer, tick) - curObj.SetDict(ChConfig.Def_PlayerKey_AddBuffLayer, 0) - else: - curBuff.SetLayer(layerMaxCnt) - changeLayer = True + if layerMaxCnt and curBuff.GetLayer() < layerMaxCnt: + if layerCalc == ChConfig.Def_BuffLayer_Add: + curBuff.SetLayer(curBuff.GetLayer() + 1) + #BUFF层级变化触发被动 + if buffOwner: + curObj.SetDict(ChConfig.Def_PlayerKey_AddBuffLayer, curBuff.GetLayer()) + PassiveBuffEffMng.OnPassiveSkillTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddLayer, tick) + PassiveBuffEffMng.OnPassiveBuffTrigger(buffOwner, curObj, curSkill, ChConfig.TriggerType_AddLayer, tick) + curObj.SetDict(ChConfig.Def_PlayerKey_AddBuffLayer, 0) + else: + curBuff.SetLayer(layerMaxCnt) + changeLayer = True + + # Def_Buff_Replace_New和Def_Buff_Recharge 均可走到此逻辑 __BuffCanRemain(buffState, curBuff, i, resultTime, plusValueList, buffOwner) # 此处考虑下plusValue变强是否刷属性 #DoAddBuffOver(curObj, curSkill, addBuff, tick) return changeLayer else: + if buffReplaceType == ChConfig.Def_Buff_Recharge: + # 充能型 + __BuffCanRemain(buffState, curBuff, i, resultTime, plusValueList, buffOwner) + return + processInterval = curBuff.GetProcessInterval() ownerID, ownerType = curBuff.GetOwnerID(), curBuff.GetOwnerType() buffState.DeleteBuffByIndex(i) SkillShell.ClearBuffEffectBySkillID(curObj, buffSkillID, ownerID, ownerType) return __AddBuff(curObj, buffState, curSkill, plusValueList, buffOwner, isDelRefresh, - tick, processInterval, layerMaxCnt, layerCalc) + tick, curSkillLastTime, processInterval, layerMaxCnt, layerCalc) #已经找到同一类型的技能,立即退出不然会导致错乱 return False @@ -254,7 +256,7 @@ isDelRefresh = True return __AddBuff(curObj, buffState, curSkill, plusValueList, buffOwner, isDelRefresh, - tick, 0, layerMaxCnt, layerCalc) + tick, curSkillLastTime, 0, layerMaxCnt, layerCalc) ## 是否血包/蓝包buff @@ -314,15 +316,15 @@ # @param isDelRefresh 外界删除BUFF是否刷新 # @param tick 时间戳 # @return 是否刷新玩家属性 -def __AddBuff(curObj, buffState, curSkill, plusValueList, buffOwner, isDelRefresh, tick, - updProcessInterval, layerMaxCnt, layerCalc): +def __AddBuff(curObj, buffState, curSkill, plusValueList, buffOwner, isDelRefresh, tick, + curSkillLastTime, updProcessInterval, layerMaxCnt, layerCalc): skillID = curSkill.GetSkillID() #是否需要通知客户端 isNotify = True if curSkill.GetClientEffectType() != 0 else False # 增加第四个参数是否立即广播 addBuff = buffState.AddBuff(skillID, tick, isNotify, False) - buffIndex = buffState.GetBuffCount() # buff在管理器中的索引 + if updProcessInterval > 0: # 继承上一个buff的循环记录 addBuff.SetProcessInterval(updProcessInterval) @@ -337,11 +339,7 @@ else: addBuff.SetLayer(layerMaxCnt) - if buffOwner: - addTime = PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(buffOwner, None, curSkill, ChConfig.TriggerType_BuffTime) - if addTime: - #有改变持续时间的技能 - addBuff.SetRemainTime(curSkill.GetLastTime() + addTime) + addBuff.SetRemainTime(curSkillLastTime) # 同步主从技能时间 SyncMasterBuffTime(curObj, addBuff, curSkill) -- Gitblit v1.8.0