From 4ec47a0dab32729d20389078ee78f89b64c12cab Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 22 九月 2025 15:58:57 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(张星彩怒技,觉醒技能;增加buff消失后触发时机;增加效果6007 6008 7001 7002;技能友好目标增加类型2:一定包含自己的友方单位) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py | 30 ++++++++++++++++-------------- 1 files changed, 16 insertions(+), 14 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 f91000e..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,11 +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() - effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkill, connSkillTypeID) + effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkill, connSkillTypeID, connBuff) if not effInfoList: return # [["skill/buff", skillID/buffID, effIDList], ...] @@ -45,15 +45,15 @@ 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: @@ -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-触发的具体值 @@ -159,7 +161,7 @@ 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 -- Gitblit v1.8.0