实战用法
has_built 常用于国家焦点或任务链中,验证玩家/AI 是否已按要求完成了一定数量的建筑投资,例如"完成工业化目标后才能解锁下一阶段焦点"或"军工任务要求建造指定数量的军工厂"。以下示例展示在焦点的 available 块中检查是否已建造至少 3 座军工厂:
available = {
has_built = {
type = arms_factory
value = 3
}
}
配合关系
[building_count_trigger](/wiki/trigger/building_count_trigger):has_built 统计的是自接取目标以来新建数量,而 building_count_trigger 统计的是当前总存量,两者配合可同时约束"现有基础"与"新增投入",避免老玩家绕过建造要求。
[has_completed_focus](/wiki/trigger/has_completed_focus):常作为前置条件与 has_built 并列放在 available 块,确保玩家先完成相关焦点后再触发建造检查逻辑。
[activate_mission](/wiki/effect/activate_mission):在 effect 块中激活一个以 has_built 为完成条件的任务,形成"激活任务→追踪建造进度→达成后触发奖励"的完整任务链流程。
[has_active_mission](/wiki/trigger/has_active_mission):在 available 或 limit 中配合使用,确保只有当相应任务处于激活状态时才对 has_built 进行评估,防止条件在任务外被意外满足。
常见坑
- 计数起点误解:
has_built 统计的是"接取目标(goal)后"才开始建造的数量,而非历史总建造量。如果在任务激活前已经建好的建筑不会被计入,新手常误以为已有建筑能直接满足条件,导致任务永远无法完成。
type 填写错误:type 必须填写游戏内部定义的建筑 key(如 industrial_complex、arms_factory),直接填写显示名称或拼错 key 时脚本不会报错但条件永远为假,调试时极难发现。