﻿aspmod_parasite_machine_relic_effect = {
	random_list = {
		18 = { add_modifier = { modifier = mod_aspmod_parasite_machine_relic_1 days = 3600 } }
		18 = { add_modifier = { modifier = mod_aspmod_parasite_machine_relic_2 days = 3600 } }
		18 = { add_modifier = { modifier = mod_aspmod_parasite_machine_relic_3 days = 3600 } }
		18 = { add_modifier = { modifier = mod_aspmod_parasite_machine_relic_4 days = 3600 } }
		18 = { add_modifier = { modifier = mod_aspmod_parasite_machine_relic_5 days = 3600 } }
		10 = {
			if = {
				limit = {
					any_owned_planet = { any_owned_pop_group = { always = yes } }
				}
				random_owned_planet = {
					limit = { any_owned_pop_group = { always = yes } }
					create_message = {
						type = ASPMOD_PARASITE_MACHINE_EXPLODED_MESSAGE_TYPE
						localization = ASPMOD_PARASITE_MACHINE_RELIC_EFFECT_BONUS_FAILURE
						days = 15
						target = this
					}
					add_planet_devastation = 100
					if = {
						limit = { has_district = yes }
						remove_random_district = yes
					}
					while = {
						limit = { any_owned_pop_group = { always = yes } }
						count = 6
						weighted_random_owned_pop_group = { kill_single_pop = yes }
					}
				}
			}
			else = {
				# A planetless country cannot receive the destructive outcome; return a valid relic bonus instead.
				add_modifier = { modifier = mod_aspmod_parasite_machine_relic_1 days = 3600 }
			}
		}
	}
}
aspmod_parasite_machine_relic_2_effect = {
	random_list = {
		20 = { add_modifier = { modifier = mod_aspmod_parasite_machine_relic_1_alt days = 3600 } }
		20 = { add_modifier = { modifier = mod_aspmod_parasite_machine_relic_2_alt days = 3600 } }
		20 = { add_modifier = { modifier = mod_aspmod_parasite_machine_relic_3_alt days = 3600 } }
		20 = { add_modifier = { modifier = mod_aspmod_parasite_machine_relic_4_alt days = 3600 } }
		20 = { add_modifier = { modifier = mod_aspmod_parasite_machine_relic_5_alt days = 3600 } }
	}
}
aspmod_geo_centralizer_colossus_effect = {
	save_event_target_as = swaped_target_world
	if = {
		limit = {
			NOR = {
				is_planet_class = pc_habitat
				is_planet_class = pc_ringworld_habitable
			}
		}
		solar_system = {
			if = {
				limit = { NOR = { has_star_flag = already_swaped_system star = { is_planet_class = pc_black_hole } } }
				if = {
					limit = {
						OR = {
							has_planet_class = pc_b_star
							has_planet_class = pc_a_star
							has_planet_class = pc_f_star
							has_planet_class = pc_g_star
							has_planet_class = pc_k_star
							has_planet_class = pc_m_star
							has_planet_class = pc_t_star
							has_planet_class = pc_pulsar
							has_planet_class = pc_m_giant_star
							has_planet_class = pc_neutron_star
						}
					}
					switch = {
						trigger = has_planet_class
						pc_b_star = { spawn_planet = { class = pc_b_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } } }
						pc_a_star = { spawn_planet = { class = pc_a_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } } }
						pc_f_star = { spawn_planet = { class = pc_f_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } } }
						pc_g_star = { spawn_planet = { class = pc_g_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } } }
						pc_k_star = { spawn_planet = { class = pc_k_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } } }

						pc_m_star = { spawn_planet = { class = pc_m_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } } }
						pc_t_star = { spawn_planet = { class = pc_t_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } } }
						pc_pulsar = { spawn_planet = { class = pc_pulsar location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } } }
						pc_m_giant_star = { spawn_planet = { class = pc_m_giant_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } } }
						pc_neutron_star = { spawn_planet = { class = pc_neutron_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } } }
					}
					else = {
						spawn_planet = { class = pc_pulsar location = prev init_effect = { set_planet_size = 25 set_name = random set_surveyed = { surveyed = yes surveyor = from.owner } } }
					}
				}
				spawn_planet = {
					class = pc_barren_cold
					size = 25
					orbit_distance = 0.01 #intentional tiny offset for this star-replacement presentation; retain until runtime visual regression proves 0 safe here
					has_ring = no
					init_effect = {
						set_name = event_target:swaped_target_world # Pegasus 4.4.6: event-target naming is current and preserves the target world name
						clear_planet_modifiers = yes
						save_event_target_as = already_swaped_world
						random_list = {
							1 = {
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
							}
							1 = {
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
							}
							1 = {
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
							}
							1 = {
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
							}
						}
						set_surveyed = { surveyed = yes surveyor = from.owner }
					}
				}
				star = {
					clear_deposits = yes
					set_planet_size = 1 #intentional hidden-star carrier size; keep nonzero until this transformation is runtime-certified
				}
				set_star_flag = already_swaped_system #shouldn't swap star with a planet more than once
				prev = {
					remove_planet = yes
					from = {
						set_location = {
							target = event_target:already_swaped_world
							distance = 0
						}
					}
				}
			}
			if = {
				limit = { OR = { has_star_flag = already_swaped_system star = { is_planet_class = pc_black_hole } } }
				prev = {
					kill_all_pop = yes
					remove_all_buildings = yes
					change_pc = pc_barren_cold
				}
			}
		}
	}
	if = {
		limit = { is_planet_class = pc_habitat }
		spawn_habitat_cracker_effect = yes
		remove_planet = yes
	}
	if = {
		limit = { is_planet_class = pc_ringworld_habitable }
		spawn_ringworld_cracker_effect = yes
		change_pc = pc_ringworld_habitable_damaged
	}
}

