实战用法
has_mastery_level 常用于自定义学说 mod 中,根据玩家在某个子学说上累积的精通奖励数量来解锁额外决议或顾问。例如在一个强调陆军精通进度的 mod 里,可以用它作为决议的 available 条件,确保玩家达到足够精通层级才能激活:
available = {
has_mastery_level = {
amount = 3
sub_doctrine = mobile_infantry
}
}
配合关系
[has_completed_subdoctrine](/wiki/trigger/has_completed_subdoctrine):先检查子学说是否研究完毕,再用 has_mastery_level 判断奖励层级,两者构成"完成研究且达到精通"的完整条件链。
[add_mastery](/wiki/effect/add_mastery):在 effect 块中通过该 effect 增加精通值,与 has_mastery_level 组成"达到阈值 → 给予额外奖励"的正反馈循环。
[add_mastery_bonus](/wiki/effect/add_mastery_bonus):用于在满足精通层级条件后叠加额外的学说增益,常放在同一 if 结构下作为奖励发放。
[has_any_grand_doctrine](/wiki/trigger/has_any_grand_doctrine):先过滤国家是否持有对应大学说,再嵌套 has_mastery_level,避免对未选择该学说路线的国家产生无效判断。
常见坑
sub_doctrine 填写错误:必须填写游戏内实际定义的子学说 token(即 sub_doctrines 下的 key 名),直接写学说显示名称或父级学说名会导致条件永远为假且不报错,调试时极难发现。
amount 的含义是"至少达到 N 层"而非"恰好等于 N 层:如需精确匹配某个层级(例如恰好第 2 层触发特殊事件),需配合另一个取反的 has_mastery_level 检查上限,否则高层级玩家会重复触发。