| | |
| | | def OnTriggerPassiveEffect(turnFight, batObj, triggerWay, tagObj=None, connSkill=None, connSkillTypeID=0, connBuff=None, **kwargs):
|
| | | ''' 触发被动效果,可能触发技能、buff,需根据优先级触发
|
| | | '''
|
| | | if not batObj.IsAlive():
|
| | | return
|
| | | passiveEffMgr = batObj.GetPassiveEffManager()
|
| | | effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkill, connSkillTypeID, connBuff)
|
| | | if not effInfoList:
|
| | | return
|
| | | # [["skill/buff", skillID/buffID, effIDList], ...]
|
| | | # [["skill/buff", skillID, buffID, effIDList], ...]
|
| | | tagID = tagObj.GetID() if tagObj else 0
|
| | | GameWorld.DebugLog("触发被动: triggerWay=%s,objID=%s,tagID=%s,%s" % (triggerWay, batObj.GetID(), tagID, effInfoList))
|
| | | for effInfo in effInfoList:
|
| | | sign = effInfo[0]
|
| | | skillID, buffID, effIDList = effInfo[1:]
|
| | | if sign == "skill":
|
| | | skillID, effIDList = effInfo[1:]
|
| | | __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, connBuff, **kwargs)
|
| | |
|
| | | return
|
| | |
| | | curValue = 0
|
| | | skillMgr = atkObj.GetSkillManager()
|
| | | buffMgr = atkObj.GetBuffManager()
|
| | | # [["skill/buff", skillID/buffID, effIDList], ...]
|
| | | # [["skill/buff", skillID, buffID, effIDList], ...]
|
| | | tagID = defObj.GetID() if defObj else 0
|
| | | for effInfo in effInfoList:
|
| | | sign = effInfo[0]
|
| | | skillID, buffID, effIDList = effInfo[1:]
|
| | | if sign == "skill":
|
| | | skillID, effIDList = effInfo[1:]
|
| | | effSkill = skillMgr.FindSkillByID(skillID)
|
| | | if not effSkill and connSkill and connSkill.GetSkillID() == skillID:
|
| | | effSkill = connSkill
|
| | | effBuff = None
|
| | | elif sign == "buff":
|
| | | buffID, effIDList = effInfo[1:]
|
| | | effBuff = buffMgr.GetBuff(buffID)
|
| | | if not effBuff:
|
| | | continue
|