实战用法
free_building_slots 常用于 mod 中限制某项决议或事件的触发条件——例如只有当某州拥有足够的空闲建筑槽时,才允许玩家触发"扩建工业计划"之类的决策。它也适合用在 available 块中,防止建筑队列已满时仍能触发施工类 effect,从而避免建造被静默忽略。
# 示例:某州有 3 个以上空闲普通建筑槽时才允许触发决议
available = {
free_building_slots = {
building = industrial_complex
size > 3
}
}
配合关系
[non_damaged_building_level](/wiki/trigger/non_damaged_building_level):先用它确认当前建筑等级,再用 free_building_slots 判断剩余可用槽,两者组合可精确描述"已建多少、还能建多少"的双重门槛。
[add_building_construction](/wiki/effect/add_building_construction):触发条件满足后,紧接着用它将建筑加入施工队列,是最直接的"条件→施工"配对。
[has_state_category](/wiki/trigger/has_state_category):与 free_building_slots 搭配可进一步将条件限定在特定州等级(如城市州、农村州),避免在基础槽位极少的小州触发高消耗建造决策。
[add_extra_state_shared_building_slots](/wiki/effect/add_extra_state_shared_building_slots):当 free_building_slots 检测到共享槽不足时,可通过此 effect 先扩充槽位再施工,include_locked = yes 参数正是为这种共享槽场景而设计的。
常见坑
- 忽略
include_locked 的适用范围:include_locked = yes 仅对使用共享槽(Shared Slots)的建筑类型有意义,若对普通独立槽建筑(如 arms_factory)加上此参数,不会报错但也不会产生任何额外效果,容易造成逻辑误判。
- 漏写
building 字段导致脚本报错或行为异常:building 是必填字段,不少新手只写 size > X 而省略建筑类型,这会导致游戏无法确定检查哪种建筑槽,轻则触发器永远返回 false,重则游戏启动时报出脚本错误。