| | |
| | |
|
| | | import GameWorld
|
| | | import PassiveTrigger
|
| | | import IpyGameDataPY
|
| | | import BattleObj
|
| | | import ChConfig
|
| | |
|
| | | GameWorld.ImportAll("Script\\Skill\\", "PassiveTrigger")
|
| | |
| | | ''' 触发被动效果,可能触发技能、buff,需根据优先级触发
|
| | | '''
|
| | | if not batObj.IsAlive():
|
| | | if triggerWay not in ChConfig.DeadCanTriggerWayList:
|
| | | if triggerWay in ChConfig.DeadCanTriggerWayList or (connSkill and connSkill.GetBatType() == ChConfig.TurnBattleType_Enhance):
|
| | | pass # 死亡状态下可触发的被动
|
| | | else:
|
| | | return
|
| | | passiveEffMgr = batObj.GetPassiveEffManager()
|
| | | effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkill, connSkillTypeID, connBuff)
|
| | | if not effInfoList:
|
| | | return
|
| | | # [["skill/buff", skillID, buffID, effIDList], ...]
|
| | | OnTriggerPassiveEffList(turnFight, batObj, triggerWay, tagObj, effInfoList, connSkill, connBuff, **kwargs)
|
| | | return
|
| | |
|
| | | def OnTriggerPassiveEffList(turnFight, batObj, triggerWay, tagObj, effInfoList, connSkill=None, connBuff=None, **kwargs):
|
| | | '''触发外部指定的被动效果列表
|
| | | @param effInfoList: [["skill/buff", skillID, buffID, effIDList], ...]
|
| | | '''
|
| | | tagID = tagObj.GetID() if tagObj else 0
|
| | | GameWorld.DebugLogEx("触发被动: triggerWay=%s,objID=%s,tagID=%s,%s", triggerWay, batObj.GetID(), tagID, effInfoList)
|
| | | for effInfo in effInfoList:
|
| | |
| | | callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "GetHappenValue"))
|
| | | if not callFunc:
|
| | | continue
|
| | | kwargs["turnFight"] = turnFight
|
| | | value = callFunc(atkObj, defObj, effect, effSkill, effBuff, connSkill, **kwargs)
|
| | | if value is None:
|
| | | continue
|