| | |
| | | ''' 触发被动效果,可能触发技能、buff,需根据优先级触发
|
| | | '''
|
| | | passiveEffMgr = batObj.GetPassiveEffManager()
|
| | | if not connSkillTypeID and connSkill:
|
| | | connSkillTypeID = connSkill.GetSkillTypeID()
|
| | | effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkillTypeID)
|
| | | effInfoList = passiveEffMgr.GetPassiveEffByTrigger(triggerWay, connSkill, connSkillTypeID)
|
| | | if not effInfoList:
|
| | | return
|
| | | # [["skill/buff", skillID/buffID, effIDList], ...]
|
| | |
| | | def __doTriggerPassiveEffectBySkill(turnFight, batObj, tagObj, triggerWay, skillID, effIDList, connSkill=None):
|
| | | skillMgr = batObj.GetSkillManager()
|
| | | effSkill = skillMgr.FindSkillByID(skillID)
|
| | | if not effSkill and connSkill and connSkill.GetSkillID() == skillID:
|
| | | effSkill = connSkill
|
| | | if not effSkill:
|
| | | return
|
| | |
|
| | |
| | |
|
| | | triggerWay = ChConfig.TriggerWay_CalcEffValue
|
| | | passiveEffMgr = atkObj.GetPassiveEffManager()
|
| | | connSkillTypeID = connSkill.GetSkillTypeID() if connSkill else 0
|
| | | effInfoList = passiveEffMgr.GetPassiveEffByTrigger("%s_%s" % (triggerWay, calcEffID), connSkillTypeID)
|
| | | effInfoList = passiveEffMgr.GetPassiveEffByTrigger("%s_%s" % (triggerWay, calcEffID), connSkill)
|
| | | if not effInfoList:
|
| | | return 0
|
| | |
|
| | |
| | | if sign == "skill":
|
| | | skillID, effIDList = effInfo[1:]
|
| | | effSkill = skillMgr.FindSkillByID(skillID)
|
| | | if not effSkill and connSkill and connSkill.GetSkillID() == skillID:
|
| | | effSkill = connSkill
|
| | | elif sign == "buff":
|
| | | buffID, effIDList = effInfo[1:]
|
| | | effBuff = buffMgr.GetBuff(buffID)
|
| | |
| | | if value is None:
|
| | | continue
|
| | |
|
| | | #if triggerType in TriggerValueMaxList:
|
| | | # curValue = max(curValue, value) # 取最大值
|
| | | #elif triggerType in TriggerValueMinList:
|
| | | # if not curValue:
|
| | | # curValue = value
|
| | | # elif value > 0:
|
| | | # curValue = min(curValue, value) # 取最小值
|
| | | #else:
|
| | | curValue += value
|
| | | if effID in ChConfig.PassiveEffHappenValueList:
|
| | | if value:
|
| | | return value
|
| | | elif effID in ChConfig.PassiveEffValueMaxList:
|
| | | curValue = max(curValue, value) # 取最大值
|
| | | elif effID in ChConfig.PassiveEffValueMinList:
|
| | | if not curValue:
|
| | | curValue = value
|
| | | elif value > 0:
|
| | | curValue = min(curValue, value) # 取最小值
|
| | | else:
|
| | | curValue += value
|
| | | #if skillTypeID not in Def_PassiveSkillValueNoCD:
|
| | | # if curSkill.GetCoolDownTime():
|
| | | # SkillCommon.SetSkillRemainTime(curSkill, 0, tick, attacker)
|