实战用法
has_shine_effect_on_focus 常用于国策树 UI 逻辑中,判断某个国策当前是否处于高亮发光状态(无论是玩家手动激活还是正在被研究推进),从而决定是否显示相关提示、激活后续决议或触发事件。典型场景是在决议的 available 块中检查玩家是否已经在"努力推进"某国策,再解锁对应的辅助决议。
# 在某个决议的 available 块中,只有当苏联正在高亮推进该国策时才可用
available = {
tag = SOV
has_shine_effect_on_focus = SOV_collectivization_drive
}
配合关系
[activate_shine_on_focus](/wiki/effect/activate_shine_on_focus) — 最直接的搭档:先用此 effect 手动激活某国策的发光效果,再用 has_shine_effect_on_focus 检验该效果是否已生效,形成完整的"激活→验证"闭环。
[deactivate_shine_on_focus](/wiki/effect/deactivate_shine_on_focus) — 配合使用可实现"条件达成后关闭高亮"的逻辑,先用 trigger 确认效果存在,再在 effect 块中关闭它,避免重复操作。
[has_completed_focus](/wiki/trigger/has_completed_focus) — 常与之并列写在同一 trigger 块中,区分"国策仍在进行(有 shine)"与"国策已完成"两种状态,防止逻辑重叠。
[activate_decision](/wiki/effect/activate_decision) — 当 has_shine_effect_on_focus 返回真时,在 effect 块中激活对应决议,实现"推进特定国策 → 解锁额外选项"的联动设计。
常见坑
- 忘记 debug 模式才显示 tooltip:该 trigger 本身的文本提示仅在 debug 模式下可见,新手在正式发布的 mod 中依赖它向玩家传递信息时会发现界面上什么都不显示,需要自行用
custom_trigger_tooltip 包装来手动指定显示文本。
- scope 写错导致永远返回假:
has_shine_effect_on_focus 必须在 COUNTRY scope 下调用,若误写在 state 或 character scope 内(例如放在 any_owned_state 的子块里),游戏不会报错但结果始终为假,排查时极难发现。