| | |
| | |
|
| | | import GameWorld
|
| | | import PassiveTrigger
|
| | | import IpyGameDataPY
|
| | | import BattleObj
|
| | | import ChConfig
|
| | |
|
| | | GameWorld.ImportAll("Script\\Skill\\", "PassiveTrigger")
|
| | |
| | | passiveEffMgr = batObj.GetPassiveEffManager()
|
| | | skillEffInfo = passiveEffMgr.RefreshSkillPassiveEffect()
|
| | | buffEffInfo = passiveEffMgr.RefreshBuffPassiveEffect()
|
| | | skillEffInfo and GameWorld.DebugLog(" 被动技能效果: %s" % skillEffInfo)
|
| | | buffEffInfo and GameWorld.DebugLog(" 被动Buff效果: %s" % buffEffInfo)
|
| | | skillEffInfo and GameWorld.DebugLogEx(" 被动技能效果: %s", skillEffInfo)
|
| | | buffEffInfo and GameWorld.DebugLogEx(" 被动Buff效果: %s", buffEffInfo)
|
| | | return
|
| | |
|
| | | def OnTriggerPassiveEffect(turnFight, batObj, triggerWay, tagObj=None, connSkill=None, connSkillTypeID=0, connBuff=None, **kwargs):
|
| | | ''' 触发被动效果,可能触发技能、buff,需根据优先级触发
|
| | | '''
|
| | | if not batObj.IsAlive():
|
| | | return
|
| | | if triggerWay not in ChConfig.DeadCanTriggerWayList:
|
| | | 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.DebugLog("触发被动: triggerWay=%s,objID=%s,tagID=%s,%s" % (triggerWay, batObj.GetID(), tagID, effInfoList))
|
| | | GameWorld.DebugLogEx("触发被动: 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 not effSkill:
|
| | | return
|
| | |
|
| | | kwargs["triggerWay"] = triggerWay
|
| | | for effID in effIDList:
|
| | | curEffect = effSkill.GetEffectByID(effID, triggerWay)
|
| | | if not curEffect:
|
| | |
| | | return
|
| | | skillData = effBuff.GetSkillData()
|
| | |
|
| | | kwargs["triggerWay"] = triggerWay
|
| | | for effID in effIDList:
|
| | | curEffect = skillData.GetEffectByID(effID, triggerWay)
|
| | | if not curEffect:
|
| | |
| | |
|
| | | if effID in ChConfig.PassiveEffHappenValueList:
|
| | | if value:
|
| | | GameWorld.DebugLog("统计被动效果值: calcEffID=%s,objID=%s,tagID=%s,%s,curValue=%s" % (calcEffID, atkObj.GetID(), tagID, effInfoList, value))
|
| | | GameWorld.DebugLogEx("统计被动效果值: calcEffID=%s,objID=%s,tagID=%s,%s,curValue=%s", calcEffID, atkObj.GetID(), tagID, effInfoList, value)
|
| | | return value
|
| | | elif effID in ChConfig.PassiveEffValueMaxList:
|
| | | curValue = max(curValue, value) # 取最大值
|
| | |
| | | # if curSkill.GetCoolDownTime():
|
| | | # SkillCommon.SetSkillRemainTime(curSkill, 0, tick, attacker)
|
| | |
|
| | | GameWorld.DebugLog("统计被动效果值: calcEffID=%s,objID=%s,tagID=%s,%s,curValue=%s" % (calcEffID, atkObj.GetID(), tagID, effInfoList, curValue))
|
| | | GameWorld.DebugLogEx("统计被动效果值: calcEffID=%s,objID=%s,tagID=%s,%s,curValue=%s", calcEffID, atkObj.GetID(), tagID, effInfoList, curValue)
|
| | | return curValue
|
| | |
|