Stellaris Wiki
Advertisement

Version

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

This article is for the PC version of Stellaris only.

This page is about modding the Bombardment Stances.

Data Structure[]

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> – Replaced, see #Icons.
  • 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 abducted 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 Mechanical 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)

Icons[]

Since version 3.1.* the icon_frame parameter (index in the shared bombardment stance icon file) is replaced by a more moddable friendlier method. Each stance required a (planet modifier named) "GFX_planet_modifier_ground_support_NAME" and a (button entry named) "GFX_fleet_order_button_ground_support_NAME" defined.

pox icon example (at planet_view.gfx):

	spriteType = {
		name = "GFX_planet_modifier_ground_support_pox"
		sprite_sheet_sprite_type = "GFX_planet_view_bombarded"
		default_frame = 5
	}

pox button example (at fleet_view.gfx):

	spriteType = {
		name = "GFX_fleet_order_button_ground_support_pox"
		texturefile = "gfx/interface/fleet_view/fleet_task_ground_support_pox_action.dds"
		effectFile = "gfx/FX/buttonstate.lua"
		noOfFrames = 3
		animation = {
			animationmaskfile = "gfx/interface/fleet_view/fleet_task_button_mask.dds"
			animationtexturefile = "gfx/interface/fleet_view/action_button_texture.dds"
			animationrotation = 180.0
			animationlooping = yes
			animationtime = 12.0
			animationdelay = 0.0
			animationblendmode = "overlay"		# add, multiply, overlay
			animationtype = "scrolling"		# scrolling, rotating, pulsing
			animationrotationoffset = { x = 0.0 y = 0.0 }
			animationtexturescale = { x = 1.0 y = 1.0 }
			animationframes = { 1 2 3 }
		}
	}
	
	spriteType = {
		name = "GFX_fleet_order_button_ground_support_pox_selected"
		texturefile = "gfx/interface/fleet_view/fleet_task_ground_support_pox_selected.dds"
		effectFile = "gfx/FX/buttonstate.lua"
		noOfFrames = 3
		animation = {
			animationmaskfile = "gfx/interface/fleet_view/fleet_task_button_mask.dds"
			animationtexturefile = "gfx/interface/fleet_view/action_button_texture.dds"
			animationrotation = 180.0
			animationlooping = yes
			animationtime = 12.0
			animationdelay = 0.0
			animationblendmode = "overlay"		# add, multiply, overlay
			animationtype = "scrolling"		# scrolling, rotating, pulsing
			animationrotationoffset = { x = 0.0 y = 0.0 }
			animationtexturescale = { x = 1.0 y = 1.0 }
			animationframes = { 1 2 3 }
		}
	}

Example[]

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
 			}
 		}
 	}

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

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 • EconomyGame start
Dynamic modding Dynamic moddingEffectsConditionsScopesModifiersVariablesAI
Media/localisation Maya exporterGraphicsPortraitsFlagsEvent picturesInterfaceIconsMusicLocalisation
Other Console commandsSave-game editingSteam WorkshopModding tutorial
Advertisement