| | |
| | | buffMgr = atkObj.GetBuffManager()
|
| | | # [["skill/buff", skillID/buffID, effIDList], ...]
|
| | | tagID = defObj.GetID() if defObj else 0
|
| | | GameWorld.DebugLog("统计被动效果值: calcEffID=%s,objID=%s,tagID=%s,%s" % (calcEffID, atkObj.GetID(), tagID, effInfoList))
|
| | | for effInfo in effInfoList:
|
| | | sign = effInfo[0]
|
| | | if sign == "skill":
|
| | |
| | | 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)
|
| | |
| | | callFunc = GameWorld.GetExecFunc(PassiveTrigger, "%s.%s" % (pyName, "GetHappenValue"))
|
| | | if not callFunc:
|
| | | continue
|
| | | value = callFunc(atkObj, defObj, effect, effSkill, **kwargs)
|
| | | value = callFunc(atkObj, defObj, effect, effSkill, effBuff, **kwargs)
|
| | | if value is None:
|
| | | continue
|
| | |
|
| | | if effID in ChConfig.PassiveEffHappenValueList:
|
| | | if value:
|
| | | GameWorld.DebugLog("统计被动效果值: 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))
|
| | | return curValue
|
| | |
|