Wing data.csv Overview
Description
An entry in wing_data.csv is required for all fighter type ships. This is in addition to other things a ship needs, such as a .ship file and a ship_data.csv entry. The more commonly balance tweaked information is in the csv files while the less commonly edited information is in the .ship file.
Elements
id
- Internal ID used to reference this fighter. Must match the id field in the ship_data.csv entry with an appended "_wing". For example the id of the broadsword fighter in ship_data.csv is "broadsword" so the id in the wing_data.csv is "broadsword_wing". Case sensitive. String
variant
- Internal variant ID for this fighter. Must match the variantId element within a .variant file. For example the broadsword variant file broadsword_Fighter.variant contains element variantId with value "broadsword_Fighter". Case sensitive. String
tags
Primarily used by the autofit system to locate similar replacement weapons by providing a tiered grouping. Autofit would prefer higher numbers in the same grouping first and upgrade if possible. The vanilla groupings, where x is replaced with a number, are:
- fighterX
- interceptorX
- bomberX
- supportX
These are the tags that classify that the wings regarding automated ships.
- auto_fighter: Allows ships with Automated Ship to equip these wings.
- drone: This is used for autofit purposes if the variant has a drone wing, it will prefer to use wings with this drone tag.
There are tags that categorize the wings into 3 categories, this is just for UI display:
- fighter
- interceptor
- bomber
Tags also help control which factions know a weapon and which blueprint packages it appears in. Some such tags include:
- lowtech_bp
- midline_bp
- hightech_bp
- base_bp (known to all factions, including player at start of game)
- rare_bp (will appear as a standalone blueprint)
- merc (used by mercenary fleets)
Tags help with how the fighter operate AI-wise:
- rapid_reform - lagging wing members catch up more quickly
- leader_no_swarm - leader will start a new attack run on reaching target
- wingmen_no_swarm - wing members will keep their position in the wing on reaching target
- match_leader_facing - wing members will not face towards target but will match wing leader
- attack_at_an_angle - aim to pass near target instead of directly over it, based on weapon range
- independent_of_carrier - combat won't end when only these are left on the field
- rd_no_extra_craft: prevents Reserve Deployment from deploying extra extra wings when used.
- rd_force_extra_craft (defunct): Allow Reserve Deployment to deploy extra wings when used (this used to be placed on bombers when the system did not allow bombers)
- no_drop: Prevents from being salvaged or recovered (for built-in wings).
- no_sell: Prevents markets from selling the wing.
- restricted
The hist1t
, hist2t
, and hist3t
tag means the historian can tell the player about the location of a blueprint with this weapon.
tier
- According to Alex For weapons, higher tier means a lower chance of being available. For fighters, this isn't the case - there aren't enough fighters, i.e. there's no "Talon, but worse" and "Talon, but better" etc progression for each kind of fighter, so that didn't work very well. Instead, it just picks a couple of the available fighters for each autofit category.
com.fs.starfarer.api.impl.campaign.fleets.DefaultFleetInflater.java is a good place to look for the details; if you want specific behavior with regard to rarity etc, writing a custom one is probably the way to go. See also: CampaignPlugin.pickFleetInflater().
rarity
- Impacts the availability of this wing in loot drops. Between 0 and 1. Typical values are null, which defaults to 0 with some entries being 0.5 or 0.25 with higher being rarer. Int
fleet pts
- Abstract number denoting how powerful the ship is. Used for when two AI fleets clash in the campaign and for determining maximum total abstract fleet power for randomly generated fleet doctrines. Int
op cost
- The cost in OP points to mount this fighter wing on a carrier. Int
formation
- The formation the fighters should fly in. Allow types are listed in the Starsector API
BOX, CLAW, DIAMOND, V
range
- Range the fighters may operate from their parent carrier. Due to the combat engine allowing some leeway this is effectively +1000 / -500 units. Typical fighter range is 4000. Can be set to 0. Int
attackRunRange
- Range at which the fighters "should" attack. They may still fire before this range if their weapon permits it. A lower attackRunRange makes them do closer turnaround to their target. Int
attackPositionOffset
- The relative position of this fighter wing in an attack run. Used to put fighters in front or behind other fighters. Lower numbers are closer to the front. Can be negative. Int
num
- The number of fighters within the wing. Int
role
- The role of the fighters in the game engine. Allowed types are listed in the Starsector API
- ASSAULT: Depreciated, can still be used but no fancy changes.
- BOMBER: Will return back to the carrier automatically when it runs out of ammo
- FIGHTER: Default Wing AI. Will appear more often than the rest but not more than the interceptor.
- INTERCEPTOR: Prefers to target missiles and other fighters first. Will also appear the most often in markets than the rest of the roles.
- SUPPORT: Will stick close to its carrier and may only escort (through its engagement range) other allied ships.
role desc
- Friendly concise player-facing description of this fighter's role. String
refit
- Base time in seconds to replace a dead fighter. Also factors into the rearm time for a fighters with limited ammo weapons. Note that if the rearm time is less than the time it takes the fighters to return to the carrier then they can potentially respawn very quickly. Int
base value
- The base value of the fighter wing in credits. Int
twelve empty elements
- These are required for the format of the csv. Blank
number
- Unknown use. Potentially similar to the ship_data.csv, impacts the sorting display of ships within a market. I.E. ships will be sorted based on hull size and then based on this number field. Int
Return to: Modding