# Pegasus 4.4.6 relic-owned Geo-Centralizer path.
# Current scope is the activating empire's capital planet; actor identity is captured from planet.owner
# before the destructive transform. This deliberately does not reuse the Colossus fleet-owned FROM contract.
aspmod_geo_centralizer_relic_effect = {
	save_event_target_as = aspmod_geocentric_relic_target_world
	owner = { save_event_target_as = aspmod_geocentric_relic_actor }
	if = {
		limit = {
			NOR = {
				is_planet_class = pc_habitat
				is_planet_class = pc_ringworld_habitable
			}
		}
		solar_system = {
			if = {
				limit = { NOR = { has_star_flag = already_swaped_system star = { is_planet_class = pc_black_hole } } }
				if = {
					limit = {
						OR = {
							has_planet_class = pc_b_star
							has_planet_class = pc_a_star
							has_planet_class = pc_f_star
							has_planet_class = pc_g_star
							has_planet_class = pc_k_star
							has_planet_class = pc_m_star
							has_planet_class = pc_t_star
							has_planet_class = pc_pulsar
							has_planet_class = pc_m_giant_star
							has_planet_class = pc_neutron_star
						}
					}
					switch = {
						trigger = has_planet_class
						pc_b_star = { spawn_planet = { class = pc_b_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } } }
						pc_a_star = { spawn_planet = { class = pc_a_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } } }
						pc_f_star = { spawn_planet = { class = pc_f_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } } }
						pc_g_star = { spawn_planet = { class = pc_g_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } } }
						pc_k_star = { spawn_planet = { class = pc_k_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } } }

						pc_m_star = { spawn_planet = { class = pc_m_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } } }
						pc_t_star = { spawn_planet = { class = pc_t_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } } }
						pc_pulsar = { spawn_planet = { class = pc_pulsar location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } } }
						pc_m_giant_star = { spawn_planet = { class = pc_m_giant_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } } }
						pc_neutron_star = { spawn_planet = { class = pc_neutron_star location = prev init_effect = { set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } } }
					}
					else = {
						spawn_planet = { class = pc_pulsar location = prev init_effect = { set_planet_size = 25 set_name = random set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor } } }
					}
				}
				spawn_planet = {
					class = pc_barren_cold
					size = 25
					orbit_distance = 0.01 #intentional tiny offset for this star-replacement presentation; retain until runtime visual regression proves 0 safe here
					has_ring = no
					init_effect = {
						set_name = event_target:aspmod_geocentric_relic_target_world # Pegasus 4.4.6: event-target naming is current and preserves the target world name
						clear_planet_modifiers = yes
						save_event_target_as = already_swaped_world
						random_list = {
							1 = {
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
							}
							1 = {
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
							}
							1 = {
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
							}
							1 = {
								add_deposit = d_minerals_3
								add_deposit = d_minerals_3
							}
						}
						set_surveyed = { surveyed = yes surveyor = event_target:aspmod_geocentric_relic_actor }
					}
				}
				star = {
					clear_deposits = yes
					set_planet_size = 1 #intentional hidden-star carrier size; keep nonzero until this transformation is runtime-certified
				}
				set_star_flag = already_swaped_system #shouldn't swap star with a planet more than once
				prev = {
					# Relic activation has no Colossus/fleet FROM scope to reposition.
					remove_planet = yes
				}
			}
			if = {
				limit = { OR = { has_star_flag = already_swaped_system star = { is_planet_class = pc_black_hole } } }
				prev = {
					kill_all_pop = yes
					remove_all_buildings = yes
					change_pc = pc_barren_cold
				}
			}
		}
	}
	if = {
		limit = { is_planet_class = pc_habitat }
		spawn_habitat_cracker_effect = yes
		remove_planet = yes
	}
	if = {
		limit = { is_planet_class = pc_ringworld_habitable }
		spawn_ringworld_cracker_effect = yes
		change_pc = pc_ringworld_habitable_damaged
	}
}

# Legacy alias for any external/scripted call that still expects the original effect name.
# Valid only when called from planet-killer context where from = fleet.
aspmod_geo_centralizer_effect = {
	aspmod_geo_centralizer_colossus_effect = yes
}
