Policies modding

From Stellaris Wiki
Jump to navigation Jump to search

Version

Outliner top.png
Please help with verifying or updating older sections of this article. At least some were last verified for version 2.6.

This article is for the PC version of Stellaris only.

This page is about how to modify existing and how to create new Policies.

Policies are defined at "common/policies/xxx.txt".

Data Structure[edit]

  • 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[edit]

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[edit]

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
}
Empire EmpireEthicsGovernments • Civics • OriginsMandatesAgendasTraditions • Ascension PerksEdictsPoliciesRelicsTechnologiesCustom Empires
Pops JobsFactions
Leaders LeadersLeader Traits
Species SpeciesSpecies Traits
Planets PlanetsPlanetary Feature • Orbital DepositBuildings • DistrictsPlanetary Decisions
Systems SystemsStarbasesMegastructuresBypassesMap
Fleets FleetsShips • Components
Land Warfare ArmiesBombardment Stance
Diplomacy Diplomacy • Federations • Galactic CommunityOpinion ModifiersCasus Belli • War Goals
Events EventsAnomaliesSpecial projectsArchaeological Sites
Gameplay GameplayDefinesResources • Economy
Dynamic modding EffectsConditionsScopesModifiersVariablesAI
Media/localisation Maya exporterGraphicsPortraitsFlagsEvent picturesInterfaceIconsMusicLocalisation
Other Console commandsSave-game editingSteam Workshop