实战用法
has_completed_subdoctrine 常用于国家焦点、决议或事件中,检测玩家/AI 是否曾研究过特定子教义分支,从而解锁后续内容或给予奖励加成。即使玩家后来切换了教义路线,该 trigger 仍会返回 true,非常适合用来追踪"历史进程"而非"当前状态"。
# 如果曾完成过机动步兵子教义,允许激活某个特殊决议
available = {
has_completed_subdoctrine = mobile_infantry
}
配合关系
[has_completed_focus](/wiki/trigger/has_completed_focus):两者逻辑相似,常并列用于 available 块中,同时要求完成某个国家焦点且走过特定教义路线,才开放高阶内容。
[has_doctrine](/wiki/trigger/has_doctrine):has_doctrine 检查当前正在使用的教义,与 has_completed_subdoctrine 配合可区分"曾经研究过但已切换"和"目前仍在使用"两种状态,逻辑更精确。
[add_doctrine_cost_reduction](/wiki/effect/add_doctrine_cost_reduction):在 focus/event 奖励阶段,确认玩家走过某条教义分支后给予后续教义折扣,形成"研究越深、成本越低"的设计。
[add_tech_bonus](/wiki/effect/add_tech_bonus):同样作为研究奖励,根据已完成的子教义给予特定科技加成,强化教义路线与科技树的联动叙事。
常见坑
- 误以为它检测"当前"教义:该 trigger 只记录"是否曾经完成",不关心玩家现在用的是哪条路线。如果你想判断当前激活的教义,应改用
[has_doctrine](/wiki/trigger/has_doctrine),否则逻辑会出现"已切走但条件仍满足"的意外情况。
- 子教义名拼写错误导致永远返回 false:子教义的 token 名必须与
\common\technologies\ 下对应的科技/教义定义完全一致,大小写敏感,建议直接从原文件复制粘贴,避免手写拼错后毫无报错提示地静默失败。