From 38bdbd5e4429a852dc8b78cf0345016a8df83dd7 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 10 九月 2025 14:44:29 +0800 Subject: [PATCH] 121 【武将】武将系统-服务端(上阵星级加成属性取有效最大星级;吞噬升星优先随机提升有效的槽位;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py | 60 +++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 37 insertions(+), 23 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..03f9397 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/TurnPassive.py @@ -31,67 +31,81 @@ 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): - buffMgr = batObj.GetBuffManager() - curBuff = buffMgr.GetBuff(buffID) - if not curBuff: +def DoSkillEffectLogic(turnFight, batObj, tagObj, effSkill, curEffect, connSkill): + effID = curEffect.GetEffectID() + if not effID: return - skillData = curBuff.GetSkillData() + 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() + effBuff = buffMgr.GetBuff(buffID) + if not effBuff: + return + skillData = effBuff.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, effBuff, curEffect, connSkill) return +def DoBuffEffectLogic(turnFight, batObj, tagObj, effBuff, 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, effBuff, curEffect, connSkill) + return + def GetTriggerPassiveValue(batObj, triggerType, tagObj=None, useSkill=None): ''' 获取触发被动的值,一般用于某种条件下才会产生的值,如xx情况下属性变化 或 xx情况下是否发生什么 @return: 触发的值,0-没有触发或本身触发的值为0;大于0-触发的具体值 -- Gitblit v1.8.0