Bombardment Stance 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 modding the Bombardment Stances.

Data Structure[edit]

Bombardment stances are defiend at "common/bombardment_stances/xxx.txt".

  • trigger - A block of Conditions to determine can a fleet have this bombardment stance. (Fleet scope)
  • icon_frame = <int> - An index in the shared bombardment stance icon file to determine the icon of this stance. A button entry named GFX_fleet_order_button_ground_support_NAME is also required.
  • default = <yes/no> - If yes, newly created fleets will have this stance.
  • stop_when_armies_dead = <yes/no> - Default no. If yes, this bombardment stance will do nothing on planets without any armies.
  • abduct_pops = <yes/no> - Default no. If yes, pops killed by this bombardment stance are aducted instead. This will trigger the on_pop_abducted on-action.
  • planet_damage = <float> - Default 1. This value scales the planetary devastation inflicted by this bombardment stance.
  • army_damage = <float> - Default 1. This value scales the damage dealt to planetary armies by this bombardment stance.
  • kill_pop_chance - An instance that determines the chance of this bombardment stance to kill pops.
    • base = <float> - This value scales the default chance to kill a pop.
    • modifier - An instance that modifies the chance. It consist of a factor = <float> instance and a set of Conditions. Vanilla use this to prevent the Pox bombardment stance from killing Trait mechanical.png Mechanical Pops. (Pop scope)
  • min_pops_to_kill_pop = <int> - Default 0. If number of pops is smaller than this, this bombardment stance won't kill pops any further.
  • ai_weight - AI will use the bombardment stance of highest weight. (ROOT = bombarding fleet, FROM = planet under bombardment)

Example[edit]

This is the Pox bombardment stance.

pox = {
	trigger = {
		owner = {
			# --- This modifier is given by the relevant relic --- #
			has_modifier = javorian_pox
			OR = {
				NOT = { is_country_type = default }
				has_policy_flag = orbital_bombardment_indiscriminate
				has_policy_flag = orbital_bombardment_armageddon
			}
		}
	}

	icon_frame = 5
	default = no

	stop_when_armies_dead = no
	abduct_pops = no

	planet_damage = 0.2
	army_damage = 1.5

	kill_pop_chance = { # Should only target organics
		base = 1.5
		modifier = {
			factor = 0
			pop_has_trait = trait_mechanical
		}
	}
	min_pops_to_kill_pop = 0

	# root = fleet
	# from = planet
	ai_weight = {
		weight = 10
		modifier = {
			factor = 0.01
			exists = from
			from = {
				owner = { NOT = { is_hostile = root.owner } }
			}
		}
	}
}

Bombardment Animation[edit]

There is an entity named "orbital_bombardment_effects" in the file "gfx/models/planets/_planetary_entities.asset". Without modding this file, any custom bombardment stances will have neither animations nor sound effects.

entity = {
	name = "orbital_bombardment_effects"
	pdxmesh = "bombardment_frame_mesh"
	
	cull_radius = 500.0
	
	# --- If multiple states named "bombard_xxx" exist, a random state is used, weighed by the "chance" field --- #
	# --- Add more state entries for a same bombardment stance to give some randomness to the animations --- #
	# --- The more the "event" entries, the shorter the "state_time", the more fierce the animation will look like --- #
	
	state = { name = "bombard_selective" state_time = 4 looping = no next_state = "bombard_selective" chance = 1
		event = { time = 0 node = "bombardment_location_1" particle = ... } }
		event = { time = 1 node = "bombardment_location_5" particle = ... } }
		event = { time = 2.5 node = "bombardment_location_12" particle = ... } }
	}
	state = { name = "bombard_selective" state_time = 4 looping = no next_state = "bombard_selective" chance = 1
		event = { time = 0 node = "bombardment_location_7" particle = ... } }
		...
	}
	state = { name = "bombard_indiscriminate" state_time = 3.0 looping = no next_state = "bombard_indiscriminate" chance = 1
		event = { time = 0 node = "bombardment_location_3" particle = ... } }
		...
	}
	state = { name = "bombard_indiscriminate" state_time = 3.0 looping = no next_state = "bombard_indiscriminate" chance = 1
		event = { time = 0 node = "bombardment_location_4" particle = ... } }
		...
	}
	state = { name = "bombard_armageddon" state_time = 2.5 looping = no next_state = "bombard_armageddon" chance = 1
		event = { time = 0 node = "bombardment_location_1" particle = ... } }
		...
	}
	state = { name = "bombard_armageddon" state_time = 2.5 looping = no next_state = "bombard_armageddon" chance = 1
		event = { time = 0 node = "bombardment_location_2" particle = ... } }
		...
	}
	...
	
	# --- By the way, the vanilla Pox bombardment stance do NOT have any animations --- #

	scale = 1.0
}

Overwrite this entity and add more states following this format to apply bombardment animations and sound effects to custom bombardment stances.

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 Dynamic moddingEffectsConditionsScopesModifiersVariablesAI
Media/localisation Maya exporterGraphicsPortraitsFlagsEvent picturesInterfaceIconsMusicLocalisation
Other Console commandsSave-game editingSteam Workshop