Pop Faction modding

Version

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

This article is for the PC version of Stellaris only.

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

Factions are defined at "common/pop\_faction\_types/xxx.txt".

## Faction Example

### Imperialist Faction

0

```
imperialist = {
	election_header = "GFX_faction_header_yellow"
	guiding_ethic = ethic_militarist #only pops of this ethic can join the faction

	unique = yes
	support_multiplier = 1

	resources = {
		category = pop_factions
		produces = {
			unity = 0.5
		}
	}

	is_potential = {
		is_faction_allowed = yes
		if = {
			limit = {
				has_faction = imperialist
				any_pop_faction = {
					is_pop_faction_type = imperialist
					num_pops >= 5
				}
			}
		}
		else = {
			count_owned_pop = {
				count >= 5
				limit = {
					has_ethic = ethic_militarist
				}
			}
		}
	}

	parameters = {
		empire = {
			type = country
			valid_objects = {
				is_same_value = root
			}
		}
	}

	can_join_pre_triggers = {
		is_enslaved = no
		is_being_purged = no
	}

	can_join_faction = {
		is_shackled_robot = no
		can_think = yes
	}

	attraction = {
		base = 100

		modifier = {
			factor = 1.25
			exists = from
			from = {
				exists = leader
				leader = { leader_class = ruler }
			}
		}

		modifier = {
			factor = 0.75
			exists = from
			from = {
				NOT = { exists = leader }
			}
		}

		modifier = {
			factor = 1.25
			has_citizenship_rights = yes
		}
	}

	leader = {
		base = 100

		modifier = {
			factor = 0.0
			is_event_leader = yes
		}
	}

	demand = {
		title = "FACTION_OUTRAGED_GC"
		unfulfilled_title = "FACTION_OUTRAGED_GC"
		desc = "FACTION_OUTRAGED_GC_DESC"

		fulfilled_effect = -20
		unfulfilled_effect = -0.001

		potential = {
			exists = owner
			owner = {
				has_country_flag = faction_militarist_outraged_gc
			}
		}

		trigger = {
			owner = {
				has_country_flag = faction_militarist_outraged_gc
			}
		}
	}

	demand = {
		title = "IMPERIALIST_PHILOSOPHY"
		unfulfilled_title = "IMPERIALIST_NO_PHILOSOPHY"
		desc = "IMPERIALIST_PHILOSOPHY_DESC"

		unfulfilled_effect = -30
		fulfilled_effect = 0.001

		potential = {
			exists = owner
			owner = {
				any_relation = {
					has_communications = root.owner
					is_country_type = default
					NOT = { exists = overlord }
				}
			}
		}

		trigger = {
			owner = {
				OR = {
					has_policy_flag = unrestricted_wars
					has_policy_flag = liberation_wars
				}
			}
		}
	}

	demand = {
		title = "IMPERIALIST_CONQUEST"
		unfulfilled_title = "IMPERIALIST_NO_CONQUEST"
		desc = "IMPERIALIST_CONQUEST_DESC"

		fulfilled_effect = 10
		unfulfilled_effect = -0.001

		potential = {
			exists = owner
			owner = {
				any_relation = {
					has_communications = root.owner
					is_country_type = default
					NOT = { exists = overlord }
				}
			}
		}

		trigger = {
			owner = {
				has_country_flag = imperialist_conquest_timed_flag
			}
		}
	}

	demand = {
		title = "SUPREMACIST_FANATIC_PURIFIERS"
		unfulfilled_title = "SUPREMACIST_NOT_FANATIC_PURIFIERS"
		desc = "SUPREMACIST_FANATIC_PURIFIERS_DESC"

		fulfilled_effect = 10
		unfulfilled_effect = -0.001

		potential = {
			exists = owner
			owner = {
				has_valid_civic = civic_fanatic_purifiers
			}
		}

		trigger = {
			owner = {
				has_valid_civic = civic_fanatic_purifiers
			}
		}
	}

	demand = {
		title = "IMPERIALIST_RIVALS1"
		unfulfilled_title = "IMPERIALIST_FEW_RIVALS1"
		desc = "IMPERIALIST_RIVALS_DESC1"

		fulfilled_effect = 5
		unfulfilled_effect = -5

		potential = {
			exists = owner
			owner = {
				num_communications > 2
				NOT = { has_valid_civic = civic_fanatic_purifiers }
				num_rivals < 2
			}
		}

		trigger = {
			owner = {
				num_rivals > 0
			}
		}
	}

	demand = {
		title = "IMPERIALIST_RIVALS2"
		unfulfilled_title = "IMPERIALIST_FEW_RIVALS2"
		desc = "IMPERIALIST_RIVALS_DESC2"

		fulfilled_effect = 10
		unfulfilled_effect = -0.001

		potential = {
			exists = owner
			owner = {
				num_communications > 2
				NOT = { has_valid_civic = civic_fanatic_purifiers }
				num_rivals = 2
			}
		}

		trigger = {
			owner = {
				num_rivals > 1
			}
		}
	}

	demand = {
		title = "IMPERIALIST_RIVALS3"
		unfulfilled_title = "IMPERIALIST_FEW_RIVALS3"
		desc = "IMPERIALIST_RIVALS_DESC3"

		fulfilled_effect = 15
		unfulfilled_effect = -0.001

		potential = {
			exists = owner
			owner = {
				num_communications > 2
				NOT = { has_valid_civic = civic_fanatic_purifiers }
				num_rivals > 2
			}
		}

		trigger = {
			owner = {
				num_rivals > 2
			}
		}
	}

	demand = {
		title = "IMPERIALIST_OVERLORD" #Imperial Hegemony
		unfulfilled_title = "IMPERIALIST_NOT_OVERLORD"
		desc = "IMPERIALIST_OVERLORD_DESC"

		fulfilled_effect = 5
		unfulfilled_effect = -0.001

		potential = {
			exists = owner
			owner = {
				num_communications > 2
				NOT = { has_valid_civic = civic_fanatic_purifiers }
			}
		}

		trigger = {
			OR = {
				owner = {
					is_overlord = yes
				}
				owner = {
					has_federation = yes
					federation = {
						has_federation_type = hegemony_federation
					}
					is_federation_leader = yes
				}
			}
		}
	}

	demand = {
		title = "IMPERIALIST_UNDERLING"
		unfulfilled_title = "IMPERIALIST_NOT_UNDERLING"
		desc = "IMPERIALIST_UNDERLING_DESC"

		unfulfilled_effect = -25
		fulfilled_effect = 0.001

		potential = {
			exists = owner
			owner = {
				has_overlord_dlc = no
				is_subject = yes
			}
		}

		trigger = {
			owner = {
				is_subject = no
			}
		}
	}

	demand = {
		title = "IMPERIALIST_BULWARK"
		unfulfilled_title = "IMPERIALIST_NOT_BULWARK"
		desc = "IMPERIALIST_BULWARK_DESC"

		unfulfilled_effect = -25
		fulfilled_effect = 0.001

		potential = {
			exists = owner
			owner = {
				has_overlord_dlc = yes
				is_subject = yes
				is_specialist_subject_type = { TYPE = bulwark }
			}
		}

		trigger = {
			owner = {
				OR = {
					is_subject = no
					is_specialist_subject_type = { TYPE = bulwark }
				}
			}
		}
	}

	demand = {
		title = "IMPERIALIST_SLAYER"
		unfulfilled_title = "IMPRERIALIST_NOT_SLAYER"
		desc = "IMPERIALIST_SLAYER_DESC"

		fulfilled_effect = 10
		unfulfilled_effect = -0.001

		potential = {
			exists = owner
			owner = {
				host_has_dlc = "Leviathans Story Pack"
				OR = {
					has_country_flag = killed_guardian
					any_country = {
						is_guardian_country = yes
						has_communications = prev
					}
				}
			}
		}

		trigger = {
			owner = {
				has_country_flag = killed_guardian
			}
		}
	}

	demand = {
		title = "IMPERIALIST_MILITARY_APPLICATIONS"
		unfulfilled_title = "IMPERIALIST_NO_MILITARY_APPLICATIONS"
		desc = "IMPERIALIST_MILITARY_APPLICATIONS_DESC"

		fulfilled_effect = 5
		unfulfilled_effect = -0.001

		potential = {
			exists = owner
			owner = {
				host_has_dlc = "Ancient Relics Story Pack"
				has_technology = tech_arcane_deciphering
				OR = {
					has_modifier = artifact_find_military_application_army
					has_modifier = artifact_find_military_application_shield_damage
					has_modifier = artifact_find_military_application_armor_damage
				}
			}
		}

		trigger = {
			owner = {
				OR = {
					has_modifier = artifact_find_military_application_army
					has_modifier = artifact_find_military_application_shield_damage
					has_modifier = artifact_find_military_application_armor_damage
				}
			}
		}
	}

	demand = {
		title = "IMPERIALIST_PEACEFUL_APPLICATIONS"
		unfulfilled_title = "IMPERIALIST_NO_PEACEFUL_APPLICATIONS"
		desc = "IMPERIALIST_PEACEFUL_APPLICATIONS_DESC"

		unfulfilled_effect = -5
		fulfilled_effect = 0.001

		potential = {
			exists = owner
			owner = {
				host_has_dlc = "Ancient Relics Story Pack"
				has_technology = tech_arcane_deciphering
				OR = {
					has_modifier = artifact_find_peaceful_application_happy_bios
					has_modifier = artifact_find_peaceful_application_consumer_goods
					has_modifier = artifact_find_peaceful_application_amenities
					has_modifier = artifact_find_peaceful_application_leader_improvement
				}
			}
		}

		trigger = {
			owner = {
				NOR = {
					has_modifier = artifact_find_peaceful_application_happy_bios
					has_modifier = artifact_find_peaceful_application_consumer_goods
					has_modifier = artifact_find_peaceful_application_amenities
					has_modifier = artifact_find_peaceful_application_leader_improvement
				}
			}
		}
	}

	demand = {
		title = "STRONG_DIPLO_STANCE"
		unfulfilled_title = "STRONG_DIPLO_STANCE"
		desc = "STRONG_DIPLO_STANCE_DESC"

		fulfilled_effect = 10
		unfulfilled_effect = -0.001

		potential = {
			exists = owner
			owner = {
				is_homicidal = no
				is_country_type = default
				OR = {
					has_policy_flag = diplo_stance_belligerent
					has_policy_flag = diplo_stance_supremacist
				}
			}
		}

		trigger = {
			owner = {
				OR = {
					has_policy_flag = diplo_stance_belligerent
					has_policy_flag = diplo_stance_supremacist
				}
			}
		}
	}

	demand = {
		title = "WEAK_DIPLO_STANCE"
		unfulfilled_title = "WEAK_DIPLO_STANCE"
		desc = "WEAK_DIPLO_STANCE_DESC"

		fulfilled_effect = 0.01
		unfulfilled_effect = -10

		potential = {
			exists = owner
			owner = {
				is_homicidal = no
				is_country_type = default
				has_policy_flag = diplo_stance_cooperative
			}
		}

		trigger = {
			owner = {
				NOT = { has_policy_flag = diplo_stance_cooperative }
			}
		}
	}

	demand = {
		title = "IMPERIALIST_BENEVOLENT_SUBJUGATION_POLICY"
		unfulfilled_title = "IMPERIALIST_NO_BENEVOLENT_SUBJUGATION_POLICY"
		desc = "IMPERIALIST_BENEVOLENT_SUBJUGATION_POLICY_DESC"

		unfulfilled_effect = -5
		fulfilled_effect = 0.001

		potential = {
			exists = owner
			owner = {
				is_subject = no
				has_policy_flag = benevolent_terms
			}
		}

		trigger = {
			owner = {
				NOT = { has_policy_flag = benevolent_terms }
			}
		}
	}

	demand = {
		title = "IMPERIALIST_OPPRESSIVE_SUBJUGATION_POLICY"
		unfulfilled_title = "IMPERIALIST_ADOPT_OPPRESSIVE_SUBJUGATION_POLICY"
		desc = "IMPERIALIST_OPPRESSIVE_SUBJUGATION_POLICY_DESC"

		fulfilled_effect = 5
		unfulfilled_effect = -0.001

		potential = {
			exists = owner
			owner = {
				is_subject = no
				NOT = { has_policy_flag = benevolent_terms }
			}
		}

		trigger = {
			owner = {
				has_policy_flag = oppressive_terms
			}
		}
	}

	on_create = {
		pop_faction_event = { id = factions.1 }
	}

	on_destroy = {
		if = {
			limit = {
				has_modifier = promoted_militarist
			}
			remove_modifier = promoted_militarist
		}
		if = {
			limit = {
				has_modifier = suppressed_militarist
			}
			remove_modifier = suppressed_militarist
		}
	}

	actions = {
		embrace_faction = {
			title = "EMBRACE_FACTION"
			description = "EMBRACE_FACTION_DESC"

			cost = {
				unity = 5000
			}

			potential = {
				exists = owner
				owner = {
					OR = {
						is_subject = no
						NOT = { any_agreement = { agreement_preset = preset_dominion } }
					}
				}
			}

			valid = {
				custom_tooltip = {
					fail_text = EMBRACE_FACTION_COOLDOWN
					parameter:empire = {
						NOT = { has_modifier = embraced_faction_timer }
					}
				}
				support > 0.20
				parameter:empire = {
					NOT = { has_ethic = "ethic_fanatic_militarist" }
				}
			}

			effect = {
				add_modifier = { modifier = embraced_faction days = 3600 }
				parameter:empire = {
					shift_ethic = ethic_militarist
					hidden_effect = {
						add_modifier = { modifier = embraced_faction_timer days = 3600 }
						every_pop_faction = {
							limit = { NOT = { is_same_value = root } }
							add_modifier = { modifier = embraced_another_faction days = 3600 }
						}
					}
				}
				hidden_effect = {
					save_event_target_as = TargetFaction
					parameter:empire = {
						every_relation = {
							limit = {
								is_ai = no
								is_country_type = default
								has_communications = prev
								has_intel_level = {
									who = prev
									category = government
									level >= 1
								}
							}
							country_event = { id = factions.2000 }
						}
					}
				}
			}

			ai_weight = {
				base = 1
				modifier = {
					factor = 0
					support < 0.50
					owner = {
						has_ethic = ethic_militarist
					}
				}
				modifier = {
					factor = 0
					owner = { has_valid_civic = civic_fanatic_purifiers }
				}
				modifier = {
					factor = 0
					NOT = {
						owner = {
							exists = ruler
							ruler = {
								leader_of_faction = imperialist
							}
						}
					}
				}
				modifier = {
					factor = 0
					owner = {
						count_pop_faction = {
							count < 4
						}
					}
				}
			}
		}
		promote_faction = {
			title = "PROMOTE_FACTION"
			description = "PROMOTE_FACTION_DESC"

			potential = {
				exists = owner
				parameter:empire = {
					NOR = {
						has_modifier = suppressed_militarist
						has_modifier = promoted_militarist
					}
				}
			}

			effect = {
				parameter:empire = {
					add_modifier = { modifier = promoted_militarist days = -1 }
				}
			}

			ai_weight = {
				base = 0
			}
		}
		cancel_promote_faction = {
			title = "CANCEL_PROMOTE_FACTION"
			description = "CANCEL_PROMOTE_FACTION_DESC"

			potential = {
				exists = owner
				parameter:empire = { has_modifier = promoted_militarist }
			}

			effect = {
				parameter:empire = {
					remove_modifier = promoted_militarist
				}
			}

			ai_weight = {
				base = 0
			}
		}
		suppress_faction = {
			title = "SUPPRESS_FACTION"
			description = "SUPPRESS_FACTION_DESC"

			potential = {
				exists = owner
				parameter:empire = {
					NOR = {
						has_modifier = suppressed_militarist
						has_modifier = promoted_militarist
					}
				}
			}

			effect = {
				add_modifier = { modifier = suppressed_faction days = -1 }
				parameter:empire = {
					add_modifier = { modifier = suppressed_militarist days = -1 }
				}
			}

			ai_weight = {
				base = 0
			}
		}
		cancel_suppress_faction = {
			title = "CANCEL_SUPPRESS_FACTION"
			description = "CANCEL_SUPPRESS_FACTION_DESC"

			potential = {
				exists = owner
				parameter:empire = { has_modifier = suppressed_militarist }
			}

			effect = {
				remove_modifier = suppressed_faction
				parameter:empire = {
					remove_modifier = suppressed_militarist
				}
			}

			ai_weight = {
				base = 0
			}
		}
	}
}

```

The AI will only embrace a faction if current ruler is the faction leader. Also,  Fanatic Purifiers will never embrace factions.

Some issues will increase faction approval by **+0.001** if fulfilled, or decrease approval by **−0.001** if unfulfilled. This is to mark the issue **green** or **red**. If an issue currently has no effect, it will be marked **yellow**, which can be confusing.

**Modding**