|
|
第120行: |
第120行: |
|
| |
|
| {{ModdingNavbox}} | | {{ModdingNavbox}} |
| [[Category:Modding]] | | [[Category: 模组制作]] |
2022年3月8日 (二) 16:10的版本
This page is about how to modify existing and how to create new Policies.
Policies are defined at "common/policies/xxx.txt".
Data Structure
- potential - A block of Conditions to determine is an empire able to see this policy. If an empire can't see a policy, it won't have any of its options active. (Country scope)
- allow - A block of Conditions to determine is an empire able to change this policy. Vanilla use this to prevent switching diplomatic stance and war philosophy during a war. (Country scope)
- option - An instance that adds an option to this policy. Multiple allowed. A policy should have at least one valid option for each empire.
- name - A localisation key that determines the name and description of this option.
- icon - A reference to a GFX entry that determines the icon of this option. Only diplomatic stance has this. Other policy options will never have their icons displayed.
- potential & valid - Blocks of Conditions to determine is an empire able to see / choose this option. If either is rendered false while the empire have this option active, the empire will be forced out of it and switched to a valid choice of highest
ai_weight
, even for players. (Country scope)
- policy_flags = { flag_xxx flag_yyy } - A list of strings to be checked by the condition
has_policy_flag
. A policy option without any policy flags can't be checked by Conditions.
- modifier - A block of Modifiers that applies to the empire with this option active.
- on_enabled & on_disabled - Blocks of Effects to be executed to the empire when this option is selected / switched out. (Country scope)
- AI_weight - The AI will always choose a option of highest weight for each policy. The player will also have each policy fall into an option of highest
ai_weight
by default.
Vanilla Example
This is the Diplomatic Stance policy.
diplomatic_stance = {
potential = {
OR = {
is_country_type = default
is_country_type = fallen_empire
is_country_type = awakened_fallen_empire
is_country_type = primitive
is_country_type = awakened_marauders
}
}
option = {
name = "diplo_stance_belligerent"
icon = "GFX_diplomatic_stance_belligerent"
potential = {
OR = {
is_country_type = default
is_country_type = awakened_fallen_empire
}
is_homicidal = no # They have their own variants of this
NOT = { has_valid_civic = civic_inwards_perfection }
}
policy_flags = {
diplo_stance_belligerent
}
modifier = {
country_war_exhaustion_mult = -0.1
country_naval_cap_mult = 0.1
country_claim_influence_cost_mult = -0.1
}
ai_weight = {
weight = 10
modifier = {
factor = 0
NOT = { has_country_flag = has_encountered_other_empire }
}
...
}
}
option = {
name = "diplo_stance_cooperative"
icon = "GFX_diplomatic_stance_cooperative"
potential = {
OR = {
is_country_type = default
is_country_type = awakened_fallen_empire
}
is_unfriendly = no # Not homicidal or barbaric despoilers
NOT = { has_valid_civic = civic_inwards_perfection }
}
policy_flags = {
diplo_stance_cooperative
}
modifier = {
diplo_weight_mult = 0.25
envoy_improve_relations_mult = 0.5
country_border_friction_mult = -0.5
}
ai_weight = {
weight = 10
modifier = {
factor = 0
NOT = { has_country_flag = has_encountered_other_empire }
}
...
}
}
...
}
Relevant Dynamic Modding Statements
Conditions:
has_policy_flag = <policy flag key>
- Checks if the empire has any active policy option with this policy flag.
last_changed_policy = <policy key>
- Checks if the last policy the empire has changed was the specified policy. Used for on_action events.
Effects:
# changes an empire's policy
set_policy = {
policy = <policy key>
option = <policy option name>
cooldown = <yes/no> # determines should this effect set a 10-year cooldown of policy change
}