From 30dd8ff93a00ada8262a35da0ede9c2088a7fd37 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 23 九月 2025 16:52:52 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(诸葛亮技能; 目标细分增加攻击力最高5; buff状态增加军令19;增加效果6006增加本次技能万分比验证职业;增加效果5015集火攻击军令目标;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py | 60 +++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 33 insertions(+), 27 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py index 9891021..e76260f 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py @@ -31,13 +31,11 @@ buffEffInfo and GameWorld.DebugLog(" 被动Buff效果: %s" % buffEffInfo) return -def OnTriggerPassiveEffect(turnFight, batObj, triggerWay, tagObj=None, connSkill=None, connSkillTypeID=0): +def OnTriggerPassiveEffect(turnFight, batObj, triggerWay, tagObj=None, connSkill=None, connSkillTypeID=0, connBuff=None, **kwargs): ''' 触发被动效果,可能触发技能、buff,需根据优先级触发 ''' passiveEffMgr = batObj.GetPassiveEffManager() - if not connSkillTypeID and connSkill: - connSkillTypeID = connSkill.GetSkillTypeID() - effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkillTypeID) + effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkill, connSkillTypeID, connBuff) if not effInfoList: return # [["skill/buff", skillID/buffID, effIDList], ...] @@ -47,17 +45,19 @@ sign = effInfo[0] if sign == "skill": skillID, effIDList = effInfo[1:] - __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, triggerWay, skillID, effIDList, connSkill) + __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, triggerWay, skillID, effIDList, connSkill, connBuff, **kwargs) elif sign == "buff": buffID, effIDList = effInfo[1:] - __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill) + __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill, connBuff, **kwargs) return -def __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, triggerWay, skillID, effIDList, connSkill=None): +def __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, triggerWay, skillID, effIDList, connSkill=None, connBuff=None, **kwargs): skillMgr = batObj.GetSkillManager() effSkill = skillMgr.FindSkillByID(skillID) + if not effSkill and connSkill and connSkill.GetSkillID() == skillID: + effSkill = connSkill if not effSkill: return @@ -65,11 +65,11 @@ curEffect = effSkill.GetEffectByID(effID, triggerWay) if not curEffect: continue - DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill) + DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs) return -def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill): +def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff=None, **kwargs): effID = curEffect.GetEffectID() if not effID: return @@ -77,12 +77,14 @@ callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoSkillEffectLogic")) if not callFunc: return - callFunc(turnFight, batObj, tagObj, effSkill, curEffect, connSkill) + callFunc(turnFight, batObj, tagObj, effSkill, curEffect, connSkill, connBuff, **kwargs) return -def __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill=None): +def __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill=None, connBuff=None, **kwargs): buffMgr = batObj.GetBuffManager() effBuff = buffMgr.GetBuff(buffID) + if not effBuff and connBuff and connBuff.GetBuffID() == buffID: + effBuff = connBuff if not effBuff: return skillData = effBuff.GetSkillData() @@ -91,11 +93,11 @@ curEffect = skillData.GetEffectByID(effID, triggerWay) if not curEffect: continue - DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill) + DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs) return -def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill): +def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs): effID = curEffect.GetEffectID() if not effID: return @@ -103,10 +105,10 @@ callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoBuffEffectLogic")) if not callFunc: return - callFunc(turnFight, batObj, tagObj, effBuff, curEffect, connSkill) + callFunc(turnFight, batObj, tagObj, effBuff, curEffect, connSkill, connBuff, **kwargs) return -def GetTriggerEffectValue(turnFight, atkObj, defObj, calcEffID, connSkill=None): +def GetTriggerEffectValue(turnFight, atkObj, defObj, calcEffID, connSkill=None, **kwargs): ''' 获取触发被动的值,一般用于某种条件下才会产生的值,如xx情况下属性变化 或 xx情况下是否发生什么 @param calcEffID: 需要统计的效果ID,可以是属性ID或者其他自定义效果ID @return: 触发的值,0-没有触发或本身触发的值为0;非0-触发的具体值 @@ -114,8 +116,7 @@ triggerWay = ChConfig.TriggerWay_CalcEffValue passiveEffMgr = atkObj.GetPassiveEffManager() - connSkillTypeID = connSkill.GetSkillTypeID() if connSkill else 0 - effInfoList = passiveEffMgr.GetPassiveEffByTrigger("%s_%s" % (triggerWay, calcEffID), connSkillTypeID) + effInfoList = passiveEffMgr.GetPassiveEffByTrigger("%s_%s" % (triggerWay, calcEffID), connSkill) if not effInfoList: return 0 @@ -130,6 +131,8 @@ if sign == "skill": skillID, effIDList = effInfo[1:] effSkill = skillMgr.FindSkillByID(skillID) + if not effSkill and connSkill and connSkill.GetSkillID() == skillID: + effSkill = connSkill elif sign == "buff": buffID, effIDList = effInfo[1:] effBuff = buffMgr.GetBuff(buffID) @@ -158,19 +161,22 @@ callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "GetHappenValue")) if not callFunc: continue - value = callFunc(atkObj, defObj, effect, effSkill) + value = callFunc(atkObj, defObj, effect, effSkill, **kwargs) if value is None: continue - #if triggerType in TriggerValueMaxList: - # curValue = max(curValue, value) # 取最大值 - #elif triggerType in TriggerValueMinList: - # if not curValue: - # curValue = value - # elif value > 0: - # curValue = min(curValue, value) # 取最小值 - #else: - curValue += value + if effID in ChConfig.PassiveEffHappenValueList: + if value: + return value + elif effID in ChConfig.PassiveEffValueMaxList: + curValue = max(curValue, value) # 取最大值 + elif effID in ChConfig.PassiveEffValueMinList: + if not curValue: + curValue = value + elif value > 0: + curValue = min(curValue, value) # 取最小值 + else: + curValue += value #if skillTypeID not in Def_PassiveSkillValueNoCD: # if curSkill.GetCoolDownTime(): # SkillCommon.SetSkillRemainTime(curSkill, 0, tick, attacker) -- Gitblit v1.8.0