wing_data.csv
ship_data.csv is a file of .csv format. While possible to edit with a text editor, it is highly advised to use appropriate tools for .csv format to prevent errors.
If you plan on editing .csv, please visit Required Tools page and use one of the appropriate tools.
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.
Elements
Columns accept different Type of values in the cell:
- String (Any) - freeform text, usually names, descriptions or designations. Usually will not get used anywhere outside UI.
- String (Keys) - these text fields accept only predefined values, either ids (of ships, shipsystems and other things) or some special key. Case sensitive. If you want to enter multiple keys in cell they need to be separated by comma (e.g
COMBAT, CARRIER) Note that not all key columns can accept multiple values. - String (ID) - this is unique ID for this separate ship, system, hullmod and so on depending on file. It most important String for most csvs and files. It how game finds things in first place. Changing ID means changing it in all other connected files, usually manually. Do ID right when you first setup entry, and try to keep it same going forward.
- Number (int) - accepts whole numbers. Correspond to some
intvalue in API. - Number (float) - accepts decimal numbers. Correspond to some
floatvalue in API. For decimals in.csvwhole and decimal part separated by dot (e.g.1.2)
At the very top of ship_data.csv, you will see a list of categories. Going from left to right, the function of each will be described:
| Column | Type | Description |
|---|---|---|
| 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 | Tags are strings used to attach additional data to wings. They can be used to define certain faction ship ownership (e. g. independents will know and use ships marked with "ind" tag - on how it implemented on faction level see .faction page), but also for interaction with other game systems. Some uses include blueprint behavior (pack/individual) or being read by other scripts (hullmods, ai, ect) to determine how script's function applies to ships with different tags. While many tags are already used by game, new ones can be created freely by adding the string to this field. For more information on already used tags see the tags section below. |
|
| tier | Number (int) | 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 | Number (int) | 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 points | 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 | |
| empty columns | 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 |
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
For Reserve Deployment
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.