From b3d16628055d113d37021c1c55661f2cee035bdc Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 26 八月 2025 20:06:07 +0800 Subject: [PATCH] 129 【战斗】战斗系统-服务端(简化触发方式;优化额外触发技能;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py | 52 +++++++++++++++++++++++++++++++++------------------- 1 files changed, 33 insertions(+), 19 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 5dfbcf4..6dd05ed 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py @@ -31,49 +31,56 @@ buffEffInfo and GameWorld.DebugLog(" 被动Buff效果: %s" % buffEffInfo) return -def OnTriggerPassiveEffect(turnFight, batObj, triggerType, tagObj=None, connSkill=None, connSkillTypeID=0): +def OnTriggerPassiveEffect(turnFight, batObj, triggerWay, tagObj=None, connSkill=None, connSkillTypeID=0): ''' 触发被动效果,可能触发技能、buff,需根据优先级触发 ''' passiveEffMgr = batObj.GetPassiveEffManager() if not connSkillTypeID and connSkill: connSkillTypeID = connSkill.GetSkillTypeID() - effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerType, connSkillTypeID) + effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkillTypeID) if not effInfoList: return # [["skill/buff", skillID/buffID, effIDList], ...] tagID = tagObj.GetID() if tagObj else 0 - GameWorld.DebugLog("触发被动: triggerType=%s,objID=%s,tagID=%s,%s" % (triggerType, batObj.GetID(), tagID, effInfoList)) + GameWorld.DebugLog("触发被动: triggerWay=%s,objID=%s,tagID=%s,%s" % (triggerWay, batObj.GetID(), tagID, effInfoList)) for effInfo in effInfoList: sign = effInfo[0] if sign == "skill": skillID, effIDList = effInfo[1:] - __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, skillID, effIDList, connSkill) + __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, triggerWay, skillID, effIDList, connSkill) elif sign == "buff": buffID, effIDList = effInfo[1:] - __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, buffID, effIDList, connSkill) + __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill) return -def __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, skillID, effIDList, connSkill=None): +def __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, triggerWay, skillID, effIDList, connSkill=None): skillMgr = batObj.GetSkillManager() effSkill = skillMgr.FindSkillByID(skillID) if not effSkill: return for effID in effIDList: - curEffect = effSkill.GetEffectByID(effID) + curEffect = effSkill.GetEffectByID(effID, triggerWay) if not curEffect: continue - pyName = "PassiveEff_%s" % effID - callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoSkillEffectLogic")) - if not callFunc: - continue - callFunc(turnFight, batObj, tagObj, effSkill, curEffect, connSkill) + DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill) return -def __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, buffID, effIDList, connSkill=None): +def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill): + effID = curEffect.GetEffectID() + if not effID: + return + pyName = "PassiveEff_%s" % effID + callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoSkillEffectLogic")) + if not callFunc: + return + callFunc(turnFight, batObj, tagObj, effSkill, curEffect, connSkill) + return + +def __doTriggerPassiveEffectByBuff(turnFight, batObj, tagObj, triggerWay, buffID, effIDList, connSkill=None): buffMgr = batObj.GetBuffManager() curBuff = buffMgr.GetBuff(buffID) if not curBuff: @@ -81,17 +88,24 @@ skillData = curBuff.GetSkillData() for effID in effIDList: - curEffect = skillData.GetEffectByID(effID) + curEffect = skillData.GetEffectByID(effID, triggerWay) if not curEffect: continue - pyName = "PassiveEff_%s" % effID - callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoBuffEffectLogic")) - if not callFunc: - continue - callFunc(turnFight, batObj, tagObj, curBuff, curEffect, connSkill) + DoBuffEffectLogic(turnFight, batObj, tagObj, curBuff, curEffect, connSkill) return +def DoBuffEffectLogic(turnFight, batObj, tagObj, curBuff, curEffect, connSkill): + effID = curEffect.GetEffectID() + if not effID: + return + pyName = "PassiveEff_%s" % effID + callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "DoBuffEffectLogic")) + if not callFunc: + return + callFunc(turnFight, batObj, tagObj, curBuff, curEffect, connSkill) + return + def GetTriggerPassiveValue(batObj, triggerType, tagObj=None, useSkill=None): ''' 获取触发被动的值,一般用于某种条件下才会产生的值,如xx情况下属性变化 或 xx情况下是否发生什么 @return: 触发的值,0-没有触发或本身触发的值为0;大于0-触发的具体值 -- Gitblit v1.8.0