政策与法令
policies 的多选项结构与 policy_flags,edicts 的时长、费用与修正,以及在脚本里设置它们
政策和法令的区别
| 政策(policy) | 法令(edict) | |
|---|---|---|
| 位置 | common/policies/ | common/edicts/ |
| 结构 | 一个政策有多个 option,国家任何时候只处于其中一个 | 一个法令只有开/关 |
| 代价 | 一般无费用,修改后有冷却 | 有激活费用和/或维护费 |
| 判断 | has_policy_flag | has_edict |
政策
原版经济政策(common/policies/00_policies.txt,省略了 AI 权重):
economic_policy = {
category = economy
potential = {
NOT = { has_ethic = ethic_gestalt_consciousness }
}
option = {
name = "economic_policy_civilian"
modifier = {
planet_jobs_consumer_goods_produces_mult = 0.25
planet_jobs_alloys_produces_mult = -0.25
}
}
option = {
name = "economic_policy_balanced"
modifier = {}
}
option = {
name = "economic_policy_military"
modifier = {
planet_jobs_consumer_goods_produces_mult = -0.25
planet_jobs_alloys_produces_mult = 0.25
}
policy_flags = {
economic_policy_military
}
}
}政策层的字段
| 字段 | 说明 |
|---|---|
category | 界面分组,见下文政策类别 |
potential | 国家作用域;不成立时整条政策不显示 |
allow | 能否修改;原版外交姿态写了 is_at_war = no,战争中不能改 |
选项层的字段
按原版中的出现次数,option 里常用的有:
| 字段 | 说明 |
|---|---|
name | 选项键,也是本地化键 |
icon | 可选的 sprite |
potential | 选项是否显示 |
valid | 选项是否有效;原版外交姿态用它排除“内向完善”理念等情况 |
modifier | 选中时给国家的修正 |
policy_flags = { ... } | 选中时国家拥有的标记,供 has_policy_flag 检查 |
on_enabled / on_disabled | 切换到、切换离开这个选项时执行的效果 |
ai_weight | AI 选择的权重;文件头注释说明默认 100,AI 取权重最高的选项 |
in_breach_of | 违反哪项银河议会决议 |
**用 policy_flags 而不是选项名做判断。**原版很多地方都是 has_policy_flag = slavery_allowed 这样写;这样其他选项(包括别的模组新增的选项)只要带上同一个标记,就能被同样识别。
修改政策后的冷却时间由 common/defines/00_defines.txt 里的 POLICY_YEARS 决定。
政策类别
common/policy_categories/00_policy_categories.txt 的注释说明,类别只用于界面分组,没有游戏效果:
military = { icon = "trade_protection" }
diplomacy = { icon = "diplo_weight" }
economy = { icon = "economy" }
research = { icon = "research" }
society = { icon = "tooltip_pop" }
uncategorized = {}- 一条政策可以写
category = { military economy }同时出现在多个分组; - 没写类别的政策归入
uncategorized; - 图标请放在
icon字段里,不要写进本地化名字,因为分组按本地化名字的字母顺序排序。
政策的本地化
l_simp_chinese:
policy_mymod_research_focus: "科研重心"
policy_mymod_research_focus_desc: "决定国家资源向哪个研究领域倾斜。"
mymod_focus_physics: "物理优先"
mymod_focus_physics_desc: "把更多经费投入物理学研究。"政策本身用 policy_<政策键> 和 policy_<政策键>_desc,选项用 name 的值及其 _desc。原版中经济政策就是 policy_economic_policy 与 economic_policy_civilian。
法令
原版“加强边境防御”(common/edicts/00_edicts.txt,略去 AI 权重):
fortify_the_border = {
length = @EdictPerpetual
icon = "GFX_edict_type_policy"
resources = {
category = edicts
cost = {
unity = @Edict1Cost
multiplier = value:edict_size_effect
}
upkeep = {
unity = @Edict1Cost
multiplier = value:edict_size_effect
}
}
modifier = {
starbase_upgrade_speed_mult = 0.50
country_starbase_capacity_add = 2
}
potential = {
is_nomadic = no
}
}@EdictPerpetual = -1 定义在同一个文件开头,表示“持续到手动取消”。multiplier = value:edict_size_effect 让费用随帝国规模增长,这个脚本值在 common/script_values/00_script_values.txt 中,见变量、脚本值与脚本化本地化。
字段
据 common/edicts/99_README_EDICTS.txt 和原版用法:
| 字段 | 说明 |
|---|---|
length | 持续天数,-1 为永久 |
icon | sprite 名 |
resources | category = edicts,cost 为激活费、upkeep 为维护费 |
potential | 是否显示 |
allow | 能否激活 |
prerequisites | 前置科技 |
modifier / triggered_country_modifier | 生效期间的修正 |
effect | 激活时执行的效果 |
ai_weight | AI 评分 |
edict_lock_in_months | 原版少数法令使用,激活后锁定若干月 |
is_wartime_edict | 原版少数战时法令使用 |
show_tech_unlock_if | 控制是否显示在前置科技的解锁列表 |
README 还提到“统一志向”(02_ambitions.txt)使用 unity_cost_mult,费用取决于下一项传统的解锁花费。
法令的本地化
法令键前面要加 edict_:原版 fortify_the_border 对应的是 edict_fortify_the_border 和 edict_fortify_the_border_desc。
在脚本里使用
| 写法 | 说明(国家作用域) |
|---|---|
set_policy = { policy = <键> option = <选项> cooldown = no } | 设置政策;cooldown 决定是否进入冷却 |
has_policy_flag = <标记> | 触发器 |
add_edict = <键> | 激活法令 |
has_edict = <键> | 触发器 |
参数以 effects.log / triggers.log 为准,见调试。