<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.vanguardgalaxy.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dreadbyte</id>
	<title>Vanguard Galaxy Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.vanguardgalaxy.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dreadbyte"/>
	<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/Special:Contributions/Dreadbyte"/>
	<updated>2026-10-07T15:33:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Faction_Reputation&amp;diff=4105</id>
		<title>Faction Reputation</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Faction_Reputation&amp;diff=4105"/>
		<updated>2026-10-06T11:10:52Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Reputation.screen.png|frameless|700x700px]]&lt;br /&gt;
&lt;br /&gt;
Reputation determines a player&#039;s standing among the [[Factions]]. &lt;br /&gt;
&lt;br /&gt;
Reputation is increased by performing missions for the Faction issuing missions, or by performing missions which help the faction indirectly (See [[Patrol]], [[Bounty Hunt]]). Attacking ships of a faction decreases the reputation significantly if it is positive (-200 for small ship destroyed, -800 for large ship destroyed), but once negative, the reputation slides down relatively slowly.&lt;br /&gt;
&lt;br /&gt;
Reputation is capped to the story&#039;s progress. When you start, you can reach a max amount of 15.000 points. Later 30.000 will be unlocked. More will be added in a future Update.&lt;br /&gt;
&lt;br /&gt;
Throughout &#039;&#039;Frontier&#039;&#039; (See [[Navigation]]) reputation can be increased with all factions with the exception of [[Corsair Syndicate]] which serves as the default enemy. Once the player reaches [[Conquest Zone]], the Corsairs can finally be befriended, and [[Meridia&#039;s Chosen]] takes on the mantle of the default enemy.&lt;br /&gt;
&lt;br /&gt;
Increasing reputation with a faction grants bonuses to interactions with them, as shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== &#039;&#039;&#039;Reputation Ranks and Bonuses&#039;&#039;&#039; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Reputation and Bonuses&lt;br /&gt;
! Threshold&lt;br /&gt;
| 0&lt;br /&gt;
| -500&lt;br /&gt;
| -5000&lt;br /&gt;
| -15000&lt;br /&gt;
| -30000&lt;br /&gt;
| -50000&lt;br /&gt;
|-&lt;br /&gt;
!Status&lt;br /&gt;
|Neutral&lt;br /&gt;
|Wary&lt;br /&gt;
|Hostile&lt;br /&gt;
|Despised&lt;br /&gt;
|Hated&lt;br /&gt;
|Absolute Threat&lt;br /&gt;
|-&lt;br /&gt;
!Threshold&lt;br /&gt;
|0&lt;br /&gt;
|500&lt;br /&gt;
|5000&lt;br /&gt;
|15000&lt;br /&gt;
|30000&lt;br /&gt;
|50000&lt;br /&gt;
|-&lt;br /&gt;
!Status&lt;br /&gt;
|Neutral&lt;br /&gt;
|Cordial&lt;br /&gt;
|Friendly&lt;br /&gt;
|Respected&lt;br /&gt;
|Distinguished&lt;br /&gt;
|Exalted*&lt;br /&gt;
|-&lt;br /&gt;
!Positive bonuses&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;None&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Shop Discount: 2%&lt;br /&gt;
Mission Credit: +5%&lt;br /&gt;
Repair speed multiplier: x1.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Shop Discount: 4%&lt;br /&gt;
Mission Board Amount: +1&lt;br /&gt;
Mission Credit: +10%&lt;br /&gt;
Repair speed multiplier: x1.7&lt;br /&gt;
Repair cost discount: 20%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Shop Discount: 6%&lt;br /&gt;
Mission Board Amount: +2&lt;br /&gt;
Mission Credit: +20%&lt;br /&gt;
Repair speed multiplier: x2.5&lt;br /&gt;
Repair cost discount: 40%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Shop Discount: 8%&lt;br /&gt;
Mission Board Amount: +2&lt;br /&gt;
Mission Credit: +30%&lt;br /&gt;
Repair speed multiplier: x3.3&lt;br /&gt;
Repair cost discount: 60%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Shop Discount: 10%&lt;br /&gt;
Mission Board Amount: +3&lt;br /&gt;
Mission Credit: +40%&lt;br /&gt;
Repair speed multiplier: x5.0&lt;br /&gt;
Repair cost discount: 80%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) As of v0.8, Distinguished is the highest attainable reputation rank - Exalted cannot be reached.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Salvaging Negative Reputation&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Within [[Conquest Zone]] it is quite likely to dip hard into negative reputation with a faction, and the reputation with the [[Corsair Syndicate]] will start as heavily negative. Doing &amp;quot;conciliary missions&amp;quot; at the faction embassy (See [[Conquest Zone]]) will enable the player to rapidly increase the reputation to positive zero and end War status. Each of these missions can grant 1000-1500 reputation until relations return to neutral. After this point, missions grant regular rewards in terms of reputation and gains.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Reputation and Ships&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Having a working relationship with factions is necessary if one wishes to purchase their ships. Larger ships have specific reputation thresholds the player needs to meet, before the faction will sell to the player. Destroyers and other Size 5+ ships require [[Conquest Reputation]] standing, in addition to Cash, standard reputation, and will also require &#039;&#039;Vanguard commendations&#039;&#039;. For this reason player should plan ahead and not anger the faction prematurely.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game World]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Turrets&amp;diff=4104</id>
		<title>Turrets</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Turrets&amp;diff=4104"/>
		<updated>2026-10-06T07:17:20Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Turret List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Turret.list.png|right|300px]]&lt;br /&gt;
&lt;br /&gt;
Turrets are the &#039;&#039;&#039;business end&#039;&#039;&#039; of any [[Ships|ship]]. Turrets are placed onto a ship&#039;s &#039;&#039;&#039;hardpoint&#039;&#039;&#039;. Hardpoints come in several sizes (small, medium large), and can hold any turret up to their nominal size.&lt;br /&gt;
&lt;br /&gt;
While not all ships have turrets, a vast majority do. Many turrets require [[Ammo]] to operate and the ones they don&#039;t mostly have double the energy usage.&lt;br /&gt;
&lt;br /&gt;
Turrets can be used for [[Combat]], [[Mining]] or [[Salvage]].&lt;br /&gt;
&lt;br /&gt;
Some turrets are limited in sizes - only small, only large, or only some available sizes.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Turret List&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Listing&lt;br /&gt;
! Type&lt;br /&gt;
! {{tooltip|Size/APS|Size and Attacks per second}}&lt;br /&gt;
! Damage&lt;br /&gt;
! Ammo&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Cryo Lance&lt;br /&gt;
| Combat&lt;br /&gt;
| S 2.0 , M 2.0 &lt;br /&gt;
| Cold&lt;br /&gt;
| 2x Energy Use&lt;br /&gt;
| Beams. Cannot Miss&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Laser|Item Aliases: Laser turret}}&lt;br /&gt;
| Combat&lt;br /&gt;
| S 0.5 , M 0.5 , L 0.4&lt;br /&gt;
| Energy&lt;br /&gt;
| 2x Energy Use&lt;br /&gt;
| Cannot Miss&lt;br /&gt;
|-&lt;br /&gt;
| Laser Repeater&lt;br /&gt;
| Combat&lt;br /&gt;
| S 3.0 , M 3.6 , L 4.2&lt;br /&gt;
| Energy&lt;br /&gt;
| 2x Energy Use&lt;br /&gt;
| Fast&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Laser Shotgun|Item Aliases: Scatterbeam}}&lt;br /&gt;
| Combat&lt;br /&gt;
| S 2.4&lt;br /&gt;
| Energy&lt;br /&gt;
| 2x Energy Use&lt;br /&gt;
| Short range&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Burst Railgun|Item Aliases: BX-Railcaster}}&lt;br /&gt;
| Combat&lt;br /&gt;
| M 0.8 , L 0.8&lt;br /&gt;
| Kinetic&lt;br /&gt;
| ARM-7 Slug&lt;br /&gt;
| Accurate, (L) can penetrate, Long range&lt;br /&gt;
|-&lt;br /&gt;
| Railgun&lt;br /&gt;
| Combat&lt;br /&gt;
| S 0.3 , M 0.3 , L 0.4&lt;br /&gt;
| Kinetic&lt;br /&gt;
| ARM-7 Slug&lt;br /&gt;
| Accurate, (M and L) can penetrate, Long range&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Hailfire M-Launcher|Item Aliases: Hailfire Launcher}}&lt;br /&gt;
| Combat&lt;br /&gt;
| S 2.0&lt;br /&gt;
| Explosive&lt;br /&gt;
| Havoc Missile&lt;br /&gt;
| Homing&lt;br /&gt;
|-&lt;br /&gt;
| Missile Launcher&lt;br /&gt;
| Combat&lt;br /&gt;
| S 1.0 , M 1.0 , L 1.0&lt;br /&gt;
| Explosive&lt;br /&gt;
| Havoc Missile&lt;br /&gt;
| Homing, Long range&lt;br /&gt;
|-&lt;br /&gt;
| Corropult&lt;br /&gt;
| Combat&lt;br /&gt;
| S 0.7 , M 1.0&lt;br /&gt;
| Corrosion&lt;br /&gt;
| NUC-3 Round&lt;br /&gt;
| Good Vs Armor&lt;br /&gt;
|-&lt;br /&gt;
| Cannon&lt;br /&gt;
| Combat&lt;br /&gt;
| L 0.3&lt;br /&gt;
| Explosive&lt;br /&gt;
| Obliterator Bomb&lt;br /&gt;
| Slow Projectiles&lt;br /&gt;
|-&lt;br /&gt;
| Autocannon&lt;br /&gt;
| Combat&lt;br /&gt;
| S 2.0 , M 2.3&lt;br /&gt;
| Kinetic&lt;br /&gt;
| PAC Round&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Triple Autocannon&lt;br /&gt;
| Combat&lt;br /&gt;
| L 6.9&lt;br /&gt;
| Kinetic&lt;br /&gt;
| PAC Round&lt;br /&gt;
| Fast, Moderate EMP&lt;br /&gt;
|-&lt;br /&gt;
| Twin Autocannon&lt;br /&gt;
| Combat&lt;br /&gt;
| M 4.5&lt;br /&gt;
| Kinetic&lt;br /&gt;
| PAC Round&lt;br /&gt;
| Fast, Moderate EMP&lt;br /&gt;
|-&lt;br /&gt;
| Plasma Beam&lt;br /&gt;
| Combat&lt;br /&gt;
| S 2.0 , M 2.0&lt;br /&gt;
| Energy&lt;br /&gt;
| Plasma Cell&lt;br /&gt;
| Beams, Moderate EMP&lt;br /&gt;
|-&lt;br /&gt;
| Plasma Cannon&lt;br /&gt;
| Combat&lt;br /&gt;
| M 0.5 , L 0.4&lt;br /&gt;
| Energy&lt;br /&gt;
| Plasma Cell&lt;br /&gt;
| Slow Projectiles, Best EMP&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Microcell Swarm|Item Aliases: Microcell Swarm Launcher}}&lt;br /&gt;
| Combat&lt;br /&gt;
| S 2.3 , M 3.3&lt;br /&gt;
| Energy&lt;br /&gt;
| Plasma Microcell&lt;br /&gt;
| Homing&lt;br /&gt;
|-&lt;br /&gt;
| Plasma Battery&lt;br /&gt;
| Combat&lt;br /&gt;
| L 2.1&lt;br /&gt;
| Energy&lt;br /&gt;
| Plasma Microcell&lt;br /&gt;
| Slow Projectiles, Good EMP&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Plasma Repeater|Item Aliases: Plasma Spitter / Plasma Repeater}}&lt;br /&gt;
| Combat&lt;br /&gt;
| S 2.1 , M 2.1&lt;br /&gt;
| Energy&lt;br /&gt;
| Plasma Microcell&lt;br /&gt;
| Slow Projectiles, Good EMP&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Double Gatling|Item Aliases: Shredder}}&lt;br /&gt;
| Combat&lt;br /&gt;
| S 16.1&lt;br /&gt;
| Kinetic&lt;br /&gt;
| Shatter Shell Clip&lt;br /&gt;
| Very Fast, Short range&lt;br /&gt;
|-&lt;br /&gt;
| DT Chaingun&lt;br /&gt;
| Combat&lt;br /&gt;
| L 7.1&lt;br /&gt;
| Kinetic&lt;br /&gt;
| Shatter Shell Clip&lt;br /&gt;
| Fast, Moderate EMP&lt;br /&gt;
|-&lt;br /&gt;
| Rad Cannon&lt;br /&gt;
| Combat&lt;br /&gt;
| L 0.2&lt;br /&gt;
| Radiation&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Mining Laser|Item Aliases: Cutter / Mining Beam}}&lt;br /&gt;
| Mining&lt;br /&gt;
| S 0.5 , M 0.5 , L 0.5&lt;br /&gt;
| Energy&lt;br /&gt;
| 2x Energy Use&lt;br /&gt;
| 60% Yield, Surface Mining, Cannot Miss&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Twin Mining Laser|Item Aliases: Mining Twin Slicer}}&lt;br /&gt;
| Mining&lt;br /&gt;
| M 0.7 , L 0.4&lt;br /&gt;
| Energy&lt;br /&gt;
| 2x Energy Use&lt;br /&gt;
| 50% Yield, Surface Mining, Cannot Miss&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Mining Launcher|Item Aliases: Core Breaker / Core Buster}}&lt;br /&gt;
| Mining&lt;br /&gt;
| S 0.5 , M 0.6 , L 0.8&lt;br /&gt;
| Explosive&lt;br /&gt;
| Core Buster&lt;br /&gt;
| 40% Yield, Core Mining, Cannot Miss&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|AO Cannon|Item Aliases: Asteroid Obliterator}}&lt;br /&gt;
| Mining&lt;br /&gt;
| L 0.1&lt;br /&gt;
| Explosive&lt;br /&gt;
| Obliterator Bomb&lt;br /&gt;
| 40% Yield, Effects Surface and Core Mining, AoE&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Mining Cannon|Item Aliases: Asteroid Obliterator}}&lt;br /&gt;
| Mining&lt;br /&gt;
| M 0.1&lt;br /&gt;
| Explosive&lt;br /&gt;
| Obliterator Bomb&lt;br /&gt;
| 45% Yield, Surface Mining, AoE&lt;br /&gt;
|-&lt;br /&gt;
| Mining Autocannon&lt;br /&gt;
| Mining&lt;br /&gt;
| S 1.4&lt;br /&gt;
| Kinetic&lt;br /&gt;
| SAB Round&lt;br /&gt;
| 40% Yield, Surface Mining&lt;br /&gt;
|-&lt;br /&gt;
| Mining LR Autocannon&lt;br /&gt;
| Mining&lt;br /&gt;
| L 1.9&lt;br /&gt;
| Kinetic&lt;br /&gt;
| SAB Round&lt;br /&gt;
| 40% Yield, Surface Mining&lt;br /&gt;
|-&lt;br /&gt;
| {{tooltip|Salvage Laser|Item Aliases: Salvage Cutter}}&lt;br /&gt;
| Salvage&lt;br /&gt;
| S 0.5 , M 0.4 , L 0.4 &lt;br /&gt;
| Energy&lt;br /&gt;
| 2x Energy Use&lt;br /&gt;
| 60% Yield, Core Salvage, Cannot Miss&lt;br /&gt;
|-&lt;br /&gt;
| Salvage Grinder&lt;br /&gt;
| Salvage&lt;br /&gt;
| S 0.3 , M 0.3 , L 0.3 &lt;br /&gt;
| Kinetic&lt;br /&gt;
| —&lt;br /&gt;
| 60% Yield, Structure Salvage&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Turret Size Chart ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Stats&lt;br /&gt;
! Small&lt;br /&gt;
! Mediam&lt;br /&gt;
! Large&lt;br /&gt;
|-&lt;br /&gt;
| Power&lt;br /&gt;
| 100%&lt;br /&gt;
| 200%&lt;br /&gt;
| 300%&lt;br /&gt;
|-&lt;br /&gt;
| Energy Usage&lt;br /&gt;
| 100%&lt;br /&gt;
| 200%&lt;br /&gt;
| 300%&lt;br /&gt;
|-&lt;br /&gt;
| Rotation Speed&lt;br /&gt;
| Fast&lt;br /&gt;
| Moderate&lt;br /&gt;
| Slow&lt;br /&gt;
|-&lt;br /&gt;
| Range&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; |Increases with size.&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Crew&amp;diff=4102</id>
		<title>Crew</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Crew&amp;diff=4102"/>
		<updated>2026-10-02T18:15:23Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Crew members */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Crew&#039;&#039;&#039; are the people who serve aboard your [[Ship List|ships]]. They come in two distinct kinds: unique named &#039;&#039;&#039;officers&#039;&#039;&#039;, who come in different qualities (white to gold), [[skills]], a passive buff and idle income, and the rank-and-file &#039;&#039;&#039;crew members&#039;&#039;&#039; (grunts), who are hired in bulk to grant small stacking bonuses by profession.&lt;br /&gt;
&lt;br /&gt;
Both are recruited and managed at the [[Personnel Center]], and both are commanded through the [[Leadership]] skill tree.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Officers&#039;&#039;&#039; ==&lt;br /&gt;
[[file:personnel.officers.png|thumb|right|500px|Hiring Officers]]&lt;br /&gt;
&lt;br /&gt;
Officers are unique, named crew with their own portrait, level, quality, and a set of [[Officer Skills]]. Each officer is an individual you collect, level, and assign deliberately.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Officer qualities&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Officers come in five quality tiers, same as equipment. Higher quality means more skill slots and stronger idle income and passive bonuses:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Rarity !! Skill slots&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Standard&#039;&#039;&#039; || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Enhanced&#039;&#039;&#039; || 3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;High-Grade&#039;&#039;&#039; || 5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Exotic&#039;&#039;&#039; || 6&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Legendary&#039;&#039;&#039; || 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Skill slots unlock gradually as the officer gains levels. The only way to raise an officer to Exotic is through the Personnel Center&#039;s [[Personnel Center#Training|Training]] service, assuming they didn&#039;t start as purple.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: There are no legendary officers in the game yet, and no way to upgrade an officer to legendary/gold quality.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Officer skills&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Each officer carries a number of [[Officer Skills|officer skills]] (per the table above) drawn from the same pool used across the [[Skills|skill trees]]. Skills provide flat or percentage bonuses to a stat. Every skill an officer possesses grants +1 skill point to that particular skill, and is combined with the captain&#039;s own skill investment.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Examples of skills that officers can grant a single point in.&lt;br /&gt;
! Skill !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| Efficient Miner || +5% Mining power&lt;br /&gt;
|-&lt;br /&gt;
| Harvester || +2.5% ore yield&lt;br /&gt;
|-&lt;br /&gt;
| Loadmaster || +5% cargo-related bonus&lt;br /&gt;
|-&lt;br /&gt;
| Fire Control Officer || +12% combat bonus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [[Officer Skills]] for a full explanation and listing of possible skills.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Passive Bonus&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
[[File:Officer.passive.png|400px|thumb|right]]Officer Passive Bonus&lt;br /&gt;
&lt;br /&gt;
An officer assigned to your &#039;&#039;&#039;active ship&#039;&#039;&#039; grants a small passive bonus to a stat tied to that officer&#039;s profession. This bonus scales with the officer&#039;s level and quality, so a high-level Exotic (purple) officer gives a noticeably larger buff than a low-level Standard (white) one.&lt;br /&gt;
&lt;br /&gt;
The passive bonus must first be unlocked by the &#039;&#039;&#039;Officer Expertise&#039;&#039;&#039; node in the [[Leadership]] skill tree, and can be strengthened further by the &#039;&#039;&#039;Elite Officers&#039;&#039;&#039; node.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Idle income&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
An officer who is &#039;&#039;&#039;not&#039;&#039;&#039; aboard your current ship earns credits passively over real time, deposited automatically into your account.&lt;br /&gt;
&lt;br /&gt;
Income scales with the officer&#039;s level and quality, roughly:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Quality !! Idle-income multiplier&lt;br /&gt;
|-&lt;br /&gt;
| Standard || ×1&lt;br /&gt;
|-&lt;br /&gt;
| Enhanced || ×2&lt;br /&gt;
|-&lt;br /&gt;
| High-Grade || ×5&lt;br /&gt;
|-&lt;br /&gt;
| Exotic || ×10&lt;br /&gt;
|-&lt;br /&gt;
| Legendary || ×20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Idle income only accrues while you are playing (it is not offline progress) and must first be unlocked by the &#039;&#039;&#039;Off-Duty Contracts&#039;&#039;&#039; node in the [[Leadership]] skill tree. This turns a deep officer roster into a steady credit stream from the officers you aren&#039;t actively flying with.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Crew members&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Crew.crew-ui.png|thumb|right|Crew]]&lt;br /&gt;
Crew members are generic, interchangeable personnel grouped by profession rather than tracked as individuals. Every crew member of a given type is identical.&lt;br /&gt;
&lt;br /&gt;
Their bonuses are granted per crew member and stack linearly; twice the crew, twice the bonus, with no cap.&lt;br /&gt;
&lt;br /&gt;
A crew member only provides its bonus while assigned to an active ship. Unassigned crew sit in your reserve pool.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Crew types&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Effect (per crew member) !! Role !! Approx. cost&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Deckhand&#039;&#039;&#039; || Repairs the ship&#039;s hull over time (passive hull regeneration) || General || 3,500&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Gunner&#039;&#039;&#039; || Increases combat power, fights well when boarding  || Combat || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prospector&#039;&#039;&#039; || Increases [[Mining]] power (and minor hull repair) || Mining || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Scrapper&#039;&#039;&#039; || Increases [[Salvage]] power (and minor hull repair) || Salvage || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Marine&#039;&#039;&#039; || Specialized in [[Boarding]]: high boarding damage and HP || Boarding || 16,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Pilots&#039;&#039;&#039; || Flys Ships in the [[Hangar Module|Hangar Bay]]|| Piloting || 7,000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The per-member combat/mining/salvage bonus is small but adds up across a fully crewed ship; bigger ships that hold many crew see a meaningful total.&lt;br /&gt;
&lt;br /&gt;
Marines provide no economic or combat-power bonus. Their value is in [[Boarding|boarding actions]], and assaulting high level or large ships without marines is next to impossible.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Crew capacity&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Every ship class has its own maximum crew, fixed by two things: the ship&#039;s &#039;&#039;&#039;size&#039;&#039;&#039; and its &#039;&#039;&#039;role&#039;&#039;&#039;. The ship capacity for crew is fixed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Size&#039;&#039;&#039; and &#039;&#039;&#039;role&#039;&#039;&#039; set the crew capacity. Bigger hulls hold far more:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Size class !! Combat !! Mining/Salvage !! Cargo&lt;br /&gt;
|-&lt;br /&gt;
| Size 1 (small) || 5 || 6 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Size 2 (small) || 15 || 18 || 12&lt;br /&gt;
|-&lt;br /&gt;
| Size 3 (medium) || 25 || 30 || 20&lt;br /&gt;
|-&lt;br /&gt;
| Size 4 (medium) || 50 || 60 || 40&lt;br /&gt;
|-&lt;br /&gt;
| Size 5 (large) || 80 || 96 || 64&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This per-class cap can be raised further through the &#039;&#039;&#039;Expanded Quarters&#039;&#039;&#039; node in the [[Leadership]] skill tree, and by Leadership tree mastery.&lt;br /&gt;
&lt;br /&gt;
Separately from each ship&#039;s cap, you keep an account-wide &#039;&#039;&#039;reserve&#039;&#039;&#039; of unassigned crew to draw from. The reserve size grows as your character levels up.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Acquiring crew&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Personnel Center]]&#039;&#039;&#039;: This is the primary source. Buy crew of any stocked type; sell unwanted crew back for 25% of their cost.&lt;br /&gt;
* &#039;&#039;&#039;Crew Capsules&#039;&#039;&#039;: Pods recovered as loot. A recovered capsule can occasionally contain hostile crew, who are sent to your brig as [[Boarding#Prisoners|prisoners]] instead.&lt;br /&gt;
* &#039;&#039;&#039;[[Boarding#Prisoners|Prisoners]]&#039;&#039;&#039;: Unwilling prisoners go to the brig, once they become willing they can be recruited into your crew at a discount.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Casualties&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Crew can be killed when a ship takes hull damage. Higher-resistance crew (such as Marines) are far less likely to die. &lt;br /&gt;
&lt;br /&gt;
When boarding ships and installations, crew can get wounded. If wounded, they try to get to the staging area to recover, before rejoining the fight.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Expanding your crew&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Leadership&#039;&#039;&#039; skill tree governs almost everything on this page: it unlocks officer idle income and passive buffs, boosts crew bonuses and boarding power, expands crew and brig capacity, and improves what you get from [[Boarding|prisoners]]. See [[Leadership]] for the full node list.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Crew&amp;diff=4101</id>
		<title>Crew</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Crew&amp;diff=4101"/>
		<updated>2026-10-02T17:36:16Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Crew types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Crew&#039;&#039;&#039; are the people who serve aboard your [[Ship List|ships]]. They come in two distinct kinds: unique named &#039;&#039;&#039;officers&#039;&#039;&#039;, who come in different qualities (white to gold), [[skills]], a passive buff and idle income, and the rank-and-file &#039;&#039;&#039;crew members&#039;&#039;&#039; (grunts), who are hired in bulk to grant small stacking bonuses by profession.&lt;br /&gt;
&lt;br /&gt;
Both are recruited and managed at the [[Personnel Center]], and both are commanded through the [[Leadership]] skill tree.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Officers&#039;&#039;&#039; ==&lt;br /&gt;
[[file:personnel.officers.png|thumb|right|500px|Hiring Officers]]&lt;br /&gt;
&lt;br /&gt;
Officers are unique, named crew with their own portrait, level, quality, and a set of [[Officer Skills]]. Each officer is an individual you collect, level, and assign deliberately.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Officer qualities&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Officers come in five quality tiers, same as equipment. Higher quality means more skill slots and stronger idle income and passive bonuses:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Rarity !! Skill slots&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Standard&#039;&#039;&#039; || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Enhanced&#039;&#039;&#039; || 3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;High-Grade&#039;&#039;&#039; || 5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Exotic&#039;&#039;&#039; || 6&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Legendary&#039;&#039;&#039; || 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Skill slots unlock gradually as the officer gains levels. The only way to raise an officer to Exotic is through the Personnel Center&#039;s [[Personnel Center#Training|Training]] service, assuming they didn&#039;t start as purple.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: There are no legendary officers in the game yet, and no way to upgrade an officer to legendary/gold quality.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Officer skills&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Each officer carries a number of [[Officer Skills|officer skills]] (per the table above) drawn from the same pool used across the [[Skills|skill trees]]. Skills provide flat or percentage bonuses to a stat. Every skill an officer possesses grants +1 skill point to that particular skill, and is combined with the captain&#039;s own skill investment.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Examples of skills that officers can grant a single point in.&lt;br /&gt;
! Skill !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| Efficient Miner || +5% Mining power&lt;br /&gt;
|-&lt;br /&gt;
| Harvester || +2.5% ore yield&lt;br /&gt;
|-&lt;br /&gt;
| Loadmaster || +5% cargo-related bonus&lt;br /&gt;
|-&lt;br /&gt;
| Fire Control Officer || +12% combat bonus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [[Officer Skills]] for a full explanation and listing of possible skills.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Passive Bonus&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
[[File:Officer.passive.png|400px|thumb|right]]Officer Passive Bonus&lt;br /&gt;
&lt;br /&gt;
An officer assigned to your &#039;&#039;&#039;active ship&#039;&#039;&#039; grants a small passive bonus to a stat tied to that officer&#039;s profession. This bonus scales with the officer&#039;s level and quality, so a high-level Exotic (purple) officer gives a noticeably larger buff than a low-level Standard (white) one.&lt;br /&gt;
&lt;br /&gt;
The passive bonus must first be unlocked by the &#039;&#039;&#039;Officer Expertise&#039;&#039;&#039; node in the [[Leadership]] skill tree, and can be strengthened further by the &#039;&#039;&#039;Elite Officers&#039;&#039;&#039; node.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Idle income&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
An officer who is &#039;&#039;&#039;not&#039;&#039;&#039; aboard your current ship earns credits passively over real time, deposited automatically into your account.&lt;br /&gt;
&lt;br /&gt;
Income scales with the officer&#039;s level and quality, roughly:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Quality !! Idle-income multiplier&lt;br /&gt;
|-&lt;br /&gt;
| Standard || ×1&lt;br /&gt;
|-&lt;br /&gt;
| Enhanced || ×2&lt;br /&gt;
|-&lt;br /&gt;
| High-Grade || ×5&lt;br /&gt;
|-&lt;br /&gt;
| Exotic || ×10&lt;br /&gt;
|-&lt;br /&gt;
| Legendary || ×20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Idle income only accrues while you are playing (it is not offline progress) and must first be unlocked by the &#039;&#039;&#039;Off-Duty Contracts&#039;&#039;&#039; node in the [[Leadership]] skill tree. This turns a deep officer roster into a steady credit stream from the officers you aren&#039;t actively flying with.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Crew members&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Crew.crew-ui.png|thumb|right|Crew]]&lt;br /&gt;
Crew members are generic, interchangeable personnel grouped by profession rather than tracked as individuals. Every crew member of a given type is identical.&lt;br /&gt;
&lt;br /&gt;
Their bonuses are granted per crew member and stack linearly; twice the crew, twice the bonus, with no cap.&lt;br /&gt;
&lt;br /&gt;
A crew member only provides its bonus while assigned to an active ship. Unassigned crew sit in your reserve pool.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Crew types&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Effect (per crew member) !! Role !! Approx. cost&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Deckhand&#039;&#039;&#039; || Repairs the ship&#039;s hull over time (passive hull regeneration) || General || 3,500&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Gunner&#039;&#039;&#039; || Increases combat power, fights well when boarding  || Combat || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prospector&#039;&#039;&#039; || Increases [[Mining]] power (and minor hull repair) || Mining || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Scrapper&#039;&#039;&#039; || Increases [[Salvage]] power (and minor hull repair) || Salvage || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Marine&#039;&#039;&#039; || Specialized in [[Boarding]]: high boarding damage and HP || Boarding || 16,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Pilots&#039;&#039;&#039; || Flys Ships in the [[Hangar Bay]]|| Piloting || 7,000&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The per-member combat/mining/salvage bonus is small but adds up across a fully crewed ship; bigger ships that hold many crew see a meaningful total.&lt;br /&gt;
&lt;br /&gt;
Marines provide no economic or combat-power bonus. Their value is in [[Boarding|boarding actions]], and assaulting high level or large ships without marines is next to impossible.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Crew capacity&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Every ship class has its own maximum crew, fixed by two things: the ship&#039;s &#039;&#039;&#039;size&#039;&#039;&#039; and its &#039;&#039;&#039;role&#039;&#039;&#039;. The ship capacity for crew is fixed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Size&#039;&#039;&#039; and &#039;&#039;&#039;role&#039;&#039;&#039; set the crew capacity. Bigger hulls hold far more:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Size class !! Combat !! Mining/Salvage !! Cargo&lt;br /&gt;
|-&lt;br /&gt;
| Size 1 (small) || 5 || 6 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Size 2 (small) || 15 || 18 || 12&lt;br /&gt;
|-&lt;br /&gt;
| Size 3 (medium) || 25 || 30 || 20&lt;br /&gt;
|-&lt;br /&gt;
| Size 4 (medium) || 50 || 60 || 40&lt;br /&gt;
|-&lt;br /&gt;
| Size 5 (large) || 80 || 96 || 64&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This per-class cap can be raised further through the &#039;&#039;&#039;Expanded Quarters&#039;&#039;&#039; node in the [[Leadership]] skill tree, and by Leadership tree mastery.&lt;br /&gt;
&lt;br /&gt;
Separately from each ship&#039;s cap, you keep an account-wide &#039;&#039;&#039;reserve&#039;&#039;&#039; of unassigned crew to draw from. The reserve size grows as your character levels up.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Acquiring crew&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Personnel Center]]&#039;&#039;&#039;: This is the primary source. Buy crew of any stocked type; sell unwanted crew back for 25% of their cost.&lt;br /&gt;
* &#039;&#039;&#039;Crew Capsules&#039;&#039;&#039;: Pods recovered as loot. A recovered capsule can occasionally contain hostile crew, who are sent to your brig as [[Boarding#Prisoners|prisoners]] instead.&lt;br /&gt;
* &#039;&#039;&#039;[[Boarding#Prisoners|Prisoners]]&#039;&#039;&#039;: Unwilling prisoners go to the brig, once they become willing they can be recruited into your crew at a discount.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Casualties&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Crew can be killed when a ship takes hull damage. Higher-resistance crew (such as Marines) are far less likely to die. &lt;br /&gt;
&lt;br /&gt;
When boarding ships and installations, crew can get wounded. If wounded, they try to get to the staging area to recover, before rejoining the fight.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Expanding your crew&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Leadership&#039;&#039;&#039; skill tree governs almost everything on this page: it unlocks officer idle income and passive buffs, boosts crew bonuses and boarding power, expands crew and brig capacity, and improves what you get from [[Boarding|prisoners]]. See [[Leadership]] for the full node list.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Crew&amp;diff=4100</id>
		<title>Crew</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Crew&amp;diff=4100"/>
		<updated>2026-10-02T17:34:11Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Crew&#039;&#039;&#039; are the people who serve aboard your [[Ship List|ships]]. They come in two distinct kinds: unique named &#039;&#039;&#039;officers&#039;&#039;&#039;, who come in different qualities (white to gold), [[skills]], a passive buff and idle income, and the rank-and-file &#039;&#039;&#039;crew members&#039;&#039;&#039; (grunts), who are hired in bulk to grant small stacking bonuses by profession.&lt;br /&gt;
&lt;br /&gt;
Both are recruited and managed at the [[Personnel Center]], and both are commanded through the [[Leadership]] skill tree.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Officers&#039;&#039;&#039; ==&lt;br /&gt;
[[file:personnel.officers.png|thumb|right|500px|Hiring Officers]]&lt;br /&gt;
&lt;br /&gt;
Officers are unique, named crew with their own portrait, level, quality, and a set of [[Officer Skills]]. Each officer is an individual you collect, level, and assign deliberately.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Officer qualities&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Officers come in five quality tiers, same as equipment. Higher quality means more skill slots and stronger idle income and passive bonuses:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Rarity !! Skill slots&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Standard&#039;&#039;&#039; || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Enhanced&#039;&#039;&#039; || 3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;High-Grade&#039;&#039;&#039; || 5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Exotic&#039;&#039;&#039; || 6&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Legendary&#039;&#039;&#039; || 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Skill slots unlock gradually as the officer gains levels. The only way to raise an officer to Exotic is through the Personnel Center&#039;s [[Personnel Center#Training|Training]] service, assuming they didn&#039;t start as purple.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: There are no legendary officers in the game yet, and no way to upgrade an officer to legendary/gold quality.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Officer skills&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Each officer carries a number of [[Officer Skills|officer skills]] (per the table above) drawn from the same pool used across the [[Skills|skill trees]]. Skills provide flat or percentage bonuses to a stat. Every skill an officer possesses grants +1 skill point to that particular skill, and is combined with the captain&#039;s own skill investment.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Examples of skills that officers can grant a single point in.&lt;br /&gt;
! Skill !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| Efficient Miner || +5% Mining power&lt;br /&gt;
|-&lt;br /&gt;
| Harvester || +2.5% ore yield&lt;br /&gt;
|-&lt;br /&gt;
| Loadmaster || +5% cargo-related bonus&lt;br /&gt;
|-&lt;br /&gt;
| Fire Control Officer || +12% combat bonus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [[Officer Skills]] for a full explanation and listing of possible skills.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Passive Bonus&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
[[File:Officer.passive.png|400px|thumb|right]]Officer Passive Bonus&lt;br /&gt;
&lt;br /&gt;
An officer assigned to your &#039;&#039;&#039;active ship&#039;&#039;&#039; grants a small passive bonus to a stat tied to that officer&#039;s profession. This bonus scales with the officer&#039;s level and quality, so a high-level Exotic (purple) officer gives a noticeably larger buff than a low-level Standard (white) one.&lt;br /&gt;
&lt;br /&gt;
The passive bonus must first be unlocked by the &#039;&#039;&#039;Officer Expertise&#039;&#039;&#039; node in the [[Leadership]] skill tree, and can be strengthened further by the &#039;&#039;&#039;Elite Officers&#039;&#039;&#039; node.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Idle income&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
An officer who is &#039;&#039;&#039;not&#039;&#039;&#039; aboard your current ship earns credits passively over real time, deposited automatically into your account.&lt;br /&gt;
&lt;br /&gt;
Income scales with the officer&#039;s level and quality, roughly:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Quality !! Idle-income multiplier&lt;br /&gt;
|-&lt;br /&gt;
| Standard || ×1&lt;br /&gt;
|-&lt;br /&gt;
| Enhanced || ×2&lt;br /&gt;
|-&lt;br /&gt;
| High-Grade || ×5&lt;br /&gt;
|-&lt;br /&gt;
| Exotic || ×10&lt;br /&gt;
|-&lt;br /&gt;
| Legendary || ×20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Idle income only accrues while you are playing (it is not offline progress) and must first be unlocked by the &#039;&#039;&#039;Off-Duty Contracts&#039;&#039;&#039; node in the [[Leadership]] skill tree. This turns a deep officer roster into a steady credit stream from the officers you aren&#039;t actively flying with.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Crew members&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Crew.crew-ui.png|thumb|right|Crew]]&lt;br /&gt;
Crew members are generic, interchangeable personnel grouped by profession rather than tracked as individuals. Every crew member of a given type is identical.&lt;br /&gt;
&lt;br /&gt;
Their bonuses are granted per crew member and stack linearly; twice the crew, twice the bonus, with no cap.&lt;br /&gt;
&lt;br /&gt;
A crew member only provides its bonus while assigned to an active ship. Unassigned crew sit in your reserve pool.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Crew types&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Effect (per crew member) !! Role !! Approx. cost&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Deckhand&#039;&#039;&#039; || Repairs the ship&#039;s hull over time (passive hull regeneration) || General || 3,500&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Gunner&#039;&#039;&#039; || Increases combat power, fights well when boarding  || Combat || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prospector&#039;&#039;&#039; || Increases [[Mining]] power (and minor hull repair) || Mining || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Scrapper&#039;&#039;&#039; || Increases [[Salvage]] power (and minor hull repair) || Salvage || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Marine&#039;&#039;&#039; || Specialized in [[Boarding]]: high boarding damage and HP || Boarding || 16,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Pilots&#039;&#039;&#039; || Flys the Ship in the Hangar bay: high boarding damage and HP || Piloting || 7,000&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The per-member combat/mining/salvage bonus is small but adds up across a fully crewed ship; bigger ships that hold many crew see a meaningful total.&lt;br /&gt;
&lt;br /&gt;
Marines provide no economic or combat-power bonus. Their value is in [[Boarding|boarding actions]], and assaulting high level or large ships without marines is next to impossible.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Crew capacity&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Every ship class has its own maximum crew, fixed by two things: the ship&#039;s &#039;&#039;&#039;size&#039;&#039;&#039; and its &#039;&#039;&#039;role&#039;&#039;&#039;. The ship capacity for crew is fixed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Size&#039;&#039;&#039; and &#039;&#039;&#039;role&#039;&#039;&#039; set the crew capacity. Bigger hulls hold far more:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Size class !! Combat !! Mining/Salvage !! Cargo&lt;br /&gt;
|-&lt;br /&gt;
| Size 1 (small) || 5 || 6 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Size 2 (small) || 15 || 18 || 12&lt;br /&gt;
|-&lt;br /&gt;
| Size 3 (medium) || 25 || 30 || 20&lt;br /&gt;
|-&lt;br /&gt;
| Size 4 (medium) || 50 || 60 || 40&lt;br /&gt;
|-&lt;br /&gt;
| Size 5 (large) || 80 || 96 || 64&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This per-class cap can be raised further through the &#039;&#039;&#039;Expanded Quarters&#039;&#039;&#039; node in the [[Leadership]] skill tree, and by Leadership tree mastery.&lt;br /&gt;
&lt;br /&gt;
Separately from each ship&#039;s cap, you keep an account-wide &#039;&#039;&#039;reserve&#039;&#039;&#039; of unassigned crew to draw from. The reserve size grows as your character levels up.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Acquiring crew&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Personnel Center]]&#039;&#039;&#039;: This is the primary source. Buy crew of any stocked type; sell unwanted crew back for 25% of their cost.&lt;br /&gt;
* &#039;&#039;&#039;Crew Capsules&#039;&#039;&#039;: Pods recovered as loot. A recovered capsule can occasionally contain hostile crew, who are sent to your brig as [[Boarding#Prisoners|prisoners]] instead.&lt;br /&gt;
* &#039;&#039;&#039;[[Boarding#Prisoners|Prisoners]]&#039;&#039;&#039;: Unwilling prisoners go to the brig, once they become willing they can be recruited into your crew at a discount.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Casualties&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Crew can be killed when a ship takes hull damage. Higher-resistance crew (such as Marines) are far less likely to die. &lt;br /&gt;
&lt;br /&gt;
When boarding ships and installations, crew can get wounded. If wounded, they try to get to the staging area to recover, before rejoining the fight.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Expanding your crew&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Leadership&#039;&#039;&#039; skill tree governs almost everything on this page: it unlocks officer idle income and passive buffs, boosts crew bonuses and boarding power, expands crew and brig capacity, and improves what you get from [[Boarding|prisoners]]. See [[Leadership]] for the full node list.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Crew&amp;diff=4099</id>
		<title>Crew</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Crew&amp;diff=4099"/>
		<updated>2026-10-02T17:31:59Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Crew types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Crew&#039;&#039;&#039; are the people who serve aboard your [[Ship List|ships]]. They come in two distinct kinds: unique named &#039;&#039;&#039;officers&#039;&#039;&#039;, who come in different qualities (white to gold), [[skills]], a passive buff and idle income, and the rank-and-file &#039;&#039;&#039;crew members&#039;&#039;&#039; (grunts), who are hired in bulk to grant small stacking bonuses by profession.&lt;br /&gt;
&lt;br /&gt;
Both are recruited and managed at the [[Personnel Center]], and both are commanded through the [[Leadership]] skill tree.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Officers&#039;&#039;&#039; ==&lt;br /&gt;
[[file:personnel.officers.png|thumb|right|500px|Hiring Officers]]&lt;br /&gt;
&lt;br /&gt;
Officers are unique, named crew with their own portrait, level, quality, and a set of [[Officer Skills]]. Each officer is an individual you collect, level, and assign deliberately.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Officer qualities&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Officers come in five quality tiers, same as equipment. Higher quality means more skill slots and stronger idle income and passive bonuses:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Rarity !! Skill slots&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Standard&#039;&#039;&#039; || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Enhanced&#039;&#039;&#039; || 3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;High-Grade&#039;&#039;&#039; || 5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Exotic&#039;&#039;&#039; || 6&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Legendary&#039;&#039;&#039; || 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Skill slots unlock gradually as the officer gains levels. The only way to raise an officer to Exotic is through the Personnel Center&#039;s [[Personnel Center#Training|Training]] service, assuming they didn&#039;t start as purple.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: There are no legendary officers in the game yet, and no way to upgrade an officer to legendary/gold quality.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Officer skills&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Each officer carries a number of [[Officer Skills|officer skills]] (per the table above) drawn from the same pool used across the [[Skills|skill trees]]. Skills provide flat or percentage bonuses to a stat. Every skill an officer possesses grants +1 skill point to that particular skill, and is combined with the captain&#039;s own skill investment.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Examples of skills that officers can grant a single point in.&lt;br /&gt;
! Skill !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| Efficient Miner || +5% Mining power&lt;br /&gt;
|-&lt;br /&gt;
| Harvester || +2.5% ore yield&lt;br /&gt;
|-&lt;br /&gt;
| Loadmaster || +5% cargo-related bonus&lt;br /&gt;
|-&lt;br /&gt;
| Fire Control Officer || +12% combat bonus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See [[Officer Skills]] for a full explanation and listing of possible skills.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Passive Bonus&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
[[File:Officer.passive.png|400px|thumb|right]]Officer Passive Bonus&lt;br /&gt;
&lt;br /&gt;
An officer assigned to your &#039;&#039;&#039;active ship&#039;&#039;&#039; grants a small passive bonus to a stat tied to that officer&#039;s profession. This bonus scales with the officer&#039;s level and quality, so a high-level Exotic (purple) officer gives a noticeably larger buff than a low-level Standard (white) one.&lt;br /&gt;
&lt;br /&gt;
The passive bonus must first be unlocked by the &#039;&#039;&#039;Officer Expertise&#039;&#039;&#039; node in the [[Leadership]] skill tree, and can be strengthened further by the &#039;&#039;&#039;Elite Officers&#039;&#039;&#039; node.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Idle income&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
An officer who is &#039;&#039;&#039;not&#039;&#039;&#039; aboard your current ship earns credits passively over real time, deposited automatically into your account.&lt;br /&gt;
&lt;br /&gt;
Income scales with the officer&#039;s level and quality, roughly:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Quality !! Idle-income multiplier&lt;br /&gt;
|-&lt;br /&gt;
| Standard || ×1&lt;br /&gt;
|-&lt;br /&gt;
| Enhanced || ×2&lt;br /&gt;
|-&lt;br /&gt;
| High-Grade || ×5&lt;br /&gt;
|-&lt;br /&gt;
| Exotic || ×10&lt;br /&gt;
|-&lt;br /&gt;
| Legendary || ×20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Idle income only accrues while you are playing (it is not offline progress) and must first be unlocked by the &#039;&#039;&#039;Off-Duty Contracts&#039;&#039;&#039; node in the [[Leadership]] skill tree. This turns a deep officer roster into a steady credit stream from the officers you aren&#039;t actively flying with.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Crew members&#039;&#039;&#039; ==&lt;br /&gt;
[[File:Crew.crew-ui.png|thumb|right|Crew]]&lt;br /&gt;
Crew members are generic, interchangeable personnel grouped by profession rather than tracked as individuals. Every crew member of a given type is identical.&lt;br /&gt;
&lt;br /&gt;
Their bonuses are granted per crew member and stack linearly; twice the crew, twice the bonus, with no cap.&lt;br /&gt;
&lt;br /&gt;
A crew member only provides its bonus while assigned to an active ship. Unassigned crew sit in your reserve pool.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Crew types&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Effect (per crew member) !! Role !! Approx. cost&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Deckhand&#039;&#039;&#039; || Repairs the ship&#039;s hull over time (passive hull regeneration) || General || 3,500&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Gunner&#039;&#039;&#039; || Increases combat power, fights well when boarding  || Combat || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prospector&#039;&#039;&#039; || Increases [[Mining]] power (and minor hull repair) || Mining || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Scrapper&#039;&#039;&#039; || Increases [[Salvage]] power (and minor hull repair) || Salvage || 7,000&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Marine&#039;&#039;&#039; || Specialized in [[Boarding]]: high boarding damage and HP || Boarding || 16,000&lt;br /&gt;
|-&lt;br /&gt;
|Pilots&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The per-member combat/mining/salvage bonus is small but adds up across a fully crewed ship; bigger ships that hold many crew see a meaningful total.&lt;br /&gt;
&lt;br /&gt;
Marines provide no economic or combat-power bonus. Their value is in [[Boarding|boarding actions]], and assaulting high level or large ships without marines is next to impossible.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Crew capacity&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Every ship class has its own maximum crew, fixed by two things: the ship&#039;s &#039;&#039;&#039;size&#039;&#039;&#039; and its &#039;&#039;&#039;role&#039;&#039;&#039;. The ship capacity for crew is fixed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Size&#039;&#039;&#039; and &#039;&#039;&#039;role&#039;&#039;&#039; set the crew capacity. Bigger hulls hold far more:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Size class !! Combat !! Mining/Salvage !! Cargo&lt;br /&gt;
|-&lt;br /&gt;
| Size 1 (small) || 5 || 6 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Size 2 (small) || 15 || 18 || 12&lt;br /&gt;
|-&lt;br /&gt;
| Size 3 (medium) || 25 || 30 || 20&lt;br /&gt;
|-&lt;br /&gt;
| Size 4 (medium) || 50 || 60 || 40&lt;br /&gt;
|-&lt;br /&gt;
| Size 5 (large) || 80 || 96 || 64&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This per-class cap can be raised further through the &#039;&#039;&#039;Expanded Quarters&#039;&#039;&#039; node in the [[Leadership]] skill tree, and by Leadership tree mastery.&lt;br /&gt;
&lt;br /&gt;
Separately from each ship&#039;s cap, you keep an account-wide &#039;&#039;&#039;reserve&#039;&#039;&#039; of unassigned crew to draw from. The reserve size grows as your character levels up.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Acquiring crew&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Personnel Center]]&#039;&#039;&#039;: This is the primary source. Buy crew of any stocked type; sell unwanted crew back for 25% of their cost.&lt;br /&gt;
* &#039;&#039;&#039;Crew Capsules&#039;&#039;&#039;: Pods recovered as loot. A recovered capsule can occasionally contain hostile crew, who are sent to your brig as [[Boarding#Prisoners|prisoners]] instead.&lt;br /&gt;
* &#039;&#039;&#039;[[Boarding#Prisoners|Prisoners]]&#039;&#039;&#039;: Unwilling prisoners go to the brig, once they become willing they can be recruited into your crew at a discount.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Casualties&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Crew can be killed when a ship takes hull damage. Higher-resistance crew (such as Marines) are far less likely to die. &lt;br /&gt;
&lt;br /&gt;
When boarding ships and installations, crew can get wounded. If wounded, they try to get to the staging area to recover, before rejoining the fight.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Expanding your crew&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Leadership&#039;&#039;&#039; skill tree governs almost everything on this page: it unlocks officer idle income and passive buffs, boosts crew bonuses and boarding power, expands crew and brig capacity, and improves what you get from [[Boarding|prisoners]]. See [[Leadership]] for the full node list.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Skills&amp;diff=4098</id>
		<title>Skills</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Skills&amp;diff=4098"/>
		<updated>2026-10-01T19:27:51Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Skillpoints.available.png|400px|right|thumb|Skill Points Available]]&lt;br /&gt;
&lt;br /&gt;
Skills are one of core mechanics of Vanguard Galaxy. Player receives skill points by levelling (1 level = 1 skill point), doing quests (which can grant 1 skill point), or by finding/looting/purchasing special bonus skill point consumable items.&lt;br /&gt;
&lt;br /&gt;
[[File:Bonus.skillpoint.png|right|200px|thumb|Bonus Skill Point Consumable]]&lt;br /&gt;
&lt;br /&gt;
Maximum amount of skill points is limited by the area reached and/or main story mission status.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Prologue&#039;&#039;&#039;: Maximum level 10, skill Point Cap 20&lt;br /&gt;
* &#039;&#039;&#039;Frontier&#039;&#039;&#039;: Maximum level 30, skill Point Cap 60&lt;br /&gt;
* &#039;&#039;&#039;Conquest&#039;&#039;&#039;: Maximum level 60, skill Point Cap 120&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Skill Trees&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Trader.skill.tree.png|600px|right|thumb|Trade Skill tree]]&lt;br /&gt;
&lt;br /&gt;
Player starts with only a single skill tree unlocked. Over time, they gain the ability to unlock every present skill tree.&lt;br /&gt;
&lt;br /&gt;
There are 9 currently available skill trees:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mining&#039;&#039;&#039;: Relates to [[Mining]]&lt;br /&gt;
* &#039;&#039;&#039;Drones&#039;&#039;&#039;: Relates to [[Drones]]&lt;br /&gt;
* &#039;&#039;&#039;Autopilot&#039;&#039;&#039;: Relates to [[ECHO]]&lt;br /&gt;
* &#039;&#039;&#039;Industrial&#039;&#039;&#039;: Relates to [[Refinery]] and [[Forge]] usage&lt;br /&gt;
* &#039;&#039;&#039;Salvaging&#039;&#039;&#039;: Relates to [[Salvage]]&lt;br /&gt;
* &#039;&#039;&#039;Economy&#039;&#039;&#039;: Relates to [[Trade]]&lt;br /&gt;
* &#039;&#039;&#039;Combat&#039;&#039;&#039;: Relates to [[Combat]]&lt;br /&gt;
* &#039;&#039;&#039;Defence&#039;&#039;&#039;: Relates to any activity performed in hazardous environment&lt;br /&gt;
* &#039;&#039;&#039;Leadership&#039;&#039;&#039;: Relates to [[Crew]], officers and [[Boarding]]&lt;br /&gt;
&lt;br /&gt;
Starting options in prologue are Mining, Salvage or Combat. &lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Skill Tier Cap&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Initially skill trees are capped to only first 3 rows. To unlock the rest, player needs to complete &#039;&#039;Learning Ability&#039;&#039; quest in the second half of &#039;&#039;Frontier&#039;&#039;. For more information, see [[Skill Missions]].&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Redistribution&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Skillpoint.redistribution.png|600px|right|thumb|Skill Point Redistribution]]&lt;br /&gt;
&lt;br /&gt;
Skill points are a re-distributable commodity. This means any skill point usage is not permanent - player is incentivized to redistribute available points as needed for tasks they intend to perform.&lt;br /&gt;
&lt;br /&gt;
Ie. If the player decided to do [[Mining]] for an extensive period of time, they are free to refund the entire skill point allocation and reinvest in mining (and optionally Drones, Industry, Autopilot, and/or Combat/Defence skill trees).&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Skill Loadouts&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Skill loadouts are introduced to help manage various skill redistribution schemes. They are global but can be assigned on a per-ship basis. Thus, having 4 ships, can mean the player uses 4 skill loadouts, one per ship (eg. One mining, one salvaging, one combat, and one trade/industry/crafting). When swapping ships, loadouts are swapped as well.&lt;br /&gt;
&lt;br /&gt;
There is no limit to the number of loadouts player has access to - so the player is free to form either global loadouts, or even ship-specific loadouts.&lt;br /&gt;
&lt;br /&gt;
Example of player loadouts, all of which can be used on an as-needed basis:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Skill.loadouts.png]]&lt;br /&gt;
&lt;br /&gt;
Currently assigned loadout to a ship can be seen within the Personal Hangar by clicking on the S button, top-right.&lt;br /&gt;
&lt;br /&gt;
[[File:Skillset.assigned.png]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Bonus Skill Points&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Aside for skill points gained through leveling and [[Skill_Missions|skill missions]], bonus skill points can be found at the following locations:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Motherlode systems&#039;&#039;&#039;: Reaching the Motherlode station in any subsector allows for purchase of a single point. See [[Navigation]]. &lt;br /&gt;
* &#039;&#039;&#039;Graveyard systems&#039;&#039;&#039;: Reaching the Graveyard station in any subsector allows for purchase of a single point. &lt;br /&gt;
* &#039;&#039;&#039;Dread Ports&#039;&#039;&#039;: Destroying any [[Corsair Syndicate]] base for the first time rewards with a single point.&lt;br /&gt;
* &#039;&#039;&#039;War Zones&#039;&#039;&#039;: Destroying the enemy base for the first time rewards with a single point.&lt;br /&gt;
* &#039;&#039;&#039;Conquest Shops&#039;&#039;&#039;: In every HQ and Embassy station in [[Conquest Zone]], and in any infected Umbral station ([[Umbral_Reach|Umbral]] shops) - allow for a purchase of a skill point, refreshes every hour, until cap is reached.&lt;br /&gt;
* &#039;&#039;&#039;Opening [[Locked Containers]]&#039;&#039;&#039;: Containers can contain a skill point at random, until cap is reached.&lt;br /&gt;
&lt;br /&gt;
After reaching the present cap, bonus skill points cannot be used but can be stored in the armory indefinitely (while waiting for the game expansions).&lt;br /&gt;
&lt;br /&gt;
[[Category:General Information]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Forge&amp;diff=4097</id>
		<title>Forge</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Forge&amp;diff=4097"/>
		<updated>2026-09-23T11:56:47Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Item Level */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Forge.png|500px|right|thumb|Forge Overview]]&lt;br /&gt;
&lt;br /&gt;
Forge is a [[Stations|station]] service which allows the player to use refined materials smelted in the [[Refinery]] in order to craft consumables, modules, weapons, boosters and quest-specific gear.&lt;br /&gt;
&lt;br /&gt;
Refineries and Forges are linked - any station with a Forge will also have a Refinery. Nominally, [[Steel Vultures]], [[Mindus Holdings]] and [[Forge Industries]] have both refineries and forges. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exception&#039;&#039;&#039;: Conquest stations in &#039;&#039;Ara Martis&#039;&#039; never have refineries nor forges, not even when belonging to one of these three factions. However, [[Forge Industries]] do not participate in Conquest (and have no conquest stations), and the other two have non-conquest stations spread through the subsector.&lt;br /&gt;
&lt;br /&gt;
The Industry Skill tree deals with refining and crafting, speeding the time required for any action, and allowing for many additional crafting queues.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Forge Overview&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Forge UI Overview:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Forge.overview.png]]&lt;br /&gt;
&lt;br /&gt;
The Forge UI lists all available recipes to the left, and after clicking on one of them, it is possible to set the rarity (not all items have a rarity selection toggle), see the required materials (which can be stored either in Cargo or Materials bay, or combined), view the time required and crafting cost.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Blueprints&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Forge.starter.recipes.png|thumb|right|500px|Starter Recipes]]&lt;br /&gt;
&lt;br /&gt;
The cornerstone of crafting are Blueprints. Starting Industry skill &#039;&#039;&#039;Starter Recipes&#039;&#039;&#039; will kickstart the player&#039;s crafting efforts, but any additional Blueprints need to be bought, fought over, salvaged, or discovered in Locked Containers. &lt;br /&gt;
&lt;br /&gt;
Blueprints have levels that unlock the crafting recipe at that level. Don&#039;t worry, once you find a level 50 blueprint, you can&#039;t find lower-level blueprints of the same type. &lt;br /&gt;
&lt;br /&gt;
Blueprints:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Blueprints2.png]]&lt;br /&gt;
&lt;br /&gt;
Each blueprint is valid for a single rarity of an item - in order to collect White, Green, Blue and Purple variants of an item, one needs to find 4 different recipes. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Currently no orange/legendary recipes exist.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Rarity Selection&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Setting the rarity of an item changes the required materials. Crafting Purple(Exotic) modules usually involves special crystals gained from [[Mining]].&lt;br /&gt;
&lt;br /&gt;
[[File:BPcrafting.png]]&lt;br /&gt;
&lt;br /&gt;
Otherwise, setting a different rarity may change the item name entirely. Plasma and Ion warp fuels are two variants of the same item, at different rarities.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Item Level&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
For the live version:&lt;br /&gt;
&lt;br /&gt;
The resulting item level depends on the player level. A level 30 captain will craft a level 30 module, regardless if the station itself is level 10 or 60. However, Industrial skills &#039;&#039;&#039;Forge Overdrive&#039;&#039;&#039; and &#039;&#039;&#039;Forge Overdrive II&#039;&#039;&#039; will raise the resulting level by +6 and +4 respectively, up to a maximum of +10.&lt;br /&gt;
&lt;br /&gt;
Forge Overdrive skills:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Forge.overdrive.png]]&lt;br /&gt;
&lt;br /&gt;
Using these skills will also increase the required materials amounts as higher -evel items require more constituent inputs, but it is &#039;&#039;extremely important&#039;&#039; to produce a &#039;&#039;&#039;much more powerful&#039;&#039;&#039; variant of the item.&lt;br /&gt;
&lt;br /&gt;
Rare (blue) and lower remain the same, having their level based on the player level + skills. For purple blueprints, they now have a level, and the crafted level is based on that blueprint alone, not benefitting from skills. The max level for purples is 80, and you can get these by defeating high level oponents, or extracting the blueprint from high level purple or orange gear.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Forge Result Overview&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Forge.result.overview.png|500px|right|thumb|Example of a resulting item]]&lt;br /&gt;
&lt;br /&gt;
While generally useful to confirm an item is in the right ballpark regarding rarity and level, the resulting item preview is nothing alike the final product regarding substats, aspects and even general power. All of these are randomly generated when crafting finishes.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Ships&amp;diff=4096</id>
		<title>Ships</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Ships&amp;diff=4096"/>
		<updated>2026-09-22T09:23:57Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Cargo and Filters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ships are the most basic core concept of Vanguard Galaxy. As a ship captain, the player has the ability to pilot ships, equip them with gear, buy new ships, sell old ones, and utilize them in any way they see fit - be it for [[Combat]], [[Mining]], [[Salvage]], [[Trade]] or any other purpose. Ships come in many forms and sizes. please consult the [[Ship List]] for a complete overview and [[Ship Manufacturers]] for points of sale.&lt;br /&gt;
&lt;br /&gt;
[[File:Personal.hangar.2.png|right]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Ship Roles and Bonuses&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Each Ship Type comes with a Hull Bonus, and an optional size bonus. Those Bonuses vary between the different activities. Combat, Mining, Salvage, etc. Depending on the Class (Size) and the profession the Hull gives different % values. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Ship Role Bonuses&lt;br /&gt;
|-&lt;br /&gt;
! Role !! Bonus &lt;br /&gt;
|-&lt;br /&gt;
| Combat || +30% Combat Power, +3% Critical Chance&lt;br /&gt;
|-&lt;br /&gt;
| Mining || +30% Mining Power, +20% Resource Yield&lt;br /&gt;
|-&lt;br /&gt;
| Salvage || +30% Salvage Power, +20% Resource Yield&lt;br /&gt;
|-&lt;br /&gt;
| Trade || Bonuses depend on Economy [[skills]] selected&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
While using a miner or salvager for combat and vice versa leads to suboptimal results, it is common practice to add a combat weapon to a workhorse for defense, or to use salvage drones on a combat ship for some extra profit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Using a mining ship for salvage in a pinch, or a salvager for mining is not at all a bad choice as Yield bonus applies to both activities, and the loss of Mining Power or Salvage Power only means tasks will take longer. &#039;&#039;&#039;Any ship can perform any task, when equipped with appropriate modules.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Ship Sizes and Bonuses&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Ships come in many sizes, and size affects their operational radius.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Ship Size Bonuses&lt;br /&gt;
|-&lt;br /&gt;
! Ship Size || Ship Category || Combat || Mining, Salvage, Trade&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Small || None || None&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Small || +20% Weapon Range || +10% Weapon Range&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Medium || +40% Weapon Range || +20% Weapon Range&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Medium || +70% Weapon Range || +30% Weapon Range&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Large || +100% Weapon Range || +40% Weapon Range&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|Large&lt;br /&gt;
| +120% Weapon Range&lt;br /&gt;
| +50% Weapon Range&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Weapon range increase applies to all weapons, including mining or salvage ones. A large miner will be able to drill into an asteroid from much further away than a small one.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Ship Modules&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Personal Hangar.png|300px|right]]&lt;br /&gt;
&lt;br /&gt;
Ships are &#039;&#039;&#039;module platforms&#039;&#039;&#039;. Without an engine, the ship can&#039;t move, without a tractor beam, the ship can&#039;t pull in anything it wants to loot. The better the modules, more efficient the ship is. Modules come in two flavors: &#039;&#039;&#039;universal&#039;&#039;&#039; (every ship has one of these) and &#039;&#039;&#039;optional&#039;&#039;&#039; (not all ships have these).&lt;br /&gt;
&lt;br /&gt;
=== Universal Modules === &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Reactor&#039;&#039;&#039;: Provides [[power]]. Power fuels all other modules. Not providing sufficient power causes penalties, while overflowing systems with power can provide bonuses.&lt;br /&gt;
* &#039;&#039;&#039;Engine&#039;&#039;&#039;: Generates Thrust. Thrust dictates how fast a ship rotates and accelerates when engaged in &#039;&#039;&#039;non-warp&#039;&#039;&#039; movement. I.e. docking, navigating an asteroid field, combat.&lt;br /&gt;
* &#039;&#039;&#039;Scanner&#039;&#039;&#039;: Generates Precision. Precision is required to cause critical hits. Higher level weapons require much more precision to be able to &#039;&#039;crit&#039;&#039; at the same rate as low level weapons with less precision.&lt;br /&gt;
* &#039;&#039;&#039;Tractor Beam:&#039;&#039;&#039; Essential for all activities. The Tractor Beam has 2 type of Beams - automatic (used by [[Echo]]), and manual (player operated by clicking on floating items in space).&lt;br /&gt;
* &#039;&#039;&#039;Hull Kit&#039;&#039;&#039;: Provides a Hull Point Modifier that multiplies the ship&#039;s base HP by a certain factor.&lt;br /&gt;
&lt;br /&gt;
=== Optional Modules ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Weapon Hard Points&#039;&#039;&#039; (a.k.a. Turrets): Can host any combat, mining or salvage weapon or tool. &lt;br /&gt;
* &#039;&#039;&#039;Armor Plating&#039;&#039;&#039;: Provides an Armor Point rating. Exclusive with an Armor Plating module.&lt;br /&gt;
* &#039;&#039;&#039;Shield Generator&#039;&#039;&#039;: Provides a Shield Point rating. Exclusive with a Shield Generator module.&lt;br /&gt;
* &#039;&#039;&#039;Drone Bay&#039;&#039;&#039;: Drone bays allow a ship to carry drones - customizable worker vessels that can be configured for any type of activity. &lt;br /&gt;
* &#039;&#039;&#039;Torpedo Bay:&#039;&#039;&#039; Currently only available in medium size on Class 5 ships and above. These can fire long-range, homing projectiles that deal area-of-effect damage on hit.&lt;br /&gt;
* &#039;&#039;&#039;Hangar Bay&#039;&#039;&#039;: Currently only available in medium size on Class 6 ships. Stores and maintains up to 5 size 1 ships. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Not all ships have additional defenses in the form of Armor or shields, but most do - and can carry at most one of these. It&#039;s quite possible to have both armor and shields on a ship through items that grant raw shield or armor points, but those won&#039;t be affected by Armor Plating or Shield Generator multipliers, making such additions somewhat weaker than a proper module.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Not all ships carry drones, though many larger ones do. However, if they have a drone bay slot, that means they will not have a torpedo slot - apparently drones and torpedoes are exclusive akin to shields and armor.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Modules and Power&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Power.module.png|right]]&lt;br /&gt;
&lt;br /&gt;
All types of modules can provide &#039;&#039;&#039;one or more&#039;&#039;&#039; forms of &#039;&#039;Power&#039;&#039;. Power determines how fast a certain task is performed; a level 1 asteroid requires very little mining power to produce an ore, while a level 100 hulk can require tens (or hundreds) of millions of salvage power delivered to yield a single item.&lt;br /&gt;
&lt;br /&gt;
Typically:&lt;br /&gt;
* &#039;&#039;&#039;Combat Power:&#039;&#039;&#039; Generated by weapons&lt;br /&gt;
* &#039;&#039;&#039;Salvage Power:&#039;&#039;&#039; Generated by salvage tools&lt;br /&gt;
* &#039;&#039;&#039;Mining Power:&#039;&#039;&#039; Generated by mining tools&lt;br /&gt;
* &#039;&#039;&#039;Drone Power:&#039;&#039;&#039; Generated by drone bays&lt;br /&gt;
* &#039;&#039;&#039;Torpedo Power:&#039;&#039;&#039; Generated by torpedo launchers&lt;br /&gt;
* &#039;&#039;&#039;Power:&#039;&#039;&#039; A general type of power that is applied to &#039;&#039;&#039;all&#039;&#039;&#039; types of power a ship uses, generated by any type of module&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Any type of module can produce any type of power. A weapon which normally produces combat power can &#039;&#039;also&#039;&#039; produce mining power, salvage power and power power, all at the same time, as a part of its substats. It is useful to look out for modules which provide beneficial substats to the type of activity the ship is used for. A scanner providing torpedo power is not suited to a ship without torpedoes, which is where module customization through the [[workshop]] comes into play.&lt;br /&gt;
&lt;br /&gt;
For more information on Power and how it is applies, please consult [[Power]].&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039; The information screen&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
[[File:information.screen.png]]&lt;br /&gt;
&lt;br /&gt;
Ship Information like Cargo and other Values will be displayed when hovering over the name in the Shipyard or Personal Hangar. One can consult the Ship information screen for a detailed listing of all stats, and by hovering over those stats the calculations behind them become available.&lt;br /&gt;
&lt;br /&gt;
== Cargo and Filters ==&lt;br /&gt;
&lt;br /&gt;
[[File:Cargo Search.png|right|300px|Cargo Search window]]  &lt;br /&gt;
&lt;br /&gt;
With the Cargo search you can filter the items shown. The Credit Symbol beside the X sells all filtered items. &lt;br /&gt;
&lt;br /&gt;
Known Filter Keywords: &lt;br /&gt;
* &#039;&#039;&#039;Name&#039;&#039;&#039;: eg. &amp;quot;fuel&amp;quot;, &amp;quot;autocannon&amp;quot;, &amp;quot;ore&amp;quot;, &amp;quot;chunk&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Module Type&#039;&#039;&#039;: eg. &amp;quot;hardpoint&amp;quot;, &amp;quot;module&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Rarity&#039;&#039;&#039;: eg. &amp;quot;rare&amp;quot;, &amp;quot;legendary&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Size&#039;&#039;&#039;: eg. &amp;quot;small&amp;quot;, &amp;quot;medium&amp;quot;, &amp;quot;large&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Colors&#039;&#039;&#039;: eg. &amp;quot;white&amp;quot;, &amp;quot;green&amp;quot;, &amp;quot;blue&amp;quot;, &amp;quot;purple&amp;quot;, &amp;quot;orange&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Stats&#039;&#039;&#039;: eg. &amp;quot;combat power&amp;quot;, &amp;quot;resistance&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Level&#039;&#039;&#039;: eg. &amp;quot;&amp;gt;15&amp;quot;, &amp;quot;=64&amp;quot; , &amp;quot;&amp;lt;100&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Aspects&#039;&#039;&#039;: eg. &amp;quot;solar&amp;quot;, &amp;quot;weakpoint&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;Aspects available&#039;&#039;&#039;: eg. &amp;quot;aspect&amp;quot;, &amp;quot;noaspect&amp;quot;&lt;br /&gt;
&lt;br /&gt;
All the filters above can be combined to filter a specific selection of items. These filters apply to cargo, armory, materials and shops filter fields equally.&lt;br /&gt;
[[File:Filter Advanced Cargo.png|thumb]]&lt;br /&gt;
You can also filter by commodities such as:&lt;br /&gt;
&lt;br /&gt;
* Ammo &amp;amp; Fuel&lt;br /&gt;
* Usables&lt;br /&gt;
* Ore and Salvage&lt;br /&gt;
* Modules&lt;br /&gt;
* Trade Goods&lt;br /&gt;
* and Other&lt;br /&gt;
&lt;br /&gt;
Depending on the Cargo you&#039;re in, these change from the named above to a more fitting filter.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=File:Filter_Advanced_Cargo.png&amp;diff=4095</id>
		<title>File:Filter Advanced Cargo.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=File:Filter_Advanced_Cargo.png&amp;diff=4095"/>
		<updated>2026-09-22T09:21:27Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Filter&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Game_Music&amp;diff=4088</id>
		<title>Game Music</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Game_Music&amp;diff=4088"/>
		<updated>2026-09-16T10:38:00Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Disc 1: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:ost.image.jpg|right|thumb|500px|OST Cover]]&lt;br /&gt;
&lt;br /&gt;
Game music is composed by Firefly.&lt;br /&gt;
&lt;br /&gt;
==  Titles ==&lt;br /&gt;
&lt;br /&gt;
=== Disc 1: ===&lt;br /&gt;
# Galaxy &lt;br /&gt;
# Emptiness &lt;br /&gt;
# Exploration &lt;br /&gt;
# Idle &lt;br /&gt;
# Silence &lt;br /&gt;
# Stargazing &lt;br /&gt;
# Loneliness &lt;br /&gt;
# Homesick &lt;br /&gt;
# Sunlight&lt;br /&gt;
&lt;br /&gt;
=== Disc 2: ===&lt;br /&gt;
# Compromised &lt;br /&gt;
# Shadows &lt;br /&gt;
# Warzone&lt;br /&gt;
# Event Horizon&lt;br /&gt;
# Magnetic&lt;br /&gt;
# Stardust&lt;br /&gt;
# Dreaming&lt;br /&gt;
&lt;br /&gt;
OST is available as a DLC:&lt;br /&gt;
[https://store.steampowered.com/app/4621120/Vanguard_Galaxy__Soundtrack/ Steam Link]&lt;br /&gt;
&lt;br /&gt;
The score is &amp;quot;not complete by a long shot&amp;quot; and will be expanded as &amp;quot;more tracks become available&amp;quot;. Also, &amp;quot;75% of the proceeds from the soundtrack go directly to the talented composer Firefly.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Category:General Information]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=4086</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=4086"/>
		<updated>2026-09-12T15:33:28Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Resupply */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Hangar spawn.png|thumb|500x500px|Fighters deploying from a Hangar Bay]]&lt;br /&gt;
Hangar Bays are equipment modules that allow a ship to carry, deploy, and recall &#039;&#039;&#039;fighter craft&#039;&#039;&#039; - a collective name for Size-1 combat, salvage and mining ships that act as autonomous wingmen. Unlike Drones, fighters are fully-fledged ships with their own equipment, hull, and crew requirements. In fact, any size-1 ship the player can fly can be loaded into a carrier as a Fighter.&lt;br /&gt;
&lt;br /&gt;
The individual setup of fighters is entirely up to the Player, so deploying a majority of salvage fighters, with a few combat ones for defense, for example, is as viable as doing the same setup with drones.&lt;br /&gt;
&lt;br /&gt;
[[Echo|ECHO]] can use Hangar Bays, and will actively deploy fighters when entering combat or other interesting POIs, and recall them when leaving a POI. The Player can also deploy or recall manually by clicking the &#039;&#039;&#039;Deploy&#039;&#039;&#039; / &#039;&#039;&#039;Recall&#039;&#039;&#039; buttons at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
Fighters can be damaged destroyed by enemy activity. Damaged fighters under 10% hull/armor (shields ignored) will try to re-dock and repair at rate of 1/90 (1.11%) of total health per second. This can be sped up with Hangar Rebuild Speed substat for the Hangar Bay, and/or with Nanite Armor aspect in case the fighters are armored.&lt;br /&gt;
&lt;br /&gt;
If destroyed, the Hangar Bay will manufacture a replacement after a 120 delay. Launching an Emergency Jump with fighters deployed is not an issue — the bay automatically despawns them and they&#039;ll be rebuilt when re-deployed.&lt;br /&gt;
&lt;br /&gt;
Additionally, fightes do not use ammo. Player does not have to worry about laoding Mining Charges or any other type of ammo on the fighters.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Hangar Bay Slots&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Hangar Bays exist in all rarities and sizes. The number of fighter slots depends on the bay&#039;s base capacity and your Engineering skill unlocks.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Hangar Bay Slots Base off Module&lt;br /&gt;
!Size&lt;br /&gt;
!Medium&lt;br /&gt;
!With Skills&lt;br /&gt;
|-&lt;br /&gt;
!Base Slots&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
!Unique Skill&lt;br /&gt;
|—&lt;br /&gt;
|Hangar Extension +&lt;br /&gt;
|-&lt;br /&gt;
!Total Slots&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;bottom&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is 1 Engineering skill that increases the maximum amount of Fighters that can be stored and controlled , a Tier 3 unique skill unlocked via a specific captain (Stella).&lt;br /&gt;
[[File:Hangar ui.png|thumb|646x646px|Hangar UI, here you can select the Ships assigned to that Module.]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Assigning Fighters&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Unlike Drones which are configured per-slot from the Drone Bay UI, fighters are assigned from your &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; (accessible at any Space Station with a hangar facility).&lt;br /&gt;
&lt;br /&gt;
To assign a fighter:&lt;br /&gt;
# Dock at a Space Station&lt;br /&gt;
# Open the &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; screen&lt;br /&gt;
# Select the ship you want to act as carrier&lt;br /&gt;
# Click on an empty Hangar Slot&lt;br /&gt;
# Choose one of your owned ships from the list&lt;br /&gt;
&lt;br /&gt;
Any ship in your fleet can be assigned as a fighter — including captured ships, mission rewards, or vessels you&#039;ve built. The fighter keeps all its equipment, custom name, paint, and configuration.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Behavior&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Once deployed, fighters act on their own for most activities. They can be re-focused on a single target by clicking it.&lt;br /&gt;
&lt;br /&gt;
In combat, all fighters will focus on the target you click or the target that attacks the player first — unless you specifically order them elsewhere by clicking a different target.&lt;br /&gt;
&lt;br /&gt;
Fighters will not follow you into a Space Station interior or through a Jump Gate. They will return to the Hangar Bay automatically when you leave the POI.&lt;br /&gt;
&lt;br /&gt;
If a fighter is damaged, it can be ordered back to the bay for repairs using the &#039;&#039;&#039;Auto-Repair Recall&#039;&#039;&#039; feature — the fighter will fly back, dock, repair, and re-deploy automatically once its hull and armor are restored.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Resupply&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters accumulate cargo — mostly salvage and loot from combat kills. When a fighter returns to the bay for repairs or recall, its cargo is automatically transferred to the carrier ship. This makes fighters excellent as mobile cargo mules in combat-heavy areas.&lt;br /&gt;
[[File:Hangar ships.png|thumb|327x327px]]&lt;br /&gt;
&lt;br /&gt;
In case there is insufficient room on the carrier for cargo, the docked fighters will transfer the cargo once there is room (for example, once the carrier docks at a station and unloads the haul). This is done automatically and the fighters don&#039;t need to re-deploy to transfer cargo.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Power &amp;amp; Stats&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters do &#039;&#039;&#039;not&#039;&#039;&#039; draw from the ship&#039;s weapon power pool. Each fighter is an independent ship with its own:&lt;br /&gt;
* &#039;&#039;&#039;Hull HP&#039;&#039;&#039; and &#039;&#039;&#039;Armor HP&#039;&#039;&#039; — fully independent from the carrier&lt;br /&gt;
* &#039;&#039;&#039;Equipment&#039;&#039;&#039; — all modules, turrets, boosters and systems function independently&lt;br /&gt;
* &#039;&#039;&#039;Crew&#039;&#039;&#039; — Fighters require &#039;&#039;&#039;Pilot&#039;&#039;&#039; crew (from your carrier&#039;s crew pool)&lt;br /&gt;
* Officers — depending on the Size Fighters in the Bay can equip officers according to the free slots &lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Pilot Requirement&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Each deployed fighter uses &#039;&#039;&#039;1 Pilot&#039;&#039;&#039; from the carrier&#039;s crew. The pilot is not actually &amp;quot;spent&amp;quot; to launch the fighter, they just need to be on the carrier and available. If you don&#039;t have enough Pilots, the bay will show a warning:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&amp;quot;No Pilots available&amp;quot;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deployment simply won&#039;t happen until you assign more Pilots. Off-duty fighters in the bay don&#039;t utilize crew.&lt;br /&gt;
&lt;br /&gt;
Since pilots can die if the fighter is destroyed, make sure to have sufficient replacement pilots onboard. Setting the ECHO automation setting to 10% pilots will ensure you have plenty to spare.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Passive Bay Repair&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The bay has a built-in repair rate of roughly &#039;&#039;&#039;1/90th of max hull per second&#039;&#039;&#039;. Fighters sitting in the bay slowly regenerate health and armor over time — no action required. The formula is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;repair_per_second = (1/90) * max_hp * (1 + HangarBayRepairRate_bonus)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat comes from equipment, aspects, skills, or hull bonuses and applies to both repair speed and rebuild time. It can normally be generated only on the Hangar Bay module.&lt;br /&gt;
&lt;br /&gt;
[[File:Hangar bay.png|thumb|402x402px|Hangar Bay Module]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Rebuilding&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
When a fighter is destroyed:&lt;br /&gt;
# The slot enters &#039;&#039;&#039;Rebuild&#039;&#039;&#039; mode&lt;br /&gt;
# A &#039;&#039;&#039;120-second timer&#039;&#039;&#039; starts&lt;br /&gt;
# The timer is modified by the carrier&#039;s &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat&lt;br /&gt;
# Once the timer finishes, the fighter is fully restored (full hull, armor, and shields)&lt;br /&gt;
# If the carrier is still in combat with fighters set to auto-deploy, the fighter launches immediately&lt;br /&gt;
&lt;br /&gt;
If the carrier performs an Emergency Jump while a fighter is being rebuilt, the rebuild timer pauses and resumes when you&#039;re cleared for deployment again.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Tips&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* Assign your &#039;&#039;&#039;best-equipped spare ship&#039;&#039;&#039; as a fighter — it keeps all its modules, turrets, and weapons&lt;br /&gt;
* Fighters are excellent for drawing aggro away from your main ship in tough fight.&lt;br /&gt;
* The Hangar Extension skill is a massive power spike — 6 fighters instead of 5 is a 20% increase in firepower&lt;br /&gt;
* Fighters with long-range weapons (missiles, beams) are more survivable than close-range brawlers since they stay at distance&lt;br /&gt;
* If your carrier has strong shields, fighters benefit indirectly by having fewer enemies targeting them&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Umbral_Missions&amp;diff=4085</id>
		<title>Umbral Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Umbral_Missions&amp;diff=4085"/>
		<updated>2026-09-10T14:14:18Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Umbral.hacking.tool.png|600px|right|thumb|Umbral Hacking tool available at an Umbral Shop.]]&lt;br /&gt;
&lt;br /&gt;
Umbral Missions are once-per day repeatable missions, granted at [[Conquest Zone|conquest]] stations within &#039;&#039;Ara Martis&#039;&#039; subsector, provided they have been infected by [[Umbral Reach]] software.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Infecting a station&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Umbral.infection.png|500px|right|thumb|Example of a station infection moment]]&lt;br /&gt;
&lt;br /&gt;
As part of the main story within &#039;&#039;Conquest&#039;&#039;, player is required to infect stations using &#039;&#039;&#039;Umbral Hacking Tool&#039;&#039;&#039;. The first one player receives is a special variant, deployable without fail on any friendly &#039;&#039;Conquest&#039;&#039; station within &#039;&#039;Ara Martis&#039;&#039;. Trying to deploy it at a non-conquest station, on an enemy station, or outside &#039;&#039;Ara Martis&#039;&#039; will fail.&lt;br /&gt;
&lt;br /&gt;
Starting station will be fully infected and will produce both the first Umbral Mission on the mission board, and the Umbral Shop, which will provide more &#039;&#039;&#039;Hacking Tools&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
From that point onward, player can either let the infection slowly spread across warp lanes by itself, or take the hacking tools to any station &#039;&#039;&#039;adjacent &#039;&#039;&#039;to one already infected (over 20%).&lt;br /&gt;
&lt;br /&gt;
Getting any station to 50% infection (via the missions or naturally) will produce the Umbral Shop which functions identically to one at any [[Factions|faction]] Headquarters station.&lt;br /&gt;
&lt;br /&gt;
At 100% infection the station will slowly infect adjacent stations connected via gate lanes. Infected stations will be shown on the Map with the Umbral Logo beside the current owner symbol.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Umbral Missions&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Umbral missions can be found behing the Umbral logo on the Mission Board. Click the logo to open up the hidden mission window.&lt;br /&gt;
&lt;br /&gt;
[[File:Umbral.mission.png]]&lt;br /&gt;
&lt;br /&gt;
Umbral missions serve to both boost the infection rate, typically by 35%-45% per mission, and to reward the player with a relatively large sum of both [[Credits]] and [[Faction Currencies|Vanguard Token s]], which can be used in Umbral and HQ Shops to purchase premium items, and to buy size-5+ ships.&lt;br /&gt;
&lt;br /&gt;
[[File:Umbral.mission.done.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Game World]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Modules&amp;diff=4084</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Modules&amp;diff=4084"/>
		<updated>2026-09-10T13:11:59Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Module List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Modules are the components that make a [[Ships|ship]] able to move, protect itself, and operate. Ships are &#039;&#039;&#039;nothing but platforms &#039;&#039;&#039;for modules - it&#039;s the modules that define how efficient or powerful a ship is.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Module List&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Module List&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;11&amp;quot; |&lt;br /&gt;
[[File:Module.list.png|300px|center]]&lt;br /&gt;
! Module&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Armor Plating&lt;br /&gt;
| Modifies the ship&#039;s armor score (form all sources, including [[Items|item]] substats) with an armor modifier. It also provides a extra Damage resistance and Corrosion resistance Bonus. Cant be swapped out for a Shield Generator.&lt;br /&gt;
|-&lt;br /&gt;
| Drone Bay&lt;br /&gt;
| Holds 3, 6 or 9 Drones, extendable through [[Aspects]] and [[Skills]]. See [[Drones]]. Exclusive with Torpedo Bay.&lt;br /&gt;
|-&lt;br /&gt;
| Engine&lt;br /&gt;
| Provides thrust, allowing a ship to move.&lt;br /&gt;
|-&lt;br /&gt;
| Hull Kit&lt;br /&gt;
| Modifies the ship&#039;s base Hull Point score (form all sources, including [[Items|item]] substats) with an HP modifier.&lt;br /&gt;
|-&lt;br /&gt;
| Reactor&lt;br /&gt;
| Provides energy, allowing all other modules and [[Turrets]] to operate. See [[Energy]].&lt;br /&gt;
|-&lt;br /&gt;
| Scanner&lt;br /&gt;
| Generates [[Precision]], required for critical hits.&lt;br /&gt;
|-&lt;br /&gt;
| Shield Generator&lt;br /&gt;
| Modifies the ship&#039;s Shield score (form all sources, including [[Items|item]] substats) with an Shield modifier. Cant be swapped out for Armor Plating.&lt;br /&gt;
|-&lt;br /&gt;
| Torpedo Bay&lt;br /&gt;
| Launches torpedoes.&lt;br /&gt;
|-&lt;br /&gt;
| Tractor Beam&lt;br /&gt;
| Grabs items in space, tows them into the Cargo Bay.&lt;br /&gt;
|-&lt;br /&gt;
|Hangar Bay&lt;br /&gt;
|Stores and resupplies Ships on a Carrier. &lt;br /&gt;
|}&lt;br /&gt;
Some Modules are and cant be changed out for another or something else. As Example. A Ship with a Drone Bay Slot cant switch that slot out for a Hangar Bay. Or a Shield Generator cant be swapped out for Armor Plating. If a Ship comes with one of them by default its fixed to that specific Layout. &lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Modules&amp;diff=4083</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Modules&amp;diff=4083"/>
		<updated>2026-09-10T13:10:45Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Modules are the components that make a [[Ships|ship]] able to move, protect itself, and operate. Ships are &#039;&#039;&#039;nothing but platforms &#039;&#039;&#039;for modules - it&#039;s the modules that define how efficient or powerful a ship is.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Module List&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Module List&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;10&amp;quot; |&lt;br /&gt;
[[File:Module.list.png|300px|center]]&lt;br /&gt;
! Module&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Armor Plating&lt;br /&gt;
| Modifies the ship&#039;s armor score (form all sources, including [[Items|item]] substats) with an armor modifier. It also provides a extra Damage resistance and Corrosion resistance Bonus. Cant be swapped out for a Shield Generator.&lt;br /&gt;
|-&lt;br /&gt;
| Drone Bay&lt;br /&gt;
| Holds 3, 6 or 9 Drones, extendable through [[Aspects]] and [[Skills]]. See [[Drones]]. Exclusive with Torpedo Bay.&lt;br /&gt;
|-&lt;br /&gt;
| Engine&lt;br /&gt;
| Provides thrust, allowing a ship to move.&lt;br /&gt;
|-&lt;br /&gt;
| Hull Kit&lt;br /&gt;
| Modifies the ship&#039;s base Hull Point score (form all sources, including [[Items|item]] substats) with an HP modifier.&lt;br /&gt;
|-&lt;br /&gt;
| Reactor&lt;br /&gt;
| Provides energy, allowing all other modules and [[Turrets]] to operate. See [[Energy]].&lt;br /&gt;
|-&lt;br /&gt;
| Scanner&lt;br /&gt;
| Generates [[Precision]], required for critical hits.&lt;br /&gt;
|-&lt;br /&gt;
| Shield Generator&lt;br /&gt;
| Modifies the ship&#039;s Shield score (form all sources, including [[Items|item]] substats) with an Shield modifier. Cant be swapped out for Armor Plating.&lt;br /&gt;
|-&lt;br /&gt;
| Torpedo Bay&lt;br /&gt;
| Launches torpedoes.&lt;br /&gt;
|-&lt;br /&gt;
| Tractor Beam&lt;br /&gt;
| Grabs items in space, tows them into the Cargo Bay.&lt;br /&gt;
|}&lt;br /&gt;
Some Modules are and cant be changed out for another or something else. As Example. A Ship with a Drone Bay Slot cant switch that slot out for a Hangar Bay. Or a Shield Generator cant be swapped out for Armor Plating. If a Ship comes with one of them by default its fixed to that specific Layout. &lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Modules&amp;diff=4082</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Modules&amp;diff=4082"/>
		<updated>2026-09-10T13:06:33Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Module List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Modules are the components that make a [[Ships|ship]] able to move, protect itself, and operate. Ships are &#039;&#039;&#039;nothing but platforms &#039;&#039;&#039;for modules - it&#039;s the modules that define how efficient or powerful a ship is.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Module List&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
{| class = &amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Module List&lt;br /&gt;
|-&lt;br /&gt;
! rowspan=&amp;quot;10&amp;quot; |&lt;br /&gt;
[[File:Module.list.png|300px|center]]&lt;br /&gt;
! Module&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Armor Plating&lt;br /&gt;
| Modifies the ship&#039;s armor score (form all sources, including [[Items|item]] substats) with an armor modifier. It also provides a extra Damage resistance and Corrosion resistance Bonus. Cant be swapped out for a Shield Generator.&lt;br /&gt;
|-&lt;br /&gt;
| Drone Bay&lt;br /&gt;
| Holds 3, 6 or 9 Drones, extendable through [[Aspects]] and [[Skills]]. See [[Drones]]. Exclusive with Torpedo Bay.&lt;br /&gt;
|-&lt;br /&gt;
| Engine&lt;br /&gt;
| Provides thrust, allowing a ship to move.&lt;br /&gt;
|-&lt;br /&gt;
| Hull Kit&lt;br /&gt;
| Modifies the ship&#039;s base Hull Point score (form all sources, including [[Items|item]] substats) with an HP modifier.&lt;br /&gt;
|-&lt;br /&gt;
| Reactor&lt;br /&gt;
| Provides energy, allowing all other modules and [[Turrets]] to operate. See [[Energy]].&lt;br /&gt;
|-&lt;br /&gt;
| Scanner&lt;br /&gt;
| Generates [[Precision]], required for critical hits.&lt;br /&gt;
|-&lt;br /&gt;
| Shield Generator&lt;br /&gt;
| Modifies the ship&#039;s Shield score (form all sources, including [[Items|item]] substats) with an Shield modifier. Cant be swapped out for Armor Plating.&lt;br /&gt;
|-&lt;br /&gt;
| Torpedo Bay&lt;br /&gt;
| Launches torpedoes.&lt;br /&gt;
|-&lt;br /&gt;
| Tractor Beam&lt;br /&gt;
| Grabs items in space, tows them into the Cargo Bay.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Akai_Armory&amp;diff=4035</id>
		<title>Akai Armory</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Akai_Armory&amp;diff=4035"/>
		<updated>2026-09-05T17:14:15Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Ships Manufactured: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Akai Armory are a [[Ship Manufacturers|ship manufacturer]].&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Ships Manufactured&#039;&#039;&#039;: ==&lt;br /&gt;
&lt;br /&gt;
Akai Armory produces primarily combat ships, with a handful of salvage and mining oriented ships. Their ships are among the fastest ships of their class.&lt;br /&gt;
&lt;br /&gt;
Akai Armory ships are named by various winds.&lt;br /&gt;
&lt;br /&gt;
While their ships can be found in almost every shipyard, [[Orsanon Security]] offers their larger combat ships for sale.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;See [[Ship List#Column legend|Ship List]] for complete listing.&#039;&#039;&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|Combat =&lt;br /&gt;
{| class=&amp;quot;sortable wikitable&amp;quot;&lt;br /&gt;
! Ships !! Class (size) !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Raptor&amp;lt;br&amp;gt;[[File:Raptor.png|frameless|200px]]&lt;br /&gt;
| Cutter (1)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Zephyr&amp;lt;br&amp;gt;[[File:Zephyr.png|frameless|200px]]&lt;br /&gt;
| Cutter (1)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Shrike&amp;lt;br&amp;gt;[[File:Shrike.png|frameless|200px]]&lt;br /&gt;
| Gunship (2)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Cyclone&amp;lt;br&amp;gt;[[File:Cyclone.png|frameless|200px]]&lt;br /&gt;
| Corvette (3)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Tempest&amp;lt;br&amp;gt;[[File:Tempest.png|frameless|200px]]&lt;br /&gt;
| Frigate (4)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Hurricane&amp;lt;br&amp;gt;[[File:Hurricane.png|frameless|200px]]&lt;br /&gt;
| Destroyer (5)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Typhoon&amp;lt;br&amp;gt;[[File:Typhoon.png|frameless|200px]]&lt;br /&gt;
| Destroyer (5)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Monsoon&amp;lt;br&amp;gt;[[File:Monsoon.png|frameless|200px]]&lt;br /&gt;
| Battlecruiser (6)&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
|-|Mining =&lt;br /&gt;
{| class=&amp;quot;sortable wikitable&amp;quot;&lt;br /&gt;
! Ships !! Class (Size) !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Gale&amp;lt;br&amp;gt;[[File:Gale.png|frameless|200px]]&lt;br /&gt;
| Hewer (2)&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
|-|Salvage =&lt;br /&gt;
{| class=&amp;quot;sortable wikitable&amp;quot;&lt;br /&gt;
! Ships !! Class (Size) !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Squall&amp;lt;br&amp;gt;[[File:Squall.png|frameless|200px]]&lt;br /&gt;
| Salvage Skiff (1)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Kite&amp;lt;br&amp;gt;[[File:Kite.png|frameless|200px]]&lt;br /&gt;
| Scow (2)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Osprey&amp;lt;br&amp;gt;[[File:Osprey.png|frameless|200px]]&lt;br /&gt;
| Scrapper (3)&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Game World]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Mindus_Manufacturing&amp;diff=4034</id>
		<title>Mindus Manufacturing</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Mindus_Manufacturing&amp;diff=4034"/>
		<updated>2026-09-05T17:06:54Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Ships Manufactured: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mindus Manufacturing are a [[Ship Manufacturers|ship manufacturer]], and a subsidiary of [[Mindus Holdings]].&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Ships Manufactured&#039;&#039;&#039;: ==&lt;br /&gt;
&lt;br /&gt;
Mindus Manufacturing produces mostly mining-oriented ships, with a rare exception. Their ships are generally considered the best choice when it comes to mining asteroids&amp;lt;sup&amp;gt;(*)&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Mindus Manufacturing ship names have a mining tool ring.&lt;br /&gt;
&lt;br /&gt;
Their ships can be bought only in Mindus Holdings shipyards.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sub&amp;gt;(*) Survey performed among 5000 randomly selected Mindus Holdings mining captains.&amp;lt;/sub&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;See [[Ship List#Column legend|Ship List]] for complete list.&#039;&#039;&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|Mining =&lt;br /&gt;
{| class=&amp;quot;sortable wikitable&amp;quot;&lt;br /&gt;
! Ships !! Class (Size) !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Chisel Mk I&amp;lt;br&amp;gt;[[File:Chisel Mk I.png|frameless|200px]]&lt;br /&gt;
| Mining Skiff (1)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Chisel Mk II&amp;lt;br&amp;gt;[[File:Chisel Mk II.png|frameless|200px]]&lt;br /&gt;
| Mining Skiff (1)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Foreman&amp;lt;br&amp;gt;[[File:Foreman DC-2.png|frameless|200px]]&lt;br /&gt;
| Hewer (2)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Pickaxe&amp;lt;br&amp;gt;[[File:Pickaxe.png|frameless|200px]]&lt;br /&gt;
| Hewer (2)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Auger ERC-2&amp;lt;br&amp;gt;[[File:Auger ERC-2.png|frameless|200px]]&lt;br /&gt;
| Dredger (3)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Auger ERC-7&amp;lt;br&amp;gt;[[File:Auger ERC-7.png|frameless|200px]]&lt;br /&gt;
| Dredger (3)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Warden&amp;lt;br&amp;gt;[[File:Warden DSF-3.png|frameless|200px]]&lt;br /&gt;
| Breaker (4)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Maul&amp;lt;br&amp;gt;[[File:Maul.png|frameless|200px]]&lt;br /&gt;
| Harvester (5)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Sledge&amp;lt;br&amp;gt;[[File:Sledge.png|frameless|200px]]&lt;br /&gt;
| Harvester (5)&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Assayer&amp;lt;br&amp;gt;[[File:Assayer.png|frameless|200px]]&lt;br /&gt;
| Mining Barge (6)&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
|-|Salvage =&lt;br /&gt;
{| class=&amp;quot;sortable wikitable&amp;quot;&lt;br /&gt;
! Ships !! Class (Size) !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Chisel Mk I SN&amp;lt;br&amp;gt;[[File:Chisel Mk I SN.png|frameless|200px]]&lt;br /&gt;
| Salvage Skiff (1)&lt;br /&gt;
| —&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Game World]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Drydock&amp;diff=4031</id>
		<title>Drydock</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Drydock&amp;diff=4031"/>
		<updated>2026-09-02T08:29:42Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Refit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Drydock.png|right|815x815px|thumb|Drydock Window without a captured Ship|frameless]]&lt;br /&gt;
&lt;br /&gt;
== The Drydock ==&lt;br /&gt;
&lt;br /&gt;
With the Drydock you can refit and upgrade ships. The Drydock can be found at most [[Stations]].&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Captured Ships ===&lt;br /&gt;
[[File:Captured ships.png|right|thumb|891x891px]]&lt;br /&gt;
&lt;br /&gt;
When capturing Ships trough [[Boarding]] those ships will be brought back by your Crew to the Drydocks. There you can start repairing it if you want or dismantle the Ships for parts. The resources needed will be shown in the Pop-up screen.  &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Dismantling, repairing and selling ===&lt;br /&gt;
Upon arrival at the Drydock you can repair, dismantle, or straight-up sell the damaged Hull. Keep in mind that selling it in this state will add a &amp;quot;condition penalty.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Each Option will show what you can expect from it. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp; &amp;lt;gallery mode=&amp;quot;nolines&amp;quot;&amp;gt;&lt;br /&gt;
File:Recomission.png&lt;br /&gt;
File:Dismantle.png&lt;br /&gt;
File:Sell.png&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
[[File:Refit.png|thumb|696x696px]]&lt;br /&gt;
&lt;br /&gt;
=== Refit ===&lt;br /&gt;
Ship refit lets you increase the number of hull upgrade slots of your ships. &lt;br /&gt;
&lt;br /&gt;
These are essential to get the maximum out of your hull upgrades. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The refit requires a hull alignment progress, which will be shown in the middle. After gathering the needed XP you also need Ship Type Upgrade Kits. Depending on the current ship type, these vary between 1, 10 or even more. Each Upgrade grants you 25+ more Hull Upgrade Slots.&lt;br /&gt;
&lt;br /&gt;
Hull upgrades are labeled as Type-A/B/C/X and S with a number. Example Type-C25 This means the ship has his hull upgraded to C ranking and currently 25 installed upgrades. &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Hull Upgrades ===&lt;br /&gt;
Upgrading your Hull boosts or even add stats to your ships. The added stats vary between the types of numbers you want to boost. &lt;br /&gt;
[[File:Shiprefit.png|thumb|691x691px]]&lt;br /&gt;
You have the following options:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Type&lt;br /&gt;
!Node Bonus&lt;br /&gt;
!Node 10&lt;br /&gt;
!Node 20&lt;br /&gt;
!Node 30&lt;br /&gt;
|-&lt;br /&gt;
|Combat&lt;br /&gt;
| + 2% Combat Power each&lt;br /&gt;
| + 5% Weapong Range&lt;br /&gt;
+ 15% Critical Damage&lt;br /&gt;
| + 10% Combat Power&lt;br /&gt;
| + 20% Combat Power&lt;br /&gt;
|-&lt;br /&gt;
|Mining&lt;br /&gt;
| + 2% Mining Power&lt;br /&gt;
| + x3 Ore on last chunk&lt;br /&gt;
| + 20% Cargo Capacity&lt;br /&gt;
+ 50% Strange Dust from mining&lt;br /&gt;
| + 20% Mining Power&lt;br /&gt;
|-&lt;br /&gt;
|Salvage&lt;br /&gt;
| + 2% Salvage Power&lt;br /&gt;
| + 10% Ressource Yield&lt;br /&gt;
+ 100% Frame Upgrade chance&lt;br /&gt;
| + 20% Cargo Capacity&lt;br /&gt;
+ 2% Hull Upgrade Kit per extraction&lt;br /&gt;
| + 20% Salvage Power&lt;br /&gt;
|-&lt;br /&gt;
|Drones&lt;br /&gt;
| + 2% Drone Power&lt;br /&gt;
| + 1 Drone&lt;br /&gt;
| + 15% Drone Damage reduction&lt;br /&gt;
| + 2 Drones&lt;br /&gt;
|-&lt;br /&gt;
|Defense&lt;br /&gt;
| + 1% Shield/Armor/Hull HP&lt;br /&gt;
| + 2% Damage Reduction&lt;br /&gt;
| + 10% Shield/Armor/Hull HP&lt;br /&gt;
| + 20% Shield/Armor/Hull HP&lt;br /&gt;
|-&lt;br /&gt;
|Milestone&lt;br /&gt;
|None&lt;br /&gt;
|Combat / Mining / Salvage: 100 Missions&lt;br /&gt;
Drones: 5M XP in Drone activities&lt;br /&gt;
Defense: 1M damage absorbed&lt;br /&gt;
|Combat / Mining / Salvage: 1000 Missions&lt;br /&gt;
Drones: 250M XP in Drone activities&lt;br /&gt;
Defense: 50M damage absorbed&lt;br /&gt;
|Combat / Mining / Salvage: 5000 Missions&lt;br /&gt;
Drones: 5B XP in Drone activities&lt;br /&gt;
Defense: 1B damage absorbed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Items mentioned for Refit and Hull Upgrades ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
![[File:Hull Upgrade Kit.png|thumb|center]]&lt;br /&gt;
![[File:Ship Type Upgrade Kit.png|thumb|center]]&lt;br /&gt;
|-&lt;br /&gt;
!Hull Upgrade Kit can be crafted in the [[Forge]]&lt;br /&gt;
!Ship Type Upgrade Kit can be crafted &lt;br /&gt;
in the [[Forge]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Navigation&amp;diff=4011</id>
		<title>Navigation</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Navigation&amp;diff=4011"/>
		<updated>2026-08-30T16:03:47Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Gates and Passes/Keys */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Navigation.png|right|thumb|400px|Navigating a System]]&lt;br /&gt;
&lt;br /&gt;
Navigation is one of basic concepts in Vanguard Galaxy. The known and accessible galaxy is divided into star systems, connected by gates, and filled with Points of Interest (POIs). It is navigated by clicking on a target destination - ship will enter warp speed and travel to destination in a straight line. If the destination is in another system, [[ECHO]] will determine the fastest route how to get there, and will perform interstellar travel through the gates.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;The Galaxy&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The map of space is divided into four levels:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Galaxy&#039;&#039;&#039;: &#039;&#039;Canis Majoris&#039;&#039;, a dwarf Galaxy. Not to be confused with the actual &#039;&#039;Canis Majoris&#039;&#039; constellation.&lt;br /&gt;
* &#039;&#039;&#039;Sector&#039;&#039;&#039;: A collection of subsectors connected through sector gates. Currently three are explorable: &#039;&#039;Galaxy&#039;s Edge&#039;&#039; (prologue), &#039;&#039;Frontier&#039;&#039; (sandbox) and &#039;&#039;Conquest&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Subsector&#039;&#039;&#039;: A cluster of star systems connected by system gates. Names of subsectors can be dynamically generated, or they can be preset for specific sectors like &#039;&#039;Conquest&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;System&#039;&#039;&#039;: System is where action takes place - it hosts stations, asteroid fields, salvageable wrecks, points of conflict, random events, mission POIs and more.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Sectors&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Galaxy&#039;s Edge&#039;&#039;&#039;: Tutorial sector where player learns the game mechanics during the Prologue, designed for levels 1-10. Once the player leaves for &#039;&#039;Frontier&#039;&#039;, prologue ends, and game proper starts.&lt;br /&gt;
&lt;br /&gt;
[[File:Galaxys.edge.png|500px]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Frontier&#039;&#039;&#039;: A collection of subsectors designed for exploration and &amp;quot;sandbox&amp;quot; play style, for levels 10-30. Subsectors here are dynamically generated and may contain special systems like Motherlodes, Graveyards, Dread Ports and similar.&lt;br /&gt;
&lt;br /&gt;
[[File:Frontier.png|500px]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Conquest&#039;&#039;&#039;: A set of subsectors clustered around the massive &#039;&#039;Ara Martis&#039;&#039;, designed for levels 30-60. They have preset names (though individually they still have dynamically generated contents). Also known as the &#039;&#039;&#039;Darkspace&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[File:Conquest.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Points of Interest&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Navigating.map.png|500px|thumb|Example of navigation to a POI]]&lt;br /&gt;
&lt;br /&gt;
Various POIs exist within each system, and navigation is performed by clicking on the destination from the map screen.&lt;br /&gt;
&lt;br /&gt;
Typical POIs are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Gates&#039;&#039;&#039;: They connect systems to each other, a system can have many gates to other systems.&lt;br /&gt;
* &#039;&#039;&#039;Stations&#039;&#039;&#039;: Friendly, neutral and hostile stations can exist, which can be interacted with or fought to destruction.&lt;br /&gt;
* &#039;&#039;&#039;Asteroid fields&#039;&#039;&#039;: Either naturally occurring or received through mining claims - they can be mined for ores.&lt;br /&gt;
* &#039;&#039;&#039;Salvage fields&#039;&#039;&#039;: Either ancient wrecks, or purchased through salvage claims - they can be salvaged for scrap.&lt;br /&gt;
* &#039;&#039;&#039;Combat zones&#039;&#039;&#039;: Typically conflicts between [[Factions]], pirate activity, system reinforcements, and similar.&lt;br /&gt;
* &#039;&#039;&#039;Quest&#039;&#039;&#039;: POIs that further the story questline.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Random POIs&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Occasionally, random POIs can spawn within a system: &lt;br /&gt;
&lt;br /&gt;
[[File:Distress.png|thumb|314x314px|Distress Call window]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Rogue comet&#039;&#039;&#039;: A mining POI that lasts for about 45 minutes before it vanishes.&lt;br /&gt;
* &#039;&#039;&#039;Battle Wreckage&#039;&#039;&#039;: A salvage POI that lasts for about 45 minutes before it vanishes.&lt;br /&gt;
* &#039;&#039;&#039;Corsair syndicate Warband&#039;&#039;&#039;: An example of a combat POI that lasts for about 45 minutes before it vanishes.&lt;br /&gt;
* &#039;&#039;&#039;Distress Calls&#039;&#039;&#039;: This is a special POI that happens when traveling through any system within &#039;&#039;Frontier&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
When traveling Distress Call can suddenly pop up, and they can be responded to or ignored.. These Distress Calls can be anything, from an ambush to someone needing help. &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Travel speed&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Fast.travel.png|300px|thumb|Example of Fast-Travel]]&lt;br /&gt;
&lt;br /&gt;
Warp speed heavily depends on the ship&#039;s base travel speed statistic. Some ships are fast, and some like transporters can be notoriously slow. Travel time can be speed up with Fuel Cells - a consumable item that can be turned on or off within the ship&#039;s Cargo bay. There are currently 2 types of Fuel - Plasma and Ion, with the Ion Fuel Cells giving a much larger speed boost.&lt;br /&gt;
&lt;br /&gt;
Fuel cells can be bought in general shops, or can be crafted in a station&#039;s [[Forge]].&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Plasma Fuel Cell&#039;&#039;&#039;: 280% speed&lt;br /&gt;
* &#039;&#039;&#039;Ion Fuel Cell&#039;&#039;&#039;: 300% speed&lt;br /&gt;
&lt;br /&gt;
Additionally as story progresses, captain can learn the secrets of &#039;&#039;&#039;Fast-Lane Travel&#039;&#039;&#039;, which speeds up inter-system travel by an enormous amount, so it takes mere seconds to travel through interconnecting systems between starting system and target system.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Fast-Lane Travel&#039;&#039;&#039;: 700% speed, only when skipping entire systems, does not consume fuel cells also fuel cells in the cargo dont speed Fast Travel up ontop.&lt;br /&gt;
The formula is the following: Base Ship Speed x (either) Plasma Fuel Cell -&amp;gt; Base Speed is multiplied by 280% or the Ion Fuel Cell by 300%. With Fast Travel its Base Speed x 700%&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Gates and Passes/Keys&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Warzone 2.png|300px|right|thumb|Dread Port]]&lt;br /&gt;
&lt;br /&gt;
Gates connect systems, and can be in two states: &#039;&#039;&#039;locked&#039;&#039;&#039; or &#039;&#039;&#039;unlocked&#039;&#039;&#039;. Unlocked gates are open to general traffic, but locked gates require &#039;&#039;&#039;Gate Passes&#039;&#039;&#039; (a.k.a. &#039;&#039;&#039;Gate Keys&#039;&#039;&#039;) to unlock. This mechanic is taught in the Prologue.&lt;br /&gt;
&lt;br /&gt;
Different systems require gate keys obtained at specific locations:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Regular gates&#039;&#039;&#039;: Gate passes are usually found in [[Canisec]] shops within the same system as the gate.&lt;br /&gt;
* &#039;&#039;&#039;Motherlodes&#039;&#039;&#039;: These mining systems are commonly owned by [[Mindus Holdings]]. One needs to find a Mindus station within the subsector, and purchase a key there.&lt;br /&gt;
* &#039;&#039;&#039;Graveyards&#039;&#039;&#039;: These salvage-filled systems are commonly owned by [[Steel Vultures]]. One needs to find a Vulture station within the subsector, and purchase a key there.&lt;br /&gt;
* &#039;&#039;&#039;Dread Ports&#039;&#039;&#039;: Keys for these gates are owned by the pirates of [[Corsair Syndicate]]. As they have no neutral stations, the player needs to find an &#039;&#039;&#039;active combat POI&#039;&#039;&#039; (depicted as a red crosshairs circle) within the subsystem (can be in any of the systems), go there and defeat the pirates. One of them will drop the key.&lt;br /&gt;
* &#039;&#039;&#039;War Zones&#039;&#039;&#039;: (Not to be confused with &#039;&#039;Ara Martis&#039;&#039; subsector) These systems have two factions in a state of war. The one holding the system prior to the War Zone will sell a key.&lt;br /&gt;
* &#039;&#039;&#039;Penumbra&#039;&#039;&#039;: Gate leading past &#039;&#039;Ara Martis&#039;&#039; and into Darkspace - the key for this gate will spawn in [[Canisec]] shops only after player reaches level 55.&lt;br /&gt;
* &#039;&#039;&#039;Embassy gates&#039;&#039;&#039;: Within &#039;&#039;Conquest&#039;&#039;, every participating faction spawns a gate connecting their Headquarters to their Embassy. If the player is on friendly terms, gate will be unlocked. If player is at war with them, the gate will lock. It takes a Conquest Refresh tick (every hour) for these Embassy&amp;lt;-&amp;gt;HQ Gates to change state.&lt;br /&gt;
&lt;br /&gt;
To unlock a gate, just have the Gate Pass in you Data Storage.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Wormhole Network&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
At a later stage in the game the player can unlock access to wormhole network - a network of raw wormholes randomly spread throughout the galaxy. Entering any of them can be used to exit at any other, thus bypassing entire sectors much faster than even the Fast-Lane Travel.&lt;br /&gt;
&lt;br /&gt;
Wormholes have no keys/passes and can be used at will.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Refinery&amp;diff=3990</id>
		<title>Refinery</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Refinery&amp;diff=3990"/>
		<updated>2026-08-22T14:15:40Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Refinable Items */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Refinery is a [[Stations|station]] service which allows the player to smelt down ores, scrap and junk materials into refined materials - for further use in the [[Forge]].&lt;br /&gt;
&lt;br /&gt;
Refineries and Forges are linked - any station with a Forge will also have a Refinery. Nominally, [[Steel Vultures]], [[Mindus Holdings]] and [[Forge Industries]] have both refineries and forges. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exception&#039;&#039;&#039;: Conquest stations in &#039;&#039;Ara Martis&#039;&#039; never have refineries nor forges, not even when belonging to one of these three factions. However, [[Forge Industries]] do not participate in Conquest (and have no conquest stations), and the other two have non-conquest stations spread through the subsector.&lt;br /&gt;
&lt;br /&gt;
The Industry Skill tree deals with refining and crafting, speeding the time required for any action, and allowing for many additional refining queues.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refinery overview&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Refinery UI Overview:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refinery UI.png]]&lt;br /&gt;
&lt;br /&gt;
Items that can be processed in the refinery will be listed in the overview on the right side. The Refinery will check &#039;&#039;both&#039;&#039; Cargo and the Materials storage, and will combine if needed - having 10 ore in Cargo and 50 in Materials will allow for a single queue of 60 to be set for refining.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refining Materials&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Rich Lithar.png|right|thumb|266x266px|Rich Lithar Tooltip]]&lt;br /&gt;
&lt;br /&gt;
To refine Materials listed in the overview click on a material, adjust the quantity by either using the slider or using the manual field. The cost to refine the set quantity will be shown, along with the time required in the bottom right.&lt;br /&gt;
&lt;br /&gt;
Refinery cost and outcome example:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refinery cost-outcome View.png]]&lt;br /&gt;
&lt;br /&gt;
===  &#039;&#039;&#039;Refining progress&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The progress of the currently active refining Job will be shown on the left side. When hovering over a Job you can see the remaining time and the amount still left to produce. A job can be cancelled at any time by clicking the red X, with the full or partial return of the starting cost. &lt;br /&gt;
&lt;br /&gt;
Refining Queue overview:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refining Queue.png]]&lt;br /&gt;
&lt;br /&gt;
* Amount of simultaneously active Jobs starts at 2, but can be raised by the Industry Skill Tree. The Limit is for &amp;quot;one&amp;quot; station; that means you can refine or craft multiple jobs at multiple stations simultaneously. The Station will refine even if you leave it.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refined Materials Bay&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Refined Materials are stored in a &#039;&#039;&#039;global shared inventory&#039;&#039;&#039;. You can manually remove all or a portion at any time from any station by clicking on the material.  &lt;br /&gt;
&lt;br /&gt;
The Refined Materials Bay is not capped (limited in size), unlike standard Cargo/Armory/Materials inventories.&lt;br /&gt;
&lt;br /&gt;
Refined Materials Storage Bay:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refined Materials Storage.png]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refinable Items&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Generally every type of ore refines into 2 or 3 materials, in specific ratios. Salvaged materials normally belong to a specific material type (eg. &#039;&#039;Titianium Fragment, Platinum Scrap&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For a list of refinable ores, see [[Mining]].&lt;br /&gt;
For a list of salvageable items, see [[Salvage]].&lt;br /&gt;
&lt;br /&gt;
None of the items produced through [[Forge]] can be refined back into refined materials.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Refinery&amp;diff=3989</id>
		<title>Refinery</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Refinery&amp;diff=3989"/>
		<updated>2026-08-22T13:20:56Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Refining progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Refinery is a [[Stations|station]] service which allows the player to smelt down ores, scrap and junk materials into refined materials - for further use in the [[Forge]].&lt;br /&gt;
&lt;br /&gt;
Refineries and Forges are linked - any station with a Forge will also have a Refinery. Nominally, [[Steel Vultures]], [[Mindus Holdings]] and [[Forge Industries]] have both refineries and forges. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exception&#039;&#039;&#039;: Conquest stations in &#039;&#039;Ara Martis&#039;&#039; never have refineries nor forges, not even when belonging to one of these three factions. However, [[Forge Industries]] do not participate in Conquest (and have no conquest stations), and the other two have non-conquest stations spread through the subsector.&lt;br /&gt;
&lt;br /&gt;
The Industry Skill tree deals with refining and crafting, speeding the time required for any action, and allowing for many additional refining queues.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refinery overview&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Refinery UI Overview:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refinery UI.png]]&lt;br /&gt;
&lt;br /&gt;
Items that can be processed in the refinery will be listed in the overview on the right side. The Refinery will check &#039;&#039;both&#039;&#039; Cargo and the Materials storage, and will combine if needed - having 10 ore in Cargo and 50 in Materials will allow for a single queue of 60 to be set for refining.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refining Materials&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Rich Lithar.png|right|thumb|266x266px|Rich Lithar Tooltip]]&lt;br /&gt;
&lt;br /&gt;
To refine Materials listed in the overview click on a material, adjust the quantity by either using the slider or using the manual field. The cost to refine the set quantity will be shown, along with the time required in the bottom right.&lt;br /&gt;
&lt;br /&gt;
Refinery cost and outcome example:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refinery cost-outcome View.png]]&lt;br /&gt;
&lt;br /&gt;
===  &#039;&#039;&#039;Refining progress&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The progress of the currently active refining Job will be shown on the left side. When hovering over a Job you can see the remaining time and the amount still left to produce. A job can be cancelled at any time by clicking the red X, with the full or partial return of the starting cost. &lt;br /&gt;
&lt;br /&gt;
Refining Queue overview:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refining Queue.png]]&lt;br /&gt;
&lt;br /&gt;
* Amount of simultaneously active Jobs starts at 2, but can be raised by the Industry Skill Tree. The Limit is for &amp;quot;one&amp;quot; station; that means you can refine or craft multiple jobs at multiple stations simultaneously. The Station will refine even if you leave it.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refined Materials Bay&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Refined Materials are stored in a &#039;&#039;&#039;global shared inventory&#039;&#039;&#039;. You can manually remove all or a portion at any time from any station by clicking on the material.  &lt;br /&gt;
&lt;br /&gt;
The Refined Materials Bay is not capped (limited in size), unlike standard Cargo/Armory/Materials inventories.&lt;br /&gt;
&lt;br /&gt;
Refined Materials Storage Bay:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refined Materials Storage.png]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refinable Items&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Generally every type of ore refines into 2 or 3 materials, in specific ratios. Salvaged materials normally belong to a specific material type (eg. &#039;&#039;Titianium Fragment, Platinum Scrap&#039;&#039;), but some salvaged mid-products can be broken down into multiple components (eg. &#039;&#039;Computer Unit, Hull Beam&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For a list of refinable ores, see [[Mining]].&lt;br /&gt;
For a list of salvageable items, see [[Salvage]].&lt;br /&gt;
&lt;br /&gt;
None of the items produced through [[Forge]] can be refined back into refined materials.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Refinery&amp;diff=3987</id>
		<title>Refinery</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Refinery&amp;diff=3987"/>
		<updated>2026-08-16T11:11:21Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Refinery is a [[Stations|station]] service which allows the player to smelt down ores, scrap and junk materials into refined materials - for further use in the [[Forge]].&lt;br /&gt;
&lt;br /&gt;
Refineries and Forges are linked - any station with a Forge will also have a Refinery. Nominally, [[Steel Vultures]], [[Mindus Holdings]] and [[Forge Industries]] have both refineries and forges. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exception&#039;&#039;&#039;: Conquest stations in &#039;&#039;Ara Martis&#039;&#039; never have refineries nor forges, not even when belonging to one of these three factions. However, [[Forge Industries]] do not participate in Conquest (and have no conquest stations), and the other two have non-conquest stations spread through the subsector.&lt;br /&gt;
&lt;br /&gt;
The Industry Skill tree deals with refining and crafting, speeding the time required for any action, and allowing for many additional refining queues.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refinery overview&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Refinery UI Overview:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refinery UI.png]]&lt;br /&gt;
&lt;br /&gt;
Items that can be processed in the refinery will be listed in the overview on the right side. The Refinery will check &#039;&#039;both&#039;&#039; Cargo and the Materials storage, and will combine if needed - having 10 ore in Cargo and 50 in Materials will allow for a single queue of 60 to be set for refining.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refining Materials&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Rich Lithar.png|right|thumb|266x266px|Rich Lithar Tooltip]]&lt;br /&gt;
&lt;br /&gt;
To refine Materials listed in the overview click on a material, adjust the quantity by either using the slider or using the manual field. The cost to refine the set quantity will be shown, along with the time required in the bottom right.&lt;br /&gt;
&lt;br /&gt;
Refinery cost and outcome example:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refinery cost-outcome View.png]]&lt;br /&gt;
&lt;br /&gt;
===  &#039;&#039;&#039;Refining progress&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The progress of the currently active refining Job will be shown on the left side. When hovering over a Job you can see the remaining time and the amount still left to produce. A job can be cancelled at any time by clicking the red X, with the full or partial return of the starting cost. &lt;br /&gt;
&lt;br /&gt;
Refining Queue overview:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refining Queue.png]]&lt;br /&gt;
&lt;br /&gt;
* Amount of simultaneously active Jobs starts at 2, but can be raised by the Industry Skill Tree. The Limit is for &amp;quot;one&amp;quot; station; that means you can refine or craft multiple jobs at multiple stations simultaneously. &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refined Materials Bay&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Refined Materials are stored in a &#039;&#039;&#039;global shared inventory&#039;&#039;&#039;. You can manually remove all or a portion at any time from any station by clicking on the material.  &lt;br /&gt;
&lt;br /&gt;
The Refined Materials Bay is not capped (limited in size), unlike standard Cargo/Armory/Materials inventories.&lt;br /&gt;
&lt;br /&gt;
Refined Materials Storage Bay:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Refined Materials Storage.png]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Refinable Items&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Generally every type of ore refines into 2 or 3 materials, in specific ratios. Salvaged materials normally belong to a specific material type (eg. &#039;&#039;Titianium Fragment, Platinum Scrap&#039;&#039;), but some salvaged mid-products can be broken down into multiple components (eg. &#039;&#039;Computer Unit, Hull Beam&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
For a list of refinable ores, see [[Mining]].&lt;br /&gt;
For a list of salvageable items, see [[Salvage]].&lt;br /&gt;
&lt;br /&gt;
None of the items produced through [[Forge]] can be refined back into refined materials.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Escalation&amp;diff=3974</id>
		<title>Escalation</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Escalation&amp;diff=3974"/>
		<updated>2026-08-09T21:32:17Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: Created page with &amp;quot;Escalation is one way to make the game harder for yourself while giving more rewards.  Escalation Button in the Captains View The Escalation button can be found under the Captain tab beside your Name Tag.   {| class=&amp;quot;wikitable&amp;quot; |+The different Escalation Levels are: !Name !Frontier !Static !Fracture !Breach !Havoc !Onslaught !Maelstrom !Cataclysm !Extinction |- |Level |0 |1 |2 |3 |4 |5 |6 |7 |8 |- |Added Effect |No...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Escalation is one way to make the game harder for yourself while giving more rewards. &lt;br /&gt;
[[File:Escalation captain view.png|thumb|663x663px|Escalation Button in the Captains View]]&lt;br /&gt;
The Escalation button can be found under the [[Captain]] tab beside your Name Tag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+The different Escalation Levels are:&lt;br /&gt;
!Name&lt;br /&gt;
!Frontier&lt;br /&gt;
!Static&lt;br /&gt;
!Fracture&lt;br /&gt;
!Breach&lt;br /&gt;
!Havoc&lt;br /&gt;
!Onslaught&lt;br /&gt;
!Maelstrom&lt;br /&gt;
!Cataclysm&lt;br /&gt;
!Extinction&lt;br /&gt;
|-&lt;br /&gt;
|Level&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|7&lt;br /&gt;
|8&lt;br /&gt;
|-&lt;br /&gt;
|Added Effect&lt;br /&gt;
|Nothing&lt;br /&gt;
|Enemy toughness: +10%&lt;br /&gt;
Enemy damage: +8%&lt;br /&gt;
|Enemy toughness: +25%&lt;br /&gt;
Enemy damage: +18%&lt;br /&gt;
|Enemy toughness: +45%&lt;br /&gt;
Enemy damage: +30%&lt;br /&gt;
|Enemy toughness: +100%&lt;br /&gt;
Enemy damage: +100%&lt;br /&gt;
Your resistance: -20%&lt;br /&gt;
|Enemy toughness: +150%&lt;br /&gt;
Enemy damage: +150%&lt;br /&gt;
Your resistance: -40%&lt;br /&gt;
|Enemy toughness: +220%&lt;br /&gt;
Enemy damage: +220%&lt;br /&gt;
Your resistance: -60%&lt;br /&gt;
|Enemy toughness: +300%&lt;br /&gt;
Enemy damage: +300%&lt;br /&gt;
Your resistance: -75%&lt;br /&gt;
|Enemy toughness: +400%&lt;br /&gt;
Enemy damage: +400%&lt;br /&gt;
Your resistance: -85%&lt;br /&gt;
|-&lt;br /&gt;
|Positive Effect&lt;br /&gt;
|Nothing&lt;br /&gt;
|Mission credits: +10%&lt;br /&gt;
Mission XP: +4%&lt;br /&gt;
|Mission credits: +20%&lt;br /&gt;
Mission XP: +8%&lt;br /&gt;
|Mission credits: +30%&lt;br /&gt;
Mission XP: +12%&lt;br /&gt;
|Mission credits: +50%&lt;br /&gt;
Mission XP: +20%&lt;br /&gt;
Combat Upg Kit: 0.2%&lt;br /&gt;
|Mission credits: +75%&lt;br /&gt;
Mission XP: +30%&lt;br /&gt;
Combat Upg Kit: 0.4%&lt;br /&gt;
|Mission credits: +100%&lt;br /&gt;
Mission XP: +40%&lt;br /&gt;
Combat Upg Kit: 0.6%&lt;br /&gt;
|Mission credits: +125%&lt;br /&gt;
Mission XP: +50%&lt;br /&gt;
Combat Upg Kit: 0.8%&lt;br /&gt;
|Mission credits: +150%&lt;br /&gt;
Mission XP: +60%&lt;br /&gt;
Combat Upg Kit: 1%&lt;br /&gt;
|-&lt;br /&gt;
|Unlocks&lt;br /&gt;
|From the start&lt;br /&gt;
|From the start&lt;br /&gt;
|From the start&lt;br /&gt;
|Level 10&lt;br /&gt;
|Level 25&lt;br /&gt;
|Level 50&lt;br /&gt;
|Level 75&lt;br /&gt;
|Level 100&lt;br /&gt;
|100&lt;br /&gt;
|}&lt;br /&gt;
[[File:Escalation Screen.png|thumb|570x570px|Escalation overlay]]&lt;br /&gt;
Combat Upgrade Kits are used to Upgrade Ship Hulls in the [[Drydock]].&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=File:Escalation_Screen.png&amp;diff=3973</id>
		<title>File:Escalation Screen.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=File:Escalation_Screen.png&amp;diff=3973"/>
		<updated>2026-08-09T21:29:32Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;escalation&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=File:Escalation_captain_view.png&amp;diff=3972</id>
		<title>File:Escalation captain view.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=File:Escalation_captain_view.png&amp;diff=3972"/>
		<updated>2026-08-09T21:18:03Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:)&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Umbral_Missions&amp;diff=3953</id>
		<title>Umbral Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Umbral_Missions&amp;diff=3953"/>
		<updated>2026-08-03T08:14:03Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Umbral.hacking.tool.png|600px|right|thumb|Umbral Hacking tool available at an Umbral Shop.]]&lt;br /&gt;
&lt;br /&gt;
Umbral Missions are once-per day repeatable missions, granted at [[Conquest Zone|conquest]] stations within &#039;&#039;Ara Martis&#039;&#039; subsector, provided they have been infected by [[Umbral Reach]] software.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Infecting a station&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Umbral.infection.png|500px|right|thumb|Example of a station infection moment]]&lt;br /&gt;
&lt;br /&gt;
As part of the main story within &#039;&#039;Conquest&#039;&#039;, player is required to infect stations using &#039;&#039;&#039;Umbral Hacking Tool&#039;&#039;&#039;. The first one player receives is a special variant, deployable without fail on any friendly &#039;&#039;Conquest&#039;&#039; station within &#039;&#039;Ara Martis&#039;&#039;. Trying to deploy it at a non-conquest station, on an enemy station, or outside &#039;&#039;Ara Martis&#039;&#039; will fail.&lt;br /&gt;
&lt;br /&gt;
Starting station will be fully infected and will produce both the first Umbral Mission on the mission board, and the Umbral Shop, which will provide more &#039;&#039;&#039;Hacking Tools&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
From that point onward, player can either let the infection slowly spread across warp lanes by itself, or take the hacking tools to any station &#039;&#039;&#039;adjacent &#039;&#039;&#039;to one already infected (over 20%).&lt;br /&gt;
&lt;br /&gt;
Getting any station to 50% infection (via the missions or naturally) will produce the Umbral Shop which functions identically to one at any [[Factions|faction]] Headquarters station.&lt;br /&gt;
&lt;br /&gt;
At 100% infection the station will slowly infect adjacent stations connected via gate lanes. Infected stations will be shown on the Map with the Umbral Logo beside the current owner symbol.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Umbral Missions&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Umbral missions can be found behing the Umbral logo on the Mission Board. Click the logo to open up the hidden mission window.&lt;br /&gt;
&lt;br /&gt;
[[File:Umbral.mission.png]]&lt;br /&gt;
&lt;br /&gt;
Umbral missions serve to both boost the infection rate, typically by 35%-45% per mission, and to reward the player with a relatively large sum of both [[Credits]] and [[Faction Currencies|Mars Commendations]], which can be used in Umbral and HQ Shops to purchase premium items, and to buy size-5+ ships.&lt;br /&gt;
&lt;br /&gt;
[[File:Umbral.mission.done.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Game World]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Power&amp;diff=3944</id>
		<title>Power</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Power&amp;diff=3944"/>
		<updated>2026-08-01T13:42:08Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Power Caluclations Page.png|thumb|297x297px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power&#039;&#039;&#039; is the represents both the actual ship stat &amp;quot;power&amp;quot;, and generally speaking, all specific types of power a ship may posses - such as &amp;quot;combat power&amp;quot;, &amp;quot;salvage power&amp;quot;, &amp;quot;drone power&amp;quot; and many others. It affects everything a ship does, and can be modified, scaled and changed.&lt;br /&gt;
&lt;br /&gt;
== The Five+ PowerStats ==&lt;br /&gt;
&lt;br /&gt;
The game tracks many separate power values. They are stored independently and used by different systems.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | Stat !! What is it? !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Power&amp;lt;/code&amp;gt; || This is a general type of power that, if it exists on a turret or a module, will mirror into some of the other &#039;&#039;specific&#039;&#039; power types the ship has. || Combat, Mining and Salvage power types will count this Power as their own.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Combat Power&amp;lt;/code&amp;gt; || Applies when doing damage. || All weapons use it and as a rule of thumb, very roughly, a ship&#039;s DPS will be total Combat Power / fire rate / 5.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Mining Power&amp;lt;/code&amp;gt; || Applies when mining asteroids || Same DPS as combat power but only against asteroids.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Salvage Power&amp;lt;/code&amp;gt; || Applies when salvaging scrap || Same DPS as combat power but only against wrecks.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Drone Power&amp;lt;/code&amp;gt; || Applies to drones and whatever they do. || Exceptions are drones that don&#039;t actually do any damage to anything, which is beside the point.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Torpedo Power&amp;lt;/code&amp;gt; || Similar to combat Power but torpedo specific. || Unclear why this is separate for torpedoes, but it is.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are even more different powers, like &amp;lt;code&amp;gt;Repair Power&amp;lt;/code&amp;gt; which is used when repairing a ship&#039;s armor or shields, but these are not as relevant to players.&lt;br /&gt;
&lt;br /&gt;
== Base Power applies to some other Powers ==&lt;br /&gt;
&lt;br /&gt;
Anything that adds &amp;lt;code&amp;gt;Power&amp;lt;/code&amp;gt; (the &#039;&#039;Power&#039;&#039; Power) adds the same amount to &amp;lt;code&amp;gt;Combat Power&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Mining Power&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Salvage Power&amp;lt;/code&amp;gt;. It will not be added to any of the other types (Torpedo, Drone, etc). This is useful when kitting multi-role ships - if you&#039;re using a ship in multiple roles by swapping turrets from combat to mining or similar. This way modules that add Power will be useful to any and all activity types.&lt;br /&gt;
&lt;br /&gt;
Normally, ship gear that list a class-specific stat (e.g. a Surface Mining Laser with &amp;lt;code&amp;gt;+1,500 MiningPower&amp;lt;/code&amp;gt;) contribute only to that specific activity - mining power, and will not be useful if the ship is fighting.&lt;br /&gt;
&lt;br /&gt;
If you want to double- (or triple-) down on power, Exotic (purple) gear has three substats along their main stat. The main stat of a weapon is Combat Power. One of the three substats may *also* be Combat Power, while another one may be simply Power. All three are combined and counted when summing up total Combat Power. &lt;br /&gt;
&lt;br /&gt;
== Feed Your Reactors, Polish the Hull, Man the Cannons ==&lt;br /&gt;
&lt;br /&gt;
=== The Reactor ===&lt;br /&gt;
&lt;br /&gt;
A major source of Power Multipliers is the Reactor. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | Reactor usage !! Power modifier&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 50% || +20%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 75% || +10%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 100% || 0%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 125% || -25%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 150% || -50%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;gt; 150% || -75%&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is always optimal to craft your gear (through the use of [[Workshop]] and [[Aspects]] such as &#039;&#039;Solar Powered&#039;&#039;) so your energy usage remains below 50%. This will grant a 20% modifier (with further bonuses to Combat Power from the Combat [[Skills|skill tree]]), multiplying the main three powers on a ship (combat, mining, salvaging).&lt;br /&gt;
&lt;br /&gt;
=== The Hull ===&lt;br /&gt;
&lt;br /&gt;
Aside for Reactor, the [[Drydock]] can upgrade the hull in many ways. Each node along the individual upgrade tracks will upgrade the total power of the ship regarding a certain stat (combat, mining, salvage), and each milestone unlocked grants a lump bonus.&lt;br /&gt;
&lt;br /&gt;
In addition to hull upgrades, varying ship classes have their own innate power modifiers, such as combat hulls having a +30% power (applied to combat power) or a mining hull having +30% power (applied to mining power). See [[Ship List]] for all the ships and their hull bonuses.&lt;br /&gt;
&lt;br /&gt;
=== The Crew ===&lt;br /&gt;
&lt;br /&gt;
See [[Crew]] for crew details. Crew can have different professions, so Miners will boost Mining Power, while Gunners will grant a boost to Combat Power. Crew bonuses added this way count as a separate source of Power and will be multiplied by all normal skill and item multipliers.&lt;br /&gt;
&lt;br /&gt;
Officers also have their own passive bonuses which are added to varying powers - a Mining officer with a passive 2.34% Mining Power will use it to multiply the total if active on a ship.&lt;br /&gt;
&lt;br /&gt;
== Drone Power ==&lt;br /&gt;
&lt;br /&gt;
Drone Power is universally a confusing and often discussed topic because how it applies, and what really happens. The recent revamp (Beta 0.8.1.23) reworked how it is calculated, so here is how it actually works now.&lt;br /&gt;
&lt;br /&gt;
A drone bay&#039;s Drone Power &#039;&#039;&#039;main stat&#039;&#039;&#039; is a live figure computed from three sources, and each drone uses it through a per-turret formula:&lt;br /&gt;
&lt;br /&gt;
*   The individual drone&#039;s own Power: the rating of the turret loaded on that drone. Painters, Scanners and other drones with 0 Power contribute nothing.&lt;br /&gt;
*   The ship&#039;s Drone Power stat: every Drone Power source on the ship (such as a Drone Bay substat) is summed here, then split into an equal share per drone.&lt;br /&gt;
*   The ship&#039;s matching activity Power (Combat/Mining/Salvage): added to each drone as a per-turret share, normalized by the ship&#039;s own turret count.&lt;br /&gt;
&lt;br /&gt;
So a combat drone uses Combat Power, a mining drone uses Mining Power, and so on. Each drone keeps its own loaded turret Power in full, plus a share of the ship&#039;s activity Power, plus an equal slice of the ship&#039;s Drone Power. It is not a single shared pool divided between all drones.&lt;br /&gt;
&lt;br /&gt;
What this means in practice:&lt;br /&gt;
&lt;br /&gt;
*   The drone bay&#039;s &amp;quot;Drone Power&amp;quot; main stat is &#039;&#039;&#039;not cosmetic&#039;&#039;&#039;, it is computed from the real sources above and reflects the actual loadout (all Painters/Scanners means it shows 0).&lt;br /&gt;
*   A Drone Power substat on a Drone Bay (or any other module) is fully added to the ship&#039;s Drone Power total, then split across drones.&lt;br /&gt;
*   Drones draw from the ship&#039;s activity Power, but drones&#039; own Power does &#039;&#039;&#039;not&#039;&#039;&#039; feed back into ship turret damage.&lt;br /&gt;
See Example 3 for a better breakdown.&lt;br /&gt;
&lt;br /&gt;
For general info on drones, please consult [[Drones]].&lt;br /&gt;
&lt;br /&gt;
== Examples of Power Distribution ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1: Salvage &amp;amp; Combat modules don&#039;t mix, which is good ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ship &#039;&#039;Power&#039;&#039; Power:&#039;&#039;&#039; 10,000 Power&lt;br /&gt;
* &#039;&#039;&#039;Installed Salvage Equipment:&#039;&#039;&#039; +1,000 Salvage Power&lt;br /&gt;
* &#039;&#039;&#039;Installed Combat Turret:&#039;&#039;&#039; +1,000 Combat Power&lt;br /&gt;
&lt;br /&gt;
Resulting Stats:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Salvage Power:&#039;&#039;&#039; 11,000 (10,000 Power + 1,000 Salvage Power)&lt;br /&gt;
* &#039;&#039;&#039;Combat Power:&#039;&#039;&#039; 11,000 (10,000 Power + 1,000 Combat Power)&lt;br /&gt;
&lt;br /&gt;
=== Example 2: Torpedo usage ===&lt;br /&gt;
&lt;br /&gt;
Torpedoes are similar to weapons, in that they use both Torpedo and &#039;&#039;normalized&#039;&#039; Combat Power - these are added together and then converted into damage similar to weapons.&lt;br /&gt;
&lt;br /&gt;
=== Example 3: Mining ship with a drone bay ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ship Type:&#039;&#039;&#039; Mining Ship - slots: 1× Surface Mining Laser, 1x Combat Autocannon, 1× Medium Drone Bay&lt;br /&gt;
* &#039;&#039;&#039;Ship Power:&#039;&#039;&#039; 10,000 Power - coming from various modules&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Module !! Stat line !! Activity&lt;br /&gt;
|-&lt;br /&gt;
|1× Medium Drone Bay || &amp;lt;code&amp;gt;+2,000 Drone Power main stat, +1000 Drone Power substat&amp;lt;/code&amp;gt; || The main stat is a live computed figure, not fixed. The +1000 substat is added to the Drone Power total and any drone can use its share.&lt;br /&gt;
|-&lt;br /&gt;
|1× Surface Mining Laser || &amp;lt;code&amp;gt;+1,500 Mining Power&amp;lt;/code&amp;gt; || This is added to Mining Power and will be usable by Mining Drones&lt;br /&gt;
|-&lt;br /&gt;
|1× Combat Autocannon || &amp;lt;code&amp;gt;+1,500 Combat Power&amp;lt;/code&amp;gt; || This is added to Combat Power and will be usable by Combat Drones&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resulting ship-side Power stats ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mining Power&#039;&#039;&#039; = (10,000 (Base) + 1,500 (mining laser)) * 130% (mining hull) = &#039;&#039;&#039;14,950&#039;&#039;&#039; - This is the amount the ship mines with when firing the mining laser&lt;br /&gt;
* &#039;&#039;&#039;Combat Power&#039;&#039;&#039; = 10,000 (Base) + 1,500 (autocannon) = &#039;&#039;&#039;11,500&#039;&#039;&#039; - This is the amount the ship fights with with when firing the autocannon&lt;br /&gt;
* &#039;&#039;&#039;Salvage Power&#039;&#039;&#039; = 10,000 (Base) = &#039;&#039;&#039;10,000&#039;&#039;&#039; - no salvage gear, but the Salvage Power still exists and will show up in Ship Info stats&lt;br /&gt;
* &#039;&#039;&#039;Drone Power&#039;&#039;&#039; = +1,000 (Modules or turrets with a substat explicitly adding &amp;quot;+xy Drone Power&amp;quot;) = &#039;&#039;&#039;1,000&#039;&#039;&#039;:  The main stat of the drone bay is a computed figure, not an extra fixed lump. The individual mining or combat drones give their bonuses to mining and combat power pools instead, and each drone also gets an equal slice of this 1,000.&lt;br /&gt;
&lt;br /&gt;
So, if a number of drones are doing mining, they use:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Per mining drone&#039;&#039;&#039; = (its own turret Power) + a per-turret share of 14,950 (Mining Power) + (1,000 Drone Power) ÷ number of drones, each drone fights with this amount. More drones, less of the Drone Power slice each, but more resilient to being destroyed. If you have half drones mining, half salvaging (an ideal example for actual [[Industrial Ops]] missions), then the salvage drones would dip into:&lt;br /&gt;
*&#039;&#039;&#039;Per salvage drone&#039;&#039;&#039; = (its own turret Power) + a per-turret share of 10,000 (Salvage Power) + (1,000 Drone Power) ÷ number of drones - each drone fights with this amount.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Power&amp;diff=3943</id>
		<title>Power</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Power&amp;diff=3943"/>
		<updated>2026-08-01T13:41:17Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Power Caluclations Page.png|thumb|297x297px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power&#039;&#039;&#039; is the represents both the actual ship stat &amp;quot;power&amp;quot;, and generally speaking, all specific types of power a ship may posses - such as &amp;quot;combat power&amp;quot;, &amp;quot;salvage power&amp;quot;, &amp;quot;drone power&amp;quot; and many others. It affects everything a ship does, and can be modified, scaled and changed.&lt;br /&gt;
&lt;br /&gt;
== The Five+ PowerStats ==&lt;br /&gt;
&lt;br /&gt;
The game tracks many separate power values. They are stored independently and used by different systems.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | Stat !! What is it? !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Power&amp;lt;/code&amp;gt; || This is a general type of power that, if it exists on a turret or a module, will mirror into some of the other &#039;&#039;specific&#039;&#039; power types the ship has. || Combat, Mining and Salvage power types will count this Power as their own.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Combat Power&amp;lt;/code&amp;gt; || Applies when doing damage. || All weapons use it and as a rule of thumb, very roughly, a ship&#039;s DPS will be total Combat Power / fire rate / 5.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Mining Power&amp;lt;/code&amp;gt; || Applies when mining asteroids || Same DPS as combat power but only against asteroids.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Salvage Power&amp;lt;/code&amp;gt; || Applies when salvaging scrap || Same DPS as combat power but only against wrecks.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Drone Power&amp;lt;/code&amp;gt; || Applies to drones and whatever they do. || Exceptions are drones that don&#039;t actually do any damage to anything, which is beside the point.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Torpedo Power&amp;lt;/code&amp;gt; || Similar to combat Power but torpedo specific. || Unclear why this is separate for torpedoes, but it is.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are even more different powers, like &amp;lt;code&amp;gt;Repair Power&amp;lt;/code&amp;gt; which is used when repairing a ship&#039;s armor or shields, but these are not as relevant to players.&lt;br /&gt;
&lt;br /&gt;
== Base Power applies to some other Powers ==&lt;br /&gt;
&lt;br /&gt;
Anything that adds &amp;lt;code&amp;gt;Power&amp;lt;/code&amp;gt; (the &#039;&#039;Power&#039;&#039; Power) adds the same amount to &amp;lt;code&amp;gt;Combat Power&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Mining Power&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Salvage Power&amp;lt;/code&amp;gt;. It will not be added to any of the other types (Torpedo, Drone, etc). This is useful when kitting multi-role ships - if you&#039;re using a ship in multiple roles by swapping turrets from combat to mining or similar. This way modules that add Power will be useful to any and all activity types.&lt;br /&gt;
&lt;br /&gt;
Normally, ship gear that list a class-specific stat (e.g. a Surface Mining Laser with &amp;lt;code&amp;gt;+1,500 MiningPower&amp;lt;/code&amp;gt;) contribute only to that specific activity - mining power, and will not be useful if the ship is fighting.&lt;br /&gt;
&lt;br /&gt;
If you want to double- (or triple-) down on power, Exotic (purple) gear has three substats along their main stat. The main stat of a weapon is Combat Power. One of the three substats may *also* be Combat Power, while another one may be simply Power. All three are combined and counted when summing up total Combat Power. &lt;br /&gt;
&lt;br /&gt;
== Feed Your Reactors, Polish the Hull, Man the Cannons ==&lt;br /&gt;
&lt;br /&gt;
=== The Reactor ===&lt;br /&gt;
&lt;br /&gt;
A major source of Power Multipliers is the Reactor. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | Reactor usage !! Power modifier&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 50% || +20%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 75% || +10%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 100% || 0%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 125% || -25%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 150% || -50%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;gt; 150% || -75%&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is always optimal to craft your gear (through the use of [[Workshop]] and [[Aspects]] such as &#039;&#039;Solar Powered&#039;&#039;) so your energy usage remains below 50%. This will grant a 20% modifier (with further bonuses to Combat Power from the Combat [[Skills|skill tree]]), multiplying the main three powers on a ship (combat, mining, salvaging).&lt;br /&gt;
&lt;br /&gt;
=== The Hull ===&lt;br /&gt;
&lt;br /&gt;
Aside for Reactor, the [[Drydock]] can upgrade the hull in many ways. Each node along the individual upgrade tracks will upgrade the total power of the ship regarding a certain stat (combat, mining, salvage), and each milestone unlocked grants a lump bonus.&lt;br /&gt;
&lt;br /&gt;
In addition to hull upgrades, varying ship classes have their own innate power modifiers, such as combat hulls having a +30% power (applied to combat power) or a mining hull having +30% power (applied to mining power). See [[Ship List]] for all the ships and their hull bonuses.&lt;br /&gt;
&lt;br /&gt;
=== The Crew ===&lt;br /&gt;
&lt;br /&gt;
See [[Crew]] for crew details. Crew can have different professions, so Miners will boost Mining Power, while Gunners will grant a boost to Combat Power. Crew bonuses added this way count as a separate source of Power and will be multiplied by all normal skill and item multipliers.&lt;br /&gt;
&lt;br /&gt;
Officers also have their own passive bonuses which are added to varying powers - a Mining officer with a passive 2.34% Mining Power will use it to multiply the total if active on a ship.&lt;br /&gt;
&lt;br /&gt;
== Drone Power ==&lt;br /&gt;
&lt;br /&gt;
Drone Power is universally a confusing and often discussed topic because how it applies, and what really happens. The recent revamp reworked how it is calculated, so here is how it actually works now.&lt;br /&gt;
&lt;br /&gt;
A drone bay&#039;s Drone Power &#039;&#039;&#039;main stat&#039;&#039;&#039; is a live figure computed from three sources, and each drone uses it through a per-turret formula:&lt;br /&gt;
&lt;br /&gt;
*   The individual drone&#039;s own Power: the rating of the turret loaded on that drone. Painters, Scanners and other drones with 0 Power contribute nothing.&lt;br /&gt;
*   The ship&#039;s Drone Power stat: every Drone Power source on the ship (such as a Drone Bay substat) is summed here, then split into an equal share per drone.&lt;br /&gt;
*   The ship&#039;s matching activity Power (Combat/Mining/Salvage): added to each drone as a per-turret share, normalized by the ship&#039;s own turret count.&lt;br /&gt;
&lt;br /&gt;
So a combat drone uses Combat Power, a mining drone uses Mining Power, and so on. Each drone keeps its own loaded turret Power in full, plus a share of the ship&#039;s activity Power, plus an equal slice of the ship&#039;s Drone Power. It is not a single shared pool divided between all drones.&lt;br /&gt;
&lt;br /&gt;
What this means in practice:&lt;br /&gt;
&lt;br /&gt;
*   The drone bay&#039;s &amp;quot;Drone Power&amp;quot; main stat is &#039;&#039;&#039;not cosmetic&#039;&#039;&#039;, it is computed from the real sources above and reflects the actual loadout (all Painters/Scanners means it shows 0).&lt;br /&gt;
*   A Drone Power substat on a Drone Bay (or any other module) is fully added to the ship&#039;s Drone Power total, then split across drones.&lt;br /&gt;
*   Drones draw from the ship&#039;s activity Power, but drones&#039; own Power does &#039;&#039;&#039;not&#039;&#039;&#039; feed back into ship turret damage.&lt;br /&gt;
See Example 3 for a better breakdown.&lt;br /&gt;
&lt;br /&gt;
For general info on drones, please consult [[Drones]].&lt;br /&gt;
&lt;br /&gt;
== Examples of Power Distribution ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1: Salvage &amp;amp; Combat modules don&#039;t mix, which is good ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ship &#039;&#039;Power&#039;&#039; Power:&#039;&#039;&#039; 10,000 Power&lt;br /&gt;
* &#039;&#039;&#039;Installed Salvage Equipment:&#039;&#039;&#039; +1,000 Salvage Power&lt;br /&gt;
* &#039;&#039;&#039;Installed Combat Turret:&#039;&#039;&#039; +1,000 Combat Power&lt;br /&gt;
&lt;br /&gt;
Resulting Stats:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Salvage Power:&#039;&#039;&#039; 11,000 (10,000 Power + 1,000 Salvage Power)&lt;br /&gt;
* &#039;&#039;&#039;Combat Power:&#039;&#039;&#039; 11,000 (10,000 Power + 1,000 Combat Power)&lt;br /&gt;
&lt;br /&gt;
=== Example 2: Torpedo usage ===&lt;br /&gt;
&lt;br /&gt;
Torpedoes are similar to weapons, in that they use both Torpedo and &#039;&#039;normalized&#039;&#039; Combat Power - these are added together and then converted into damage similar to weapons.&lt;br /&gt;
&lt;br /&gt;
=== Example 3: Mining ship with a drone bay ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ship Type:&#039;&#039;&#039; Mining Ship - slots: 1× Surface Mining Laser, 1x Combat Autocannon, 1× Medium Drone Bay&lt;br /&gt;
* &#039;&#039;&#039;Ship Power:&#039;&#039;&#039; 10,000 Power - coming from various modules&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Module !! Stat line !! Activity&lt;br /&gt;
|-&lt;br /&gt;
|1× Medium Drone Bay || &amp;lt;code&amp;gt;+2,000 Drone Power main stat, +1000 Drone Power substat&amp;lt;/code&amp;gt; || The main stat is a live computed figure, not fixed. The +1000 substat is added to the Drone Power total and any drone can use its share.&lt;br /&gt;
|-&lt;br /&gt;
|1× Surface Mining Laser || &amp;lt;code&amp;gt;+1,500 Mining Power&amp;lt;/code&amp;gt; || This is added to Mining Power and will be usable by Mining Drones&lt;br /&gt;
|-&lt;br /&gt;
|1× Combat Autocannon || &amp;lt;code&amp;gt;+1,500 Combat Power&amp;lt;/code&amp;gt; || This is added to Combat Power and will be usable by Combat Drones&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resulting ship-side Power stats ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mining Power&#039;&#039;&#039; = (10,000 (Base) + 1,500 (mining laser)) * 130% (mining hull) = &#039;&#039;&#039;14,950&#039;&#039;&#039; - This is the amount the ship mines with when firing the mining laser&lt;br /&gt;
* &#039;&#039;&#039;Combat Power&#039;&#039;&#039; = 10,000 (Base) + 1,500 (autocannon) = &#039;&#039;&#039;11,500&#039;&#039;&#039; - This is the amount the ship fights with with when firing the autocannon&lt;br /&gt;
* &#039;&#039;&#039;Salvage Power&#039;&#039;&#039; = 10,000 (Base) = &#039;&#039;&#039;10,000&#039;&#039;&#039; - no salvage gear, but the Salvage Power still exists and will show up in Ship Info stats&lt;br /&gt;
* &#039;&#039;&#039;Drone Power&#039;&#039;&#039; = +1,000 (Modules or turrets with a substat explicitly adding &amp;quot;+xy Drone Power&amp;quot;) = &#039;&#039;&#039;1,000&#039;&#039;&#039;:  The main stat of the drone bay is a computed figure, not an extra fixed lump. The individual mining or combat drones give their bonuses to mining and combat power pools instead, and each drone also gets an equal slice of this 1,000.&lt;br /&gt;
&lt;br /&gt;
So, if a number of drones are doing mining, they use:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Per mining drone&#039;&#039;&#039; = (its own turret Power) + a per-turret share of 14,950 (Mining Power) + (1,000 Drone Power) ÷ number of drones, each drone fights with this amount. More drones, less of the Drone Power slice each, but more resilient to being destroyed. If you have half drones mining, half salvaging (an ideal example for actual [[Industrial Ops]] missions), then the salvage drones would dip into:&lt;br /&gt;
*&#039;&#039;&#039;Per salvage drone&#039;&#039;&#039; = (its own turret Power) + a per-turret share of 10,000 (Salvage Power) + (1,000 Drone Power) ÷ number of drones - each drone fights with this amount.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Power&amp;diff=3942</id>
		<title>Power</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Power&amp;diff=3942"/>
		<updated>2026-08-01T13:34:11Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Power Caluclations Page.png|thumb|297x297px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Power&#039;&#039;&#039; is the represents both the actual ship stat &amp;quot;power&amp;quot;, and generally speaking, all specific types of power a ship may posses - such as &amp;quot;combat power&amp;quot;, &amp;quot;salvage power&amp;quot;, &amp;quot;drone power&amp;quot; and many others. It affects everything a ship does, and can be modified, scaled and changed.&lt;br /&gt;
&lt;br /&gt;
== The Five+ PowerStats ==&lt;br /&gt;
&lt;br /&gt;
The game tracks many separate power values. They are stored independently and used by different systems.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | Stat !! What is it? !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Power&amp;lt;/code&amp;gt; || This is a general type of power that, if it exists on a turret or a module, will mirror into some of the other &#039;&#039;specific&#039;&#039; power types the ship has. || Combat, Mining and Salvage power types will count this Power as their own.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Combat Power&amp;lt;/code&amp;gt; || Applies when doing damage. || All weapons use it and as a rule of thumb, very roughly, a ship&#039;s DPS will be total Combat Power / fire rate / 5.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Mining Power&amp;lt;/code&amp;gt; || Applies when mining asteroids || Same DPS as combat power but only against asteroids.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Salvage Power&amp;lt;/code&amp;gt; || Applies when salvaging scrap || Same DPS as combat power but only against wrecks.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Drone Power&amp;lt;/code&amp;gt; || Applies to drones and whatever they do. || Exceptions are drones that don&#039;t actually do any damage to anything, which is beside the point.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Torpedo Power&amp;lt;/code&amp;gt; || Similar to combat Power but torpedo specific. || Unclear why this is separate for torpedoes, but it is.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are even more different powers, like &amp;lt;code&amp;gt;Repair Power&amp;lt;/code&amp;gt; which is used when repairing a ship&#039;s armor or shields, but these are not as relevant to players.&lt;br /&gt;
&lt;br /&gt;
== Base Power applies to some other Powers ==&lt;br /&gt;
&lt;br /&gt;
Anything that adds &amp;lt;code&amp;gt;Power&amp;lt;/code&amp;gt; (the &#039;&#039;Power&#039;&#039; Power) adds the same amount to &amp;lt;code&amp;gt;Combat Power&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Mining Power&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Salvage Power&amp;lt;/code&amp;gt;. It will not be added to any of the other types (Torpedo, Drone, etc). This is useful when kitting multi-role ships - if you&#039;re using a ship in multiple roles by swapping turrets from combat to mining or similar. This way modules that add Power will be useful to any and all activity types.&lt;br /&gt;
&lt;br /&gt;
Normally, ship gear that list a class-specific stat (e.g. a Surface Mining Laser with &amp;lt;code&amp;gt;+1,500 MiningPower&amp;lt;/code&amp;gt;) contribute only to that specific activity - mining power, and will not be useful if the ship is fighting.&lt;br /&gt;
&lt;br /&gt;
If you want to double- (or triple-) down on power, Exotic (purple) gear has three substats along their main stat. The main stat of a weapon is Combat Power. One of the three substats may *also* be Combat Power, while another one may be simply Power. All three are combined and counted when summing up total Combat Power. &lt;br /&gt;
&lt;br /&gt;
== Feed Your Reactors, Polish the Hull, Man the Cannons ==&lt;br /&gt;
&lt;br /&gt;
=== The Reactor ===&lt;br /&gt;
&lt;br /&gt;
A major source of Power Multipliers is the Reactor. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:18%;&amp;quot; | Reactor usage !! Power modifier&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 50% || +20%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 75% || +10%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 100% || 0%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 125% || -25%&lt;br /&gt;
|-&lt;br /&gt;
| ≤ 150% || -50%&lt;br /&gt;
|-&lt;br /&gt;
| &amp;gt; 150% || -75%&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
It is always optimal to craft your gear (through the use of [[Workshop]] and [[Aspects]] such as &#039;&#039;Solar Powered&#039;&#039;) so your energy usage remains below 50%. This will grant a 20% modifier (with further bonuses to Combat Power from the Combat [[Skills|skill tree]]), multiplying the main three powers on a ship (combat, mining, salvaging).&lt;br /&gt;
&lt;br /&gt;
=== The Hull ===&lt;br /&gt;
&lt;br /&gt;
Aside for Reactor, the [[Drydock]] can upgrade the hull in many ways. Each node along the individual upgrade tracks will upgrade the total power of the ship regarding a certain stat (combat, mining, salvage), and each milestone unlocked grants a lump bonus.&lt;br /&gt;
&lt;br /&gt;
In addition to hull upgrades, varying ship classes have their own innate power modifiers, such as combat hulls having a +30% power (applied to combat power) or a mining hull having +30% power (applied to mining power). See [[Ship List]] for all the ships and their hull bonuses.&lt;br /&gt;
&lt;br /&gt;
=== The Crew ===&lt;br /&gt;
&lt;br /&gt;
See [[Crew]] for crew details. Crew can have different professions, so Miners will boost Mining Power, while Gunners will grant a boost to Combat Power. Crew bonuses added this way count as a separate source of Power and will be multiplied by all normal skill and item multipliers.&lt;br /&gt;
&lt;br /&gt;
Officers also have their own passive bonuses which are added to varying powers - a Mining officer with a passive 2.34% Mining Power will use it to multiply the total if active on a ship.&lt;br /&gt;
&lt;br /&gt;
== Drone Power ==&lt;br /&gt;
&lt;br /&gt;
Drone Power is universally a confusing and often discussed topic because how it applies, and what really happens. The recent revamp reworked how it is calculated, so here is how it actually works now.&lt;br /&gt;
&lt;br /&gt;
DA drone bay&#039;s Drone Power &#039;&#039;&#039;main stat&#039;&#039;&#039; is a live figure computed from three sources, and each drone uses it through a per-turret formula:&lt;br /&gt;
&lt;br /&gt;
*   The individual drone&#039;s own Power - the rating of the turret loaded on that drone. Painters, Scanners and other drones with 0 Power contribute nothing.&lt;br /&gt;
*   The ship&#039;s Drone Power stat - every Drone Power source on the ship (such as a Drone Bay substat) is summed here, then split into an equal share per drone.&lt;br /&gt;
*   The ship&#039;s matching activity Power (Combat/Mining/Salvage) - added to each drone as a per-turret share, normalized by the ship&#039;s own turret count.&lt;br /&gt;
&lt;br /&gt;
So a combat drone uses Combat Power, a mining drone uses Mining Power, and so on. Each drone keeps its own loaded turret Power in full, plus a share of the ship&#039;s activity Power, plus an equal slice of the ship&#039;s Drone Power. It is not a single shared pool divided between all drones.&lt;br /&gt;
&lt;br /&gt;
What this means in practice:&lt;br /&gt;
&lt;br /&gt;
*   The drone bay&#039;s &amp;quot;Drone Power&amp;quot; main stat is &#039;&#039;&#039;not cosmetic&#039;&#039;&#039;, it is computed from the real sources above and reflects the actual loadout (all Painters/Scanners means it shows 0).&lt;br /&gt;
*   A `+Drone Power` substat on a Drone Bay (or any other module) is fully added to the ship&#039;s Drone Power total, then split across drones.&lt;br /&gt;
*   Drones draw from the ship&#039;s activity Power, but drones&#039; own Power does &#039;&#039;&#039;not&#039;&#039;&#039; feed back into ship turret damage.&lt;br /&gt;
See Example 3 for a better breakdown.&lt;br /&gt;
&lt;br /&gt;
For general info on drones, please consult [[Drones]].&lt;br /&gt;
&lt;br /&gt;
== Examples of Power Distribution ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1: Salvage &amp;amp; Combat modules don&#039;t mix, which is good ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ship &#039;&#039;Power&#039;&#039; Power:&#039;&#039;&#039; 10,000 Power&lt;br /&gt;
* &#039;&#039;&#039;Installed Salvage Equipment:&#039;&#039;&#039; +1,000 Salvage Power&lt;br /&gt;
* &#039;&#039;&#039;Installed Combat Turret:&#039;&#039;&#039; +1,000 Combat Power&lt;br /&gt;
&lt;br /&gt;
Resulting Stats:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Salvage Power:&#039;&#039;&#039; 11,000 (10,000 Power + 1,000 Salvage Power)&lt;br /&gt;
* &#039;&#039;&#039;Combat Power:&#039;&#039;&#039; 11,000 (10,000 Power + 1,000 Combat Power)&lt;br /&gt;
&lt;br /&gt;
=== Example 2: Torpedo usage ===&lt;br /&gt;
&lt;br /&gt;
Torpedoes are similar to weapons, in that they use both Torpedo and &#039;&#039;normalized&#039;&#039; Combat Power - these are added together and then converted into damage similar to weapons.&lt;br /&gt;
&lt;br /&gt;
=== Example 3: Mining ship with a drone bay ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ship Type:&#039;&#039;&#039; Mining Ship - slots: 1× Surface Mining Laser, 1x Combat Autocannon, 1× Medium Drone Bay&lt;br /&gt;
* &#039;&#039;&#039;Ship Power:&#039;&#039;&#039; 10,000 Power - coming from various modules&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Module !! Stat line !! Activity&lt;br /&gt;
|-&lt;br /&gt;
|1× Medium Drone Bay || &amp;lt;code&amp;gt;+2,000 Drone Power main stat, +1000 Drone Power substat&amp;lt;/code&amp;gt; || Ignore the main display on the item itself, it&#039;s cosmetic. The +1000 is actually added to the Drone Power total any any drone can use it.&lt;br /&gt;
|-&lt;br /&gt;
|1× Surface Mining Laser || &amp;lt;code&amp;gt;+1,500 Mining Power&amp;lt;/code&amp;gt; || This is added to Mining Power and will be usable by Mining Drones&lt;br /&gt;
|-&lt;br /&gt;
|1× Combat Autocannon || &amp;lt;code&amp;gt;+1,500 Combat Power&amp;lt;/code&amp;gt; || This is added to Combat Power and will be usable by Combat Drones&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Resulting ship-side Power stats ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mining Power&#039;&#039;&#039; = (10,000 (Base) + 1,500 (mining laser)) * 130% (mining hull) = &#039;&#039;&#039;14,950&#039;&#039;&#039; - This is the amount the ship mines with when firing the mining laser&lt;br /&gt;
* &#039;&#039;&#039;Combat Power&#039;&#039;&#039; = 10,000 (Base) + 1,500 (autocannon) = &#039;&#039;&#039;11,500&#039;&#039;&#039; - This is the amount the ship fights with with when firing the autocannon&lt;br /&gt;
* &#039;&#039;&#039;Salvage Power&#039;&#039;&#039; = 10,000 (Base) = &#039;&#039;&#039;10,000&#039;&#039;&#039; - no salvage gear, but the Salvage Power still exists and will show up in Ship Info stats&lt;br /&gt;
* &#039;&#039;&#039;Drone Power&#039;&#039;&#039; = +1,000 (Modules or turrets with a substat explicitly adding &amp;quot;+xy Drone Power&amp;quot; ) + 0 (Drydock/officers) = &#039;&#039;&#039;1,000&#039;&#039;&#039; - Counterintuitive, but we ignore the main stat of the drone bay. The individual mining or combat drones give their bonuses to mining and combat power pools instead. In the ship Info display the UI will wrongly also add the main +2,000 to the total drone power, however this is not the case in reality.&lt;br /&gt;
&lt;br /&gt;
So, if a number of drones are doing mining, they use:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Mining Pool&#039;&#039;&#039; = 14,950 (Mining Power) + 1,000 (Drone Power) + (xy) Individual Mining Drones Combined Power = &#039;&#039;&#039;15,950 + xy&#039;&#039;&#039; - This amount is divided across all mining drones (and turrets), after applying a stacking penalty (not relevant for this example). More drones, less power each, but more resilient to being destroyed.&lt;br /&gt;
&lt;br /&gt;
If you have half drones mining, half salvaging (an ideal example for actual [[Industrial Ops]] missions), then the salvage drones would dip into:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Salvage Pool&#039;&#039;&#039; = 10,000 (Salvage Power) + 1,000 (Drone Power) + (xy) Individual Salvage Drones Combined Power = &#039;&#039;&#039;12,000 + xy&#039;&#039;&#039; - This amount is again divided across the salvage drones (and turrets), after a stacking penalty for multiple turrets (where drones also count as turrets).&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Drones&amp;diff=3941</id>
		<title>Drones</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Drones&amp;diff=3941"/>
		<updated>2026-08-01T13:25:03Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Drone Power */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Drone Gathering.png|thumb|500px|right|Drones doing drone work]]&lt;br /&gt;
[[File:Droneskilltree.png|thumb|Drone Skill Tree|320px|right]]&lt;br /&gt;
Drones are autonomous craft deployed from a ship with a Drone Bay, which can be configured to do any type of activity - [[Combat]], [[Mining]], [[Salvage]], or utility.&lt;br /&gt;
&lt;br /&gt;
The individual setup of drones is entirely up to the Player. It&#039;s quite common to use drones for defense while main turrets are dedicated to mining, or vice versa.&lt;br /&gt;
&lt;br /&gt;
[[Echo|ECHO]] can use Drones, and will actively deploy and return them to the Ship when it decides to leave a POI. The Player can also deploy them manually by clicking the &amp;quot;Deploy&amp;quot; button at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
Drones can be destroyed by environmental hazards or by enemy activity. When destroyed, the Drone Bay will manufacture new ones after a short delay. Leaving drones behind when doing an Emergency Jump is also not an issue, as the drones will be reset by the time they are re-deployed.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Drone types&#039;&#039;&#039; ==&lt;br /&gt;
Available types depend on the skills unlocked in the Drone Tree. &lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Basic Drones (available with out Skills)&lt;br /&gt;
|Combat Laser&lt;br /&gt;
|Fast Short ranged laser Drone.&lt;br /&gt;
|-&lt;br /&gt;
|Mining Surface&lt;br /&gt;
|Surface mining laser Drone.&lt;br /&gt;
|-&lt;br /&gt;
|Salvage Surface&lt;br /&gt;
|Surface Salvaging laser Drone.&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&#039; | Advanced Drones (unlocked with &#039;&#039;&#039;Advanced Drone Access&#039;&#039;&#039; skill)&lt;br /&gt;
|-&lt;br /&gt;
|Combat Missile&lt;br /&gt;
|Long range missile Drone.&lt;br /&gt;
|-&lt;br /&gt;
|Mining Core&lt;br /&gt;
|Drills into the Core of the Asteroid, Core mining.&lt;br /&gt;
|-&lt;br /&gt;
|Salvage Harpoon&lt;br /&gt;
|Harpoons onto Wreackiges, Core Salvaging.&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&#039; | Utility Drones {{Beta}} (unlocked With &#039;&#039;&#039;Utility Drone Access&#039;&#039;&#039; skill)&lt;br /&gt;
|-&lt;br /&gt;
|Painter&lt;br /&gt;
| -15% Damage Reduction on target, Won&#039;t stack.&lt;br /&gt;
|-&lt;br /&gt;
|Scanner &lt;br /&gt;
|Increase yield by 20% on target, Won&#039;t stack.&lt;br /&gt;
|-&lt;br /&gt;
|Shield Repair&lt;br /&gt;
|Repair Beam, restores Shields.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Advanced/Utility (beta) Drone Access skill&lt;br /&gt;
![[File:Drone Skill unlocks.png]]&lt;br /&gt;
![[File:Drone Types.png]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Drones.png|500px|right|thumb|Example Drone Layout]]&lt;br /&gt;
== &#039;&#039;&#039;Behavior&#039;&#039;&#039; ==&lt;br /&gt;
Once released, drones act on their own for most activities. They can be re-focused on a single Object by clicking it - be it an asteroid or a combat vessel.&lt;br /&gt;
&lt;br /&gt;
In combat all drones will focus the target clicked or that attacks the player first unless ordered otherwise.&lt;br /&gt;
&lt;br /&gt;
While [[Mining]] or [[Salvage]], once set free, drones start targeting everything in sight. When autopiloting/idling, [[Echo|ECHO]] will direct them to targets to focus on - whichever target ECHO chooses first.        &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Drone Power UPDATED IN BETA 0.8.1.23&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Drones don&#039;t have their own isolated Power. When a drone fires, each drone fights with its own attack power built from three sources by a per-turret formula [[Power]]:&lt;br /&gt;
&lt;br /&gt;
*   The drone&#039;s own Power,  the rating of the turret loaded on that individual drone.&lt;br /&gt;
*   The ship&#039;s matching activity Power (Combat/Mining/Salvage) - added in as a per-turret share, normalized by the ship&#039;s own turret count.&lt;br /&gt;
*   The ship&#039;s &amp;quot;Drone Power&amp;quot; stat - split into an equal share per drone.&lt;br /&gt;
&lt;br /&gt;
In rough terms:&lt;br /&gt;
&lt;br /&gt;
*   Each drone keeps its own loaded turret Power in full, plus a share of the ship&#039;s activity Power, plus an equal slice of the ship&#039;s Drone Power. It is not one big pool that gets divided up between all drones - a strong drone stays strong.&lt;br /&gt;
*   Adding more drone slots adds firepower overall. Only the slice of the ship&#039;s &amp;quot;Drone Power&amp;quot; stat gets thinner as more drones share it; a drone&#039;s own turret Power and its activity Power share do not drop.&lt;br /&gt;
*   The bay&#039;s tooltip &amp;quot;Drone Power&amp;quot; figure is a live computed sum of these sources, not a fixed cosmetic number.&lt;br /&gt;
*   Drone shots feed off the ship&#039;s matching activity Power (a mining drone would use Mining Power). The reverse is not true - drones&#039; own Power does &#039;&#039;&#039;not&#039;&#039;&#039; contribute to ship turret damage.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Drone Bays and Skills&#039;&#039;&#039; ==&lt;br /&gt;
Drone Bays exist in all rarities and sizes. Depending on the Size the bay can store and control  different amounts of Drones. &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Drone Bay  Slots  Base off Sizes&lt;br /&gt;
|-&lt;br /&gt;
!Size&lt;br /&gt;
![[File:Small Drone Bay.png|thumb|center|Small]]&lt;br /&gt;
![[File:Medium Drone Bay.png|thumb|center|Medium]]&lt;br /&gt;
![[File:Drone Bay Large.png|thumb|center|Large]]&lt;br /&gt;
|-&lt;br /&gt;
!Base Drones&lt;br /&gt;
|3 &lt;br /&gt;
|6 &lt;br /&gt;
|9 &lt;br /&gt;
|-&lt;br /&gt;
!Aspects&lt;br /&gt;
| 2x Extended Drone Bay +1: +2&lt;br /&gt;
| 2x Oversized Drone Bay +2: +4&lt;br /&gt;
| 2x Oversized Drone Bay +2: +4&lt;br /&gt;
|-&lt;br /&gt;
! Skills&lt;br /&gt;
| Drone Squad Expansion / &lt;br /&gt;
Expanded Drone Control: +2&lt;br /&gt;
| Drone Squad Expansion / &lt;br /&gt;
Expanded Drone Control: +2&lt;br /&gt;
| Drone Squad Expansion / &lt;br /&gt;
Expanded Drone Control: +2&lt;br /&gt;
|-&lt;br /&gt;
!Hull Milestones&lt;br /&gt;
| +3&lt;br /&gt;
| +3&lt;br /&gt;
| +3&lt;br /&gt;
|-&lt;br /&gt;
!Total Drones&lt;br /&gt;
| 10&lt;br /&gt;
| 15&lt;br /&gt;
| 18&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;bottom&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Drone slots.png]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are 2 Drone Bay exclusive [[Aspects]] that increase the maximum amount of Drones that can be stored and controlled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Unassigned Drones&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
If a Drone Bay has free/unassigned drone Slots, the game will fill them up randomly. It&#039;s best to choose Drones until all slots are filled. &lt;br /&gt;
&lt;br /&gt;
Drone Bay View:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Drone Bay View.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Drones&amp;diff=3940</id>
		<title>Drones</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Drones&amp;diff=3940"/>
		<updated>2026-08-01T13:23:05Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Drone Gathering.png|thumb|500px|right|Drones doing drone work]]&lt;br /&gt;
[[File:Droneskilltree.png|thumb|Drone Skill Tree|320px|right]]&lt;br /&gt;
Drones are autonomous craft deployed from a ship with a Drone Bay, which can be configured to do any type of activity - [[Combat]], [[Mining]], [[Salvage]], or utility.&lt;br /&gt;
&lt;br /&gt;
The individual setup of drones is entirely up to the Player. It&#039;s quite common to use drones for defense while main turrets are dedicated to mining, or vice versa.&lt;br /&gt;
&lt;br /&gt;
[[Echo|ECHO]] can use Drones, and will actively deploy and return them to the Ship when it decides to leave a POI. The Player can also deploy them manually by clicking the &amp;quot;Deploy&amp;quot; button at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
Drones can be destroyed by environmental hazards or by enemy activity. When destroyed, the Drone Bay will manufacture new ones after a short delay. Leaving drones behind when doing an Emergency Jump is also not an issue, as the drones will be reset by the time they are re-deployed.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Drone types&#039;&#039;&#039; ==&lt;br /&gt;
Available types depend on the skills unlocked in the Drone Tree. &lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Basic Drones (available with out Skills)&lt;br /&gt;
|Combat Laser&lt;br /&gt;
|Fast Short ranged laser Drone.&lt;br /&gt;
|-&lt;br /&gt;
|Mining Surface&lt;br /&gt;
|Surface mining laser Drone.&lt;br /&gt;
|-&lt;br /&gt;
|Salvage Surface&lt;br /&gt;
|Surface Salvaging laser Drone.&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&#039; | Advanced Drones (unlocked with &#039;&#039;&#039;Advanced Drone Access&#039;&#039;&#039; skill)&lt;br /&gt;
|-&lt;br /&gt;
|Combat Missile&lt;br /&gt;
|Long range missile Drone.&lt;br /&gt;
|-&lt;br /&gt;
|Mining Core&lt;br /&gt;
|Drills into the Core of the Asteroid, Core mining.&lt;br /&gt;
|-&lt;br /&gt;
|Salvage Harpoon&lt;br /&gt;
|Harpoons onto Wreackiges, Core Salvaging.&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&#039; | Utility Drones {{Beta}} (unlocked With &#039;&#039;&#039;Utility Drone Access&#039;&#039;&#039; skill)&lt;br /&gt;
|-&lt;br /&gt;
|Painter&lt;br /&gt;
| -15% Damage Reduction on target, Won&#039;t stack.&lt;br /&gt;
|-&lt;br /&gt;
|Scanner &lt;br /&gt;
|Increase yield by 20% on target, Won&#039;t stack.&lt;br /&gt;
|-&lt;br /&gt;
|Shield Repair&lt;br /&gt;
|Repair Beam, restores Shields.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Advanced/Utility (beta) Drone Access skill&lt;br /&gt;
![[File:Drone Skill unlocks.png]]&lt;br /&gt;
![[File:Drone Types.png]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Drones.png|500px|right|thumb|Example Drone Layout]]&lt;br /&gt;
== &#039;&#039;&#039;Behavior&#039;&#039;&#039; ==&lt;br /&gt;
Once released, drones act on their own for most activities. They can be re-focused on a single Object by clicking it - be it an asteroid or a combat vessel.&lt;br /&gt;
&lt;br /&gt;
In combat all drones will focus the target clicked or that attacks the player first unless ordered otherwise.&lt;br /&gt;
&lt;br /&gt;
While [[Mining]] or [[Salvage]], once set free, drones start targeting everything in sight. When autopiloting/idling, [[Echo|ECHO]] will direct them to targets to focus on - whichever target ECHO chooses first.        &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Drone Power&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Drones don&#039;t have their own isolated Power. When a drone fires, each drone fights with its own attack power built from three sources by a per-turret formula [[Power]]:&lt;br /&gt;
&lt;br /&gt;
*   The drone&#039;s own Power,  the rating of the turret loaded on that individual drone.&lt;br /&gt;
*   The ship&#039;s matching activity Power (Combat/Mining/Salvage) - added in as a per-turret share, normalized by the ship&#039;s own turret count.&lt;br /&gt;
*   The ship&#039;s &amp;quot;Drone Power&amp;quot; stat - split into an equal share per drone.&lt;br /&gt;
&lt;br /&gt;
In rough terms:&lt;br /&gt;
&lt;br /&gt;
*   Each drone keeps its own loaded turret Power in full, plus a share of the ship&#039;s activity Power, plus an equal slice of the ship&#039;s Drone Power. It is not one big pool that gets divided up between all drones - a strong drone stays strong.&lt;br /&gt;
*   Adding more drone slots adds firepower overall. Only the slice of the ship&#039;s &amp;quot;Drone Power&amp;quot; stat gets thinner as more drones share it; a drone&#039;s own turret Power and its activity Power share do not drop.&lt;br /&gt;
*   The bay&#039;s tooltip &amp;quot;Drone Power&amp;quot; figure is a live computed sum of these sources, not a fixed cosmetic number.&lt;br /&gt;
*   Drone shots feed off the ship&#039;s matching activity Power (a mining drone would use Mining Power). The reverse is not true - drones&#039; own Power does &#039;&#039;&#039;not&#039;&#039;&#039; contribute to ship turret damage.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Drone Bays and Skills&#039;&#039;&#039; ==&lt;br /&gt;
Drone Bays exist in all rarities and sizes. Depending on the Size the bay can store and control  different amounts of Drones. &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Drone Bay  Slots  Base off Sizes&lt;br /&gt;
|-&lt;br /&gt;
!Size&lt;br /&gt;
![[File:Small Drone Bay.png|thumb|center|Small]]&lt;br /&gt;
![[File:Medium Drone Bay.png|thumb|center|Medium]]&lt;br /&gt;
![[File:Drone Bay Large.png|thumb|center|Large]]&lt;br /&gt;
|-&lt;br /&gt;
!Base Drones&lt;br /&gt;
|3 &lt;br /&gt;
|6 &lt;br /&gt;
|9 &lt;br /&gt;
|-&lt;br /&gt;
!Aspects&lt;br /&gt;
| 2x Extended Drone Bay +1: +2&lt;br /&gt;
| 2x Oversized Drone Bay +2: +4&lt;br /&gt;
| 2x Oversized Drone Bay +2: +4&lt;br /&gt;
|-&lt;br /&gt;
! Skills&lt;br /&gt;
| Drone Squad Expansion / &lt;br /&gt;
Expanded Drone Control: +2&lt;br /&gt;
| Drone Squad Expansion / &lt;br /&gt;
Expanded Drone Control: +2&lt;br /&gt;
| Drone Squad Expansion / &lt;br /&gt;
Expanded Drone Control: +2&lt;br /&gt;
|-&lt;br /&gt;
!Hull Milestones&lt;br /&gt;
| +3&lt;br /&gt;
| +3&lt;br /&gt;
| +3&lt;br /&gt;
|-&lt;br /&gt;
!Total Drones&lt;br /&gt;
| 10&lt;br /&gt;
| 15&lt;br /&gt;
| 18&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;bottom&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Drone slots.png]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are 2 Drone Bay exclusive [[Aspects]] that increase the maximum amount of Drones that can be stored and controlled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Unassigned Drones&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
If a Drone Bay has free/unassigned drone Slots, the game will fill them up randomly. It&#039;s best to choose Drones until all slots are filled. &lt;br /&gt;
&lt;br /&gt;
Drone Bay View:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Drone Bay View.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Drones&amp;diff=3939</id>
		<title>Drones</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Drones&amp;diff=3939"/>
		<updated>2026-08-01T13:21:41Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Drone Gathering.png|thumb|500px|right|Drones doing drone work]]&lt;br /&gt;
[[File:Droneskilltree.png|thumb|Drone Skill Tree|320px|right]]&lt;br /&gt;
Drones are autonomous craft deployed from a ship with a Drone Bay, which can be configured to do any type of activity - [[Combat]], [[Mining]], [[Salvage]], or utility.&lt;br /&gt;
&lt;br /&gt;
The individual setup of drones is entirely up to the Player. It&#039;s quite common to use drones for defense while main turrets are dedicated to mining, or vice versa.&lt;br /&gt;
&lt;br /&gt;
[[Echo|ECHO]] can use Drones, and will actively deploy and return them to the Ship when it decides to leave a POI. The Player can also deploy them manually by clicking the &amp;quot;Deploy&amp;quot; button at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
Drones can be destroyed by environmental hazards or by enemy activity. When destroyed, the Drone Bay will manufacture new ones after a short delay. Leaving drones behind when doing an Emergency Jump is also not an issue, as the drones will be reset by the time they are re-deployed.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Drone types&#039;&#039;&#039; ==&lt;br /&gt;
Available types depend on the skills unlocked in the Drone Tree. &lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Basic Drones (available with out Skills)&lt;br /&gt;
|Combat Laser&lt;br /&gt;
|Fast Short ranged laser Drone.&lt;br /&gt;
|-&lt;br /&gt;
|Mining Surface&lt;br /&gt;
|Surface mining laser Drone.&lt;br /&gt;
|-&lt;br /&gt;
|Salvage Surface&lt;br /&gt;
|Surface Salvaging laser Drone.&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&#039; | Advanced Drones (unlocked with &#039;&#039;&#039;Advanced Drone Access&#039;&#039;&#039; skill)&lt;br /&gt;
|-&lt;br /&gt;
|Combat Missile&lt;br /&gt;
|Long range missile Drone.&lt;br /&gt;
|-&lt;br /&gt;
|Mining Core&lt;br /&gt;
|Drills into the Core of the Asteroid, Core mining.&lt;br /&gt;
|-&lt;br /&gt;
|Salvage Harpoon&lt;br /&gt;
|Harpoons onto Wreackiges, Core Salvaging.&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&#039; | Utility Drones {{Beta}} (unlocked With &#039;&#039;&#039;Utility Drone Access&#039;&#039;&#039; skill)&lt;br /&gt;
|-&lt;br /&gt;
|Painter&lt;br /&gt;
| -15% Damage Reduction on target, Won&#039;t stack.&lt;br /&gt;
|-&lt;br /&gt;
|Scanner &lt;br /&gt;
|Increase yield by 20% on target, Won&#039;t stack.&lt;br /&gt;
|-&lt;br /&gt;
|Shield Repair&lt;br /&gt;
|Repair Beam, restores Shields.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Advanced/Utility (beta) Drone Access skill&lt;br /&gt;
![[File:Drone Skill unlocks.png]]&lt;br /&gt;
![[File:Drone Types.png]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[File:Drones.png|500px|right|thumb|Example Drone Layout]]&lt;br /&gt;
== &#039;&#039;&#039;Behavior&#039;&#039;&#039; ==&lt;br /&gt;
Once released, drones act on their own for most activities. They can be re-focused on a single Object by clicking it - be it an asteroid or a combat vessel.&lt;br /&gt;
&lt;br /&gt;
In combat all drones will focus the target clicked or that attacks the player first unless ordered otherwise.&lt;br /&gt;
&lt;br /&gt;
While [[Mining]] or [[Salvage]], once set free, drones start targeting everything in sight. When autopiloting/idling, [[Echo|ECHO]] will direct them to targets to focus on - whichever target ECHO chooses first.        &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Drone Power&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Drones don&#039;t have their own isolated Power. When a drone fires, each drone fights with its own attack power built from three sources by a per-turret formula Power:&lt;br /&gt;
&lt;br /&gt;
*   The drone&#039;s own Power - the rating of the turret loaded on that individual drone.&lt;br /&gt;
*   The ship&#039;s matching activity Power (Combat/Mining/Salvage) - added in as a per-turret share, normalized by the ship&#039;s own turret count.&lt;br /&gt;
*   The ship&#039;s `Drone Power` stat - split into an equal share per drone.&lt;br /&gt;
&lt;br /&gt;
In rough terms:&lt;br /&gt;
&lt;br /&gt;
*   Each drone keeps its own loaded turret Power in full, plus a share of the ship&#039;s activity Power, plus an equal slice of the ship&#039;s Drone Power. It is not one big pool that gets divided up between all drones - a strong drone stays strong.&lt;br /&gt;
*   Adding more drone slots adds firepower overall. Only the slice of the ship&#039;s `Drone Power` stat gets thinner as more drones share it; a drone&#039;s own turret Power and its activity Power share do not drop.&lt;br /&gt;
*   The bay&#039;s tooltip &amp;quot;Drone Power&amp;quot; figure is a live computed sum of these sources, not a fixed cosmetic number.&lt;br /&gt;
*   Drone shots feed off the ship&#039;s matching activity Power (a mining drone would use Mining Power). The reverse is not true - drones&#039; own Power does **not** contribute to ship turret damage.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Drone Bays and Skills&#039;&#039;&#039; ==&lt;br /&gt;
Drone Bays exist in all rarities and sizes. Depending on the Size the bay can store and control  different amounts of Drones. &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Drone Bay  Slots  Base off Sizes&lt;br /&gt;
|-&lt;br /&gt;
!Size&lt;br /&gt;
![[File:Small Drone Bay.png|thumb|center|Small]]&lt;br /&gt;
![[File:Medium Drone Bay.png|thumb|center|Medium]]&lt;br /&gt;
![[File:Drone Bay Large.png|thumb|center|Large]]&lt;br /&gt;
|-&lt;br /&gt;
!Base Drones&lt;br /&gt;
|3 &lt;br /&gt;
|6 &lt;br /&gt;
|9 &lt;br /&gt;
|-&lt;br /&gt;
!Aspects&lt;br /&gt;
| 2x Extended Drone Bay +1: +2&lt;br /&gt;
| 2x Oversized Drone Bay +2: +4&lt;br /&gt;
| 2x Oversized Drone Bay +2: +4&lt;br /&gt;
|-&lt;br /&gt;
! Skills&lt;br /&gt;
| Drone Squad Expansion / &lt;br /&gt;
Expanded Drone Control: +2&lt;br /&gt;
| Drone Squad Expansion / &lt;br /&gt;
Expanded Drone Control: +2&lt;br /&gt;
| Drone Squad Expansion / &lt;br /&gt;
Expanded Drone Control: +2&lt;br /&gt;
|-&lt;br /&gt;
!Hull Milestones&lt;br /&gt;
| +3&lt;br /&gt;
| +3&lt;br /&gt;
| +3&lt;br /&gt;
|-&lt;br /&gt;
!Total Drones&lt;br /&gt;
| 10&lt;br /&gt;
| 15&lt;br /&gt;
| 18&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;bottom&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| [[File:Drone slots.png]]&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are 2 Drone Bay exclusive [[Aspects]] that increase the maximum amount of Drones that can be stored and controlled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Unassigned Drones&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
If a Drone Bay has free/unassigned drone Slots, the game will fill them up randomly. It&#039;s best to choose Drones until all slots are filled. &lt;br /&gt;
&lt;br /&gt;
Drone Bay View:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Drone Bay View.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Energy&amp;diff=3935</id>
		<title>Energy</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Energy&amp;diff=3935"/>
		<updated>2026-07-27T15:46:47Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Reactor.energy.png|900px|thumb|right|Reactor Output and Bonus]]&lt;br /&gt;
&lt;br /&gt;
Energy output of the ship&#039;s reactor is measured against the energy consumption from all the equipped modules. Staying within nominal limits causes no effects, while producing too little or too much energy causes significant penalties and bonuses. Penalties should be avoided, while bonuses can be harnessed. Energy is a constant value that doesn&#039;t change (fluctuate) while flying or doing tasks. This means keeping the produced energy high gives you positive effects.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Reactor Output&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Having these thresholds met will cause following effects:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Reactor Thresholds and Effects&lt;br /&gt;
! Current usage&lt;br /&gt;
! Effect&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;50% &lt;br /&gt;
| +20% Power&lt;br /&gt;
|-&lt;br /&gt;
| 50% - 75%&lt;br /&gt;
| +10% Power&lt;br /&gt;
|-&lt;br /&gt;
| 75% - 100%&lt;br /&gt;
| No Effect&lt;br /&gt;
|-&lt;br /&gt;
| 100% - 125%&lt;br /&gt;
| -25% Power&lt;br /&gt;
|-&lt;br /&gt;
| 125% - 150%&lt;br /&gt;
| -50% Power&lt;br /&gt;
|-&lt;br /&gt;
| &amp;gt;150%&lt;br /&gt;
| -75% Power&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Although it may seem the Power statistic listed above is the same as [[Power]], it is &#039;&#039;&#039;not&#039;&#039;&#039; - the bonuses and penalties apply to all main power types (combat, mining, salvage) generated in the form of a modifier.&lt;br /&gt;
&lt;br /&gt;
Energy is always applied to Modules or Turrets. You cant lose energy to one of your Items midfight trough Weapon effects or &amp;quot;a reactor shutdown&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Reactor Bonus Example&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
In the following example the reactor bonus is an additional +0.2 modifier factor added to all the modifiers gained elsewhere, and applies to total Mining Power output. In the same vein the modifier is applied to other forms of power - Combat and Salvage, but &#039;&#039;&#039;not&#039;&#039;&#039; Drone, Torpedo, or others.&lt;br /&gt;
&lt;br /&gt;
[[File:Reactor.bonus.png]]&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Reactor Penalty Example&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
If the same ship is brought down to maximum penalty, the bonus turns into a -0.75 modifier factor which applies to the same calculations as above, cutting the total Mining Power of the example ship down to 1/4th of the original value.&lt;br /&gt;
&lt;br /&gt;
[[File:Reactor.penalty.png]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Harnessing the Reactor Bonuses&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Divert.power.png|600px|thumb|right|Divert Power]]&lt;br /&gt;
&lt;br /&gt;
While everyone should obviously try to keep the reactor energy usage minimized, through the use of Microgenerators and Solar Powered [[Aspects]], there are skills that rely on this bonus as well:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Divert Power&#039;&#039;&#039;: Combat skill that adds additional Combat Power boost when energy usage is at minimum.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Bonus form Divert Power is not listed in the calculations due to a bug, but it is applied regardless.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Items&amp;diff=3934</id>
		<title>Items</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Items&amp;diff=3934"/>
		<updated>2026-07-27T15:45:04Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Turret Color Coding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Items.armory.png|500px|thumb|right|Items in an Armory]]&lt;br /&gt;
&lt;br /&gt;
Items are a core concept of Vanguard Galaxy.&lt;br /&gt;
&lt;br /&gt;
Items can be gained through any activity - mined, salvaged, looted, bought, rewarded as part of mission rewards, gained by quests and similar.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Item Types&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Items in Vanguard Galaxy come in standard categories:&lt;br /&gt;
* &#039;&#039;&#039;[[Turrets]]&#039;&#039;&#039;: Any weapon or tool meant for combat or industrial activities, mounted on ship hardpoints.&lt;br /&gt;
* &#039;&#039;&#039;[[Modules]]&#039;&#039;&#039;: Ship modules which can be installed into appropriate slots in Personal Hangar. Eg. reactors, engines.&lt;br /&gt;
* &#039;&#039;&#039;[[Boosters]]&#039;&#039;&#039;: Related to ship modules, boosters boost activities&lt;br /&gt;
* &#039;&#039;&#039;[[Consumables]]&#039;&#039;&#039;: Items used over time (eg. Warp Fuel), instantly (eg. Bonus Skillpoint) or through deployment (eg. Shield Pylon)&lt;br /&gt;
* &#039;&#039;&#039;[[Ammo]]&#039;&#039;&#039;: Used for all types of turrets and modules (such as torpedoes)&lt;br /&gt;
* &#039;&#039;&#039;Refined Materials&#039;&#039;&#039;: Craftable items used in construction of turrrets, modules, ammo or consumables&lt;br /&gt;
* &#039;&#039;&#039;[[Picture of a Space Ship|Junk]]&#039;&#039;&#039;: Special items of extreme value&lt;br /&gt;
* &#039;&#039;&#039;Ores&#039;&#039;&#039;: Typically mined from asteroids, to be sold or refined into refined materials&lt;br /&gt;
* &#039;&#039;&#039;Scrap&#039;&#039;&#039;: Typically salvaged from wrecks, to be sold or refined into refined materials&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Item Rarity&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Gear.png|500px|thumb|right|Rare modules offer more benefits]]&lt;br /&gt;
&lt;br /&gt;
All items come in the following rarities:&lt;br /&gt;
* &#039;&#039;&#039;White&#039;&#039;&#039;: Standard&lt;br /&gt;
* {{Color|green|Green}}: Enhanced&lt;br /&gt;
* {{Color|blue|Blue}}: High grade&lt;br /&gt;
* {{Color|purple|Purple}}: Exotic&lt;br /&gt;
* {{Color|orange|Orange}}: Legendary&lt;br /&gt;
&lt;br /&gt;
Rarities have myriad effects - sometimes they change item name (green Warp Fuel = Plasma Fuel, blue Warp Fuel = Ion Fuel), sometimes they affect the item abilities (rarer modules have more subsstats and offer more [[Aspects|aspect]] slots, or increase item value in terms of refined materials gained (ores, scrap).&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Item Level and Scaling&#039;&#039;&#039; ==&lt;br /&gt;
Item scaling is shown on the name as Mk. I or MK. II. Each 4 levels the Name changes by 1 (roman numberals)&lt;br /&gt;
&lt;br /&gt;
Items start at level 1 to level 4 with Mk. I followed by Mk. II from 5-8 and so on. &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Turret Color Coding&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Small Laser Turret.png|200px|thumb|right|Combat turret is colored red]]&lt;br /&gt;
&lt;br /&gt;
Turrets in particular have their own color coding:&lt;br /&gt;
* &#039;&#039;&#039;Blue&#039;&#039;&#039;: Mining&lt;br /&gt;
* &#039;&#039;&#039;Red&#039;&#039;&#039;: Combat&lt;br /&gt;
* &#039;&#039;&#039;Yellow&#039;&#039;&#039;: Salvage&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Module/Turret Sizes&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Item dosent Match Size.png|200px|thumb|right|Module size needs to match the ship, otherwise item is highlighted in red]]&lt;br /&gt;
&lt;br /&gt;
Ship modules and turrets also come in different sizes:&lt;br /&gt;
* &#039;&#039;&#039;Module Size Small&#039;&#039;&#039;: Fits small ships - sizes 1 and 2&lt;br /&gt;
* &#039;&#039;&#039;Module Size Medium&#039;&#039;&#039;: Fits medium ships - sizes 3 and 4&lt;br /&gt;
* &#039;&#039;&#039;Module Size Large&#039;&#039;&#039;: Fits large ships - sizes 5+&lt;br /&gt;
&lt;br /&gt;
Exceptions always exist, as larger ships can normally have smaller module slots - eg. Torpedo Bays (M) on a Large (L) ship, Drone Bays (s) on a Medium on Large ship etc.&lt;br /&gt;
&lt;br /&gt;
Turrets follow generally the same rules, but various ships have vastly different hardpoint sizes. Some small ships will be able to equip medium-sized turrets, and one can always equip a smaller turret onto a larger hardpoint (placing M-sized turret onto an L-sized hardpoint for example).  &lt;br /&gt;
&lt;br /&gt;
Don&#039;t worry, your modules or turrets cant be destroyed or lose power midfight.  &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Item Storage&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Different types of items can be stored in different locations:&lt;br /&gt;
&lt;br /&gt;
* Cargo Bay - all items&lt;br /&gt;
* Armory - modules, turrets, consumables, ammo, boosters, junk&lt;br /&gt;
* Materials Bay (Storage) - ores, scrap, refined products&lt;br /&gt;
* Data Storage - Stores Data Sheets and unlearned Blueprints.&lt;br /&gt;
&lt;br /&gt;
Cargo Bay is specific to the ship in question. When swapping ships, all non-essential items will be transferred to armory and/or materials bay.&lt;br /&gt;
&lt;br /&gt;
Armory is &#039;&#039;&#039;global&#039;&#039;&#039;. It can be accessed from any station.&lt;br /&gt;
&lt;br /&gt;
Materials Bay is &#039;&#039;&#039;local&#039;&#039;&#039;. It is tied to the station and transferring items to another station needs to be performed via ship&#039;s cargo and traveling.&lt;br /&gt;
&lt;br /&gt;
Data Storage is &#039;&#039;&#039;global&#039;&#039;&#039;. It can be accessed from any station.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[File:itemtooltiplegend.png]]&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Item Legend&#039;&#039;&#039;&lt;br /&gt;
! NO !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Main Stats&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Sub Stats &lt;br /&gt;
|-&lt;br /&gt;
| 3 || Ammo&lt;br /&gt;
|-&lt;br /&gt;
| 4 || Aspects&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Energy Use&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Range&lt;br /&gt;
|-&lt;br /&gt;
| 7 || EMP&lt;br /&gt;
|}&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Aspects&amp;diff=3933</id>
		<title>Aspects</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Aspects&amp;diff=3933"/>
		<updated>2026-07-26T20:17:04Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Aspect List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Gear.png|thumb|600px|right|Aspects on equipment]]&lt;br /&gt;
&lt;br /&gt;
Aspects are modifications to ship equipment that can add special benefits to the item the are modifying, or to the entire ship.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Aspects&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Aspects can fill the slot(s) underneath module items, and add special benefits like enhanced defense, critical chance, repair rates, added resistances etc.&lt;br /&gt;
&lt;br /&gt;
Depending on rarity of the item one can find different number of aspects, or none at all. Some Aspects can fit onto all gear, others can be applied to specific modules, and some only on a single one.&lt;br /&gt;
&lt;br /&gt;
Aspects can be removed in the [[Workshop]], which will destroy the item, but an extracted aspect can be applied onto another piece of equipment later.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Generation chance&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
When items are randomly generated, chance for item slots is determined by their rarity.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Normal || None ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|green|Enhanced}} ||Aspect 0-1 || &#039;&#039;25% chance of 1, 75% chance of 0&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|blue|High Grade}} ||Aspect 1 || &#039;&#039;25% chance of 1 Rare, 75% chance of 1 Common&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|purple|Exotic}} || Aspect 1-2||&#039;&#039;25% chance of 2 items (1 Rare + 1 Common), 75% chance of 1 item (1 Rare)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|orange|Legendary}} || Aspect 2||&#039;&#039;25% chance of 2 Rare, 75% chance of 2 items (1 Rare + 1 Common)&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Legend ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Rarity&lt;br /&gt;
: {{Color|agreen|Common}} &amp;amp;mdash; baseline aspect, drops on Enhanced+ items.&lt;br /&gt;
: {{Color|apurple|Rare}} &amp;amp;mdash; rarer roll, drops on Exotic+ items.&lt;br /&gt;
;Slot&lt;br /&gt;
: Weapons &amp;amp;mdash; turret hardpoints.&lt;br /&gt;
: Dronebay &amp;amp;mdash; drone-bay modules.&lt;br /&gt;
: Hull / Armor &amp;amp;mdash; the named module type.&lt;br /&gt;
: Scanner &amp;amp;mdash; the scanner module.&lt;br /&gt;
: All Modules &amp;amp;mdash; any non-weapon module slot.&lt;br /&gt;
: All Items &amp;amp;mdash; any equipment slot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aspect List ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|Weapons =&lt;br /&gt;
Aspects that attach to turret hardpoints — damage modifiers, reload, and elemental riders.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Critical Attenuation.png|42x42px]] || {{Color|agreen|Critical Attenuation}} || Increases critical strike damage of this weapon by 25% || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Reload Subroutine.png|42x42px]] || {{Color|agreen|Reload Subroutine}} || Increases reload speed of the weapon by 25% || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Firestarter.png|42x42px]] || {{Color|apurple|Firestarter}} || Deals an additive 15% Heat damage over 6 seconds || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Frozen Core.png|42x42px]] || {{Color|apurple|Frozen Core}} || Deals an additive 10% Cold damage. Hits may slow the target&#039;s movement || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Punch Through.png|42x42px]] || {{Color|apurple|Punch Through}} || Deals an additive 10% Kinetic damage || Weapons&lt;br /&gt;
|}&lt;br /&gt;
|-|Dronebay =&lt;br /&gt;
Aspects that go on drone-bay modules. The Mk2 variant is restricted to medium and large bays.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Extended Drone Boy.png|42x42px]] || {{Color|agreen|Extended Drone Boy}} || Increases maximum drones by 1 || Dronebay&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Oversized Drone Bay.png|42x42px]] || {{Color|apurple|Oversized Drone Bay}} || Increases maximum drones by 2 || Dronebay (M/L only)&lt;br /&gt;
|}&lt;br /&gt;
|-|Scanner =&lt;br /&gt;
Aspects that attach to the scanner module — sensors, range, and crit-chance enhancements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Rangefinder.png|42x42px]] || {{Color|apurple|Rangefinder}} || Increases weapon range by 25% || Scanner&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Weakpoint Scan.png|42x42px]] || {{Color|apurple|Weakpoint Scan}} || Increases critical chance by 5% || Scanner&lt;br /&gt;
|}&lt;br /&gt;
|-|Hull =&lt;br /&gt;
Aspects that attach to the hull module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Crisis Protocol.png|42x42px]] || {{Color|apurple|Crisis Protocol}} || Adds +30% Power for 10 seconds whenever you take hull damage. (Cooldown: 40 seconds) || Hull&lt;br /&gt;
|}&lt;br /&gt;
|-|Armor =&lt;br /&gt;
Aspects that attach to armor modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hardened Exterior.png|42x42px]] || {{Color|apurple|Hardened Exterior}} || Reduces damage taken by 5% || Armor&lt;br /&gt;
|}&lt;br /&gt;
|-|All Modules =&lt;br /&gt;
Wildcard aspects that fit on any non-weapon module slot — reactor, thrust, and module-wide effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Microgenerators.png|42x42px]] || {{Color|agreen|Microgenerators}} || Increases reactor energy by 10% || All Modules&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Microthruster Array.png|42x42px]] || {{Color|agreen|Microthruster Array}} || Increases Engine thrust by 10% || All Modules&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Repair Nanites.png|42x42px]] || {{Color|apurple|Repair Nanites}} || Armor slowly regenerates over time || All Modules&lt;br /&gt;
|}&lt;br /&gt;
|-|All Items =&lt;br /&gt;
Wildcard aspects that fit on any equipment slot, weapons included — broad defensive and resistance bonuses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Gamma Ward.png|42x42px]] || {{Color|agreen|Gamma Ward}} || Increases Energy and Radiation damage resistance by 5% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hardened Plating.png|42x42px]] || {{Color|agreen|Hardened Plating}} || Increases Kinetic, Corrosive and Explosion damage resistance by 2% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Operational Reserves.png|42x42px]] || {{Color|agreen|Operational Reserves}} || Increases Power by 2% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Shielding Subsystem.png|42x42px]] || {{Color|agreen|Shielding Subsystem}} || Increases Shield regeneration rate by 5% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Solar Powered.png|42x42px]] || {{Color|agreen|Solar Powered}} || Does not require Reactor energy to function || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Structural Supports.png|42x42px]] || {{Color|agreen|Structural Supports}} || Increases Hull HP by 5% || All Items&lt;br /&gt;
|}&lt;br /&gt;
|-|Boss Traps (Beta) =&lt;br /&gt;
[[Boss Traps]] powerful Boss Enemies Summon to Fight. Aspects that can drop.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of these aspects appear to be weapons specific. WIP&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Boss !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Armor breaker.png|42x42px]] || {{Color|apurple|Armor breaker}} || [[Boss_Traps|Rip]]&amp;lt;br&amp;gt;Corsair Trap I || Damage to armor increased by +10%. Critical damage increased by +5% || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Space Horse.png|42x42px]] || {{Color|apurple|Space Horse}} || [[Boss_Traps|Rip]]&amp;lt;br&amp;gt;Corsair Trap I || Increases engine thrust by +20% ||Engines&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Split Payload.png|42x42px]] || {{Color|apurple|Split Payload}} || [[Boss_Traps|Rip]]&amp;lt;br&amp;gt;Corsair Trap I || Fires 2 projectiles at 40% damage each || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hugged By Flames.png|42x42px]] || {{Color|apurple|Hugged By Flames}}  || [[Boss_Traps|Phrog]]&amp;lt;br&amp;gt;Meridia Trap I || Has a 20% chance on hit to deal an additive 50% Heat damage over 6 seconds. Stacks up to 10 times || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Shield X.png|42x42px]] || {{Color|apurple|Shield X}}  || [[Boss_Traps|Phrog]]&amp;lt;br&amp;gt;Meridia Trap I || Increase Shields by +10% || Shields&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Volatile Plasma.png|42x42px]] || {{Color|apurple|Volatile Plasma}}  || [[Boss_Traps|Phrog]]&amp;lt;br&amp;gt;Meridia Trap I || 5% chance on hit to trigger a plasma explosion, dealing 200% damage to nearby enemies || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hull Bonus.png|42x42px]] || {{Color|apurple|Hull Bonus}} || [[Boss_Traps|Heavy Bob]]&amp;lt;br&amp;gt;Meridia Trap II ||Increase Hull by +25% || Hull&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Opening Blow.png|42x42px]] || {{Color|apurple|Opening Blow}} || [[Boss_Traps|Heavy Bob]]&amp;lt;br&amp;gt;Meridia Trap II || Deals 40% bonus damage to targets above 90% total HP || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Radiation Burn.png|42x42px]] || {{Color|apurple|Radiation Burn}} || [[Boss_Traps|Heavy Bob]]&amp;lt;br&amp;gt;Meridia Trap II || Applies radiation dot on hit || Weapons&lt;br /&gt;
&amp;lt;/tabber&amp;gt;Example additive: 100 Kinetic Damage and 15% heat is 115 damage: 100 kinetic and 15 heat.&lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Aspects&amp;diff=3932</id>
		<title>Aspects</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Aspects&amp;diff=3932"/>
		<updated>2026-07-26T19:48:49Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Aspect List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Gear.png|thumb|600px|right|Aspects on equipment]]&lt;br /&gt;
&lt;br /&gt;
Aspects are modifications to ship equipment that can add special benefits to the item the are modifying, or to the entire ship.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Aspects&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Aspects can fill the slot(s) underneath module items, and add special benefits like enhanced defense, critical chance, repair rates, added resistances etc.&lt;br /&gt;
&lt;br /&gt;
Depending on rarity of the item one can find different number of aspects, or none at all. Some Aspects can fit onto all gear, others can be applied to specific modules, and some only on a single one.&lt;br /&gt;
&lt;br /&gt;
Aspects can be removed in the [[Workshop]], which will destroy the item, but an extracted aspect can be applied onto another piece of equipment later.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Generation chance&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
When items are randomly generated, chance for item slots is determined by their rarity.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Normal || None ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|green|Enhanced}} ||Aspect 0-1 || &#039;&#039;25% chance of 1, 75% chance of 0&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|blue|High Grade}} ||Aspect 1 || &#039;&#039;25% chance of 1 Rare, 75% chance of 1 Common&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|purple|Exotic}} || Aspect 1-2||&#039;&#039;25% chance of 2 items (1 Rare + 1 Common), 75% chance of 1 item (1 Rare)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|orange|Legendary}} || Aspect 2||&#039;&#039;25% chance of 2 Rare, 75% chance of 2 items (1 Rare + 1 Common)&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Legend ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Rarity&lt;br /&gt;
: {{Color|agreen|Common}} &amp;amp;mdash; baseline aspect, drops on Enhanced+ items.&lt;br /&gt;
: {{Color|apurple|Rare}} &amp;amp;mdash; rarer roll, drops on Exotic+ items.&lt;br /&gt;
;Slot&lt;br /&gt;
: Weapons &amp;amp;mdash; turret hardpoints.&lt;br /&gt;
: Dronebay &amp;amp;mdash; drone-bay modules.&lt;br /&gt;
: Hull / Armor &amp;amp;mdash; the named module type.&lt;br /&gt;
: Scanner &amp;amp;mdash; the scanner module.&lt;br /&gt;
: All Modules &amp;amp;mdash; any non-weapon module slot.&lt;br /&gt;
: All Items &amp;amp;mdash; any equipment slot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aspect List ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabber&amp;gt;|-|Weapons =&lt;br /&gt;
Aspects that attach to turret hardpoints — damage modifiers, reload, and elemental riders.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Critical Attenuation.png|42x42px]] || {{Color|agreen|Critical Attenuation}} || Increases critical strike damage of this weapon by 25% || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Reload Subroutine.png|42x42px]] || {{Color|agreen|Reload Subroutine}} || Increases reload speed of the weapon by 25% || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Firestarter.png|42x42px]] || {{Color|apurple|Firestarter}} || Deals an additive 15% Heat damage over 6 seconds || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Frozen Core.png|42x42px]] || {{Color|apurple|Frozen Core}} || Deals an additive 10% Cold damage. Hits may slow the target&#039;s movement || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Punch Through.png|42x42px]] || {{Color|apurple|Punch Through}} || Deals an additive 10% Kinetic damage || Weapons&lt;br /&gt;
|}&lt;br /&gt;
|-|Dronebay =&lt;br /&gt;
Aspects that go on drone-bay modules. The Mk2 variant is restricted to medium and large bays.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Extended Drone Boy.png|42x42px]] || {{Color|agreen|Extended Drone Boy}} || Increases maximum drones by 1 || Dronebay&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Oversized Drone Bay.png|42x42px]] || {{Color|apurple|Oversized Drone Bay}} || Increases maximum drones by 2 || Dronebay (M/L only)&lt;br /&gt;
|}&lt;br /&gt;
|-|Scanner =&lt;br /&gt;
Aspects that attach to the scanner module — sensors, range, and crit-chance enhancements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Rangefinder.png|42x42px]] || {{Color|apurple|Rangefinder}} || Increases weapon range by 25% || Scanner&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Weakpoint Scan.png|42x42px]] || {{Color|apurple|Weakpoint Scan}} || Increases critical chance by 5% || Scanner&lt;br /&gt;
|}&lt;br /&gt;
|-|Hull =&lt;br /&gt;
Aspects that attach to the hull module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Crisis Protocol.png|42x42px]] || {{Color|apurple|Crisis Protocol}} || Adds +30% Power for 10 seconds whenever you take hull damage. (Cooldown: 40 seconds) || Hull&lt;br /&gt;
|}&lt;br /&gt;
|-|Armor =&lt;br /&gt;
Aspects that attach to armor modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hardened Exterior.png|42x42px]] || {{Color|apurple|Hardened Exterior}} || Reduces damage taken by 5% || Armor&lt;br /&gt;
|}&lt;br /&gt;
|-|All Modules =&lt;br /&gt;
Wildcard aspects that fit on any non-weapon module slot — reactor, thrust, and module-wide effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Microgenerators.png|42x42px]] || {{Color|agreen|Microgenerators}} || Increases reactor energy by 10% || All Modules&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Microthruster Array.png|42x42px]] || {{Color|agreen|Microthruster Array}} || Increases Engine thrust by 10% || All Modules&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Repair Nanites.png|42x42px]] || {{Color|apurple|Repair Nanites}} || Armor slowly regenerates over time || All Modules&lt;br /&gt;
|}&lt;br /&gt;
|-|All Items =&lt;br /&gt;
Wildcard aspects that fit on any equipment slot, weapons included — broad defensive and resistance bonuses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Gamma Ward.png|42x42px]] || {{Color|agreen|Gamma Ward}} || Increases Energy and Radiation damage resistance by 5% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hardened Plating.png|42x42px]] || {{Color|agreen|Hardened Plating}} || Increases Kinetic, Corrosive and Explosion damage resistance by 2% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Operational Reserves.png|42x42px]] || {{Color|agreen|Operational Reserves}} || Increases Power by 2% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Shielding Subsystem.png|42x42px]] || {{Color|agreen|Shielding Subsystem}} || Increases Shield regeneration rate by 5% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Solar Powered.png|42x42px]] || {{Color|agreen|Solar Powered}} || Does not require Reactor energy to function || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Structural Supports.png|42x42px]] || {{Color|agreen|Structural Supports}} || Increases Hull HP by 5% || All Items&lt;br /&gt;
|}&lt;br /&gt;
|-|Boss Traps (Beta) =&lt;br /&gt;
[[Boss Traps]] powerful Boss Enemies Summon to Fight. Aspects that can drop.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of these aspects appear to be weapons specific. WIP&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Boss !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Armor breaker.png|42x42px]] || {{Color|apurple|Armor breaker}} || [[Boss_Traps|Rip]]&amp;lt;br&amp;gt;Corsair Trap I || Damage to armor increased by +10%. Critical damage increased by +5% || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Space Horse.png|42x42px]] || {{Color|apurple|Space Horse}} || [[Boss_Traps|Rip]]&amp;lt;br&amp;gt;Corsair Trap I || Increases engine thrust by +20% ||Engines&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Split Payload.png|42x42px]] || {{Color|apurple|Split Payload}} || [[Boss_Traps|Rip]]&amp;lt;br&amp;gt;Corsair Trap I || Fires 2 projectiles at 40% damage each || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hugged By Flames.png|42x42px]] || {{Color|apurple|Hugged By Flames}}  || [[Boss_Traps|Phrog]]&amp;lt;br&amp;gt;Meridia Trap I || Has a 20% chance on hit to deal an additional 50% Heat damage over 6 seconds. Stacks up to 10 times || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Shield X.png|42x42px]] || {{Color|apurple|Shield X}}  || [[Boss_Traps|Phrog]]&amp;lt;br&amp;gt;Meridia Trap I || Increase Shields by +10% || Shields&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Volatile Plasma.png|42x42px]] || {{Color|apurple|Volatile Plasma}}  || [[Boss_Traps|Phrog]]&amp;lt;br&amp;gt;Meridia Trap I || 5% chance on hit to trigger a plasma explosion, dealing 200% damage to nearby enemies || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hull Bonus.png|42x42px]] || {{Color|apurple|Hull Bonus}} || [[Boss_Traps|Heavy Bob]]&amp;lt;br&amp;gt;Meridia Trap II ||Increase Hull by +25% || Hull&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Opening Blow.png|42x42px]] || {{Color|apurple|Opening Blow}} || [[Boss_Traps|Heavy Bob]]&amp;lt;br&amp;gt;Meridia Trap II || Deals 40% bonus damage to targets above 90% total HP || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Radiation Burn.png|42x42px]] || {{Color|apurple|Radiation Burn}} || [[Boss_Traps|Heavy Bob]]&amp;lt;br&amp;gt;Meridia Trap II || Applies radiation dot on hit || Weapons&amp;lt;/tabber&amp;gt;Example additive: 100 Kinetic Damage and 15% heat is 115 damage: 100 kinetic and 15 heat.&lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Aspects&amp;diff=3931</id>
		<title>Aspects</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Aspects&amp;diff=3931"/>
		<updated>2026-07-26T19:47:01Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Aspect List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Gear.png|thumb|600px|right|Aspects on equipment]]&lt;br /&gt;
&lt;br /&gt;
Aspects are modifications to ship equipment that can add special benefits to the item the are modifying, or to the entire ship.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Aspects&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Aspects can fill the slot(s) underneath module items, and add special benefits like enhanced defense, critical chance, repair rates, added resistances etc.&lt;br /&gt;
&lt;br /&gt;
Depending on rarity of the item one can find different number of aspects, or none at all. Some Aspects can fit onto all gear, others can be applied to specific modules, and some only on a single one.&lt;br /&gt;
&lt;br /&gt;
Aspects can be removed in the [[Workshop]], which will destroy the item, but an extracted aspect can be applied onto another piece of equipment later.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Generation chance&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
When items are randomly generated, chance for item slots is determined by their rarity.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Normal || None ||&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|green|Enhanced}} ||Aspect 0-1 || &#039;&#039;25% chance of 1, 75% chance of 0&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|blue|High Grade}} ||Aspect 1 || &#039;&#039;25% chance of 1 Rare, 75% chance of 1 Common&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|purple|Exotic}} || Aspect 1-2||&#039;&#039;25% chance of 2 items (1 Rare + 1 Common), 75% chance of 1 item (1 Rare)&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| {{Color|orange|Legendary}} || Aspect 2||&#039;&#039;25% chance of 2 Rare, 75% chance of 2 items (1 Rare + 1 Common)&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Legend ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Rarity&lt;br /&gt;
: {{Color|agreen|Common}} &amp;amp;mdash; baseline aspect, drops on Enhanced+ items.&lt;br /&gt;
: {{Color|apurple|Rare}} &amp;amp;mdash; rarer roll, drops on Exotic+ items.&lt;br /&gt;
;Slot&lt;br /&gt;
: Weapons &amp;amp;mdash; turret hardpoints.&lt;br /&gt;
: Dronebay &amp;amp;mdash; drone-bay modules.&lt;br /&gt;
: Hull / Armor &amp;amp;mdash; the named module type.&lt;br /&gt;
: Scanner &amp;amp;mdash; the scanner module.&lt;br /&gt;
: All Modules &amp;amp;mdash; any non-weapon module slot.&lt;br /&gt;
: All Items &amp;amp;mdash; any equipment slot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aspect List ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|Weapons =&lt;br /&gt;
Aspects that attach to turret hardpoints — damage modifiers, reload, and elemental riders.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Critical Attenuation.png|42x42px]] || {{Color|agreen|Critical Attenuation}} || Increases critical strike damage of this weapon by 25% || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Reload Subroutine.png|42x42px]] || {{Color|agreen|Reload Subroutine}} || Increases reload speed of the weapon by 25% || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Firestarter.png|42x42px]] || {{Color|apurple|Firestarter}} || Deals an additive 15% Heat damage over 6 seconds || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Frozen Core.png|42x42px]] || {{Color|apurple|Frozen Core}} || Deals an additive 10% Cold damage. Hits may slow the target&#039;s movement || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Punch Through.png|42x42px]] || {{Color|apurple|Punch Through}} || Deals an additive 10% Kinetic damage || Weapons&lt;br /&gt;
|}&lt;br /&gt;
|-|Dronebay =&lt;br /&gt;
Aspects that go on drone-bay modules. The Mk2 variant is restricted to medium and large bays.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Extended Drone Boy.png|42x42px]] || {{Color|agreen|Extended Drone Boy}} || Increases maximum drones by 1 || Dronebay&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Oversized Drone Bay.png|42x42px]] || {{Color|apurple|Oversized Drone Bay}} || Increases maximum drones by 2 || Dronebay (M/L only)&lt;br /&gt;
|}&lt;br /&gt;
|-|Scanner =&lt;br /&gt;
Aspects that attach to the scanner module — sensors, range, and crit-chance enhancements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Rangefinder.png|42x42px]] || {{Color|apurple|Rangefinder}} || Increases weapon range by 25% || Scanner&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Weakpoint Scan.png|42x42px]] || {{Color|apurple|Weakpoint Scan}} || Increases critical chance by 5% || Scanner&lt;br /&gt;
|}&lt;br /&gt;
|-|Hull =&lt;br /&gt;
Aspects that attach to the hull module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Crisis Protocol.png|42x42px]] || {{Color|apurple|Crisis Protocol}} || Adds +30% Power for 10 seconds whenever you take hull damage. (Cooldown: 40 seconds) || Hull&lt;br /&gt;
|}&lt;br /&gt;
|-|Armor =&lt;br /&gt;
Aspects that attach to armor modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hardened Exterior.png|42x42px]] || {{Color|apurple|Hardened Exterior}} || Reduces damage taken by 5% || Armor&lt;br /&gt;
|}&lt;br /&gt;
|-|All Modules =&lt;br /&gt;
Wildcard aspects that fit on any non-weapon module slot — reactor, thrust, and module-wide effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Microgenerators.png|42x42px]] || {{Color|agreen|Microgenerators}} || Increases reactor energy by 10% || All Modules&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Microthruster Array.png|42x42px]] || {{Color|agreen|Microthruster Array}} || Increases Engine thrust by 10% || All Modules&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Repair Nanites.png|42x42px]] || {{Color|apurple|Repair Nanites}} || Armor slowly regenerates over time || All Modules&lt;br /&gt;
|}&lt;br /&gt;
|-|All Items =&lt;br /&gt;
Wildcard aspects that fit on any equipment slot, weapons included — broad defensive and resistance bonuses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Gamma Ward.png|42x42px]] || {{Color|agreen|Gamma Ward}} || Increases Energy and Radiation damage resistance by 5% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hardened Plating.png|42x42px]] || {{Color|agreen|Hardened Plating}} || Increases Kinetic, Corrosive and Explosion damage resistance by 2% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Operational Reserves.png|42x42px]] || {{Color|agreen|Operational Reserves}} || Increases Power by 2% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Shielding Subsystem.png|42x42px]] || {{Color|agreen|Shielding Subsystem}} || Increases Shield regeneration rate by 5% || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Solar Powered.png|42x42px]] || {{Color|agreen|Solar Powered}} || Does not require Reactor energy to function || All Items&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Structural Supports.png|42x42px]] || {{Color|agreen|Structural Supports}} || Increases Hull HP by 5% || All Items&lt;br /&gt;
|}&lt;br /&gt;
|-|Boss Traps (Beta) =&lt;br /&gt;
[[Boss Traps]] powerful Boss Enemies Summon to Fight. Aspects that can drop.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Some of these aspects appear to be weapons specific. WIP&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! !! Aspects !! Boss !! Description !! Slots&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Armor breaker.png|42x42px]] || {{Color|apurple|Armor breaker}} || [[Boss_Traps|Rip]]&amp;lt;br&amp;gt;Corsair Trap I || Damage to armor increased by +10%. Critical damage increased by +5% || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Space Horse.png|42x42px]] || {{Color|apurple|Space Horse}} || [[Boss_Traps|Rip]]&amp;lt;br&amp;gt;Corsair Trap I || Increases engine thrust by +20% ||Engines&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Split Payload.png|42x42px]] || {{Color|apurple|Split Payload}} || [[Boss_Traps|Rip]]&amp;lt;br&amp;gt;Corsair Trap I || Fires 2 projectiles at 40% damage each || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hugged By Flames.png|42x42px]] || {{Color|apurple|Hugged By Flames}}  || [[Boss_Traps|Phrog]]&amp;lt;br&amp;gt;Meridia Trap I || Has a 20% chance on hit to deal an additional 50% Heat damage over 6 seconds. Stacks up to 10 times || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Shield X.png|42x42px]] || {{Color|apurple|Shield X}}  || [[Boss_Traps|Phrog]]&amp;lt;br&amp;gt;Meridia Trap I || Increase Shields by +10% || Shields&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Volatile Plasma.png|42x42px]] || {{Color|apurple|Volatile Plasma}}  || [[Boss_Traps|Phrog]]&amp;lt;br&amp;gt;Meridia Trap I || 5% chance on hit to trigger a plasma explosion, dealing 200% damage to nearby enemies || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Hull Bonus.png|42x42px]] || {{Color|apurple|Hull Bonus}} || [[Boss_Traps|Heavy Bob]]&amp;lt;br&amp;gt;Meridia Trap II ||Increase Hull by +25% || Hull&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Opening Blow.png|42x42px]] || {{Color|apurple|Opening Blow}} || [[Boss_Traps|Heavy Bob]]&amp;lt;br&amp;gt;Meridia Trap II || Deals 40% bonus damage to targets above 90% total HP || Weapons&lt;br /&gt;
|-&lt;br /&gt;
| [[File:Radiation Burn.png|42x42px]] || {{Color|apurple|Radiation Burn}} || [[Boss_Traps|Heavy Bob]]&amp;lt;br&amp;gt;Meridia Trap II || Applies radiation dot on hit || Weapons&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3923</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3923"/>
		<updated>2026-07-22T07:18:02Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Tips */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Hangar spawn.png|thumb|500x500px|Fighters deploying from a Hangar Bay]]&lt;br /&gt;
Hangar Bays are equipment modules that allow a ship to carry, deploy, and recall &#039;&#039;&#039;fighter craft&#039;&#039;&#039;, small combat ships that act as autonomous wingmen. Unlike Drones, fighters are fully-fledged ships with their own equipment, hull, and crew requirements.&lt;br /&gt;
&lt;br /&gt;
The individual setup of fighters is entirely up to the Player. &lt;br /&gt;
&lt;br /&gt;
[[Echo|ECHO]] can use Hangar Bays, and will actively deploy fighters when entering combat and recall them when leaving a POI. The Player can also deploy or recall manually by clicking the &#039;&#039;&#039;Deploy&#039;&#039;&#039; / &#039;&#039;&#039;Recall&#039;&#039;&#039; buttons at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
Fighters can be destroyed by enemy activity. When destroyed, the Hangar Bay will manufacture a replacement after a delay. Launching an Emergency Jump with fighters deployed is not an issue — the bay automatically despawns them and they&#039;ll be rebuilt when re-deployed.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Hangar Bay Slots&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Hangar Bays exist in all rarities and sizes. The number of fighter slots depends on the bay&#039;s base capacity and your Engineering skill unlocks.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Hangar Bay Slots Base off Module&lt;br /&gt;
!Size&lt;br /&gt;
!Medium&lt;br /&gt;
!With Skills&lt;br /&gt;
|-&lt;br /&gt;
!Base Slots&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
!Unique Skill&lt;br /&gt;
|—&lt;br /&gt;
|Hangar Extension +&lt;br /&gt;
|-&lt;br /&gt;
!Total Slots&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;bottom&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is 1 Engineering skill that increases the maximum amount of Fighters that can be stored and controlled , a Tier 3 unique skill unlocked via a specific captain (Stella).&lt;br /&gt;
[[File:Hangar ui.png|thumb|646x646px|Hangar UI, here you can select the Ships assigned to that Module.]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Assigning Fighters&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Unlike Drones which are configured per-slot from the Drone Bay UI, fighters are assigned from your &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; (accessible at any Space Station with a hangar facility).&lt;br /&gt;
&lt;br /&gt;
To assign a fighter:&lt;br /&gt;
# Dock at a Space Station&lt;br /&gt;
# Open the &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; screen&lt;br /&gt;
# Select the ship you want to act as carrier&lt;br /&gt;
# Click on an empty Hangar Slot&lt;br /&gt;
# Choose one of your owned ships from the list&lt;br /&gt;
&lt;br /&gt;
Any ship in your fleet can be assigned as a fighter — including captured ships, mission rewards, or vessels you&#039;ve built. The fighter keeps all its equipment, custom name, paint, and configuration.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Behavior&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Once deployed, fighters act on their own for most combat activities. They can be re-focused on a single target by clicking it.&lt;br /&gt;
&lt;br /&gt;
In combat, all fighters will focus on the target you click or the target that attacks the player first — unless you specifically order them elsewhere by clicking a different target.&lt;br /&gt;
&lt;br /&gt;
Fighters will not follow you into a Space Station interior or through a Jump Gate. They will return to the Hangar Bay automatically when you leave the POI.&lt;br /&gt;
&lt;br /&gt;
If a fighter is damaged, it can be ordered back to the bay for repairs using the &#039;&#039;&#039;Auto-Repair Recall&#039;&#039;&#039; feature — the fighter will fly back, dock, repair, and re-deploy automatically once its hull and armor are restored.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Resupply&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters accumulate cargo — mostly salvage and loot from combat kills. When a fighter returns to the bay for repairs or recall, its cargo is automatically transferred to the carrier ship. This makes fighters excellent as mobile cargo mules in combat-heavy areas.&lt;br /&gt;
[[File:Hangar ships.png|thumb|327x327px]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Power &amp;amp; Stats&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters do &#039;&#039;&#039;not&#039;&#039;&#039; draw from the ship&#039;s weapon power pool. Each fighter is an independent ship with its own:&lt;br /&gt;
* &#039;&#039;&#039;Hull HP&#039;&#039;&#039; and &#039;&#039;&#039;Armor HP&#039;&#039;&#039; — fully independent from the carrier&lt;br /&gt;
* &#039;&#039;&#039;Equipment&#039;&#039;&#039; — all modules, turrets, and systems function independently&lt;br /&gt;
* &#039;&#039;&#039;Crew&#039;&#039;&#039; — Fighters require &#039;&#039;&#039;Pilot&#039;&#039;&#039; crew (from your carrier&#039;s crew pool)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Pilot Requirement&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Each deployed fighter consumes &#039;&#039;&#039;1 Pilot&#039;&#039;&#039; from the carrier&#039;s crew. If you don&#039;t have enough Pilots, the bay will show a warning:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&amp;quot;No Pilots available&amp;quot;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deployment simply won&#039;t happen until you assign more Pilots. Off-duty fighters in the bay don&#039;t consume crew.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Passive Bay Repair&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The bay has a built-in repair rate of roughly &#039;&#039;&#039;1/90th of max hull per second&#039;&#039;&#039;. Fighters sitting in the bay slowly regenerate health and armor over time — no action required. The formula is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;repair_per_second = (1/90) * max_hp * (1 + HangarBayRepairRate_bonus)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat comes from equipment, aspects, skills, or hull bonuses and applies to both repair speed and rebuild time.&lt;br /&gt;
[[File:Hangar bay.png|thumb|402x402px|Hangar Bay Module]]&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Key Constants&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Constant&lt;br /&gt;
!Value&lt;br /&gt;
|-&lt;br /&gt;
|Rebuild time (base)&lt;br /&gt;
|120 seconds&lt;br /&gt;
|-&lt;br /&gt;
|Launch clearance distance&lt;br /&gt;
|4 units&lt;br /&gt;
|-&lt;br /&gt;
|Launch impulse speed&lt;br /&gt;
|6 units/sec&lt;br /&gt;
|-&lt;br /&gt;
|Bay repair rate&lt;br /&gt;
|1/90th max HP/sec&lt;br /&gt;
|-&lt;br /&gt;
|Dock snap distance&lt;br /&gt;
|0.3 units&lt;br /&gt;
|-&lt;br /&gt;
|Hide radius fraction&lt;br /&gt;
|1.0x ship size&lt;br /&gt;
|-&lt;br /&gt;
|Resupply cooldown (empty)&lt;br /&gt;
|15 seconds&lt;br /&gt;
|-&lt;br /&gt;
|Docking capture radius&lt;br /&gt;
|2 units&lt;br /&gt;
|-&lt;br /&gt;
|Path sample count&lt;br /&gt;
|16 points&lt;br /&gt;
|-&lt;br /&gt;
|Carrier lead time&lt;br /&gt;
|0.5 seconds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Rebuilding&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
When a fighter is destroyed:&lt;br /&gt;
# The slot enters &#039;&#039;&#039;Rebuild&#039;&#039;&#039; mode&lt;br /&gt;
# A &#039;&#039;&#039;120-second timer&#039;&#039;&#039; starts&lt;br /&gt;
# The timer is modified by the carrier&#039;s &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat&lt;br /&gt;
# Once the timer finishes, the fighter is fully restored (full hull, armor, and shields)&lt;br /&gt;
# If the carrier is still in combat with fighters set to auto-deploy, the fighter launches immediately&lt;br /&gt;
&lt;br /&gt;
If the carrier performs an Emergency Jump while a fighter is being rebuilt, the rebuild timer pauses and resumes when you&#039;re cleared for deployment again.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Known Limitations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Combat only&#039;&#039;&#039; — fighters cannot mine, salvage, or use utility beams. They are pure combat vessels.&lt;br /&gt;
* &#039;&#039;&#039;Pilot requirement&#039;&#039;&#039; — each active fighter needs 1 Pilot crew. Running out means no deployment.&lt;br /&gt;
* &#039;&#039;&#039;Station docking&#039;&#039;&#039; — fighters cannot dock at Space Stations independently. They follow the carrier.&lt;br /&gt;
* &#039;&#039;&#039;Flat rebuild time&#039;&#039;&#039; — rebuilding takes 120 seconds regardless of the fighter&#039;s cost, rarity, or equipment value.&lt;br /&gt;
* &#039;&#039;&#039;Despawn on travel&#039;&#039;&#039; — if the carrier enters warp, uses a Jump Gate, or Emergency Jumps, all fighters are despawned immediately and must be rebuilt.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Tips&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* Assign your &#039;&#039;&#039;best-equipped spare ship&#039;&#039;&#039; as a fighter — it keeps all its modules, turrets, and weapons&lt;br /&gt;
* Fighters are excellent for drawing aggro away from your main ship in tough fight.&lt;br /&gt;
* The Hangar Extension skill is a massive power spike — 6 fighters instead of 5 is a 20% increase in firepower&lt;br /&gt;
* Fighters with long-range weapons (missiles, beams) are more survivable than close-range brawlers since they stay at distance&lt;br /&gt;
* If your carrier has strong shields, fighters benefit indirectly by having fewer enemies targeting them&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3922</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3922"/>
		<updated>2026-07-22T06:58:39Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Hangar spawn.png|thumb|500x500px|Fighters deploying from a Hangar Bay]]&lt;br /&gt;
Hangar Bays are equipment modules that allow a ship to carry, deploy, and recall &#039;&#039;&#039;fighter craft&#039;&#039;&#039;, small combat ships that act as autonomous wingmen. Unlike Drones, fighters are fully-fledged ships with their own equipment, hull, and crew requirements.&lt;br /&gt;
&lt;br /&gt;
The individual setup of fighters is entirely up to the Player. &lt;br /&gt;
&lt;br /&gt;
[[Echo|ECHO]] can use Hangar Bays, and will actively deploy fighters when entering combat and recall them when leaving a POI. The Player can also deploy or recall manually by clicking the &#039;&#039;&#039;Deploy&#039;&#039;&#039; / &#039;&#039;&#039;Recall&#039;&#039;&#039; buttons at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
Fighters can be destroyed by enemy activity. When destroyed, the Hangar Bay will manufacture a replacement after a delay. Launching an Emergency Jump with fighters deployed is not an issue — the bay automatically despawns them and they&#039;ll be rebuilt when re-deployed.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Hangar Bay Slots&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Hangar Bays exist in all rarities and sizes. The number of fighter slots depends on the bay&#039;s base capacity and your Engineering skill unlocks.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Hangar Bay Slots Base off Module&lt;br /&gt;
!Size&lt;br /&gt;
!Medium&lt;br /&gt;
!With Skills&lt;br /&gt;
|-&lt;br /&gt;
!Base Slots&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
!Unique Skill&lt;br /&gt;
|—&lt;br /&gt;
|Hangar Extension +&lt;br /&gt;
|-&lt;br /&gt;
!Total Slots&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;bottom&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is 1 Engineering skill that increases the maximum amount of Fighters that can be stored and controlled , a Tier 3 unique skill unlocked via a specific captain (Stella).&lt;br /&gt;
[[File:Hangar ui.png|thumb|646x646px|Hangar UI, here you can select the Ships assigned to that Module.]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Assigning Fighters&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Unlike Drones which are configured per-slot from the Drone Bay UI, fighters are assigned from your &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; (accessible at any Space Station with a hangar facility).&lt;br /&gt;
&lt;br /&gt;
To assign a fighter:&lt;br /&gt;
# Dock at a Space Station&lt;br /&gt;
# Open the &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; screen&lt;br /&gt;
# Select the ship you want to act as carrier&lt;br /&gt;
# Click on an empty Hangar Slot&lt;br /&gt;
# Choose one of your owned ships from the list&lt;br /&gt;
&lt;br /&gt;
Any ship in your fleet can be assigned as a fighter — including captured ships, mission rewards, or vessels you&#039;ve built. The fighter keeps all its equipment, custom name, paint, and configuration.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Behavior&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Once deployed, fighters act on their own for most combat activities. They can be re-focused on a single target by clicking it.&lt;br /&gt;
&lt;br /&gt;
In combat, all fighters will focus on the target you click or the target that attacks the player first — unless you specifically order them elsewhere by clicking a different target.&lt;br /&gt;
&lt;br /&gt;
Fighters will not follow you into a Space Station interior or through a Jump Gate. They will return to the Hangar Bay automatically when you leave the POI.&lt;br /&gt;
&lt;br /&gt;
If a fighter is damaged, it can be ordered back to the bay for repairs using the &#039;&#039;&#039;Auto-Repair Recall&#039;&#039;&#039; feature — the fighter will fly back, dock, repair, and re-deploy automatically once its hull and armor are restored.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Resupply&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters accumulate cargo — mostly salvage and loot from combat kills. When a fighter returns to the bay for repairs or recall, its cargo is automatically transferred to the carrier ship. This makes fighters excellent as mobile cargo mules in combat-heavy areas.&lt;br /&gt;
[[File:Hangar ships.png|thumb|327x327px]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Power &amp;amp; Stats&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters do &#039;&#039;&#039;not&#039;&#039;&#039; draw from the ship&#039;s weapon power pool. Each fighter is an independent ship with its own:&lt;br /&gt;
* &#039;&#039;&#039;Hull HP&#039;&#039;&#039; and &#039;&#039;&#039;Armor HP&#039;&#039;&#039; — fully independent from the carrier&lt;br /&gt;
* &#039;&#039;&#039;Equipment&#039;&#039;&#039; — all modules, turrets, and systems function independently&lt;br /&gt;
* &#039;&#039;&#039;Crew&#039;&#039;&#039; — Fighters require &#039;&#039;&#039;Pilot&#039;&#039;&#039; crew (from your carrier&#039;s crew pool)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Pilot Requirement&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Each deployed fighter consumes &#039;&#039;&#039;1 Pilot&#039;&#039;&#039; from the carrier&#039;s crew. If you don&#039;t have enough Pilots, the bay will show a warning:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&amp;quot;No Pilots available&amp;quot;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deployment simply won&#039;t happen until you assign more Pilots. Off-duty fighters in the bay don&#039;t consume crew.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Passive Bay Repair&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The bay has a built-in repair rate of roughly &#039;&#039;&#039;1/90th of max hull per second&#039;&#039;&#039;. Fighters sitting in the bay slowly regenerate health and armor over time — no action required. The formula is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;repair_per_second = (1/90) * max_hp * (1 + HangarBayRepairRate_bonus)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat comes from equipment, aspects, skills, or hull bonuses and applies to both repair speed and rebuild time.&lt;br /&gt;
[[File:Hangar bay.png|thumb|402x402px|Hangar Bay Module]]&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Key Constants&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Constant&lt;br /&gt;
!Value&lt;br /&gt;
|-&lt;br /&gt;
|Rebuild time (base)&lt;br /&gt;
|120 seconds&lt;br /&gt;
|-&lt;br /&gt;
|Launch clearance distance&lt;br /&gt;
|4 units&lt;br /&gt;
|-&lt;br /&gt;
|Launch impulse speed&lt;br /&gt;
|6 units/sec&lt;br /&gt;
|-&lt;br /&gt;
|Bay repair rate&lt;br /&gt;
|1/90th max HP/sec&lt;br /&gt;
|-&lt;br /&gt;
|Dock snap distance&lt;br /&gt;
|0.3 units&lt;br /&gt;
|-&lt;br /&gt;
|Hide radius fraction&lt;br /&gt;
|1.0x ship size&lt;br /&gt;
|-&lt;br /&gt;
|Resupply cooldown (empty)&lt;br /&gt;
|15 seconds&lt;br /&gt;
|-&lt;br /&gt;
|Docking capture radius&lt;br /&gt;
|2 units&lt;br /&gt;
|-&lt;br /&gt;
|Path sample count&lt;br /&gt;
|16 points&lt;br /&gt;
|-&lt;br /&gt;
|Carrier lead time&lt;br /&gt;
|0.5 seconds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Rebuilding&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
When a fighter is destroyed:&lt;br /&gt;
# The slot enters &#039;&#039;&#039;Rebuild&#039;&#039;&#039; mode&lt;br /&gt;
# A &#039;&#039;&#039;120-second timer&#039;&#039;&#039; starts&lt;br /&gt;
# The timer is modified by the carrier&#039;s &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat&lt;br /&gt;
# Once the timer finishes, the fighter is fully restored (full hull, armor, and shields)&lt;br /&gt;
# If the carrier is still in combat with fighters set to auto-deploy, the fighter launches immediately&lt;br /&gt;
&lt;br /&gt;
If the carrier performs an Emergency Jump while a fighter is being rebuilt, the rebuild timer pauses and resumes when you&#039;re cleared for deployment again.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Known Limitations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Combat only&#039;&#039;&#039; — fighters cannot mine, salvage, or use utility beams. They are pure combat vessels.&lt;br /&gt;
* &#039;&#039;&#039;Pilot requirement&#039;&#039;&#039; — each active fighter needs 1 Pilot crew. Running out means no deployment.&lt;br /&gt;
* &#039;&#039;&#039;Station docking&#039;&#039;&#039; — fighters cannot dock at Space Stations independently. They follow the carrier.&lt;br /&gt;
* &#039;&#039;&#039;Flat rebuild time&#039;&#039;&#039; — rebuilding takes 120 seconds regardless of the fighter&#039;s cost, rarity, or equipment value.&lt;br /&gt;
* &#039;&#039;&#039;Despawn on travel&#039;&#039;&#039; — if the carrier enters warp, uses a Jump Gate, or Emergency Jumps, all fighters are despawned immediately and must be rebuilt.&lt;br /&gt;
* &#039;&#039;&#039;Slot cap&#039;&#039;&#039; — Large bays can hold at most 3 fighters (2 base + 1 skill). There are no Aspect upgrades for hangar slots (unlike Drone Bays which can stack up to 18).&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Tips&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* Assign your &#039;&#039;&#039;best-equipped spare ship&#039;&#039;&#039; as a fighter — it keeps all its modules, turrets, and weapons&lt;br /&gt;
* Fighters are excellent for drawing aggro away from your main ship in tough fight.&lt;br /&gt;
* The Hangar Extension skill is a massive power spike — 6 fighters instead of 5 is a 20% increase in firepower&lt;br /&gt;
* If you&#039;re running low on Pilots, check your crew assignments — you may have Pilots assigned to other roles or not enough trained&lt;br /&gt;
* Fighters with long-range weapons (missiles, beams) are more survivable than close-range brawlers since they stay at distance&lt;br /&gt;
* If your carrier has strong shields, fighters benefit indirectly by having fewer enemies targeting them&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3921</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3921"/>
		<updated>2026-07-22T06:56:18Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Hangar spawn.png|thumb|500x500px|Fighters deploying from a Hangar Bay]]&lt;br /&gt;
Hangar Bays are equipment modules that allow a ship to carry, deploy, and recall &#039;&#039;&#039;fighter craft&#039;&#039;&#039;, small combat ships that act as autonomous wingmen. Unlike Drones, fighters are fully-fledged ships with their own equipment, hull, and crew requirements.&lt;br /&gt;
&lt;br /&gt;
The individual setup of fighters is entirely up to the Player. &lt;br /&gt;
&lt;br /&gt;
[[Echo|ECHO]] can use Hangar Bays, and will actively deploy fighters when entering combat and recall them when leaving a POI. The Player can also deploy or recall manually by clicking the &#039;&#039;&#039;Deploy&#039;&#039;&#039; / &#039;&#039;&#039;Recall&#039;&#039;&#039; buttons at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
Fighters can be destroyed by enemy activity. When destroyed, the Hangar Bay will manufacture a replacement after a delay. Launching an Emergency Jump with fighters deployed is not an issue — the bay automatically despawns them and they&#039;ll be rebuilt when re-deployed.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Hangar Bay Slots&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Hangar Bays exist in all rarities and sizes. The number of fighter slots depends on the bay&#039;s base capacity and your Engineering skill unlocks.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Hangar Bay Slots Base off Module&lt;br /&gt;
!Size&lt;br /&gt;
!Medium&lt;br /&gt;
!With Skills&lt;br /&gt;
|-&lt;br /&gt;
!Base Slots&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
!Unique Skill&lt;br /&gt;
|—&lt;br /&gt;
|Hangar Extension +&lt;br /&gt;
|-&lt;br /&gt;
!Total Slots&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;bottom&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is 1 Engineering skill that increases the maximum amount of Fighters that can be stored and controlled , a Tier 3 unique skill unlocked via a specific captain (Stella).&lt;br /&gt;
[[File:Hangar ships.png|thumb|421x421px]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Assigning Fighters&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Unlike Drones which are configured per-slot from the Drone Bay UI, fighters are assigned from your &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; (accessible at any Space Station with a hangar facility).&lt;br /&gt;
&lt;br /&gt;
To assign a fighter:&lt;br /&gt;
# Dock at a Space Station&lt;br /&gt;
# Open the &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; screen&lt;br /&gt;
# Select the ship you want to act as carrier&lt;br /&gt;
# Click on an empty Hangar Slot&lt;br /&gt;
# Choose one of your owned ships from the list&lt;br /&gt;
&lt;br /&gt;
Any ship in your fleet can be assigned as a fighter — including captured ships, mission rewards, or vessels you&#039;ve built. The fighter keeps all its equipment, custom name, paint, and configuration.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Behavior&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Once deployed, fighters act on their own for most combat activities. They can be re-focused on a single target by clicking it.&lt;br /&gt;
&lt;br /&gt;
In combat, all fighters will focus on the target you click or the target that attacks the player first — unless you specifically order them elsewhere by clicking a different target.&lt;br /&gt;
&lt;br /&gt;
Fighters will not follow you into a Space Station interior or through a Jump Gate. They will return to the Hangar Bay automatically when you leave the POI.&lt;br /&gt;
&lt;br /&gt;
If a fighter is damaged, it can be ordered back to the bay for repairs using the &#039;&#039;&#039;Auto-Repair Recall&#039;&#039;&#039; feature — the fighter will fly back, dock, repair, and re-deploy automatically once its hull and armor are restored.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Resupply&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters accumulate cargo — mostly salvage and loot from combat kills. When a fighter returns to the bay for repairs or recall, its cargo is automatically transferred to the carrier ship. This makes fighters excellent as mobile cargo mules in combat-heavy areas.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Power &amp;amp; Stats&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters do &#039;&#039;&#039;not&#039;&#039;&#039; draw from the ship&#039;s weapon power pool. Each fighter is an independent ship with its own:&lt;br /&gt;
* &#039;&#039;&#039;Hull HP&#039;&#039;&#039; and &#039;&#039;&#039;Armor HP&#039;&#039;&#039; — fully independent from the carrier&lt;br /&gt;
* &#039;&#039;&#039;Equipment&#039;&#039;&#039; — all modules, turrets, and systems function independently&lt;br /&gt;
* &#039;&#039;&#039;Crew&#039;&#039;&#039; — Fighters require &#039;&#039;&#039;Pilot&#039;&#039;&#039; crew (from your carrier&#039;s crew pool)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Pilot Requirement&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Each deployed fighter consumes &#039;&#039;&#039;1 Pilot&#039;&#039;&#039; from the carrier&#039;s crew. If you don&#039;t have enough Pilots, the bay will show a warning:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&amp;quot;No Pilots available&amp;quot;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deployment simply won&#039;t happen until you assign more Pilots. Off-duty fighters in the bay don&#039;t consume crew.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Passive Bay Repair&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The bay has a built-in repair rate of roughly &#039;&#039;&#039;1/90th of max hull per second&#039;&#039;&#039;. Fighters sitting in the bay slowly regenerate health and armor over time — no action required. The formula is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;repair_per_second = (1/90) * max_hp * (1 + HangarBayRepairRate_bonus)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat comes from equipment, aspects, skills, or hull bonuses and applies to both repair speed and rebuild time.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Key Constants&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Constant&lt;br /&gt;
!Value&lt;br /&gt;
|-&lt;br /&gt;
|Rebuild time (base)&lt;br /&gt;
|120 seconds&lt;br /&gt;
|-&lt;br /&gt;
|Launch clearance distance&lt;br /&gt;
|4 units&lt;br /&gt;
|-&lt;br /&gt;
|Launch impulse speed&lt;br /&gt;
|6 units/sec&lt;br /&gt;
|-&lt;br /&gt;
|Bay repair rate&lt;br /&gt;
|1/90th max HP/sec&lt;br /&gt;
|-&lt;br /&gt;
|Dock snap distance&lt;br /&gt;
|0.3 units&lt;br /&gt;
|-&lt;br /&gt;
|Hide radius fraction&lt;br /&gt;
|1.0x ship size&lt;br /&gt;
|-&lt;br /&gt;
|Resupply cooldown (empty)&lt;br /&gt;
|15 seconds&lt;br /&gt;
|-&lt;br /&gt;
|Docking capture radius&lt;br /&gt;
|2 units&lt;br /&gt;
|-&lt;br /&gt;
|Path sample count&lt;br /&gt;
|16 points&lt;br /&gt;
|-&lt;br /&gt;
|Carrier lead time&lt;br /&gt;
|0.5 seconds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Rebuilding&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
When a fighter is destroyed:&lt;br /&gt;
# The slot enters &#039;&#039;&#039;Rebuild&#039;&#039;&#039; mode&lt;br /&gt;
# A &#039;&#039;&#039;120-second timer&#039;&#039;&#039; starts&lt;br /&gt;
# The timer is modified by the carrier&#039;s &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat&lt;br /&gt;
# Once the timer finishes, the fighter is fully restored (full hull, armor, and shields)&lt;br /&gt;
# If the carrier is still in combat with fighters set to auto-deploy, the fighter launches immediately&lt;br /&gt;
&lt;br /&gt;
If the carrier performs an Emergency Jump while a fighter is being rebuilt, the rebuild timer pauses and resumes when you&#039;re cleared for deployment again.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Known Limitations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Combat only&#039;&#039;&#039; — fighters cannot mine, salvage, or use utility beams. They are pure combat vessels.&lt;br /&gt;
* &#039;&#039;&#039;Pilot requirement&#039;&#039;&#039; — each active fighter needs 1 Pilot crew. Running out means no deployment.&lt;br /&gt;
* &#039;&#039;&#039;Station docking&#039;&#039;&#039; — fighters cannot dock at Space Stations independently. They follow the carrier.&lt;br /&gt;
* &#039;&#039;&#039;Flat rebuild time&#039;&#039;&#039; — rebuilding takes 120 seconds regardless of the fighter&#039;s cost, rarity, or equipment value.&lt;br /&gt;
* &#039;&#039;&#039;Despawn on travel&#039;&#039;&#039; — if the carrier enters warp, uses a Jump Gate, or Emergency Jumps, all fighters are despawned immediately and must be rebuilt.&lt;br /&gt;
* &#039;&#039;&#039;Slot cap&#039;&#039;&#039; — Large bays can hold at most 3 fighters (2 base + 1 skill). There are no Aspect upgrades for hangar slots (unlike Drone Bays which can stack up to 18).&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Tips&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* Assign your &#039;&#039;&#039;best-equipped spare ship&#039;&#039;&#039; as a fighter — it keeps all its modules, turrets, and weapons&lt;br /&gt;
* Fighters are excellent for drawing aggro away from your main ship in tough fight.&lt;br /&gt;
* The Hangar Extension skill is a massive power spike — 6 fighters instead of 5 is a 20% increase in firepower&lt;br /&gt;
* If you&#039;re running low on Pilots, check your crew assignments — you may have Pilots assigned to other roles or not enough trained&lt;br /&gt;
* Fighters with long-range weapons (missiles, beams) are more survivable than close-range brawlers since they stay at distance&lt;br /&gt;
* If your carrier has strong shields, fighters benefit indirectly by having fewer enemies targeting them&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Ship_List&amp;diff=3912</id>
		<title>Ship List</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Ship_List&amp;diff=3912"/>
		<updated>2026-07-21T19:08:43Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For the listing of various ship manufacturers and points of sale for these ships, please consult [[Ship Manufacturers]]. For general information about ships, see [[Ships]].&lt;br /&gt;
&lt;br /&gt;
We also have a Ship comparison tool! https://ships.vanguardgalaxy.com&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== Column legend ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0;&amp;quot;&lt;br /&gt;
! Code !! Meaning&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left;&amp;quot; | Identity&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Ships&amp;lt;/code&amp;gt; || Ship name and image. Same name, diffrent image usually means stolen/refurbished ships&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Manufacturer&amp;lt;/code&amp;gt; || Builder, see [[Ship Manufacturers]]. In case of [[Marade Wharf]] some of their ships are actually stolen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Aux&amp;lt;/code&amp;gt; || Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, Hangar bay, Torpedo Bay.&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left;&amp;quot; | Durability &amp;lt;small&amp;gt;(modifier × base value)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Hull&amp;lt;/code&amp;gt; || Hull HP modifier.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Armr&amp;lt;/code&amp;gt; || Armor HP modifier.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Shld&amp;lt;/code&amp;gt; || Shield HP modifier.&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left;&amp;quot; | Mobility&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Crgo&amp;lt;/code&amp;gt; || Cargo capacity (m3)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Spd&amp;lt;/code&amp;gt; || Maximum warp speed (ls/s)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Acc&amp;lt;/code&amp;gt; || Warp acceleration (ls/s²)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Tonn&amp;lt;/code&amp;gt; || Tonnage - affects mobility, rotation, non-warp acceleration&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left;&amp;quot; | Combat&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Hrdp&amp;lt;/code&amp;gt; || Hardpoint slots, size-coded (e.g. 2M 3S means &amp;quot;2 Medium and 3 Small Hardpoints&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left;&amp;quot; | Requirements &amp;lt;small&amp;gt;(— means not available from a shipyard)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ShpR&amp;lt;/code&amp;gt; || Shipyard reputation required&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Cnq&amp;lt;/code&amp;gt; || Conquest rank required&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PlyrL&amp;lt;/code&amp;gt; || Player level required, 0! means starter ship&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ShpL&amp;lt;/code&amp;gt; || Shipyard level required&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Small Ships ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|Cutters=&lt;br /&gt;
&amp;quot;A light combat craft, usually armed with a single turret. Fast and expendable.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Cutter || 1 || 1 || 5 || 3 || 1 || +30% Combat Power, +3% Critical Chance || —&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Ships with Player Level requirement 0! are available as starter ships.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Raptor&amp;lt;br&amp;gt;[[File:Raptor.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.9&lt;br /&gt;
| —&lt;br /&gt;
| 0.25&lt;br /&gt;
| 60&lt;br /&gt;
| 71&lt;br /&gt;
| 19&lt;br /&gt;
| 1S&lt;br /&gt;
| 290&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 0!&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Zephyr&amp;lt;br&amp;gt;[[File:Zephyr.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.4&lt;br /&gt;
| —&lt;br /&gt;
| 1.5&lt;br /&gt;
| 95&lt;br /&gt;
| 87&lt;br /&gt;
| 19&lt;br /&gt;
| 1S&lt;br /&gt;
| 290&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 12&lt;br /&gt;
| 7+&lt;br /&gt;
|-&lt;br /&gt;
| Zephyr&amp;lt;br&amp;gt;[[File:Zephyr.wharf.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.4&lt;br /&gt;
| —&lt;br /&gt;
| 1.5&lt;br /&gt;
| 95&lt;br /&gt;
| 87&lt;br /&gt;
| 19&lt;br /&gt;
| 1S&lt;br /&gt;
| 290&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 12&lt;br /&gt;
| 7+&lt;br /&gt;
|-&lt;br /&gt;
| Interceptor&amp;lt;br&amp;gt;[[File:Interceptor.png|frameless|200px]]&lt;br /&gt;
| [[Custos Arms]]&lt;br /&gt;
| —&lt;br /&gt;
| 0.9&lt;br /&gt;
| —&lt;br /&gt;
| 1.1&lt;br /&gt;
| 60&lt;br /&gt;
| 91&lt;br /&gt;
| 24&lt;br /&gt;
| 1S&lt;br /&gt;
| 220&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Cudal&amp;lt;br&amp;gt;[[File:Cudal.png|frameless|200px]]&lt;br /&gt;
| [[Frontier]]&lt;br /&gt;
| —&lt;br /&gt;
| 0.8&lt;br /&gt;
| —&lt;br /&gt;
| 1.0&lt;br /&gt;
| 100&lt;br /&gt;
| 62&lt;br /&gt;
| 17&lt;br /&gt;
| 1S&lt;br /&gt;
| 340&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 3&lt;br /&gt;
| 0 - 15&lt;br /&gt;
|-&lt;br /&gt;
| Cudal&amp;lt;br&amp;gt;[[File:Cudal.wharf.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 0.8&lt;br /&gt;
| —&lt;br /&gt;
| 1.0&lt;br /&gt;
| 100&lt;br /&gt;
| 62&lt;br /&gt;
| 17&lt;br /&gt;
| 1S&lt;br /&gt;
| 340&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 3&lt;br /&gt;
| 0 - 15&lt;br /&gt;
|-&lt;br /&gt;
| Margil&amp;lt;br&amp;gt;[[File:Margil.png|frameless|200px]]&lt;br /&gt;
| [[Frontier]]&lt;br /&gt;
| —&lt;br /&gt;
| 3.2&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
| 70&lt;br /&gt;
| 71&lt;br /&gt;
| 19&lt;br /&gt;
| 1S&lt;br /&gt;
| 260&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 0!&lt;br /&gt;
| 0 - 15&lt;br /&gt;
|-&lt;br /&gt;
| Margil&amp;lt;br&amp;gt;[[File:Margil.wharf.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 3.2&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
| 70&lt;br /&gt;
| 71&lt;br /&gt;
| 19&lt;br /&gt;
| 1S&lt;br /&gt;
| 260&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 1&lt;br /&gt;
| 0 - 15&lt;br /&gt;
|-&lt;br /&gt;
| Buzzard&amp;lt;br&amp;gt;[[File:Buzzard.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 0.8&lt;br /&gt;
| 0.7&lt;br /&gt;
| —&lt;br /&gt;
| 60&lt;br /&gt;
| 96&lt;br /&gt;
| 24&lt;br /&gt;
| 1S&lt;br /&gt;
| 190&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 1&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| NB-15 &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;β&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;[[File:NB-15.png|200px]]&lt;br /&gt;
| [[Malcyte]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.5&lt;br /&gt;
| —&lt;br /&gt;
| 1.9&lt;br /&gt;
| 80&lt;br /&gt;
| 87&lt;br /&gt;
| 19&lt;br /&gt;
| 1S&lt;br /&gt;
| 290&lt;br /&gt;
| Exalted&lt;br /&gt;
| —&lt;br /&gt;
| 26&lt;br /&gt;
| 14+&lt;br /&gt;
|-&lt;br /&gt;
| Firecs&amp;lt;br&amp;gt;[[File:Firecs.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.1&lt;br /&gt;
| —&lt;br /&gt;
| 1.35&lt;br /&gt;
| 40&lt;br /&gt;
| 93&lt;br /&gt;
| 11&lt;br /&gt;
| 1S&lt;br /&gt;
| 205&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 7&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| Thorne&amp;lt;br&amp;gt;[[File:Thorne.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.1&lt;br /&gt;
| —&lt;br /&gt;
| 1.3&lt;br /&gt;
| 60&lt;br /&gt;
| 88&lt;br /&gt;
| 12&lt;br /&gt;
| 1S&lt;br /&gt;
| 220&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Thorne {{beta}}&amp;lt;br&amp;gt;[[File:Thorne-meridia.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.1&lt;br /&gt;
| —&lt;br /&gt;
| 1.3&lt;br /&gt;
| 60&lt;br /&gt;
| 88&lt;br /&gt;
| 12&lt;br /&gt;
| 1S&lt;br /&gt;
| 220&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Seradal {{beta}}&amp;lt;br&amp;gt;[[File:Seradal.png|frameless|120x120px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.2&lt;br /&gt;
| —&lt;br /&gt;
| 1.25&lt;br /&gt;
| 60&lt;br /&gt;
| 89&lt;br /&gt;
| 15&lt;br /&gt;
| 1S&lt;br /&gt;
| 210&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Stilet&amp;lt;br&amp;gt;[[File:Stilet.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.0&lt;br /&gt;
| 1.2&lt;br /&gt;
| —&lt;br /&gt;
| 70&lt;br /&gt;
| 65&lt;br /&gt;
| 18&lt;br /&gt;
| 1S&lt;br /&gt;
| 285&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 3&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Stinger&amp;lt;br&amp;gt;[[File:Stinger.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 0.6&lt;br /&gt;
| 0.5&lt;br /&gt;
| —&lt;br /&gt;
| 40&lt;br /&gt;
| 103&lt;br /&gt;
| 26&lt;br /&gt;
| 1S&lt;br /&gt;
| 165&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 1&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Tesak&amp;lt;br&amp;gt;[[File:Tesak.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.1&lt;br /&gt;
| 1.3&lt;br /&gt;
| —&lt;br /&gt;
| 115&lt;br /&gt;
| 65&lt;br /&gt;
| 18&lt;br /&gt;
| 1S&lt;br /&gt;
| 355&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Acolyte AC-1&amp;lt;br&amp;gt;[[File:Acolyte AC-1.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.0&lt;br /&gt;
| —&lt;br /&gt;
| 1.0&lt;br /&gt;
| 70&lt;br /&gt;
| 68&lt;br /&gt;
| 19&lt;br /&gt;
| 1S&lt;br /&gt;
| 320&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 3&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Votary&amp;lt;br&amp;gt;[[File:Votary.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| —&lt;br /&gt;
| 0.8&lt;br /&gt;
| —&lt;br /&gt;
| 1.0&lt;br /&gt;
| 90&lt;br /&gt;
| 101&lt;br /&gt;
| 23&lt;br /&gt;
| 1S&lt;br /&gt;
| 345&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Sagitta&amp;lt;br&amp;gt;[[File:Sagitta.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.0&lt;br /&gt;
| —&lt;br /&gt;
| 1.1&lt;br /&gt;
| 90&lt;br /&gt;
| 88&lt;br /&gt;
| 23&lt;br /&gt;
| 1S&lt;br /&gt;
| 330&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 3&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Verutum&amp;lt;br&amp;gt;[[File:Verutum.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.1&lt;br /&gt;
| —&lt;br /&gt;
| 1.2&lt;br /&gt;
| 110&lt;br /&gt;
| 81&lt;br /&gt;
| 19&lt;br /&gt;
| 1S&lt;br /&gt;
| 380&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Gunships=&lt;br /&gt;
&amp;quot;A small strike vessel, carrying heavier firepower than a cutter. Effective in close-range dogfights.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Gunship || 2 || 2 || 15 || 10 || 1 || +30% Combat Power, +3% Critical Chance || +20% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Shrike&amp;lt;br&amp;gt;[[File:Shrike.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.2&lt;br /&gt;
| —&lt;br /&gt;
| 1.85&lt;br /&gt;
| 155&lt;br /&gt;
| 67&lt;br /&gt;
| 23&lt;br /&gt;
| 2S&lt;br /&gt;
| 585&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 13&lt;br /&gt;
| 8+&lt;br /&gt;
|-&lt;br /&gt;
| Shrike&amp;lt;br&amp;gt;[[File:Shrike.wharf.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.2&lt;br /&gt;
| —&lt;br /&gt;
| 1.85&lt;br /&gt;
| 155&lt;br /&gt;
| 67&lt;br /&gt;
| 23&lt;br /&gt;
| 2S&lt;br /&gt;
| 585&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 13&lt;br /&gt;
| 8+&lt;br /&gt;
|-&lt;br /&gt;
| Cruiser&amp;lt;br&amp;gt;[[File:Cruiser.png|frameless|200px]]&lt;br /&gt;
| [[Custos Arms]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.3&lt;br /&gt;
| —&lt;br /&gt;
| 1.6&lt;br /&gt;
| 90&lt;br /&gt;
| 78&lt;br /&gt;
| 21&lt;br /&gt;
| 2S&lt;br /&gt;
| 380&lt;br /&gt;
| Distinguished&lt;br /&gt;
| —&lt;br /&gt;
| 9&lt;br /&gt;
| 4+&lt;br /&gt;
|-&lt;br /&gt;
| Tergal&amp;lt;br&amp;gt;[[File:Tergal.png|frameless|200px]]&lt;br /&gt;
| [[Frontier]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.5&lt;br /&gt;
| —&lt;br /&gt;
| 1.5&lt;br /&gt;
| 160&lt;br /&gt;
| 56&lt;br /&gt;
| 14&lt;br /&gt;
| 2S&lt;br /&gt;
| 650&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 8&lt;br /&gt;
| 3+&lt;br /&gt;
|-&lt;br /&gt;
| Tergal&amp;lt;br&amp;gt;[[File:Tergal.wharf.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.5&lt;br /&gt;
| —&lt;br /&gt;
| 1.5&lt;br /&gt;
| 160&lt;br /&gt;
| 56&lt;br /&gt;
| 14&lt;br /&gt;
| 2S&lt;br /&gt;
| 650&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 8&lt;br /&gt;
| 3+&lt;br /&gt;
|-&lt;br /&gt;
| Outrider&amp;lt;br&amp;gt;[[File:Outrider.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.2&lt;br /&gt;
| 1.3&lt;br /&gt;
| —&lt;br /&gt;
| 110&lt;br /&gt;
| 67&lt;br /&gt;
| 10&lt;br /&gt;
| 2S&lt;br /&gt;
| 660&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 7&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| Oryne&amp;lt;br&amp;gt;[[File:Oryne.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.6&lt;br /&gt;
| —&lt;br /&gt;
| 1.65&lt;br /&gt;
| 135&lt;br /&gt;
| 69&lt;br /&gt;
| 24&lt;br /&gt;
| 2S&lt;br /&gt;
| 450&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 9&lt;br /&gt;
| 4+&lt;br /&gt;
|-&lt;br /&gt;
| Petara&amp;lt;br&amp;gt;[[File:Petara.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.55&lt;br /&gt;
| —&lt;br /&gt;
| 1.7&lt;br /&gt;
| 120&lt;br /&gt;
| 69&lt;br /&gt;
| 24&lt;br /&gt;
| 2S&lt;br /&gt;
| 470&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 9&lt;br /&gt;
| 4+&lt;br /&gt;
|-&lt;br /&gt;
| Petara {{beta}}&amp;lt;br&amp;gt;[[File:Petara-meridia.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.55&lt;br /&gt;
| —&lt;br /&gt;
| 1.7&lt;br /&gt;
| 120&lt;br /&gt;
| 69&lt;br /&gt;
| 24&lt;br /&gt;
| 2S&lt;br /&gt;
| 470&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 9&lt;br /&gt;
| 4+&lt;br /&gt;
|-&lt;br /&gt;
| Berdysh&amp;lt;br&amp;gt;[[File:Berdysh.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.6&lt;br /&gt;
| 1.8&lt;br /&gt;
| —&lt;br /&gt;
| 190&lt;br /&gt;
| 59&lt;br /&gt;
| 10&lt;br /&gt;
| 1M&lt;br /&gt;
| 810&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 8&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| Molot&amp;lt;br&amp;gt;[[File:Molot.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.4&lt;br /&gt;
| 1.6&lt;br /&gt;
| —&lt;br /&gt;
| 130&lt;br /&gt;
| 46&lt;br /&gt;
| 12&lt;br /&gt;
| 2S&lt;br /&gt;
| 750&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 7&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| Arbiter&amp;lt;br&amp;gt;[[File:Arbiter.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.4&lt;br /&gt;
| 1.3&lt;br /&gt;
| —&lt;br /&gt;
| 145&lt;br /&gt;
| 99&lt;br /&gt;
| 20&lt;br /&gt;
| 2S&lt;br /&gt;
| 620&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 8&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| Confessor&amp;lt;br&amp;gt;[[File:Confessor.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.5&lt;br /&gt;
| 1.45&lt;br /&gt;
| —&lt;br /&gt;
| 155&lt;br /&gt;
| 57&lt;br /&gt;
| 16&lt;br /&gt;
| 2S&lt;br /&gt;
| 680&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 7&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| Preceptor&amp;lt;br&amp;gt;[[File:Preceptor.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| Dronebay&amp;lt;br&amp;gt;Small&lt;br /&gt;
| 1.55&lt;br /&gt;
| 1.6&lt;br /&gt;
| —&lt;br /&gt;
| 140&lt;br /&gt;
| 52&lt;br /&gt;
| 14&lt;br /&gt;
| —&lt;br /&gt;
| 730&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 7&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| Phalanx&amp;lt;br&amp;gt;[[File:Phalanx.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.5&lt;br /&gt;
| —&lt;br /&gt;
| 1.7&lt;br /&gt;
| 170&lt;br /&gt;
| 54&lt;br /&gt;
| 14&lt;br /&gt;
| 1M&lt;br /&gt;
| 650&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 7&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| Triarius&amp;lt;br&amp;gt;[[File:Triarius.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 2&lt;br /&gt;
| —&lt;br /&gt;
| 1.8&lt;br /&gt;
| 195&lt;br /&gt;
| 60&lt;br /&gt;
| 13&lt;br /&gt;
| 2S&lt;br /&gt;
| 750&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 8&lt;br /&gt;
| 2+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Mining Skiffs=&lt;br /&gt;
&amp;quot;A compact mining ship, specialized for quick resource gathering in asteroid fields.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Mining Skiff || 1 || 1 || 6 || 3 || 1 || +30% Mining Power, +20% Resource Yield || —&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Ships with Player Level requirement 0! are available as starter ships.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Garnil&amp;lt;br&amp;gt;[[File:Garnil.png|frameless|200px]] || [[Frontier]] || — || 2.05 || — || — || 190 || 54 || 18 || 1S || 410 || Neutral || — || 0! || 0 - 15&lt;br /&gt;
|-&lt;br /&gt;
| Rockhound&amp;lt;br&amp;gt;[[File:Rockhound.png|frameless|200px]] || [[Marade Wharf]] || — || 2.6 || — || — || 140 || 50 || 10 || 1S || 360 || Neutral || — || 1 || 0+&lt;br /&gt;
|-&lt;br /&gt;
| Chisel Mk I&amp;lt;br&amp;gt;[[File:Chisel Mk I.png|frameless|200px]] || [[Mindus Manufacturing]] || — || 2.0 || — || — || 180 || 62 || 18 || 1S || 380 || Wary || — || 0! || 0 - 15&lt;br /&gt;
|-&lt;br /&gt;
| Chisel Mk II&amp;lt;br&amp;gt;[[File:Chisel Mk II.png|frameless|200px]] || [[Mindus Manufacturing]] || — || 2.2 || 0.5 || — || 290 || 48 || 12 || 1S || 550 || Neutral || — || 2 || 0+&lt;br /&gt;
|-&lt;br /&gt;
| Bur&amp;lt;br&amp;gt;[[File:Bur.png|frameless|200px]] || [[RedStar Forge]] || — || 1.2 || 0.6 || — || 325 || 39 || 10 || 1S || 390 || Neutral || — ||  4 || 0+&lt;br /&gt;
|-&lt;br /&gt;
| Veinseeker&amp;lt;br&amp;gt;[[File:Veinseeker.png|frameless|200px]] || [[Spirit Design]] || — || 1.2 || — || 0.5 || 290 || 78 || 17 || 1S || 390 || Neutral || — || 4 || 0+&lt;br /&gt;
|-&lt;br /&gt;
| Dolabra&amp;lt;br&amp;gt;[[File:dolabra.png|frameless|200px]] || [[Stellar Industries]] || — || 1.2 || — || 0.7 || 310 || 51 || 12 || 1S || 480 || Neutral || — || 4 || 0+&lt;br /&gt;
|-&lt;br /&gt;
| Bore&amp;lt;br&amp;gt;[[File:Bore.png|frameless|200px]] || [[Utixon Corp]] || — || 2.4 || — || — || 290 || 42 || 9 || 1S || 440 || Neutral || — || 2 || 0+&lt;br /&gt;
|-&lt;br /&gt;
| Belvak {{beta}}&amp;lt;br&amp;gt;[[File:Belvak.png|frameless|200px]]&lt;br /&gt;
| [[Varlis Construct]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.0&lt;br /&gt;
| —&lt;br /&gt;
| 0.8&lt;br /&gt;
| 180&lt;br /&gt;
| 73&lt;br /&gt;
| 15&lt;br /&gt;
| 1S&lt;br /&gt;
| 340&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| 0 - 15&lt;br /&gt;
|-&lt;br /&gt;
| Corsix {{beta}}&amp;lt;br&amp;gt;[[File:Corsix.png|frameless|120x120px]]&lt;br /&gt;
| [[Varlis Construct]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.1&lt;br /&gt;
| —&lt;br /&gt;
| 1.2&lt;br /&gt;
| 280&lt;br /&gt;
| 80&lt;br /&gt;
| 13&lt;br /&gt;
| 1S&lt;br /&gt;
| 470&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| 0 - 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Hewers=&lt;br /&gt;
&amp;quot;Not as vulnerable as Skiffs, Hewer sized mining ships open up more possibilities for gathering ores.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Hewer || 2 || 2 || 18 || 9 || 1 || +30% Mining Power, +20% Resource Yield || +10% Weapon Range&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Gale&amp;lt;br&amp;gt;[[File:Gale.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.8&lt;br /&gt;
| —&lt;br /&gt;
| 1.8&lt;br /&gt;
| 320&lt;br /&gt;
| 62&lt;br /&gt;
| 34&lt;br /&gt;
| 1M&lt;br /&gt;
| 620&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 11&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Pillager&amp;lt;br&amp;gt;[[File:Pillager.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 2&lt;br /&gt;
| 1.2&lt;br /&gt;
| —&lt;br /&gt;
| 280&lt;br /&gt;
| 50&lt;br /&gt;
| 10&lt;br /&gt;
| 2S&lt;br /&gt;
| 570&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 7&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| Foreman&amp;lt;br&amp;gt;[[File:Foreman DC-2.png|frameless|200px]]&lt;br /&gt;
| [[Mindus Manufacturing]]&lt;br /&gt;
| Dronebay&amp;lt;br&amp;gt;Small&lt;br /&gt;
| 2.3&lt;br /&gt;
| 0.8&lt;br /&gt;
| —&lt;br /&gt;
| 460&lt;br /&gt;
| 50&lt;br /&gt;
| 10&lt;br /&gt;
| —&lt;br /&gt;
| 900&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 7&lt;br /&gt;
| 2+&lt;br /&gt;
|-&lt;br /&gt;
| Pickaxe&amp;lt;br&amp;gt;[[File:Pickaxe.png|frameless|200px]]&lt;br /&gt;
| [[Mindus Manufacturing]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.3&lt;br /&gt;
| 0.6&lt;br /&gt;
| —&lt;br /&gt;
| 370&lt;br /&gt;
| 40&lt;br /&gt;
| 13&lt;br /&gt;
| 2S&lt;br /&gt;
| 690&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 7&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Eradon&amp;lt;br&amp;gt;[[File:Eradon.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.65&lt;br /&gt;
| —&lt;br /&gt;
| 1.4&lt;br /&gt;
| 310&lt;br /&gt;
| 56&lt;br /&gt;
| 11&lt;br /&gt;
| 2S&lt;br /&gt;
| 490&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 9&lt;br /&gt;
| 4+&lt;br /&gt;
|-&lt;br /&gt;
| Kailov&amp;lt;br&amp;gt;[[File:Kailov.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.0&lt;br /&gt;
| 1.0&lt;br /&gt;
| —&lt;br /&gt;
| 420&lt;br /&gt;
| 38&lt;br /&gt;
| 11&lt;br /&gt;
| 1M&lt;br /&gt;
| 710&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 8&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Devotee&amp;lt;br&amp;gt;[[File:Devotee.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| —&lt;br /&gt;
| 2&lt;br /&gt;
| —&lt;br /&gt;
| 0.7&lt;br /&gt;
| 390&lt;br /&gt;
| 67&lt;br /&gt;
| 15&lt;br /&gt;
| 2S&lt;br /&gt;
| 770&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 8&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Carbo&amp;lt;br&amp;gt;[[File:Carbo.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 2&lt;br /&gt;
| —&lt;br /&gt;
| 0.9&lt;br /&gt;
| 500&lt;br /&gt;
| 48&lt;br /&gt;
| 16&lt;br /&gt;
| 2S&lt;br /&gt;
| 1240&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 8&lt;br /&gt;
| 6+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Salvage Skiffs=&lt;br /&gt;
&amp;quot;A small nimble salvage ship, darting through debris fields stripping whatever it can carry before moving on.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Salvage Skiff || 1 || 1 || 6 || 3 || 1 || +30% Salvage Power, +20% Resource Yield || —&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Ships with Player Level requirement 0! are available as starter ships.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Squall&amp;lt;br&amp;gt;[[File:Squall.png|frameless|200px]] || [[Akai Armory]] || — || 1.2 || — || 1.4 || 140 || 84 || 23 || 1S || 340 || Neutral || — || 4 || 0 - 15&lt;br /&gt;
|-&lt;br /&gt;
| Chisel Mk I SN&amp;lt;br&amp;gt;[[File:Chisel Mk I SN.png|frameless|200px]] || [[Mindus Manufacturing]] || — || 1.7 || — || — || 220 || 58 || 18 || 1S || 395 || Neutral || — || 0! || 0 - 15&lt;br /&gt;
|-&lt;br /&gt;
| Rezak&amp;lt;br&amp;gt;[[File:Skrap.png|frameless|200px]] || [[RedStar Forge]] || — || 1.1 || 1.2 || — || 210 || 54 || 10 || 1S || 510 || Neutral || — || 4 || 0 - 25&lt;br /&gt;
|-&lt;br /&gt;
| Reliqua&amp;lt;br&amp;gt;[[File:Reliqua.png|frameless|200px]] || [[Spirit Design]] || — || 1.1 || — || 0.5 || 200 || 71 || 19 || 1S || 500 || Neutral || — || 4 || 0 - 25&lt;br /&gt;
|-&lt;br /&gt;
| Lacinia&amp;lt;br&amp;gt;[[File:Lacinia.png|frameless|200px]] || [[Stellar Industries]] || — || 1.2 || — || 0.6 || 230 || 61 || 17 || 1S || 530 || Neutral || — || 4 || 0 - 25&lt;br /&gt;
|-&lt;br /&gt;
| Tugbit&amp;lt;br&amp;gt;[[File:Tugbit.png|frameless|200px]] || [[Utixon Corp]] || — || 1.8 || — || — || 210 || 54 || 16 || 1S || 410 || Neutral || — || 0! || 0 - 15&lt;br /&gt;
|-&lt;br /&gt;
| Wreckrat {{beta}}&amp;lt;br&amp;gt;[[File:Wreckrat.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 1&lt;br /&gt;
| 1.1&lt;br /&gt;
| —&lt;br /&gt;
| 135&lt;br /&gt;
| 89&lt;br /&gt;
| 21&lt;br /&gt;
| 1S&lt;br /&gt;
| 390&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 4&lt;br /&gt;
| 0 - 15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Scows=&lt;br /&gt;
&amp;quot;A step up from the salvage Skiff, the Scow is a workhorse salvager built to haul junk rather than look good doing it.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Scow || 2 || 2 || 18 || 9 || 1 || +30% Salvage Power, +20% Resource Yield || +10% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Kite&amp;lt;br&amp;gt;[[File:Kite.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.8&lt;br /&gt;
| —&lt;br /&gt;
| 1.8&lt;br /&gt;
| 320&lt;br /&gt;
| 62&lt;br /&gt;
| 34&lt;br /&gt;
| 1M&lt;br /&gt;
| 620&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 11&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Otrub&amp;lt;br&amp;gt;[[File:Otrub.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.3&lt;br /&gt;
| 1.1&lt;br /&gt;
| —&lt;br /&gt;
| 340&lt;br /&gt;
| 45&lt;br /&gt;
| 12&lt;br /&gt;
| 2S&lt;br /&gt;
| 780&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 6&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Remnant&amp;lt;br&amp;gt;[[File:Remnant.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| Dronebay S&lt;br /&gt;
| 1.2&lt;br /&gt;
| —&lt;br /&gt;
| 1.4&lt;br /&gt;
| 200&lt;br /&gt;
| 59&lt;br /&gt;
| 13&lt;br /&gt;
| 1S&lt;br /&gt;
| 825&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 7&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Rekkem&amp;lt;br&amp;gt;[[File:Rekkem.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.1&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
| 320&lt;br /&gt;
| 50&lt;br /&gt;
| 15&lt;br /&gt;
| 2S&lt;br /&gt;
| 390&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 6&lt;br /&gt;
| 0 - 20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Couriers=&lt;br /&gt;
&amp;quot;The fast Courier cargo ship is built for speed over capacity, ideal for delivering high value cargo across sectors.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Courier || 1 || 1 || 4 || 2 || 1 || — || —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Vesper&amp;lt;br&amp;gt;[[File:Vesper.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.3&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
| 560&lt;br /&gt;
| 96&lt;br /&gt;
| 30&lt;br /&gt;
| 1S&lt;br /&gt;
| 620&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 9&lt;br /&gt;
| 0+&lt;br /&gt;
|-&lt;br /&gt;
| Oxlo Mk I&amp;lt;br&amp;gt;[[File:Oxlo Mk I.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| —&lt;br /&gt;
| 2&lt;br /&gt;
| 0.4&lt;br /&gt;
| —&lt;br /&gt;
| 880&lt;br /&gt;
| 48&lt;br /&gt;
| 11&lt;br /&gt;
| 1S&lt;br /&gt;
| 750&lt;br /&gt;
| Neutral&lt;br /&gt;
| —&lt;br /&gt;
| 6&lt;br /&gt;
| 0+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Ferries=&lt;br /&gt;
&amp;quot;A modest transport vessel ferrying goods and supplies between stations, the backbone of trade.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Ferry || 2 || 2 || 12 || 6 || 1 || — || —&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Vagon&amp;lt;br&amp;gt;[[File:Vagon.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 2&lt;br /&gt;
| 1.9&lt;br /&gt;
| —&lt;br /&gt;
| 1240&lt;br /&gt;
| 39&lt;br /&gt;
| 12&lt;br /&gt;
| 1S&lt;br /&gt;
| 1210&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 9&lt;br /&gt;
| 4+&lt;br /&gt;
|-&lt;br /&gt;
| Vectura&amp;lt;br&amp;gt;[[File:Vectura.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.2&lt;br /&gt;
| —&lt;br /&gt;
| 1.3&lt;br /&gt;
| 1100&lt;br /&gt;
| 44&lt;br /&gt;
| 13&lt;br /&gt;
| 2S&lt;br /&gt;
| 1430&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 9&lt;br /&gt;
| 4+&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Medium Ships ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|Corvettes=&lt;br /&gt;
&amp;quot;Corvettes bridge the gap between gunships and frigates, combining agility with enough firepower to threaten larger ships.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Corvette || 3 || 3 || 25 || 16 || 3 || +30% Combat Power, +3% Critical Chance || +40% Weapon Range&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Cyclone&amp;lt;br&amp;gt;[[File:Cyclone.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| —&lt;br /&gt;
| 4&lt;br /&gt;
| —&lt;br /&gt;
| 4&lt;br /&gt;
| 460&lt;br /&gt;
| 65&lt;br /&gt;
| 9&lt;br /&gt;
| 1M 2S&lt;br /&gt;
| 1250&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 21&lt;br /&gt;
| 16+&lt;br /&gt;
|-&lt;br /&gt;
| Siren&amp;lt;br&amp;gt;[[File:Siren.png|frameless|200px]]&lt;br /&gt;
| [[Custos Arms]]&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| —&lt;br /&gt;
| 5&lt;br /&gt;
| 380&lt;br /&gt;
| 65&lt;br /&gt;
| 17&lt;br /&gt;
| 2M&lt;br /&gt;
| 1150&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 22&lt;br /&gt;
| 17+&lt;br /&gt;
|-&lt;br /&gt;
| Siren Overseer&amp;lt;br&amp;gt;[[File:Siren Overseer.png|frameless|200px]]&lt;br /&gt;
| [[Custos Arms]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 4.5&lt;br /&gt;
| —&lt;br /&gt;
| 4.5&lt;br /&gt;
| 310&lt;br /&gt;
| 59&lt;br /&gt;
| 16&lt;br /&gt;
| 1M&lt;br /&gt;
| 1380&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 24&lt;br /&gt;
| 19+&lt;br /&gt;
|-&lt;br /&gt;
| Sarnil&amp;lt;br&amp;gt;[[File:Sarnil.png|frameless|200px]]&lt;br /&gt;
| [[Frontier]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.5&lt;br /&gt;
| —&lt;br /&gt;
| 2.5&lt;br /&gt;
| 310&lt;br /&gt;
| 53&lt;br /&gt;
| 12&lt;br /&gt;
| 1M 2S&lt;br /&gt;
| 1560&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 17&lt;br /&gt;
| 12+&lt;br /&gt;
|-&lt;br /&gt;
| KZ-1 &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;β&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;[[File:KZ-1.png|200px]]&lt;br /&gt;
| [[Malcyte]]&lt;br /&gt;
| —&lt;br /&gt;
| 6&lt;br /&gt;
| —&lt;br /&gt;
| 5.9&lt;br /&gt;
| 280&lt;br /&gt;
| 72&lt;br /&gt;
| 20&lt;br /&gt;
| 1M 3S&lt;br /&gt;
| 1310&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 33&lt;br /&gt;
| 28+&lt;br /&gt;
|-&lt;br /&gt;
| Sarnil&amp;lt;br&amp;gt;[[File:Sarnil.wharf.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.5&lt;br /&gt;
| —&lt;br /&gt;
| 2.5&lt;br /&gt;
| 310&lt;br /&gt;
| 53&lt;br /&gt;
| 12&lt;br /&gt;
| 1M 2S&lt;br /&gt;
| 1560&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 17&lt;br /&gt;
| 12+&lt;br /&gt;
|-&lt;br /&gt;
| Blood Dredger&amp;lt;br&amp;gt;[[File:Blood Dredger.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.5&lt;br /&gt;
| 2.5&lt;br /&gt;
| —&lt;br /&gt;
| 490&lt;br /&gt;
| 50&lt;br /&gt;
| 10&lt;br /&gt;
| 1M 1S&lt;br /&gt;
| 1300&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 12&lt;br /&gt;
| 7+&lt;br /&gt;
|-&lt;br /&gt;
| Syladon&amp;lt;br&amp;gt;[[File:Syladon.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 4.6&lt;br /&gt;
| —&lt;br /&gt;
| 4.5&lt;br /&gt;
| 400&lt;br /&gt;
| 62&lt;br /&gt;
| 17&lt;br /&gt;
| 2M&lt;br /&gt;
| 1250&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 22&lt;br /&gt;
| 17+&lt;br /&gt;
|-&lt;br /&gt;
| Syladon {{beta}}&amp;lt;br&amp;gt;[[File:Syladon-meridia.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 4.9&lt;br /&gt;
| —&lt;br /&gt;
| 4.5&lt;br /&gt;
| 400&lt;br /&gt;
| 62&lt;br /&gt;
| 17&lt;br /&gt;
| 2M 1S&lt;br /&gt;
| 1190&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 22&lt;br /&gt;
| 17+&lt;br /&gt;
|-&lt;br /&gt;
| Bulav&amp;lt;br&amp;gt;[[File:Kamin.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 4&lt;br /&gt;
| 4&lt;br /&gt;
| —&lt;br /&gt;
| 410&lt;br /&gt;
| 52&lt;br /&gt;
| 15&lt;br /&gt;
| 1M 1S&lt;br /&gt;
| 1340&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 13&lt;br /&gt;
| 8+&lt;br /&gt;
|-&lt;br /&gt;
| Exemplar&amp;lt;br&amp;gt;[[File:Exemplar.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 3.1&lt;br /&gt;
| —&lt;br /&gt;
| 3.6&lt;br /&gt;
| 520&lt;br /&gt;
| 59&lt;br /&gt;
| 11&lt;br /&gt;
| 1S&lt;br /&gt;
| 1340&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 21&lt;br /&gt;
| 16+&lt;br /&gt;
|-&lt;br /&gt;
| Fanatic&amp;lt;br&amp;gt;[[File:Fanatic.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| —&lt;br /&gt;
| 3.2&lt;br /&gt;
| —&lt;br /&gt;
| 3.2&lt;br /&gt;
| 650&lt;br /&gt;
| 40&lt;br /&gt;
| 15&lt;br /&gt;
| 1M 2S&lt;br /&gt;
| 1250&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 14&lt;br /&gt;
| 9+&lt;br /&gt;
|-&lt;br /&gt;
| Maniple&amp;lt;br&amp;gt;[[File:Maniple.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 3.2&lt;br /&gt;
| —&lt;br /&gt;
| 3.5&lt;br /&gt;
| 600&lt;br /&gt;
| 38&lt;br /&gt;
| 16&lt;br /&gt;
| 4S&lt;br /&gt;
| 1360&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 17&lt;br /&gt;
| 12+&lt;br /&gt;
|-&lt;br /&gt;
| Tribune&amp;lt;br&amp;gt;[[File:Tribune.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| Dronebay S&lt;br /&gt;
| 3.1&lt;br /&gt;
| —&lt;br /&gt;
| 3.5&lt;br /&gt;
| 580&lt;br /&gt;
| 42&lt;br /&gt;
| 18&lt;br /&gt;
| 2S&lt;br /&gt;
| 1490&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 21&lt;br /&gt;
| 16+&lt;br /&gt;
|-&lt;br /&gt;
| Nevaros {{beta}}&amp;lt;br&amp;gt;[[File:Nevaros.png|frameless|200px]]&lt;br /&gt;
| [[Varlis Construct]]&lt;br /&gt;
| —&lt;br /&gt;
| 5.4&lt;br /&gt;
| —&lt;br /&gt;
| 4.9&lt;br /&gt;
| 340&lt;br /&gt;
| 67&lt;br /&gt;
| 18&lt;br /&gt;
| 1M 3S&lt;br /&gt;
| 1420&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 26&lt;br /&gt;
| 21+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Frigates=&lt;br /&gt;
&amp;quot;A durable frontline warship, Frigates form the backbone of many fleets, balancing offense and defense.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Frigate || 4 || 4 || 50 || 32 || 4 || +30% Combat Power, +3% Critical Chance || +70% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Tempest&amp;lt;br&amp;gt;[[File:Tempest.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| Dronebay S&lt;br /&gt;
| 7.3&lt;br /&gt;
| —&lt;br /&gt;
| 8.1&lt;br /&gt;
| 590&lt;br /&gt;
| 79&lt;br /&gt;
| 7&lt;br /&gt;
| 2M 1S&lt;br /&gt;
| 2550&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 29&lt;br /&gt;
| 12+&lt;br /&gt;
|-&lt;br /&gt;
| Enforcer&amp;lt;br&amp;gt;[[File:Enforcer.png|frameless|200px]]&lt;br /&gt;
| [[Custos Arms]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 6.6&lt;br /&gt;
| —&lt;br /&gt;
| 8.2&lt;br /&gt;
| 560&lt;br /&gt;
| 110&lt;br /&gt;
| 20&lt;br /&gt;
| 2M 1S&lt;br /&gt;
| 2700&lt;br /&gt;
| Exalted&lt;br /&gt;
| —&lt;br /&gt;
| 38&lt;br /&gt;
| 32+&lt;br /&gt;
|-&lt;br /&gt;
| AB-7 &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;β&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;[[File:AB-7.png|200px]]&lt;br /&gt;
| [[Malcyte]]&lt;br /&gt;
| Torpedo M&lt;br /&gt;
| 8&lt;br /&gt;
| —&lt;br /&gt;
| 9.3&lt;br /&gt;
| 820&lt;br /&gt;
| 89&lt;br /&gt;
| 19&lt;br /&gt;
| 3M&lt;br /&gt;
| 2530&lt;br /&gt;
| Exalted&lt;br /&gt;
| —&lt;br /&gt;
| 85&lt;br /&gt;
| 70+&lt;br /&gt;
|-&lt;br /&gt;
| Brimstone&amp;lt;br&amp;gt;[[File:Brimstone.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 7.1&lt;br /&gt;
| —&lt;br /&gt;
| 6.9&lt;br /&gt;
| 840&lt;br /&gt;
| 62&lt;br /&gt;
| 9&lt;br /&gt;
| 1M 4S&lt;br /&gt;
| 2800&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 29&lt;br /&gt;
| 24+&lt;br /&gt;
|-&lt;br /&gt;
| Ramose&amp;lt;br&amp;gt;[[File:Ramose.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 5.8&lt;br /&gt;
| —&lt;br /&gt;
| 8.4&lt;br /&gt;
| 710&lt;br /&gt;
| 81&lt;br /&gt;
| 11&lt;br /&gt;
| 3M 1S&lt;br /&gt;
| 2410&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 35&lt;br /&gt;
| 32+&lt;br /&gt;
|-&lt;br /&gt;
| Grom&amp;lt;br&amp;gt;[[File:Grom.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 5.3&lt;br /&gt;
| 8.7&lt;br /&gt;
| —&lt;br /&gt;
| 620&lt;br /&gt;
| 78&lt;br /&gt;
| 6&lt;br /&gt;
| 2M 2S&lt;br /&gt;
| 2480&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 29&lt;br /&gt;
| 24+&lt;br /&gt;
|-&lt;br /&gt;
| Penance&amp;lt;br&amp;gt;[[File:Penance.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| —&lt;br /&gt;
| 6.8&lt;br /&gt;
| —&lt;br /&gt;
| 6.9&lt;br /&gt;
| 960&lt;br /&gt;
| 73&lt;br /&gt;
| 6&lt;br /&gt;
| 3M&lt;br /&gt;
| 2800&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 29&lt;br /&gt;
| 24+&lt;br /&gt;
|-&lt;br /&gt;
| Redeemer&amp;lt;br&amp;gt;[[File:Redeemer.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 6.4&lt;br /&gt;
| —&lt;br /&gt;
| 5.1&lt;br /&gt;
| 860&lt;br /&gt;
| 70&lt;br /&gt;
| 7&lt;br /&gt;
| 1M 2S&lt;br /&gt;
| 2625&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 29&lt;br /&gt;
| 22+&lt;br /&gt;
|-&lt;br /&gt;
| Centurion&amp;lt;br&amp;gt;[[File:Centurion.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 6.4&lt;br /&gt;
| —&lt;br /&gt;
| 7.8&lt;br /&gt;
| 840&lt;br /&gt;
| 70&lt;br /&gt;
| 6&lt;br /&gt;
| 3M&lt;br /&gt;
| 2750&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 29&lt;br /&gt;
| 24+&lt;br /&gt;
|-&lt;br /&gt;
| Valdrax {{beta}}&amp;lt;br&amp;gt;[[File:Valdrax.png|frameless|200px]]&lt;br /&gt;
| [[Varlis Construct]]&lt;br /&gt;
| —&lt;br /&gt;
| 6&lt;br /&gt;
| —&lt;br /&gt;
| 8.9&lt;br /&gt;
| 1020&lt;br /&gt;
| 85&lt;br /&gt;
| 6&lt;br /&gt;
| 3M 1S&lt;br /&gt;
| 2720&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 35&lt;br /&gt;
| 30+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Dredgers=&lt;br /&gt;
&amp;quot;More capable than Hewers but still relatively nimble, the Dredger is built for extended operations far from the safety of a station.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Dredger || 3 || 2–4* || 30 || 15 || 2 || +30% Mining Power, +20% Resource Yield || +20% Weapon Range &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Dredger officers vary by ship: Moxe 2, most dredgers 3, Auger ERC-7 4.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Delvir&amp;lt;br&amp;gt;[[File:Delvir.png|frameless|200px]]&lt;br /&gt;
| [[Frontier]]&lt;br /&gt;
| —&lt;br /&gt;
| 3.8&lt;br /&gt;
| 0.6&lt;br /&gt;
| —&lt;br /&gt;
| 780&lt;br /&gt;
| 50&lt;br /&gt;
| 10&lt;br /&gt;
| 3S&lt;br /&gt;
| 2150&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 12&lt;br /&gt;
| 7+&lt;br /&gt;
|-&lt;br /&gt;
| Auger ERC-2&amp;lt;br&amp;gt;[[File:Auger ERC-2.png|frameless|200px]]&lt;br /&gt;
| [[Mindus Manufacturing]]&lt;br /&gt;
| —&lt;br /&gt;
| 3.2&lt;br /&gt;
| 1.4&lt;br /&gt;
| —&lt;br /&gt;
| 880&lt;br /&gt;
| 50&lt;br /&gt;
| 10&lt;br /&gt;
| 1M 1S&lt;br /&gt;
| 1950&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 11&lt;br /&gt;
| 6+&lt;br /&gt;
|-&lt;br /&gt;
| Auger ERC-7&amp;lt;br&amp;gt;[[File:Auger ERC-7.png|frameless|200px]]&lt;br /&gt;
| [[Mindus Manufacturing]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.8&lt;br /&gt;
| —&lt;br /&gt;
| 2&lt;br /&gt;
| 700&lt;br /&gt;
| 50&lt;br /&gt;
| 10&lt;br /&gt;
| 1M 2S&lt;br /&gt;
| 1875&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 19&lt;br /&gt;
| 14+&lt;br /&gt;
|-&lt;br /&gt;
| Rudnik&amp;lt;br&amp;gt;[[File:Rudnik.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| Dronebay S&lt;br /&gt;
| 3.4&lt;br /&gt;
| 2&lt;br /&gt;
| —&lt;br /&gt;
| 870&lt;br /&gt;
| 65&lt;br /&gt;
| 12&lt;br /&gt;
| 2S&lt;br /&gt;
| 2680&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 13&lt;br /&gt;
| 8+&lt;br /&gt;
|-&lt;br /&gt;
| Anotan&amp;lt;br&amp;gt;[[File:Anotan.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 2.9&lt;br /&gt;
| —&lt;br /&gt;
| 1.6&lt;br /&gt;
| 720&lt;br /&gt;
| 70&lt;br /&gt;
| 15&lt;br /&gt;
| 2S&lt;br /&gt;
| 2800&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 13&lt;br /&gt;
| 8+&lt;br /&gt;
|-&lt;br /&gt;
| Terebra&amp;lt;br&amp;gt;[[File:Terebra.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.9&lt;br /&gt;
| —&lt;br /&gt;
| 2&lt;br /&gt;
| 920&lt;br /&gt;
| 60&lt;br /&gt;
| 11&lt;br /&gt;
| 3S&lt;br /&gt;
| 2130&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 13&lt;br /&gt;
| 8+&lt;br /&gt;
|-&lt;br /&gt;
| Moxe&amp;lt;br&amp;gt;[[File:Moxe.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 2.9&lt;br /&gt;
| 0.6&lt;br /&gt;
| —&lt;br /&gt;
| 740&lt;br /&gt;
| 50&lt;br /&gt;
| 10&lt;br /&gt;
| 1S&lt;br /&gt;
| 2620&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 13&lt;br /&gt;
| 8+&lt;br /&gt;
|-&lt;br /&gt;
| Cratovac {{beta}}&amp;lt;br&amp;gt;[[File:Cratovac.png|frameless|200px]]&lt;br /&gt;
| [[Varlis Construct]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 2&lt;br /&gt;
| —&lt;br /&gt;
| 2.4&lt;br /&gt;
| 460&lt;br /&gt;
| 75&lt;br /&gt;
| 13&lt;br /&gt;
| 2S&lt;br /&gt;
| 2140&lt;br /&gt;
| Exalted&lt;br /&gt;
| —&lt;br /&gt;
| 12&lt;br /&gt;
| 7+&lt;br /&gt;
|-&lt;br /&gt;
| Tarc {{beta}}&amp;lt;br&amp;gt;[[File:Tarc.png|frameless|200px]]&lt;br /&gt;
| [[Varlis Construct]]&lt;br /&gt;
| —&lt;br /&gt;
| 1.9&lt;br /&gt;
| —&lt;br /&gt;
| 2.4&lt;br /&gt;
| 680&lt;br /&gt;
| 75&lt;br /&gt;
| 13&lt;br /&gt;
| 3S&lt;br /&gt;
| 1890&lt;br /&gt;
| Exalted&lt;br /&gt;
| —&lt;br /&gt;
| 12&lt;br /&gt;
| 7+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Breakers=&lt;br /&gt;
&amp;quot;A mid-sized spaceship built to fracture large asteroid bodies, a notable step-up from Dredgers.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Breaker || 4 || 4 || 60 || 30 || 4 || +30% Mining Power, +20% Resource Yield || +30% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Warden&amp;lt;br&amp;gt;[[File:Warden DSF-3.png|frameless|200px]]&lt;br /&gt;
| [[Mindus Manufacturing]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 5.2&lt;br /&gt;
| —&lt;br /&gt;
| 3.2&lt;br /&gt;
| 1220&lt;br /&gt;
| 77&lt;br /&gt;
| 7&lt;br /&gt;
| 1M 2S&lt;br /&gt;
| 2350&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 30&lt;br /&gt;
| 22+&lt;br /&gt;
|-&lt;br /&gt;
| Ferrum&amp;lt;br&amp;gt;[[File:Ferrum.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 4.6&lt;br /&gt;
| —&lt;br /&gt;
| 2.6&lt;br /&gt;
| 1100&lt;br /&gt;
| 96&lt;br /&gt;
| 9&lt;br /&gt;
| 2M 3S&lt;br /&gt;
| 1900&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 30&lt;br /&gt;
| 25+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Scrappers=&lt;br /&gt;
&amp;quot;A dedicated scrapping ship equipped to dismantle wrecks with greater ease than the smaller Scow type salvagers.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Scrapper || 3 || 3–4* || 30 || 15 || 2 || +30% Salvage Power, +20% Resource Yield || +20% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Scrapper officers vary by ship: Bero, Lom, Osprey, Elytra 3; Fultor, Rasura, Exdyne 4.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Osprey&amp;lt;br&amp;gt;[[File:Osprey.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.6&lt;br /&gt;
| 1.3&lt;br /&gt;
| 4&lt;br /&gt;
| 590&lt;br /&gt;
| 56&lt;br /&gt;
| 12&lt;br /&gt;
| 1M 2S&lt;br /&gt;
| 1360&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 22&lt;br /&gt;
| 17+&lt;br /&gt;
|-&lt;br /&gt;
| Bero&amp;lt;br&amp;gt;[[File:Bero.png|frameless|200px]]&lt;br /&gt;
| [[Frontier]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.2&lt;br /&gt;
| 0.8&lt;br /&gt;
| —&lt;br /&gt;
| 530&lt;br /&gt;
| 41&lt;br /&gt;
| 15&lt;br /&gt;
| 1M 1S&lt;br /&gt;
| 1430&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 12&lt;br /&gt;
| 7 - 50&lt;br /&gt;
|-&lt;br /&gt;
| Lom&amp;lt;br&amp;gt;[[File:Lom.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| Dronebay S&lt;br /&gt;
| 3&lt;br /&gt;
| 1.8&lt;br /&gt;
| —&lt;br /&gt;
| 660&lt;br /&gt;
| 49&lt;br /&gt;
| 12&lt;br /&gt;
| 1M 1S&lt;br /&gt;
| 1820&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 20&lt;br /&gt;
| 15+&lt;br /&gt;
|-&lt;br /&gt;
| Elytra&amp;lt;br&amp;gt;[[File:Elytra.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 2.8&lt;br /&gt;
| —&lt;br /&gt;
| 1.2&lt;br /&gt;
| 425&lt;br /&gt;
| 62&lt;br /&gt;
| 16&lt;br /&gt;
| 1S&lt;br /&gt;
| 1820&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 19&lt;br /&gt;
| 14+&lt;br /&gt;
|-&lt;br /&gt;
| Rasura&amp;lt;br&amp;gt;[[File:Rasura.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 3&lt;br /&gt;
| —&lt;br /&gt;
| 1.2&lt;br /&gt;
| 650&lt;br /&gt;
| 45&lt;br /&gt;
| 15&lt;br /&gt;
| 1M 1S&lt;br /&gt;
| 1610&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 14&lt;br /&gt;
| 9+&lt;br /&gt;
|-&lt;br /&gt;
| Exdyne&amp;lt;br&amp;gt;[[File:Exdyne.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 3.4&lt;br /&gt;
| 1.2&lt;br /&gt;
| —&lt;br /&gt;
| 590&lt;br /&gt;
| 58&lt;br /&gt;
| 5&lt;br /&gt;
| 2S&lt;br /&gt;
| 1820&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 24&lt;br /&gt;
| 19+&lt;br /&gt;
|-&lt;br /&gt;
| Fultor&amp;lt;br&amp;gt;[[File:Fultor.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| —&lt;br /&gt;
| 3.8&lt;br /&gt;
| 1.2&lt;br /&gt;
| —&lt;br /&gt;
| 880&lt;br /&gt;
| 26&lt;br /&gt;
| 6&lt;br /&gt;
| 1M 2S&lt;br /&gt;
| 2320&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 19&lt;br /&gt;
| 14+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|-|Wreckers=&lt;br /&gt;
&amp;quot;A heavy salvage ship built to tear apart wrecks, creating raw materials in no time and with it a fat paycheck.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Wrecker || 4 || 4 || 60 || 30 || 4 || +30% Salvage Power, +20% Resource Yield || +30% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Kuvald&amp;lt;br&amp;gt;[[File:kuvald.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 4&lt;br /&gt;
| 6&lt;br /&gt;
| —&lt;br /&gt;
| 1050&lt;br /&gt;
| 79&lt;br /&gt;
| 32&lt;br /&gt;
| 3M 1S&lt;br /&gt;
| 2026&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 28&lt;br /&gt;
| 23+&lt;br /&gt;
|-&lt;br /&gt;
| Sanctifier&amp;lt;br&amp;gt;[[File:Sanctifier.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 5&lt;br /&gt;
| —&lt;br /&gt;
| 3.1&lt;br /&gt;
| 720&lt;br /&gt;
| 98&lt;br /&gt;
| 30&lt;br /&gt;
| 2M&lt;br /&gt;
| 2580&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 28&lt;br /&gt;
| 23+&lt;br /&gt;
|-&lt;br /&gt;
| Scoria&amp;lt;br&amp;gt;[[File:Scoria.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| —&lt;br /&gt;
| 4.6&lt;br /&gt;
| —&lt;br /&gt;
| 2.6&lt;br /&gt;
| 1150&lt;br /&gt;
| 92&lt;br /&gt;
| 21&lt;br /&gt;
| 2M 2S&lt;br /&gt;
| 1850&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 29&lt;br /&gt;
| 24+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Haulers=&lt;br /&gt;
&amp;quot;The Hauler is capable of carrying significant cargo loads across larger routes, and more capable of protecting itself.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Hauler || 3 || 2–3* || 20 || 10 || 2 || — || +20% Weapon Range&lt;br /&gt;
|} &lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Hauler officers: Oxlo Mk II, Cormel 2; Compline, Bremya 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Cormel&amp;lt;br&amp;gt;[[File:Cormel.png|frameless|200px]]&lt;br /&gt;
| [[Frontier]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.1&lt;br /&gt;
| 0.6&lt;br /&gt;
| —&lt;br /&gt;
| 1470&lt;br /&gt;
| 39&lt;br /&gt;
| 13&lt;br /&gt;
| 1S&lt;br /&gt;
| 1890&lt;br /&gt;
| Cordial&lt;br /&gt;
| —&lt;br /&gt;
| 10&lt;br /&gt;
| 5 - 50&lt;br /&gt;
|-&lt;br /&gt;
| Bremya&amp;lt;br&amp;gt;[[File:Bremya.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| —&lt;br /&gt;
| 3&lt;br /&gt;
| 4.5&lt;br /&gt;
| —&lt;br /&gt;
| 2500&lt;br /&gt;
| 42&lt;br /&gt;
| 30&lt;br /&gt;
| 2S&lt;br /&gt;
| 2600&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 12&lt;br /&gt;
| 7+&lt;br /&gt;
|-&lt;br /&gt;
| Compline&amp;lt;br&amp;gt;[[File:Compline.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.2&lt;br /&gt;
| —&lt;br /&gt;
| 1.1&lt;br /&gt;
| 900&lt;br /&gt;
| 112&lt;br /&gt;
| 20&lt;br /&gt;
| 1S&lt;br /&gt;
| 1680&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 15&lt;br /&gt;
| 10+&lt;br /&gt;
|-&lt;br /&gt;
| Oxlo Mk II&amp;lt;br&amp;gt;[[File:Oxlo Mk II.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| —&lt;br /&gt;
| 2.4&lt;br /&gt;
| 0.7&lt;br /&gt;
| —&lt;br /&gt;
| 1920&lt;br /&gt;
| 32&lt;br /&gt;
| 9&lt;br /&gt;
| 1S&lt;br /&gt;
| 2320&lt;br /&gt;
| Friendly&lt;br /&gt;
| —&lt;br /&gt;
| 14&lt;br /&gt;
| 9 - 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Freighters=&lt;br /&gt;
&amp;quot;A dedicated vessel built for bulk cargo runs, the Freighter trades speed for capacity on the major trade lanes between systems.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Freighter|| 4 || 3* || 40 || 20 || 2* || — || +30% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Only one size-4 transport exists (Trundar); it has 3 officers, not 4, and 2 boosters instead of 4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Trundar&amp;lt;br&amp;gt;[[File:Trundar.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| —&lt;br /&gt;
| 7.8&lt;br /&gt;
| 1.6&lt;br /&gt;
| —&lt;br /&gt;
| 3600&lt;br /&gt;
| 16&lt;br /&gt;
| 5&lt;br /&gt;
| 2S&lt;br /&gt;
| 2950&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 26&lt;br /&gt;
| 21 - 80&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Large Ships ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
|-|Destroyers=&lt;br /&gt;
&amp;quot;A heavily-armed warship focused on offensive capabilities, often used for patrol and assault missions.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Destroyer || 5 || 5 || 80 || 52 || 5 || +30% Combat Power, +3% Critical Chance || +100% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Hurricane&amp;lt;br&amp;gt;[[File:Hurricane.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| —&lt;br /&gt;
| 11.4&lt;br /&gt;
| —&lt;br /&gt;
| 12.3&lt;br /&gt;
| 1080&lt;br /&gt;
| 115&lt;br /&gt;
| 14&lt;br /&gt;
| 1L 2M 2S&lt;br /&gt;
| 4420&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 45&lt;br /&gt;
| 40+&lt;br /&gt;
|-&lt;br /&gt;
| Typhoon&amp;lt;br&amp;gt;[[File:Typhoon.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| Dronebay L&lt;br /&gt;
| 11.8&lt;br /&gt;
| —&lt;br /&gt;
| 10.5&lt;br /&gt;
| 990&lt;br /&gt;
| 111&lt;br /&gt;
| 12&lt;br /&gt;
| 1M 3S&lt;br /&gt;
| 4620&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 53&lt;br /&gt;
| 40+&lt;br /&gt;
|-&lt;br /&gt;
| Eclipse&amp;lt;br&amp;gt;[[File:Eclipse.png|frameless|200px]]&lt;br /&gt;
| [[Kharon Forgeworks]]&lt;br /&gt;
| Dronebay S&lt;br /&gt;
| 8.1&lt;br /&gt;
| —&lt;br /&gt;
| 8.9&lt;br /&gt;
| 1060&lt;br /&gt;
| 128&lt;br /&gt;
| 22&lt;br /&gt;
| 1L 3M&lt;br /&gt;
| 4020&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Rypper&amp;lt;br&amp;gt;[[File:Rypper.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| Dronebay L&lt;br /&gt;
| 12&lt;br /&gt;
| 10&lt;br /&gt;
| —&lt;br /&gt;
| 1230&lt;br /&gt;
| 106&lt;br /&gt;
| 6&lt;br /&gt;
| 1L 2S&lt;br /&gt;
| 4520&lt;br /&gt;
| Distinguished&lt;br /&gt;
| Cutthroat&lt;br /&gt;
| 52&lt;br /&gt;
| 40+&lt;br /&gt;
|-&lt;br /&gt;
| Meriavex {{beta}}&amp;lt;br&amp;gt;[[File:Meriavex.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 7.5&lt;br /&gt;
| 12.1&lt;br /&gt;
| —&lt;br /&gt;
| 1020&lt;br /&gt;
| 113&lt;br /&gt;
| 12&lt;br /&gt;
| 2L 2M 1S&lt;br /&gt;
| 4280&lt;br /&gt;
| Respected&lt;br /&gt;
| —&lt;br /&gt;
| 80&lt;br /&gt;
| 200+&lt;br /&gt;
|-&lt;br /&gt;
| Terravex&amp;lt;br&amp;gt;[[File:Terravex.png|frameless|200px]]&lt;br /&gt;
| [[Obrix]]&lt;br /&gt;
| —&lt;br /&gt;
| 7.5&lt;br /&gt;
| —&lt;br /&gt;
| 11.4&lt;br /&gt;
| 1100&lt;br /&gt;
| 122&lt;br /&gt;
| 16&lt;br /&gt;
| 2L 2M&lt;br /&gt;
| 4120&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
| —&lt;br /&gt;
|-&lt;br /&gt;
| Varyag&amp;lt;br&amp;gt;[[File:Varyag.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| Torpedoes M&lt;br /&gt;
| 9.4&lt;br /&gt;
| 12.3&lt;br /&gt;
| —&lt;br /&gt;
| 990&lt;br /&gt;
| 115&lt;br /&gt;
| 5&lt;br /&gt;
| 2M 3S&lt;br /&gt;
| 3800&lt;br /&gt;
| Respected&lt;br /&gt;
| Comrade&lt;br /&gt;
| 45&lt;br /&gt;
| 40+&lt;br /&gt;
|-&lt;br /&gt;
| Varyag-R&amp;lt;br&amp;gt;[[File:Varyag-R.png|frameless|200px]]&lt;br /&gt;
| [[RedStar Forge]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 9&lt;br /&gt;
| 11.2&lt;br /&gt;
| —&lt;br /&gt;
| 950&lt;br /&gt;
| 109&lt;br /&gt;
| 6&lt;br /&gt;
| 1L 2M&lt;br /&gt;
| 4020&lt;br /&gt;
| Respected&lt;br /&gt;
| Comrade&lt;br /&gt;
| 45&lt;br /&gt;
| 40+&lt;br /&gt;
|-&lt;br /&gt;
| Inquisitor&amp;lt;br&amp;gt;[[File:Inquisitor.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 11.8&lt;br /&gt;
| —&lt;br /&gt;
| 10.3&lt;br /&gt;
| 970&lt;br /&gt;
| 120&lt;br /&gt;
| 5&lt;br /&gt;
| 1L 1M 2S&lt;br /&gt;
| 4100&lt;br /&gt;
| Respected&lt;br /&gt;
| Initiate&lt;br /&gt;
| 45&lt;br /&gt;
| 40+&lt;br /&gt;
|-&lt;br /&gt;
| Sparta&amp;lt;br&amp;gt;[[File:Sparta.png|frameless|200px]]&lt;br /&gt;
| [[Stellar Industries]]&lt;br /&gt;
| Torpedoes M&lt;br /&gt;
| 13.2&lt;br /&gt;
| —&lt;br /&gt;
| 11.9&lt;br /&gt;
| 1090&lt;br /&gt;
| 110&lt;br /&gt;
| 5&lt;br /&gt;
| 2L 2S&lt;br /&gt;
| 4620&lt;br /&gt;
| Respected&lt;br /&gt;
| Associate&lt;br /&gt;
| 45&lt;br /&gt;
| 40+&lt;br /&gt;
|-&lt;br /&gt;
| Carkalon {{beta}}&amp;lt;br&amp;gt;[[File:Carkalon.png|frameless|200px]]&lt;br /&gt;
| [[Varlis Construct]]&lt;br /&gt;
| Torpedoes M&lt;br /&gt;
| 8&lt;br /&gt;
| —&lt;br /&gt;
| 13.4&lt;br /&gt;
| 850&lt;br /&gt;
| 130&lt;br /&gt;
| 10&lt;br /&gt;
| 2L 1M 2S&lt;br /&gt;
| 3780&lt;br /&gt;
| Exalted&lt;br /&gt;
| —&lt;br /&gt;
| 45&lt;br /&gt;
| 40+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Battlecruiser Beta=&lt;br /&gt;
&amp;quot;A powerful warship combining the speed of a cruiser with the firepower of a battleship.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Battlecruiser ||  6||  6||  138||  78||  6||  +30% Combat Power, +3% Critical Chance||  +120% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Monsoon {{Beta}}&amp;lt;br&amp;gt;[[File:Monsoon.png|frameless|200px]]&lt;br /&gt;
| [[Akai Armory]]&lt;br /&gt;
| —&lt;br /&gt;
| 18&lt;br /&gt;
| —&lt;br /&gt;
| 19.5&lt;br /&gt;
| 2350&lt;br /&gt;
| 73&lt;br /&gt;
| 13&lt;br /&gt;
| 3L 2M 2S&lt;br /&gt;
| 7680&lt;br /&gt;
| Distinguished&lt;br /&gt;
| —&lt;br /&gt;
|60&lt;br /&gt;
|55+&lt;br /&gt;
|-&lt;br /&gt;
| SL-406 &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;β&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;[[File:SL-406.png|200px]]&lt;br /&gt;
| [[Malcyte]]&lt;br /&gt;
| Torpedo M&lt;br /&gt;
| 21&lt;br /&gt;
| —&lt;br /&gt;
| 25.2&lt;br /&gt;
| 1520&lt;br /&gt;
| 79&lt;br /&gt;
| 18&lt;br /&gt;
| 3L 2M&lt;br /&gt;
| 7260&lt;br /&gt;
| Exalted&lt;br /&gt;
| N/A&lt;br /&gt;
| 80&lt;br /&gt;
| 65+&lt;br /&gt;
|-&lt;br /&gt;
| Manglor {{Beta}}&amp;lt;br&amp;gt;[[File:Manglor.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| —&lt;br /&gt;
| 16.1&lt;br /&gt;
| 20.3&lt;br /&gt;
| —&lt;br /&gt;
| 2280&lt;br /&gt;
| 72&lt;br /&gt;
| 14&lt;br /&gt;
| 3L 3M&lt;br /&gt;
| 7820&lt;br /&gt;
| Distinguished&lt;br /&gt;
| Death Captain&lt;br /&gt;
| 59&lt;br /&gt;
| 54+&lt;br /&gt;
|-&lt;br /&gt;
| Absolution {{Beta}}&amp;lt;br&amp;gt;[[File:Absolution.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| Hanger M&lt;br /&gt;
| 17.2&lt;br /&gt;
| —&lt;br /&gt;
| 22.3&lt;br /&gt;
| 2610&lt;br /&gt;
| 82&lt;br /&gt;
| 15&lt;br /&gt;
| 2L 1M&lt;br /&gt;
| 8650&lt;br /&gt;
| Distinguished&lt;br /&gt;
| Conduit of the Swarm&lt;br /&gt;
| 60&lt;br /&gt;
| 52+&lt;br /&gt;
|-&lt;br /&gt;
| Redemption {{Beta}}&amp;lt;br&amp;gt;[[File:Redemption.png|frameless|200px]]&lt;br /&gt;
| [[Spirit Design]]&lt;br /&gt;
| Hanger M&amp;lt;br&amp;gt;Dronebay L&lt;br /&gt;
| 16.8&lt;br /&gt;
| —&lt;br /&gt;
| 22.5&lt;br /&gt;
| 2350&lt;br /&gt;
| 82&lt;br /&gt;
| 14&lt;br /&gt;
| 2M&lt;br /&gt;
| 8840&lt;br /&gt;
| Distinguished&lt;br /&gt;
| Conduit of the Swarm&lt;br /&gt;
| 60&lt;br /&gt;
| 52+&lt;br /&gt;
|-&lt;br /&gt;
| Decrodan {{Beta}}&amp;lt;br&amp;gt;[[File:Decrodan.png|frameless|200px]]&lt;br /&gt;
| [[Varlis Construct]]&lt;br /&gt;
| —&lt;br /&gt;
| 18&lt;br /&gt;
| —&lt;br /&gt;
| 23.2&lt;br /&gt;
| 2280&lt;br /&gt;
| 70&lt;br /&gt;
| 15&lt;br /&gt;
| 3L 2M&lt;br /&gt;
| 7650&lt;br /&gt;
| Exalted&lt;br /&gt;
| N/A&lt;br /&gt;
| 80&lt;br /&gt;
| 65+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Harvesters=&lt;br /&gt;
&amp;quot;The ore Harvester is capable of deep asteroid field operations, its larger cargo capacity increases profit greatly.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Harvester || 5 || 5 || 96 || 48 || 5 || +30% Mining Power, +20% Resource Yield || +40% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Maul&amp;lt;br&amp;gt;[[File:Maul.png|frameless|200px]]&lt;br /&gt;
| [[Mindus Manufacturing]]&lt;br /&gt;
| Dronebay L&lt;br /&gt;
| 6.8&lt;br /&gt;
| 4.3&lt;br /&gt;
| —&lt;br /&gt;
| 1680&lt;br /&gt;
| 89&lt;br /&gt;
| 5&lt;br /&gt;
| 1L 2S&lt;br /&gt;
| 4230&lt;br /&gt;
| Respected&lt;br /&gt;
| Pickaxe Wielder&lt;br /&gt;
| 47&lt;br /&gt;
| 40+&lt;br /&gt;
|-&lt;br /&gt;
| Sledge&amp;lt;br&amp;gt;[[File:Sledge.png|frameless|200px]]&lt;br /&gt;
| [[Mindus Manufacturing]]&lt;br /&gt;
| —&lt;br /&gt;
| 7.2&lt;br /&gt;
| —&lt;br /&gt;
| 5.1&lt;br /&gt;
| 1890&lt;br /&gt;
| 94&lt;br /&gt;
| 5&lt;br /&gt;
| 2L 2M&lt;br /&gt;
| 3910&lt;br /&gt;
| Respected&lt;br /&gt;
| Pickaxe Wielder&lt;br /&gt;
| 43&lt;br /&gt;
| 40+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Mining Barge Beta=&lt;br /&gt;
&amp;quot;A massive bulk mining platform, the mining Barge is capable of extracting and carrying even larger volumes of raw ores.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Mining Barge ||  6||  6|| 166|| 72||  6|| +30% Mining Power, +20% Resource Yield||  +50% Weapon Range&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Assayer {{Beta}}&amp;lt;br&amp;gt;[[File:Assayer.png|frameless|200px]]&lt;br /&gt;
| [[Mindus Manufacturing]]&lt;br /&gt;
| Hanger M&lt;br /&gt;
| 13&lt;br /&gt;
| 15&lt;br /&gt;
| —&lt;br /&gt;
| 3800&lt;br /&gt;
| 77&lt;br /&gt;
| 10&lt;br /&gt;
| 1M 3S&lt;br /&gt;
| 8800&lt;br /&gt;
| Distinguished&lt;br /&gt;
| Chief Engineer&lt;br /&gt;
| 60&lt;br /&gt;
| 52+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Reclaimers=&lt;br /&gt;
&amp;quot;The Reclaimer is a capable mid-range salvager able to operate in contested debris fields for extended periods.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Reclaimer || 5 || 5 || 96 || 48 || 5 || +30% Salvage Power, +20% Resource Yield || +40% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Axcetor&amp;lt;br&amp;gt;[[File:Axcetor.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| —&lt;br /&gt;
| 5.8&lt;br /&gt;
| 5.5&lt;br /&gt;
| —&lt;br /&gt;
| 1830&lt;br /&gt;
| 103&lt;br /&gt;
| 7&lt;br /&gt;
| 1L 2M 2S&lt;br /&gt;
| 4400&lt;br /&gt;
| Respected&lt;br /&gt;
| Wreckhand&lt;br /&gt;
| 43&lt;br /&gt;
| 40+&lt;br /&gt;
|-&lt;br /&gt;
| Gryp&amp;lt;br&amp;gt;[[File:Gryp.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| Dronebay L&lt;br /&gt;
| 6&lt;br /&gt;
| 5&lt;br /&gt;
| —&lt;br /&gt;
| 1640&lt;br /&gt;
| 101&lt;br /&gt;
| 6&lt;br /&gt;
| 1L 2S&lt;br /&gt;
| 4400&lt;br /&gt;
| Respected&lt;br /&gt;
| Wreckhand&lt;br /&gt;
| 47&lt;br /&gt;
| 40+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Salvaging Barge Beta=&lt;br /&gt;
&amp;quot;A slow moving salvage platform built to tear apart the largest wrecks whole.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
|Salvaging Barge&lt;br /&gt;
|  6||  6|| 166|| 72||  6|| +30% Salvage Power, +20% Resource Yield|| +50% Weapon Range&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Loxagar {{Beta}}&amp;lt;br&amp;gt;[[File:Loxagar.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| Hanger M&lt;br /&gt;
| 13.2&lt;br /&gt;
| 14.8&lt;br /&gt;
| —&lt;br /&gt;
| 3650&lt;br /&gt;
| 59&lt;br /&gt;
| 11&lt;br /&gt;
| 1L 2M&lt;br /&gt;
| 8550&lt;br /&gt;
| Distinguished&lt;br /&gt;
| Ship Ripper&lt;br /&gt;
| 60&lt;br /&gt;
| 55+&lt;br /&gt;
|-&lt;br /&gt;
| Vicerak {{Beta}}&amp;lt;br&amp;gt;[[File:Vicerak.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| —&lt;br /&gt;
| 13&lt;br /&gt;
| 16&lt;br /&gt;
| —&lt;br /&gt;
| 4250&lt;br /&gt;
| 69&lt;br /&gt;
| 13&lt;br /&gt;
| 3L 3M&lt;br /&gt;
| 7820&lt;br /&gt;
| Distinguished&lt;br /&gt;
| Ship Ripper&lt;br /&gt;
| 59&lt;br /&gt;
| 54+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Carracks=&lt;br /&gt;
&amp;quot;A heavy trading vessel of considerable size and range, Carrack sized cargo ships are self sufficient ships capable of operating independently.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Carrack || 5 || 5 || 64 || 32 || 5 || — || +40% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| Paktar&amp;lt;br&amp;gt;[[File:Paktar.png|frameless|200px]]&lt;br /&gt;
| [[Marade Wharf]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 9.1&lt;br /&gt;
| 7.9&lt;br /&gt;
| —&lt;br /&gt;
| 3200&lt;br /&gt;
| 71&lt;br /&gt;
| 7&lt;br /&gt;
| 4M&lt;br /&gt;
| 4900&lt;br /&gt;
| Respected&lt;br /&gt;
| Cutthroat&lt;br /&gt;
| 42&lt;br /&gt;
| 40+&lt;br /&gt;
|-&lt;br /&gt;
| Drometar&amp;lt;br&amp;gt;[[File:Drometar.png|frameless|200px]]&lt;br /&gt;
| [[Utixon Corp]]&lt;br /&gt;
| Dronebay M&lt;br /&gt;
| 9.1&lt;br /&gt;
| 4.2&lt;br /&gt;
| —&lt;br /&gt;
| 6210&lt;br /&gt;
| 23&lt;br /&gt;
| 4&lt;br /&gt;
| 2M&lt;br /&gt;
| 6200&lt;br /&gt;
| Distinguished&lt;br /&gt;
| —&lt;br /&gt;
| 43&lt;br /&gt;
| 38+&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-|Merchantman Beta=&lt;br /&gt;
&amp;quot;The Merchantman carries vast quantities of goods across the galaxy for those who can afford its fees.&amp;quot;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 0 1em;&amp;quot;&lt;br /&gt;
! Class !! Size !! Officers !! Crew !! Brig !! Boosters !! Role Bonus !! Range Bonus&lt;br /&gt;
|-&lt;br /&gt;
| Merchantman || 6 || 6 || 96 || 48 || 6 || — || +50% Weapon Range &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! {{tooltip|Ship|Ship name and image. Same name, diffrent image usually means stolen/refurbished ships}}&lt;br /&gt;
! style=&amp;quot;width: 145px; white-space: nowrap;&amp;quot; | {{tooltip|Manufacturer|Builder, see Ship Manufacturers. In case of Marade Wharf some of their ships are actually stolen.}}&lt;br /&gt;
! style=&amp;quot;width: 110px; white-space: nowrap;&amp;quot; | {{tooltip|Aux|Auxiliary slot type and size, Bigger Ships can have multiple types, so far come Drone Bay, hangar bay, Torpedo Bay.}} &lt;br /&gt;
! {{tooltip|Hull|Hull HP modifier.}}&lt;br /&gt;
! {{tooltip|Armr|Armor HP modifier.}}&lt;br /&gt;
! {{tooltip|Shld|Shield HP modifier.}}&lt;br /&gt;
! {{tooltip|Crgo|Cargo capacity (m3)}}&lt;br /&gt;
! {{tooltip|Spd|Maximum warp speed (ls/s)}}&lt;br /&gt;
! {{tooltip|Acc|Warp acceleration (ls/s²)}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Hrdp|Hardpoint slots, size-coded (e.g. 2M 3S means 2 Medium and 3 Small Hardpoints)}}&lt;br /&gt;
! {{tooltip|Tonn|Tonnage - affects mobility, rotation, non-warp acceleration}}&lt;br /&gt;
! style=&amp;quot;width: 105px; white-space: nowrap;&amp;quot; | {{tooltip|ShpR|Shipyard reputation required}}&lt;br /&gt;
! style=&amp;quot;width: 100px; white-space: nowrap;&amp;quot; | {{tooltip|Cnq|Conquest rank required}}&lt;br /&gt;
! {{tooltip|PlyrL|Player level required, 0! means starter ship}}&lt;br /&gt;
! {{tooltip|ShpL|Shipyard level required}}&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;15&amp;quot; | No ships yet.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Lists]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Module:ShipCompare&amp;diff=3908</id>
		<title>Module:ShipCompare</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Module:ShipCompare&amp;diff=3908"/>
		<updated>2026-07-21T17:07:05Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: Add p.browse() - TabberNeue class browser organized by size, with sortable ship tables&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Module:ShipCompare&lt;br /&gt;
-- Side-by-side ship comparison tool for Vanguard Galaxy Wiki&lt;br /&gt;
--&lt;br /&gt;
-- Reads ship data directly from [[Ship List]] page — no separate data page needed.&lt;br /&gt;
-- Ships added to the Ship List page automatically appear here.&lt;br /&gt;
--&lt;br /&gt;
-- Usage:&lt;br /&gt;
--   {{#invoke:ShipCompare|compare|Raptor|Zephyr}}&lt;br /&gt;
--     Side-by-side comparison of 2+ ships&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|class|Cutters}}&lt;br /&gt;
--     Table of all ships in the &#039;Cutters&#039; class&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|search|Raptor}}&lt;br /&gt;
--     Search ships by partial name&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|stats}}&lt;br /&gt;
--     Database statistics&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|classes}}&lt;br /&gt;
--     List all classes with ship counts&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Page reader — fetches and caches the Ship List page&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local shipListPage = nil&lt;br /&gt;
&lt;br /&gt;
local function getShipListContent()&lt;br /&gt;
	if shipListPage then&lt;br /&gt;
		return shipListPage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(&#039;Ship_List&#039;)&lt;br /&gt;
	if not title then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local content = title:getContent()&lt;br /&gt;
	shipListPage = content&lt;br /&gt;
	return content&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Wikitable parser — converts Ship List wikitext to Lua data&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local sizeLabelsDisplay = { &#039;Small Ships&#039;, &#039;Medium Ships&#039;, &#039;Large Ships&#039; }&lt;br /&gt;
local sizeKeys = { &#039;small&#039;, &#039;medium&#039;, &#039;large&#039; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
	return mw.text.trim(s or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse a wiki table cell value: strip links, HTML, whitespace&lt;br /&gt;
local function cleanCell(cell)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	cell = cell:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	-- Extract manufacturer name from [[Link]]&lt;br /&gt;
	cell = cell:gsub(&#039;%[%[([^%[%]|]+)%|?[^%[%]]*%]%]&#039;, function(name)&lt;br /&gt;
		return trim(name)&lt;br /&gt;
	end)&lt;br /&gt;
	-- Remove &amp;lt;span&amp;gt; tags but keep their text&lt;br /&gt;
	cell = cell:gsub(&#039;&amp;lt;span[^&amp;gt;]*&amp;gt;&#039;, &#039;&#039;):gsub(&#039;&amp;lt;/span&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	-- Remove &amp;lt;br&amp;gt; tags (replace with space)&lt;br /&gt;
	cell = cell:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;&#039;, &#039; &#039;)&lt;br /&gt;
	-- Remove {{beta}} templates&lt;br /&gt;
	cell = cell:gsub(&#039;{{[^}]*}}&#039;, &#039;&#039;)&lt;br /&gt;
	cell = cell:gsub(&#039;\n+&#039;, &#039; &#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	return cell&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Extract ship name and image filename from the first cell&lt;br /&gt;
--- Input: &amp;quot;| Raptor&amp;lt;br&amp;gt;[[File:Raptor.png|frameless|200px]]&amp;quot;&lt;br /&gt;
local function parseShipCell(cell)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	cell = cell:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	&lt;br /&gt;
	-- Normalize newlines (from wikitext line breaks) to &amp;lt;br&amp;gt;&lt;br /&gt;
	cell = cell:gsub(&#039;\n+&#039;, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	local name = cell&lt;br /&gt;
	local image = &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- Extract image [[File:...]]&lt;br /&gt;
	local imgStart, imgEnd = cell:find(&#039;%[%[File:&#039;)&lt;br /&gt;
	if imgStart then&lt;br /&gt;
		local afterFile = cell:sub(imgEnd + 1)&lt;br /&gt;
		local pipePos = afterFile:find(&#039;|&#039;)&lt;br /&gt;
		local closePos = afterFile:find(&#039;]]&#039;)&lt;br /&gt;
		if pipePos and (not closePos or pipePos &amp;lt; closePos) then&lt;br /&gt;
			image = afterFile:sub(1, pipePos - 1)&lt;br /&gt;
		elseif closePos then&lt;br /&gt;
			image = afterFile:sub(1, closePos - 1)&lt;br /&gt;
		end&lt;br /&gt;
		name = cell:sub(1, imgStart - 1)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;&#039;, &#039; &#039;)&lt;br /&gt;
	name = trim(name)&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;$&#039;, &#039;&#039;)&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;span[^&amp;gt;]*&amp;gt;&#039;, &#039;&#039;):gsub(&#039;&amp;lt;/span&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	name = name:gsub(&#039;{{[^}]*}}&#039;, &#039;&#039;)&lt;br /&gt;
	name = trim(name)&lt;br /&gt;
	&lt;br /&gt;
	image = trim(image)&lt;br /&gt;
	if image ~= &#039;&#039; then&lt;br /&gt;
		image = image .. &#039;|frameless|200px&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return name, image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Check if a row is a header row (contains ! cells)&lt;br /&gt;
local function isHeaderRow(rowText)&lt;br /&gt;
	for line in rowText:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
		line = trim(line)&lt;br /&gt;
		if line:find(&#039;^!&#039;) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse ship data rows from a sortable wikitable&lt;br /&gt;
--- @param tableText string — the content between {| and |} of a sortable table&lt;br /&gt;
--- @return table array of ship data records&lt;br /&gt;
local function parseShipTable(tableText)&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	local rows = mw.text.split(tableText, &#039;|%-&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for ri = 1, #rows do&lt;br /&gt;
		local rowText = trim(rows[ri])&lt;br /&gt;
		if rowText == &#039;&#039; then&lt;br /&gt;
			-- skip&lt;br /&gt;
		elseif isHeaderRow(rowText) then&lt;br /&gt;
			-- skip header rows&lt;br /&gt;
		elseif rowText:find(&#039;colspan&#039;, 1, true) then&lt;br /&gt;
			-- skip colspan rows&lt;br /&gt;
		else&lt;br /&gt;
			local cells = {}&lt;br /&gt;
			&lt;br /&gt;
			if rowText:find(&#039;||&#039;) then&lt;br /&gt;
				-- Inline format: | cell1 || cell2 || cell3&lt;br /&gt;
				local parts = mw.text.split(rowText, &#039;||&#039;)&lt;br /&gt;
				for pi = 1, #parts do&lt;br /&gt;
					local part = trim(parts[pi])&lt;br /&gt;
					part = part:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
					table.insert(cells, trim(part))&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				-- Multi-line format: each | cell on its own line&lt;br /&gt;
				for each_line in rowText:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
					each_line = trim(each_line)&lt;br /&gt;
					if each_line:find(&#039;^|&#039;) and not each_line:find(&#039;^|%+&#039;) and not each_line:find(&#039;^|}&#039;) then&lt;br /&gt;
						each_line = each_line:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
						table.insert(cells, trim(each_line))&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if #cells &amp;gt;= 2 then&lt;br /&gt;
				local name, image = parseShipCell(cells[1])&lt;br /&gt;
				if name ~= &#039;&#039; then&lt;br /&gt;
					local ship = {&lt;br /&gt;
						name = name,&lt;br /&gt;
						image = image,&lt;br /&gt;
						manufacturer = cleanCell(cells[2] or &#039;&#039;),&lt;br /&gt;
						aux = cleanCell(cells[3] or &#039;&#039;),&lt;br /&gt;
						hull = cleanCell(cells[4] or &#039;&#039;),&lt;br /&gt;
						armor = cleanCell(cells[5] or &#039;&#039;),&lt;br /&gt;
						shield = cleanCell(cells[6] or &#039;&#039;),&lt;br /&gt;
						cargo = cleanCell(cells[7] or &#039;&#039;),&lt;br /&gt;
						speed = cleanCell(cells[8] or &#039;&#039;),&lt;br /&gt;
						accel = cleanCell(cells[9] or &#039;&#039;),&lt;br /&gt;
						hardpoints = cleanCell(cells[10] or &#039;&#039;),&lt;br /&gt;
						tonnage = cleanCell(cells[11] or &#039;&#039;),&lt;br /&gt;
						shipyardRep = cleanCell(cells[12] or &#039;&#039;),&lt;br /&gt;
						conquest = cleanCell(cells[13] or &#039;&#039;),&lt;br /&gt;
						playerLevel = cleanCell(cells[14] or &#039;&#039;),&lt;br /&gt;
						shipyardLevel = cleanCell(cells[15] or &#039;&#039;),&lt;br /&gt;
					}&lt;br /&gt;
					table.insert(ships, ship)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return ships&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Determine role from class name&lt;br /&gt;
local function roleFromClass(className)&lt;br /&gt;
	if className:find(&#039;Cutter&#039;) or className:find(&#039;Gunship&#039;) or className:find(&#039;Corvette&#039;) or className:find(&#039;Frigate&#039;) or className:find(&#039;Destroyer&#039;) or className:find(&#039;Battlecruiser&#039;) then&lt;br /&gt;
		return &#039;Combat&#039;&lt;br /&gt;
	elseif className:find(&#039;Mining&#039;) or className:find(&#039;Hewers&#039;) or className:find(&#039;Hewer&#039;) or className:find(&#039;Dredger&#039;) or className:find(&#039;Breaker&#039;) or className:find(&#039;Harvester&#039;) or className:find(&#039;Barge&#039;) then&lt;br /&gt;
		return &#039;Mining&#039;&lt;br /&gt;
	elseif className:find(&#039;Salvage&#039;) or className:find(&#039;Scow&#039;) or className:find(&#039;Scrapper&#039;) or className:find(&#039;Wrecker&#039;) or className:find(&#039;Reclaimer&#039;) then&lt;br /&gt;
		return &#039;Salvage&#039;&lt;br /&gt;
	elseif className:find(&#039;Courier&#039;) or className:find(&#039;Ferry&#039;) or className:find(&#039;Hauler&#039;) or className:find(&#039;Freighter&#039;) or className:find(&#039;Carrack&#039;) or className:find(&#039;Merchantman&#039;) then&lt;br /&gt;
		return &#039;Cargo&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;—&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse the entire Ship List page into ship data&lt;br /&gt;
--- TabberNeue uses |-|ClassName= syntax directly in wikitext (no &amp;lt;tabber&amp;gt; tags)&lt;br /&gt;
local function parseAllShips()&lt;br /&gt;
	local content = getShipListContent()&lt;br /&gt;
	if not content then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Split by size sections&lt;br /&gt;
	local bySize = {}&lt;br /&gt;
	local currentSize = nil&lt;br /&gt;
	&lt;br /&gt;
	for line in content:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
		line = trim(line)&lt;br /&gt;
		local sizeMatch = nil&lt;br /&gt;
		if line:find(&amp;quot;^==%s*Small Ships%s*==$&amp;quot;) then sizeMatch = &amp;quot;Small Ships&amp;quot;&lt;br /&gt;
		elseif line:find(&amp;quot;^==%s*Medium Ships%s*==$&amp;quot;) then sizeMatch = &amp;quot;Medium Ships&amp;quot;&lt;br /&gt;
		elseif line:find(&amp;quot;^==%s*Large Ships%s*==$&amp;quot;) then sizeMatch = &amp;quot;Large Ships&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		if sizeMatch then&lt;br /&gt;
			if sizeMatch == &#039;Small Ships&#039; then currentSize = &#039;small&#039;&lt;br /&gt;
			elseif sizeMatch == &#039;Medium Ships&#039; then currentSize = &#039;medium&#039;&lt;br /&gt;
			elseif sizeMatch == &#039;Large Ships&#039; then currentSize = &#039;large&#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif currentSize then&lt;br /&gt;
			if not bySize[currentSize] then&lt;br /&gt;
				bySize[currentSize] = {}&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(bySize[currentSize], line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {&lt;br /&gt;
		ships = {},&lt;br /&gt;
		byClass = {},&lt;br /&gt;
		classes = {},&lt;br /&gt;
		bySize = { small = {}, medium = {}, large = {} },&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		if bySize[sizeKey] then&lt;br /&gt;
			local sectionText = table.concat(bySize[sizeKey], &#039;\n&#039;)&lt;br /&gt;
			&lt;br /&gt;
			-- TabberNeue uses |-|ClassName= for tabs&lt;br /&gt;
			-- Split by |-| to get individual tabs&lt;br /&gt;
			-- First part before any |-| is preamble (ignored)&lt;br /&gt;
			local tabs = mw.text.split(sectionText, &#039;|%-|&#039;)&lt;br /&gt;
			&lt;br /&gt;
			for ti = 1, #tabs do&lt;br /&gt;
				local tab = trim(tabs[ti])&lt;br /&gt;
				if tab ~= &#039;&#039; then&lt;br /&gt;
					-- First line = ClassName= or ClassName=&amp;quot;description&amp;quot;&lt;br /&gt;
					local firstNewline = tab:find(&#039;\n&#039;)&lt;br /&gt;
					if firstNewline then&lt;br /&gt;
						local classNameLine = trim(tab:sub(1, firstNewline - 1))&lt;br /&gt;
						&lt;br /&gt;
						-- Remove trailing = and any description after it&lt;br /&gt;
						local eqPos = classNameLine:find(&#039;=&#039;)&lt;br /&gt;
						local className = &#039;&#039;&lt;br /&gt;
						if eqPos then&lt;br /&gt;
							className = trim(classNameLine:sub(1, eqPos - 1))&lt;br /&gt;
						else&lt;br /&gt;
							className = classNameLine&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if className ~= &#039;&#039; then&lt;br /&gt;
							-- Find the sortable wikitable&lt;br /&gt;
							local tableStart = tab:find(&#039;%{%| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
							if tableStart then&lt;br /&gt;
								local tableClose = tab:find(&#039;\n%|}&#039;, tableStart)&lt;br /&gt;
								if tableClose then&lt;br /&gt;
									local tableContent = tab:sub(tableStart, tableClose)&lt;br /&gt;
									local firstPipe = tableContent:find(&#039;\n&#039;)&lt;br /&gt;
									if firstPipe then&lt;br /&gt;
										tableContent = tableContent:sub(firstPipe + 1)&lt;br /&gt;
									end&lt;br /&gt;
									tableContent = tableContent:gsub(&#039;\n%|}$&#039;, &#039;&#039;)&lt;br /&gt;
									&lt;br /&gt;
									local ships = parseShipTable(tableContent)&lt;br /&gt;
									local role = roleFromClass(className)&lt;br /&gt;
									&lt;br /&gt;
									local classInfo = {&lt;br /&gt;
										name = className,&lt;br /&gt;
										sizeKey = sizeKey,&lt;br /&gt;
										sizeLabel = sizeLabelsDisplay[si],&lt;br /&gt;
										role = role,&lt;br /&gt;
										count = #ships,&lt;br /&gt;
									}&lt;br /&gt;
									table.insert(result.classes, classInfo)&lt;br /&gt;
									result.byClass[className] = classInfo&lt;br /&gt;
									&lt;br /&gt;
									if not result.bySize[sizeKey] then&lt;br /&gt;
										result.bySize[sizeKey] = {}&lt;br /&gt;
									end&lt;br /&gt;
									result.bySize[sizeKey][className] = ships&lt;br /&gt;
									&lt;br /&gt;
									for si2 = 1, #ships do&lt;br /&gt;
										local ship = ships[si2]&lt;br /&gt;
										ship.className = className&lt;br /&gt;
										ship.sizeKey = sizeKey&lt;br /&gt;
										table.insert(result.ships, ship)&lt;br /&gt;
									end&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Lookup helpers&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local function findShip(name, data)&lt;br /&gt;
	local matches = {}&lt;br /&gt;
	for i = 1, #data.ships do&lt;br /&gt;
		local ship = data.ships[i]&lt;br /&gt;
		if ship.name:lower() == name:lower() then&lt;br /&gt;
			table.insert(matches, ship)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return matches&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function searchShips(partial, data)&lt;br /&gt;
	local seen = {}&lt;br /&gt;
	local results = {}&lt;br /&gt;
	for i = 1, #data.ships do&lt;br /&gt;
		local ship = data.ships[i]&lt;br /&gt;
		if ship.name:lower():find(partial:lower(), 1, true) then&lt;br /&gt;
			if not seen[ship.name] then&lt;br /&gt;
				seen[ship.name] = true&lt;br /&gt;
				local ci = data.byClass[ship.className]&lt;br /&gt;
				table.insert(results, {&lt;br /&gt;
					name = ship.name,&lt;br /&gt;
					manufacturer = ship.manufacturer,&lt;br /&gt;
					class = ship.className,&lt;br /&gt;
					size = ci and ci.sizeLabel or &#039;—&#039;,&lt;br /&gt;
					role = ci and ci.role or &#039;—&#039;,&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Output helpers&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local function escapeName(name)&lt;br /&gt;
	return name:gsub(&#039;|&#039;, &#039;&amp;amp;#124;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shipHeader(ship)&lt;br /&gt;
	local image = &#039;&#039;&lt;br /&gt;
	if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
		image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;! style=&amp;quot;min-width:180px; text-align:center;&amp;quot; | &#039; .. escapeName(ship.name) .. image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatVal(val)&lt;br /&gt;
	if val == &#039;&#039; or val == &#039;—&#039; or val == nil then&lt;br /&gt;
		return &#039;—&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Stat row definitions&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local statRows = {&lt;br /&gt;
	{ key = &#039;hull&#039;,       label = &#039;Hull HP&#039; },&lt;br /&gt;
	{ key = &#039;armor&#039;,      label = &#039;Armor HP&#039; },&lt;br /&gt;
	{ key = &#039;shield&#039;,     label = &#039;Shield HP&#039; },&lt;br /&gt;
	{ key = &#039;hardpoints&#039;, label = &#039;Hardpoints&#039; },&lt;br /&gt;
	{ key = &#039;cargo&#039;,      label = &#039;Cargo (m³)&#039; },&lt;br /&gt;
	{ key = &#039;speed&#039;,      label = &#039;Warp Speed (ls/s)&#039; },&lt;br /&gt;
	{ key = &#039;accel&#039;,      label = &#039;Warp Accel (ls/s²)&#039; },&lt;br /&gt;
	{ key = &#039;tonnage&#039;,    label = &#039;Tonnage&#039; },&lt;br /&gt;
	{ key = &#039;aux&#039;,        label = &#039;Auxiliary&#039; },&lt;br /&gt;
	{ key = &#039;manufacturer&#039;, label = &#039;Manufacturer&#039; },&lt;br /&gt;
	{ key = &#039;shipyardRep&#039;,  label = &#039;Shipyard Rep&#039; },&lt;br /&gt;
	{ key = &#039;conquest&#039;,   label = &#039;Conquest Rank&#039; },&lt;br /&gt;
	{ key = &#039;playerLevel&#039;,  label = &#039;Player Level&#039; },&lt;br /&gt;
	{ key = &#039;shipyardLevel&#039;, label = &#039;Shipyard Level&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Public functions&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
--- TabberNeue class browser: all ships by size and class&lt;br /&gt;
--- {{#invoke:ShipCompare|browse}}&lt;br /&gt;
function p.browse(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		table.insert(result, &#039;== &#039; .. sizeLabelsDisplay[si] .. &#039; ==&#039;)&lt;br /&gt;
		table.insert(result, &#039;&#039;)&lt;br /&gt;
		table.insert(result, &#039;&amp;lt;tabber&amp;gt;&#039;)&lt;br /&gt;
		&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				local ci = data.byClass[cn]&lt;br /&gt;
				local role = ci and ci.role or &#039;—&#039;&lt;br /&gt;
				&lt;br /&gt;
				table.insert(result, &#039;|-|&#039; .. cn .. &#039;=&#039;)&lt;br /&gt;
				table.insert(result, &#039;{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&#039;)&lt;br /&gt;
				table.insert(result, &#039;|-&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Hull&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Armor&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Shield&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Hardpoints&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Cargo&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Speed&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Accel&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Tonnage&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Aux&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Rep&#039;)&lt;br /&gt;
				table.insert(result, &#039;! Level&#039;)&lt;br /&gt;
				&lt;br /&gt;
				for _, ship in ipairs(ships) do&lt;br /&gt;
					local image = &#039;&#039;&lt;br /&gt;
					if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
						image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
					end&lt;br /&gt;
					table.insert(result, &#039;|-&#039;)&lt;br /&gt;
					table.insert(result, &#039;| [[&#039; .. escapeName(ship.name) .. &#039;]]&#039; .. image)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.manufacturer)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.hull)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.armor)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.shield)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.hardpoints)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.cargo)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.speed)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.accel)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.tonnage)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.aux)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.shipyardRep)&lt;br /&gt;
					table.insert(result, &#039;| &#039; .. ship.playerLevel)&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				table.insert(result, &#039;|}&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(result, &#039;&amp;lt;/tabber&amp;gt;&#039;)&lt;br /&gt;
		table.insert(result, &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Compare 2+ ships side-by-side&lt;br /&gt;
--- {{#invoke:ShipCompare|compare|Ship1|Ship2|Ship3|...}}&lt;br /&gt;
function p.compare(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local shipNames = {}&lt;br /&gt;
	for i = 1, 20 do&lt;br /&gt;
		local arg = args[i]&lt;br /&gt;
		if arg and trim(arg) ~= &#039;&#039; then&lt;br /&gt;
			table.insert(shipNames, trim(arg))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #shipNames &amp;lt; 2 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.compare needs at least 2 ship names.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	local errors = {}&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #shipNames do&lt;br /&gt;
		local name = shipNames[i]&lt;br /&gt;
		local matches = findShip(name, data)&lt;br /&gt;
		if #matches == 0 then&lt;br /&gt;
			local suggestions = searchShips(name, data)&lt;br /&gt;
			local msg = &amp;quot;&#039;&#039;&#039;&amp;quot; .. escapeName(name) .. &amp;quot;&#039;&#039;&#039; not found.&amp;quot;&lt;br /&gt;
			if #suggestions &amp;gt; 0 then&lt;br /&gt;
				local suggestList = {}&lt;br /&gt;
				for j = 1, #suggestions do&lt;br /&gt;
					table.insert(suggestList, &amp;quot;[[&amp;quot; .. suggestions[j].name .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				msg = msg .. &amp;quot; Did you mean: &amp;quot; .. table.concat(suggestList, &amp;quot;, &amp;quot;) .. &amp;quot;?&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(errors, msg)&lt;br /&gt;
		else&lt;br /&gt;
			local ship = matches[1]&lt;br /&gt;
			if #matches &amp;gt; 1 then&lt;br /&gt;
				ship._dupes = true&lt;br /&gt;
				ship._dupeCount = #matches&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(ships, ship)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #errors &amp;gt; 0 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. table.concat(errors, &#039;&amp;lt;br&amp;gt;&#039;) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable ship-compare&amp;quot; style=&amp;quot;margin:0; width:100%;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		table.insert(result, shipHeader(ships[i]))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for ri = 1, #statRows do&lt;br /&gt;
		local row = statRows[ri]&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;! style=&amp;quot;text-align:left; min-width:140px;&amp;quot; | &#039; .. row.label)&lt;br /&gt;
		for si = 1, #ships do&lt;br /&gt;
			table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. formatVal(ships[si][row.key]))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! style=&amp;quot;text-align:left;&amp;quot; | Class&#039;)&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | [[&#039; .. (ships[i].className or &#039;—&#039;) .. &#039;]]&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		local ship = ships[i]&lt;br /&gt;
		if ship._dupes then&lt;br /&gt;
			table.insert(result, &#039;&amp;lt;div style=&amp;quot;font-size:0.85em; color:#666; margin-top:4px;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
			table.insert(result, &amp;quot;Note: &#039;&#039;&#039;&amp;quot; .. escapeName(ship.name) .. &amp;quot;&#039;&#039;&#039; has &amp;quot; .. ship._dupeCount .. &amp;quot; variants (different manufacturers). Showing the first match.&amp;quot;)&lt;br /&gt;
			table.insert(result, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Show all ships in a class&lt;br /&gt;
--- {{#invoke:ShipCompare|class|Cutters}}&lt;br /&gt;
function p.class(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local className = trim(args[1] or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if className == &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.class needs a class name.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	for sizeKey, classes in pairs(data.bySize) do&lt;br /&gt;
		if classes[className] then&lt;br /&gt;
			ships = classes[className]&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ships == 0 then&lt;br /&gt;
		for sizeKey, classes in pairs(data.bySize) do&lt;br /&gt;
			for cn, shipList in pairs(classes) do&lt;br /&gt;
				if cn:lower() == className:lower() then&lt;br /&gt;
					ships = shipList&lt;br /&gt;
					className = cn&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if #ships &amp;gt; 0 then break end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ships == 0 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Class &amp;quot;&#039; .. escapeName(className) .. &#039;&amp;quot; not found.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Hull&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Armor&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Shield&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Hardpoints&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Cargo&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Speed&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Accel&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Tonnage&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Aux&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Rep&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Level&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		local ship = ships[i]&lt;br /&gt;
		local image = &#039;&#039;&lt;br /&gt;
		if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
			image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. escapeName(ship.name) .. image)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.manufacturer)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.hull)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.armor)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.shield)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.hardpoints)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.cargo)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.speed)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.accel)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.tonnage)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.aux)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.shipyardRep)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.playerLevel)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Search ships by name&lt;br /&gt;
--- {{#invoke:ShipCompare|search|Raptor}}&lt;br /&gt;
function p.search(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local partial = trim(args[1] or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if partial == &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.search needs a search term.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local results = searchShips(partial, data)&lt;br /&gt;
	&lt;br /&gt;
	if #results == 0 then&lt;br /&gt;
		return &amp;quot;No ships matching &#039;&#039;&#039;&amp;quot; .. escapeName(partial) .. &amp;quot;&#039;&#039;&#039; found.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &amp;quot;Ships matching &#039;&#039;&#039;&amp;quot; .. escapeName(partial) .. &amp;quot;&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Class&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Role&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #results do&lt;br /&gt;
		local r = results[i]&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| [[&#039; .. r.name .. &#039;]]&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.manufacturer)&lt;br /&gt;
		table.insert(result, &#039;| [[&#039; .. r.class .. &#039;]]&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.size)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.role)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Database statistics&lt;br /&gt;
--- {{#invoke:ShipCompare|stats}}&lt;br /&gt;
function p.stats(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|+ Ship List Statistics&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size Category&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Classes&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ships&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local grandTotal = 0&lt;br /&gt;
	local grandClasses = 0&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		local classCount = 0&lt;br /&gt;
		local shipCount = 0&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				classCount = classCount + 1&lt;br /&gt;
				shipCount = shipCount + #ships&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. sizeLabelsDisplay[si])&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. classCount)&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. shipCount)&lt;br /&gt;
		&lt;br /&gt;
		grandTotal = grandTotal + shipCount&lt;br /&gt;
		grandClasses = grandClasses + classCount&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Total&#039;)&lt;br /&gt;
	table.insert(result, &#039;! &#039; .. grandClasses)&lt;br /&gt;
	table.insert(result, &#039;! &#039; .. grandTotal)&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- List all classes&lt;br /&gt;
--- {{#invoke:ShipCompare|classes}}&lt;br /&gt;
function p.classes(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Class&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Role&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ships&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				local ci = data.byClass[cn]&lt;br /&gt;
				local role = ci and ci.role or &#039;—&#039;&lt;br /&gt;
				table.insert(result, &#039;|-&#039;)&lt;br /&gt;
				table.insert(result, &#039;| &#039; .. sizeLabelsDisplay[si])&lt;br /&gt;
				table.insert(result, &#039;| [[&#039; .. cn .. &#039;]]&#039;)&lt;br /&gt;
				table.insert(result, &#039;| &#039; .. role)&lt;br /&gt;
				table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. #ships)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Module:ShipCompare&amp;diff=3906</id>
		<title>Module:ShipCompare</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Module:ShipCompare&amp;diff=3906"/>
		<updated>2026-07-21T17:02:14Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: Revert multi-line parser to line-by-line (the | split broke it); fix size section matching to use separate find() instead of alternation |&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Module:ShipCompare&lt;br /&gt;
-- Side-by-side ship comparison tool for Vanguard Galaxy Wiki&lt;br /&gt;
--&lt;br /&gt;
-- Reads ship data directly from [[Ship List]] page — no separate data page needed.&lt;br /&gt;
-- Ships added to the Ship List page automatically appear here.&lt;br /&gt;
--&lt;br /&gt;
-- Usage:&lt;br /&gt;
--   {{#invoke:ShipCompare|compare|Raptor|Zephyr}}&lt;br /&gt;
--     Side-by-side comparison of 2+ ships&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|class|Cutters}}&lt;br /&gt;
--     Table of all ships in the &#039;Cutters&#039; class&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|search|Raptor}}&lt;br /&gt;
--     Search ships by partial name&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|stats}}&lt;br /&gt;
--     Database statistics&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|classes}}&lt;br /&gt;
--     List all classes with ship counts&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Page reader — fetches and caches the Ship List page&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local shipListPage = nil&lt;br /&gt;
&lt;br /&gt;
local function getShipListContent()&lt;br /&gt;
	if shipListPage then&lt;br /&gt;
		return shipListPage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(&#039;Ship_List&#039;)&lt;br /&gt;
	if not title then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local content = title:getContent()&lt;br /&gt;
	shipListPage = content&lt;br /&gt;
	return content&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Wikitable parser — converts Ship List wikitext to Lua data&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local sizeLabelsDisplay = { &#039;Small Ships&#039;, &#039;Medium Ships&#039;, &#039;Large Ships&#039; }&lt;br /&gt;
local sizeKeys = { &#039;small&#039;, &#039;medium&#039;, &#039;large&#039; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
	return mw.text.trim(s or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse a wiki table cell value: strip links, HTML, whitespace&lt;br /&gt;
local function cleanCell(cell)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	cell = cell:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	-- Extract manufacturer name from [[Link]]&lt;br /&gt;
	cell = cell:gsub(&#039;%[%[([^%[%]|]+)%|?[^%[%]]*%]%]&#039;, function(name)&lt;br /&gt;
		return trim(name)&lt;br /&gt;
	end)&lt;br /&gt;
	-- Remove &amp;lt;span&amp;gt; tags but keep their text&lt;br /&gt;
	cell = cell:gsub(&#039;&amp;lt;span[^&amp;gt;]*&amp;gt;&#039;, &#039;&#039;):gsub(&#039;&amp;lt;/span&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	-- Remove &amp;lt;br&amp;gt; tags (replace with space)&lt;br /&gt;
	cell = cell:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;&#039;, &#039; &#039;)&lt;br /&gt;
	-- Remove {{beta}} templates&lt;br /&gt;
	cell = cell:gsub(&#039;{{[^}]*}}&#039;, &#039;&#039;)&lt;br /&gt;
	cell = cell:gsub(&#039;\n+&#039;, &#039; &#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	return cell&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Extract ship name and image filename from the first cell&lt;br /&gt;
--- Input: &amp;quot;| Raptor&amp;lt;br&amp;gt;[[File:Raptor.png|frameless|200px]]&amp;quot;&lt;br /&gt;
local function parseShipCell(cell)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	cell = cell:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	&lt;br /&gt;
	-- Normalize newlines (from wikitext line breaks) to &amp;lt;br&amp;gt;&lt;br /&gt;
	cell = cell:gsub(&#039;\n+&#039;, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	local name = cell&lt;br /&gt;
	local image = &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- Extract image [[File:...]]&lt;br /&gt;
	local imgStart, imgEnd = cell:find(&#039;%[%[File:&#039;)&lt;br /&gt;
	if imgStart then&lt;br /&gt;
		local afterFile = cell:sub(imgEnd + 1)&lt;br /&gt;
		local pipePos = afterFile:find(&#039;|&#039;)&lt;br /&gt;
		local closePos = afterFile:find(&#039;]]&#039;)&lt;br /&gt;
		if pipePos and (not closePos or pipePos &amp;lt; closePos) then&lt;br /&gt;
			image = afterFile:sub(1, pipePos - 1)&lt;br /&gt;
		elseif closePos then&lt;br /&gt;
			image = afterFile:sub(1, closePos - 1)&lt;br /&gt;
		end&lt;br /&gt;
		name = cell:sub(1, imgStart - 1)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;&#039;, &#039; &#039;)&lt;br /&gt;
	name = trim(name)&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;$&#039;, &#039;&#039;)&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;span[^&amp;gt;]*&amp;gt;&#039;, &#039;&#039;):gsub(&#039;&amp;lt;/span&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	name = name:gsub(&#039;{{[^}]*}}&#039;, &#039;&#039;)&lt;br /&gt;
	name = trim(name)&lt;br /&gt;
	&lt;br /&gt;
	image = trim(image)&lt;br /&gt;
	if image ~= &#039;&#039; then&lt;br /&gt;
		image = image .. &#039;|frameless|200px&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return name, image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Check if a row is a header row (contains ! cells)&lt;br /&gt;
local function isHeaderRow(rowText)&lt;br /&gt;
	for line in rowText:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
		line = trim(line)&lt;br /&gt;
		if line:find(&#039;^!&#039;) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse ship data rows from a sortable wikitable&lt;br /&gt;
--- @param tableText string — the content between {| and |} of a sortable table&lt;br /&gt;
--- @return table array of ship data records&lt;br /&gt;
local function parseShipTable(tableText)&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	local rows = mw.text.split(tableText, &#039;|%-&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for ri = 1, #rows do&lt;br /&gt;
		local rowText = trim(rows[ri])&lt;br /&gt;
		if rowText == &#039;&#039; then&lt;br /&gt;
			-- skip&lt;br /&gt;
		elseif isHeaderRow(rowText) then&lt;br /&gt;
			-- skip header rows&lt;br /&gt;
		elseif rowText:find(&#039;colspan&#039;, 1, true) then&lt;br /&gt;
			-- skip colspan rows&lt;br /&gt;
		else&lt;br /&gt;
			local cells = {}&lt;br /&gt;
			&lt;br /&gt;
			if rowText:find(&#039;||&#039;) then&lt;br /&gt;
				-- Inline format: | cell1 || cell2 || cell3&lt;br /&gt;
				local parts = mw.text.split(rowText, &#039;||&#039;)&lt;br /&gt;
				for pi = 1, #parts do&lt;br /&gt;
					local part = trim(parts[pi])&lt;br /&gt;
					part = part:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
					table.insert(cells, trim(part))&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				-- Multi-line format: each | cell on its own line&lt;br /&gt;
				for each_line in rowText:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
					each_line = trim(each_line)&lt;br /&gt;
					if each_line:find(&#039;^|&#039;) and not each_line:find(&#039;^|%+&#039;) and not each_line:find(&#039;^|}&#039;) then&lt;br /&gt;
						each_line = each_line:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
						table.insert(cells, trim(each_line))&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if #cells &amp;gt;= 2 then&lt;br /&gt;
				local name, image = parseShipCell(cells[1])&lt;br /&gt;
				if name ~= &#039;&#039; then&lt;br /&gt;
					local ship = {&lt;br /&gt;
						name = name,&lt;br /&gt;
						image = image,&lt;br /&gt;
						manufacturer = cleanCell(cells[2] or &#039;&#039;),&lt;br /&gt;
						aux = cleanCell(cells[3] or &#039;&#039;),&lt;br /&gt;
						hull = cleanCell(cells[4] or &#039;&#039;),&lt;br /&gt;
						armor = cleanCell(cells[5] or &#039;&#039;),&lt;br /&gt;
						shield = cleanCell(cells[6] or &#039;&#039;),&lt;br /&gt;
						cargo = cleanCell(cells[7] or &#039;&#039;),&lt;br /&gt;
						speed = cleanCell(cells[8] or &#039;&#039;),&lt;br /&gt;
						accel = cleanCell(cells[9] or &#039;&#039;),&lt;br /&gt;
						hardpoints = cleanCell(cells[10] or &#039;&#039;),&lt;br /&gt;
						tonnage = cleanCell(cells[11] or &#039;&#039;),&lt;br /&gt;
						shipyardRep = cleanCell(cells[12] or &#039;&#039;),&lt;br /&gt;
						conquest = cleanCell(cells[13] or &#039;&#039;),&lt;br /&gt;
						playerLevel = cleanCell(cells[14] or &#039;&#039;),&lt;br /&gt;
						shipyardLevel = cleanCell(cells[15] or &#039;&#039;),&lt;br /&gt;
					}&lt;br /&gt;
					table.insert(ships, ship)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return ships&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Determine role from class name&lt;br /&gt;
local function roleFromClass(className)&lt;br /&gt;
	if className:find(&#039;Cutter&#039;) or className:find(&#039;Gunship&#039;) or className:find(&#039;Corvette&#039;) or className:find(&#039;Frigate&#039;) or className:find(&#039;Destroyer&#039;) or className:find(&#039;Battlecruiser&#039;) then&lt;br /&gt;
		return &#039;Combat&#039;&lt;br /&gt;
	elseif className:find(&#039;Mining&#039;) or className:find(&#039;Hewers&#039;) or className:find(&#039;Hewer&#039;) or className:find(&#039;Dredger&#039;) or className:find(&#039;Breaker&#039;) or className:find(&#039;Harvester&#039;) or className:find(&#039;Barge&#039;) then&lt;br /&gt;
		return &#039;Mining&#039;&lt;br /&gt;
	elseif className:find(&#039;Salvage&#039;) or className:find(&#039;Scow&#039;) or className:find(&#039;Scrapper&#039;) or className:find(&#039;Wrecker&#039;) or className:find(&#039;Reclaimer&#039;) then&lt;br /&gt;
		return &#039;Salvage&#039;&lt;br /&gt;
	elseif className:find(&#039;Courier&#039;) or className:find(&#039;Ferry&#039;) or className:find(&#039;Hauler&#039;) or className:find(&#039;Freighter&#039;) or className:find(&#039;Carrack&#039;) or className:find(&#039;Merchantman&#039;) then&lt;br /&gt;
		return &#039;Cargo&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;—&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse the entire Ship List page into ship data&lt;br /&gt;
--- TabberNeue uses |-|ClassName= syntax directly in wikitext (no &amp;lt;tabber&amp;gt; tags)&lt;br /&gt;
local function parseAllShips()&lt;br /&gt;
	local content = getShipListContent()&lt;br /&gt;
	if not content then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Split by size sections&lt;br /&gt;
	local bySize = {}&lt;br /&gt;
	local currentSize = nil&lt;br /&gt;
	&lt;br /&gt;
	for line in content:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
		line = trim(line)&lt;br /&gt;
		local sizeMatch = nil&lt;br /&gt;
		if line:find(&amp;quot;^==%s*Small Ships%s*==$&amp;quot;) then sizeMatch = &amp;quot;Small Ships&amp;quot;&lt;br /&gt;
		elseif line:find(&amp;quot;^==%s*Medium Ships%s*==$&amp;quot;) then sizeMatch = &amp;quot;Medium Ships&amp;quot;&lt;br /&gt;
		elseif line:find(&amp;quot;^==%s*Large Ships%s*==$&amp;quot;) then sizeMatch = &amp;quot;Large Ships&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		if sizeMatch then&lt;br /&gt;
			if sizeMatch == &#039;Small Ships&#039; then currentSize = &#039;small&#039;&lt;br /&gt;
			elseif sizeMatch == &#039;Medium Ships&#039; then currentSize = &#039;medium&#039;&lt;br /&gt;
			elseif sizeMatch == &#039;Large Ships&#039; then currentSize = &#039;large&#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif currentSize then&lt;br /&gt;
			if not bySize[currentSize] then&lt;br /&gt;
				bySize[currentSize] = {}&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(bySize[currentSize], line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {&lt;br /&gt;
		ships = {},&lt;br /&gt;
		byClass = {},&lt;br /&gt;
		classes = {},&lt;br /&gt;
		bySize = { small = {}, medium = {}, large = {} },&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		if bySize[sizeKey] then&lt;br /&gt;
			local sectionText = table.concat(bySize[sizeKey], &#039;\n&#039;)&lt;br /&gt;
			&lt;br /&gt;
			-- TabberNeue uses |-|ClassName= for tabs&lt;br /&gt;
			-- Split by |-| to get individual tabs&lt;br /&gt;
			-- First part before any |-| is preamble (ignored)&lt;br /&gt;
			local tabs = mw.text.split(sectionText, &#039;|%-|&#039;)&lt;br /&gt;
			&lt;br /&gt;
			for ti = 1, #tabs do&lt;br /&gt;
				local tab = trim(tabs[ti])&lt;br /&gt;
				if tab ~= &#039;&#039; then&lt;br /&gt;
					-- First line = ClassName= or ClassName=&amp;quot;description&amp;quot;&lt;br /&gt;
					local firstNewline = tab:find(&#039;\n&#039;)&lt;br /&gt;
					if firstNewline then&lt;br /&gt;
						local classNameLine = trim(tab:sub(1, firstNewline - 1))&lt;br /&gt;
						&lt;br /&gt;
						-- Remove trailing = and any description after it&lt;br /&gt;
						local eqPos = classNameLine:find(&#039;=&#039;)&lt;br /&gt;
						local className = &#039;&#039;&lt;br /&gt;
						if eqPos then&lt;br /&gt;
							className = trim(classNameLine:sub(1, eqPos - 1))&lt;br /&gt;
						else&lt;br /&gt;
							className = classNameLine&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if className ~= &#039;&#039; then&lt;br /&gt;
							-- Find the sortable wikitable&lt;br /&gt;
							local tableStart = tab:find(&#039;%{%| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
							if tableStart then&lt;br /&gt;
								local tableClose = tab:find(&#039;\n%|}&#039;, tableStart)&lt;br /&gt;
								if tableClose then&lt;br /&gt;
									local tableContent = tab:sub(tableStart, tableClose)&lt;br /&gt;
									local firstPipe = tableContent:find(&#039;\n&#039;)&lt;br /&gt;
									if firstPipe then&lt;br /&gt;
										tableContent = tableContent:sub(firstPipe + 1)&lt;br /&gt;
									end&lt;br /&gt;
									tableContent = tableContent:gsub(&#039;\n%|}$&#039;, &#039;&#039;)&lt;br /&gt;
									&lt;br /&gt;
									local ships = parseShipTable(tableContent)&lt;br /&gt;
									local role = roleFromClass(className)&lt;br /&gt;
									&lt;br /&gt;
									local classInfo = {&lt;br /&gt;
										name = className,&lt;br /&gt;
										sizeKey = sizeKey,&lt;br /&gt;
										sizeLabel = sizeLabelsDisplay[si],&lt;br /&gt;
										role = role,&lt;br /&gt;
										count = #ships,&lt;br /&gt;
									}&lt;br /&gt;
									table.insert(result.classes, classInfo)&lt;br /&gt;
									result.byClass[className] = classInfo&lt;br /&gt;
									&lt;br /&gt;
									if not result.bySize[sizeKey] then&lt;br /&gt;
										result.bySize[sizeKey] = {}&lt;br /&gt;
									end&lt;br /&gt;
									result.bySize[sizeKey][className] = ships&lt;br /&gt;
									&lt;br /&gt;
									for si2 = 1, #ships do&lt;br /&gt;
										local ship = ships[si2]&lt;br /&gt;
										ship.className = className&lt;br /&gt;
										ship.sizeKey = sizeKey&lt;br /&gt;
										table.insert(result.ships, ship)&lt;br /&gt;
									end&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Lookup helpers&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local function findShip(name, data)&lt;br /&gt;
	local matches = {}&lt;br /&gt;
	for i = 1, #data.ships do&lt;br /&gt;
		local ship = data.ships[i]&lt;br /&gt;
		if ship.name:lower() == name:lower() then&lt;br /&gt;
			table.insert(matches, ship)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return matches&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function searchShips(partial, data)&lt;br /&gt;
	local seen = {}&lt;br /&gt;
	local results = {}&lt;br /&gt;
	for i = 1, #data.ships do&lt;br /&gt;
		local ship = data.ships[i]&lt;br /&gt;
		if ship.name:lower():find(partial:lower(), 1, true) then&lt;br /&gt;
			if not seen[ship.name] then&lt;br /&gt;
				seen[ship.name] = true&lt;br /&gt;
				local ci = data.byClass[ship.className]&lt;br /&gt;
				table.insert(results, {&lt;br /&gt;
					name = ship.name,&lt;br /&gt;
					manufacturer = ship.manufacturer,&lt;br /&gt;
					class = ship.className,&lt;br /&gt;
					size = ci and ci.sizeLabel or &#039;—&#039;,&lt;br /&gt;
					role = ci and ci.role or &#039;—&#039;,&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Output helpers&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local function escapeName(name)&lt;br /&gt;
	return name:gsub(&#039;|&#039;, &#039;&amp;amp;#124;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shipHeader(ship)&lt;br /&gt;
	local image = &#039;&#039;&lt;br /&gt;
	if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
		image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;! style=&amp;quot;min-width:180px; text-align:center;&amp;quot; | &#039; .. escapeName(ship.name) .. image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatVal(val)&lt;br /&gt;
	if val == &#039;&#039; or val == &#039;—&#039; or val == nil then&lt;br /&gt;
		return &#039;—&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Stat row definitions&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local statRows = {&lt;br /&gt;
	{ key = &#039;hull&#039;,       label = &#039;Hull HP&#039; },&lt;br /&gt;
	{ key = &#039;armor&#039;,      label = &#039;Armor HP&#039; },&lt;br /&gt;
	{ key = &#039;shield&#039;,     label = &#039;Shield HP&#039; },&lt;br /&gt;
	{ key = &#039;hardpoints&#039;, label = &#039;Hardpoints&#039; },&lt;br /&gt;
	{ key = &#039;cargo&#039;,      label = &#039;Cargo (m³)&#039; },&lt;br /&gt;
	{ key = &#039;speed&#039;,      label = &#039;Warp Speed (ls/s)&#039; },&lt;br /&gt;
	{ key = &#039;accel&#039;,      label = &#039;Warp Accel (ls/s²)&#039; },&lt;br /&gt;
	{ key = &#039;tonnage&#039;,    label = &#039;Tonnage&#039; },&lt;br /&gt;
	{ key = &#039;aux&#039;,        label = &#039;Auxiliary&#039; },&lt;br /&gt;
	{ key = &#039;manufacturer&#039;, label = &#039;Manufacturer&#039; },&lt;br /&gt;
	{ key = &#039;shipyardRep&#039;,  label = &#039;Shipyard Rep&#039; },&lt;br /&gt;
	{ key = &#039;conquest&#039;,   label = &#039;Conquest Rank&#039; },&lt;br /&gt;
	{ key = &#039;playerLevel&#039;,  label = &#039;Player Level&#039; },&lt;br /&gt;
	{ key = &#039;shipyardLevel&#039;, label = &#039;Shipyard Level&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Public functions&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
--- Compare 2+ ships side-by-side&lt;br /&gt;
--- {{#invoke:ShipCompare|compare|Ship1|Ship2|Ship3|...}}&lt;br /&gt;
function p.compare(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local shipNames = {}&lt;br /&gt;
	for i = 1, 20 do&lt;br /&gt;
		local arg = args[i]&lt;br /&gt;
		if arg and trim(arg) ~= &#039;&#039; then&lt;br /&gt;
			table.insert(shipNames, trim(arg))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #shipNames &amp;lt; 2 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.compare needs at least 2 ship names.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	local errors = {}&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #shipNames do&lt;br /&gt;
		local name = shipNames[i]&lt;br /&gt;
		local matches = findShip(name, data)&lt;br /&gt;
		if #matches == 0 then&lt;br /&gt;
			local suggestions = searchShips(name, data)&lt;br /&gt;
			local msg = &amp;quot;&#039;&#039;&#039;&amp;quot; .. escapeName(name) .. &amp;quot;&#039;&#039;&#039; not found.&amp;quot;&lt;br /&gt;
			if #suggestions &amp;gt; 0 then&lt;br /&gt;
				local suggestList = {}&lt;br /&gt;
				for j = 1, #suggestions do&lt;br /&gt;
					table.insert(suggestList, &amp;quot;[[&amp;quot; .. suggestions[j].name .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				msg = msg .. &amp;quot; Did you mean: &amp;quot; .. table.concat(suggestList, &amp;quot;, &amp;quot;) .. &amp;quot;?&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(errors, msg)&lt;br /&gt;
		else&lt;br /&gt;
			local ship = matches[1]&lt;br /&gt;
			if #matches &amp;gt; 1 then&lt;br /&gt;
				ship._dupes = true&lt;br /&gt;
				ship._dupeCount = #matches&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(ships, ship)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #errors &amp;gt; 0 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. table.concat(errors, &#039;&amp;lt;br&amp;gt;&#039;) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable ship-compare&amp;quot; style=&amp;quot;margin:0; width:100%;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		table.insert(result, shipHeader(ships[i]))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for ri = 1, #statRows do&lt;br /&gt;
		local row = statRows[ri]&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;! style=&amp;quot;text-align:left; min-width:140px;&amp;quot; | &#039; .. row.label)&lt;br /&gt;
		for si = 1, #ships do&lt;br /&gt;
			table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. formatVal(ships[si][row.key]))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! style=&amp;quot;text-align:left;&amp;quot; | Class&#039;)&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | [[&#039; .. (ships[i].className or &#039;—&#039;) .. &#039;]]&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		local ship = ships[i]&lt;br /&gt;
		if ship._dupes then&lt;br /&gt;
			table.insert(result, &#039;&amp;lt;div style=&amp;quot;font-size:0.85em; color:#666; margin-top:4px;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
			table.insert(result, &amp;quot;Note: &#039;&#039;&#039;&amp;quot; .. escapeName(ship.name) .. &amp;quot;&#039;&#039;&#039; has &amp;quot; .. ship._dupeCount .. &amp;quot; variants (different manufacturers). Showing the first match.&amp;quot;)&lt;br /&gt;
			table.insert(result, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Show all ships in a class&lt;br /&gt;
--- {{#invoke:ShipCompare|class|Cutters}}&lt;br /&gt;
function p.class(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local className = trim(args[1] or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if className == &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.class needs a class name.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	for sizeKey, classes in pairs(data.bySize) do&lt;br /&gt;
		if classes[className] then&lt;br /&gt;
			ships = classes[className]&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ships == 0 then&lt;br /&gt;
		for sizeKey, classes in pairs(data.bySize) do&lt;br /&gt;
			for cn, shipList in pairs(classes) do&lt;br /&gt;
				if cn:lower() == className:lower() then&lt;br /&gt;
					ships = shipList&lt;br /&gt;
					className = cn&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if #ships &amp;gt; 0 then break end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ships == 0 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Class &amp;quot;&#039; .. escapeName(className) .. &#039;&amp;quot; not found.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Hull&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Armor&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Shield&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Hardpoints&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Cargo&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Speed&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Accel&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Tonnage&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Aux&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Rep&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Level&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		local ship = ships[i]&lt;br /&gt;
		local image = &#039;&#039;&lt;br /&gt;
		if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
			image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. escapeName(ship.name) .. image)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.manufacturer)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.hull)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.armor)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.shield)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.hardpoints)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.cargo)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.speed)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.accel)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.tonnage)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.aux)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.shipyardRep)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.playerLevel)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Search ships by name&lt;br /&gt;
--- {{#invoke:ShipCompare|search|Raptor}}&lt;br /&gt;
function p.search(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local partial = trim(args[1] or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if partial == &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.search needs a search term.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local results = searchShips(partial, data)&lt;br /&gt;
	&lt;br /&gt;
	if #results == 0 then&lt;br /&gt;
		return &amp;quot;No ships matching &#039;&#039;&#039;&amp;quot; .. escapeName(partial) .. &amp;quot;&#039;&#039;&#039; found.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &amp;quot;Ships matching &#039;&#039;&#039;&amp;quot; .. escapeName(partial) .. &amp;quot;&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Class&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Role&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #results do&lt;br /&gt;
		local r = results[i]&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| [[&#039; .. r.name .. &#039;]]&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.manufacturer)&lt;br /&gt;
		table.insert(result, &#039;| [[&#039; .. r.class .. &#039;]]&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.size)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.role)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Database statistics&lt;br /&gt;
--- {{#invoke:ShipCompare|stats}}&lt;br /&gt;
function p.stats(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|+ Ship List Statistics&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size Category&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Classes&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ships&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local grandTotal = 0&lt;br /&gt;
	local grandClasses = 0&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		local classCount = 0&lt;br /&gt;
		local shipCount = 0&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				classCount = classCount + 1&lt;br /&gt;
				shipCount = shipCount + #ships&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. sizeLabelsDisplay[si])&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. classCount)&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. shipCount)&lt;br /&gt;
		&lt;br /&gt;
		grandTotal = grandTotal + shipCount&lt;br /&gt;
		grandClasses = grandClasses + classCount&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Total&#039;)&lt;br /&gt;
	table.insert(result, &#039;! &#039; .. grandClasses)&lt;br /&gt;
	table.insert(result, &#039;! &#039; .. grandTotal)&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- List all classes&lt;br /&gt;
--- {{#invoke:ShipCompare|classes}}&lt;br /&gt;
function p.classes(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Class&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Role&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ships&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				local ci = data.byClass[cn]&lt;br /&gt;
				local role = ci and ci.role or &#039;—&#039;&lt;br /&gt;
				table.insert(result, &#039;|-&#039;)&lt;br /&gt;
				table.insert(result, &#039;| &#039; .. sizeLabelsDisplay[si])&lt;br /&gt;
				table.insert(result, &#039;| [[&#039; .. cn .. &#039;]]&#039;)&lt;br /&gt;
				table.insert(result, &#039;| &#039; .. role)&lt;br /&gt;
				table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. #ships)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Module:ShipCompare&amp;diff=3905</id>
		<title>Module:ShipCompare</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Module:ShipCompare&amp;diff=3905"/>
		<updated>2026-07-21T17:00:52Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: Fix: Lua 5.1 does not support alternation (|) in patterns — use separate find() calls for Small/Medium/Large Ships&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Module:ShipCompare&lt;br /&gt;
-- Side-by-side ship comparison tool for Vanguard Galaxy Wiki&lt;br /&gt;
--&lt;br /&gt;
-- Reads ship data directly from [[Ship List]] page — no separate data page needed.&lt;br /&gt;
-- Ships added to the Ship List page automatically appear here.&lt;br /&gt;
--&lt;br /&gt;
-- Usage:&lt;br /&gt;
--   {{#invoke:ShipCompare|compare|Raptor|Zephyr}}&lt;br /&gt;
--     Side-by-side comparison of 2+ ships&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|class|Cutters}}&lt;br /&gt;
--     Table of all ships in the &#039;Cutters&#039; class&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|search|Raptor}}&lt;br /&gt;
--     Search ships by partial name&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|stats}}&lt;br /&gt;
--     Database statistics&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|classes}}&lt;br /&gt;
--     List all classes with ship counts&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Page reader — fetches and caches the Ship List page&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local shipListPage = nil&lt;br /&gt;
&lt;br /&gt;
local function getShipListContent()&lt;br /&gt;
	if shipListPage then&lt;br /&gt;
		return shipListPage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(&#039;Ship_List&#039;)&lt;br /&gt;
	if not title then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local content = title:getContent()&lt;br /&gt;
	shipListPage = content&lt;br /&gt;
	return content&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Wikitable parser — converts Ship List wikitext to Lua data&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local sizeLabelsDisplay = { &#039;Small Ships&#039;, &#039;Medium Ships&#039;, &#039;Large Ships&#039; }&lt;br /&gt;
local sizeKeys = { &#039;small&#039;, &#039;medium&#039;, &#039;large&#039; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
	return mw.text.trim(s or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse a wiki table cell value: strip links, HTML, whitespace&lt;br /&gt;
local function cleanCell(cell)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	cell = cell:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	-- Extract manufacturer name from [[Link]]&lt;br /&gt;
	cell = cell:gsub(&#039;%[%[([^%[%]|]+)%|?[^%[%]]*%]%]&#039;, function(name)&lt;br /&gt;
		return trim(name)&lt;br /&gt;
	end)&lt;br /&gt;
	-- Remove &amp;lt;span&amp;gt; tags but keep their text&lt;br /&gt;
	cell = cell:gsub(&#039;&amp;lt;span[^&amp;gt;]*&amp;gt;&#039;, &#039;&#039;):gsub(&#039;&amp;lt;/span&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	-- Remove &amp;lt;br&amp;gt; tags (replace with space)&lt;br /&gt;
	cell = cell:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;&#039;, &#039; &#039;)&lt;br /&gt;
	-- Remove {{beta}} templates&lt;br /&gt;
	cell = cell:gsub(&#039;{{[^}]*}}&#039;, &#039;&#039;)&lt;br /&gt;
	cell = cell:gsub(&#039;\n+&#039;, &#039; &#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	return cell&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Extract ship name and image filename from the first cell&lt;br /&gt;
--- Input: &amp;quot;| Raptor&amp;lt;br&amp;gt;[[File:Raptor.png|frameless|200px]]&amp;quot;&lt;br /&gt;
local function parseShipCell(cell)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	cell = cell:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	&lt;br /&gt;
	-- Normalize newlines (from wikitext line breaks) to &amp;lt;br&amp;gt;&lt;br /&gt;
	cell = cell:gsub(&#039;\n+&#039;, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	local name = cell&lt;br /&gt;
	local image = &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- Extract image [[File:...]]&lt;br /&gt;
	local imgStart, imgEnd = cell:find(&#039;%[%[File:&#039;)&lt;br /&gt;
	if imgStart then&lt;br /&gt;
		local afterFile = cell:sub(imgEnd + 1)&lt;br /&gt;
		local pipePos = afterFile:find(&#039;|&#039;)&lt;br /&gt;
		local closePos = afterFile:find(&#039;]]&#039;)&lt;br /&gt;
		if pipePos and (not closePos or pipePos &amp;lt; closePos) then&lt;br /&gt;
			image = afterFile:sub(1, pipePos - 1)&lt;br /&gt;
		elseif closePos then&lt;br /&gt;
			image = afterFile:sub(1, closePos - 1)&lt;br /&gt;
		end&lt;br /&gt;
		name = cell:sub(1, imgStart - 1)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;&#039;, &#039; &#039;)&lt;br /&gt;
	name = trim(name)&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;$&#039;, &#039;&#039;)&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;span[^&amp;gt;]*&amp;gt;&#039;, &#039;&#039;):gsub(&#039;&amp;lt;/span&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	name = name:gsub(&#039;{{[^}]*}}&#039;, &#039;&#039;)&lt;br /&gt;
	name = trim(name)&lt;br /&gt;
	&lt;br /&gt;
	image = trim(image)&lt;br /&gt;
	if image ~= &#039;&#039; then&lt;br /&gt;
		image = image .. &#039;|frameless|200px&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return name, image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Check if a row is a header row (contains ! cells)&lt;br /&gt;
local function isHeaderRow(rowText)&lt;br /&gt;
	for line in rowText:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
		line = trim(line)&lt;br /&gt;
		if line:find(&#039;^!&#039;) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse ship data rows from a sortable wikitable&lt;br /&gt;
--- @param tableText string — the content between {| and |} of a sortable table&lt;br /&gt;
--- @return table array of ship data records&lt;br /&gt;
local function parseShipTable(tableText)&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	local rows = mw.text.split(tableText, &#039;|%-&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for ri = 1, #rows do&lt;br /&gt;
		local rowText = trim(rows[ri])&lt;br /&gt;
		if rowText == &#039;&#039; then&lt;br /&gt;
			-- skip&lt;br /&gt;
		elseif isHeaderRow(rowText) then&lt;br /&gt;
			-- skip header rows&lt;br /&gt;
		elseif rowText:find(&#039;colspan&#039;, 1, true) then&lt;br /&gt;
			-- skip colspan rows&lt;br /&gt;
		else&lt;br /&gt;
			local cells = {}&lt;br /&gt;
			&lt;br /&gt;
			if rowText:find(&#039;||&#039;) then&lt;br /&gt;
				-- Inline format: | cell1 || cell2 || cell3&lt;br /&gt;
				local parts = mw.text.split(rowText, &#039;||&#039;)&lt;br /&gt;
				for pi = 1, #parts do&lt;br /&gt;
					local part = trim(parts[pi])&lt;br /&gt;
					part = part:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
					table.insert(cells, trim(part))&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				-- Single-pipe format: cells separated by &amp;quot; | &amp;quot; (space-pipe-space).&lt;br /&gt;
				-- This handles multi-line cells where [[File:...]] and remaining&lt;br /&gt;
				-- pipe-separated values are on a different line from the ship name.&lt;br /&gt;
				for part in (rowText .. &#039; | &#039;):gmatch(&#039;(.-) | &#039;) do&lt;br /&gt;
					local part2 = trim(part)&lt;br /&gt;
					part2 = part2:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
					table.insert(cells, trim(part2))&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if #cells &amp;gt;= 2 then&lt;br /&gt;
				local name, image = parseShipCell(cells[1])&lt;br /&gt;
				if name ~= &#039;&#039; then&lt;br /&gt;
					local ship = {&lt;br /&gt;
						name = name,&lt;br /&gt;
						image = image,&lt;br /&gt;
						manufacturer = cleanCell(cells[2] or &#039;&#039;),&lt;br /&gt;
						aux = cleanCell(cells[3] or &#039;&#039;),&lt;br /&gt;
						hull = cleanCell(cells[4] or &#039;&#039;),&lt;br /&gt;
						armor = cleanCell(cells[5] or &#039;&#039;),&lt;br /&gt;
						shield = cleanCell(cells[6] or &#039;&#039;),&lt;br /&gt;
						cargo = cleanCell(cells[7] or &#039;&#039;),&lt;br /&gt;
						speed = cleanCell(cells[8] or &#039;&#039;),&lt;br /&gt;
						accel = cleanCell(cells[9] or &#039;&#039;),&lt;br /&gt;
						hardpoints = cleanCell(cells[10] or &#039;&#039;),&lt;br /&gt;
						tonnage = cleanCell(cells[11] or &#039;&#039;),&lt;br /&gt;
						shipyardRep = cleanCell(cells[12] or &#039;&#039;),&lt;br /&gt;
						conquest = cleanCell(cells[13] or &#039;&#039;),&lt;br /&gt;
						playerLevel = cleanCell(cells[14] or &#039;&#039;),&lt;br /&gt;
						shipyardLevel = cleanCell(cells[15] or &#039;&#039;),&lt;br /&gt;
					}&lt;br /&gt;
					table.insert(ships, ship)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return ships&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Determine role from class name&lt;br /&gt;
local function roleFromClass(className)&lt;br /&gt;
	if className:find(&#039;Cutter&#039;) or className:find(&#039;Gunship&#039;) or className:find(&#039;Corvette&#039;) or className:find(&#039;Frigate&#039;) or className:find(&#039;Destroyer&#039;) or className:find(&#039;Battlecruiser&#039;) then&lt;br /&gt;
		return &#039;Combat&#039;&lt;br /&gt;
	elseif className:find(&#039;Mining&#039;) or className:find(&#039;Hewers&#039;) or className:find(&#039;Hewer&#039;) or className:find(&#039;Dredger&#039;) or className:find(&#039;Breaker&#039;) or className:find(&#039;Harvester&#039;) or className:find(&#039;Barge&#039;) then&lt;br /&gt;
		return &#039;Mining&#039;&lt;br /&gt;
	elseif className:find(&#039;Salvage&#039;) or className:find(&#039;Scow&#039;) or className:find(&#039;Scrapper&#039;) or className:find(&#039;Wrecker&#039;) or className:find(&#039;Reclaimer&#039;) then&lt;br /&gt;
		return &#039;Salvage&#039;&lt;br /&gt;
	elseif className:find(&#039;Courier&#039;) or className:find(&#039;Ferry&#039;) or className:find(&#039;Hauler&#039;) or className:find(&#039;Freighter&#039;) or className:find(&#039;Carrack&#039;) or className:find(&#039;Merchantman&#039;) then&lt;br /&gt;
		return &#039;Cargo&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;—&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse the entire Ship List page into ship data&lt;br /&gt;
--- TabberNeue uses |-|ClassName= syntax directly in wikitext (no &amp;lt;tabber&amp;gt; tags)&lt;br /&gt;
local function parseAllShips()&lt;br /&gt;
	local content = getShipListContent()&lt;br /&gt;
	if not content then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Split by size sections&lt;br /&gt;
	local bySize = {}&lt;br /&gt;
	local currentSize = nil&lt;br /&gt;
	&lt;br /&gt;
	for line in content:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
		line = trim(line)&lt;br /&gt;
		local sizeMatch = nil&lt;br /&gt;
		if line:find(&amp;quot;^==%s*Small Ships%s*==$&amp;quot;) then sizeMatch = &amp;quot;Small Ships&amp;quot;&lt;br /&gt;
		elseif line:find(&amp;quot;^==%s*Medium Ships%s*==$&amp;quot;) then sizeMatch = &amp;quot;Medium Ships&amp;quot;&lt;br /&gt;
		elseif line:find(&amp;quot;^==%s*Large Ships%s*==$&amp;quot;) then sizeMatch = &amp;quot;Large Ships&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		if sizeMatch then&lt;br /&gt;
			if sizeMatch == &#039;Small Ships&#039; then currentSize = &#039;small&#039;&lt;br /&gt;
			elseif sizeMatch == &#039;Medium Ships&#039; then currentSize = &#039;medium&#039;&lt;br /&gt;
			elseif sizeMatch == &#039;Large Ships&#039; then currentSize = &#039;large&#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif currentSize then&lt;br /&gt;
			if not bySize[currentSize] then&lt;br /&gt;
				bySize[currentSize] = {}&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(bySize[currentSize], line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {&lt;br /&gt;
		ships = {},&lt;br /&gt;
		byClass = {},&lt;br /&gt;
		classes = {},&lt;br /&gt;
		bySize = { small = {}, medium = {}, large = {} },&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		if bySize[sizeKey] then&lt;br /&gt;
			local sectionText = table.concat(bySize[sizeKey], &#039;\n&#039;)&lt;br /&gt;
			&lt;br /&gt;
			-- TabberNeue uses |-|ClassName= for tabs&lt;br /&gt;
			-- Split by |-| to get individual tabs&lt;br /&gt;
			-- First part before any |-| is preamble (ignored)&lt;br /&gt;
			local tabs = mw.text.split(sectionText, &#039;|%-|&#039;)&lt;br /&gt;
			&lt;br /&gt;
			for ti = 1, #tabs do&lt;br /&gt;
				local tab = trim(tabs[ti])&lt;br /&gt;
				if tab ~= &#039;&#039; then&lt;br /&gt;
					-- First line = ClassName= or ClassName=&amp;quot;description&amp;quot;&lt;br /&gt;
					local firstNewline = tab:find(&#039;\n&#039;)&lt;br /&gt;
					if firstNewline then&lt;br /&gt;
						local classNameLine = trim(tab:sub(1, firstNewline - 1))&lt;br /&gt;
						&lt;br /&gt;
						-- Remove trailing = and any description after it&lt;br /&gt;
						local eqPos = classNameLine:find(&#039;=&#039;)&lt;br /&gt;
						local className = &#039;&#039;&lt;br /&gt;
						if eqPos then&lt;br /&gt;
							className = trim(classNameLine:sub(1, eqPos - 1))&lt;br /&gt;
						else&lt;br /&gt;
							className = classNameLine&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if className ~= &#039;&#039; then&lt;br /&gt;
							-- Find the sortable wikitable&lt;br /&gt;
							local tableStart = tab:find(&#039;%{%| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
							if tableStart then&lt;br /&gt;
								local tableClose = tab:find(&#039;\n%|}&#039;, tableStart)&lt;br /&gt;
								if tableClose then&lt;br /&gt;
									local tableContent = tab:sub(tableStart, tableClose)&lt;br /&gt;
									local firstPipe = tableContent:find(&#039;\n&#039;)&lt;br /&gt;
									if firstPipe then&lt;br /&gt;
										tableContent = tableContent:sub(firstPipe + 1)&lt;br /&gt;
									end&lt;br /&gt;
									tableContent = tableContent:gsub(&#039;\n%|}$&#039;, &#039;&#039;)&lt;br /&gt;
									&lt;br /&gt;
									local ships = parseShipTable(tableContent)&lt;br /&gt;
									local role = roleFromClass(className)&lt;br /&gt;
									&lt;br /&gt;
									local classInfo = {&lt;br /&gt;
										name = className,&lt;br /&gt;
										sizeKey = sizeKey,&lt;br /&gt;
										sizeLabel = sizeLabelsDisplay[si],&lt;br /&gt;
										role = role,&lt;br /&gt;
										count = #ships,&lt;br /&gt;
									}&lt;br /&gt;
									table.insert(result.classes, classInfo)&lt;br /&gt;
									result.byClass[className] = classInfo&lt;br /&gt;
									&lt;br /&gt;
									if not result.bySize[sizeKey] then&lt;br /&gt;
										result.bySize[sizeKey] = {}&lt;br /&gt;
									end&lt;br /&gt;
									result.bySize[sizeKey][className] = ships&lt;br /&gt;
									&lt;br /&gt;
									for si2 = 1, #ships do&lt;br /&gt;
										local ship = ships[si2]&lt;br /&gt;
										ship.className = className&lt;br /&gt;
										ship.sizeKey = sizeKey&lt;br /&gt;
										table.insert(result.ships, ship)&lt;br /&gt;
									end&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Lookup helpers&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local function findShip(name, data)&lt;br /&gt;
	local matches = {}&lt;br /&gt;
	for i = 1, #data.ships do&lt;br /&gt;
		local ship = data.ships[i]&lt;br /&gt;
		if ship.name:lower() == name:lower() then&lt;br /&gt;
			table.insert(matches, ship)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return matches&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function searchShips(partial, data)&lt;br /&gt;
	local seen = {}&lt;br /&gt;
	local results = {}&lt;br /&gt;
	for i = 1, #data.ships do&lt;br /&gt;
		local ship = data.ships[i]&lt;br /&gt;
		if ship.name:lower():find(partial:lower(), 1, true) then&lt;br /&gt;
			if not seen[ship.name] then&lt;br /&gt;
				seen[ship.name] = true&lt;br /&gt;
				local ci = data.byClass[ship.className]&lt;br /&gt;
				table.insert(results, {&lt;br /&gt;
					name = ship.name,&lt;br /&gt;
					manufacturer = ship.manufacturer,&lt;br /&gt;
					class = ship.className,&lt;br /&gt;
					size = ci and ci.sizeLabel or &#039;—&#039;,&lt;br /&gt;
					role = ci and ci.role or &#039;—&#039;,&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Output helpers&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local function escapeName(name)&lt;br /&gt;
	return name:gsub(&#039;|&#039;, &#039;&amp;amp;#124;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shipHeader(ship)&lt;br /&gt;
	local image = &#039;&#039;&lt;br /&gt;
	if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
		image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;! style=&amp;quot;min-width:180px; text-align:center;&amp;quot; | &#039; .. escapeName(ship.name) .. image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatVal(val)&lt;br /&gt;
	if val == &#039;&#039; or val == &#039;—&#039; or val == nil then&lt;br /&gt;
		return &#039;—&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Stat row definitions&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local statRows = {&lt;br /&gt;
	{ key = &#039;hull&#039;,       label = &#039;Hull HP&#039; },&lt;br /&gt;
	{ key = &#039;armor&#039;,      label = &#039;Armor HP&#039; },&lt;br /&gt;
	{ key = &#039;shield&#039;,     label = &#039;Shield HP&#039; },&lt;br /&gt;
	{ key = &#039;hardpoints&#039;, label = &#039;Hardpoints&#039; },&lt;br /&gt;
	{ key = &#039;cargo&#039;,      label = &#039;Cargo (m³)&#039; },&lt;br /&gt;
	{ key = &#039;speed&#039;,      label = &#039;Warp Speed (ls/s)&#039; },&lt;br /&gt;
	{ key = &#039;accel&#039;,      label = &#039;Warp Accel (ls/s²)&#039; },&lt;br /&gt;
	{ key = &#039;tonnage&#039;,    label = &#039;Tonnage&#039; },&lt;br /&gt;
	{ key = &#039;aux&#039;,        label = &#039;Auxiliary&#039; },&lt;br /&gt;
	{ key = &#039;manufacturer&#039;, label = &#039;Manufacturer&#039; },&lt;br /&gt;
	{ key = &#039;shipyardRep&#039;,  label = &#039;Shipyard Rep&#039; },&lt;br /&gt;
	{ key = &#039;conquest&#039;,   label = &#039;Conquest Rank&#039; },&lt;br /&gt;
	{ key = &#039;playerLevel&#039;,  label = &#039;Player Level&#039; },&lt;br /&gt;
	{ key = &#039;shipyardLevel&#039;, label = &#039;Shipyard Level&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Public functions&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
--- Compare 2+ ships side-by-side&lt;br /&gt;
--- {{#invoke:ShipCompare|compare|Ship1|Ship2|Ship3|...}}&lt;br /&gt;
function p.compare(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local shipNames = {}&lt;br /&gt;
	for i = 1, 20 do&lt;br /&gt;
		local arg = args[i]&lt;br /&gt;
		if arg and trim(arg) ~= &#039;&#039; then&lt;br /&gt;
			table.insert(shipNames, trim(arg))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #shipNames &amp;lt; 2 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.compare needs at least 2 ship names.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	local errors = {}&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #shipNames do&lt;br /&gt;
		local name = shipNames[i]&lt;br /&gt;
		local matches = findShip(name, data)&lt;br /&gt;
		if #matches == 0 then&lt;br /&gt;
			local suggestions = searchShips(name, data)&lt;br /&gt;
			local msg = &amp;quot;&#039;&#039;&#039;&amp;quot; .. escapeName(name) .. &amp;quot;&#039;&#039;&#039; not found.&amp;quot;&lt;br /&gt;
			if #suggestions &amp;gt; 0 then&lt;br /&gt;
				local suggestList = {}&lt;br /&gt;
				for j = 1, #suggestions do&lt;br /&gt;
					table.insert(suggestList, &amp;quot;[[&amp;quot; .. suggestions[j].name .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				msg = msg .. &amp;quot; Did you mean: &amp;quot; .. table.concat(suggestList, &amp;quot;, &amp;quot;) .. &amp;quot;?&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(errors, msg)&lt;br /&gt;
		else&lt;br /&gt;
			local ship = matches[1]&lt;br /&gt;
			if #matches &amp;gt; 1 then&lt;br /&gt;
				ship._dupes = true&lt;br /&gt;
				ship._dupeCount = #matches&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(ships, ship)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #errors &amp;gt; 0 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. table.concat(errors, &#039;&amp;lt;br&amp;gt;&#039;) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable ship-compare&amp;quot; style=&amp;quot;margin:0; width:100%;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		table.insert(result, shipHeader(ships[i]))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for ri = 1, #statRows do&lt;br /&gt;
		local row = statRows[ri]&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;! style=&amp;quot;text-align:left; min-width:140px;&amp;quot; | &#039; .. row.label)&lt;br /&gt;
		for si = 1, #ships do&lt;br /&gt;
			table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. formatVal(ships[si][row.key]))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! style=&amp;quot;text-align:left;&amp;quot; | Class&#039;)&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | [[&#039; .. (ships[i].className or &#039;—&#039;) .. &#039;]]&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		local ship = ships[i]&lt;br /&gt;
		if ship._dupes then&lt;br /&gt;
			table.insert(result, &#039;&amp;lt;div style=&amp;quot;font-size:0.85em; color:#666; margin-top:4px;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
			table.insert(result, &amp;quot;Note: &#039;&#039;&#039;&amp;quot; .. escapeName(ship.name) .. &amp;quot;&#039;&#039;&#039; has &amp;quot; .. ship._dupeCount .. &amp;quot; variants (different manufacturers). Showing the first match.&amp;quot;)&lt;br /&gt;
			table.insert(result, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Show all ships in a class&lt;br /&gt;
--- {{#invoke:ShipCompare|class|Cutters}}&lt;br /&gt;
function p.class(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local className = trim(args[1] or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if className == &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.class needs a class name.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	for sizeKey, classes in pairs(data.bySize) do&lt;br /&gt;
		if classes[className] then&lt;br /&gt;
			ships = classes[className]&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ships == 0 then&lt;br /&gt;
		for sizeKey, classes in pairs(data.bySize) do&lt;br /&gt;
			for cn, shipList in pairs(classes) do&lt;br /&gt;
				if cn:lower() == className:lower() then&lt;br /&gt;
					ships = shipList&lt;br /&gt;
					className = cn&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if #ships &amp;gt; 0 then break end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ships == 0 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Class &amp;quot;&#039; .. escapeName(className) .. &#039;&amp;quot; not found.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Hull&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Armor&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Shield&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Hardpoints&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Cargo&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Speed&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Accel&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Tonnage&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Aux&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Rep&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Level&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		local ship = ships[i]&lt;br /&gt;
		local image = &#039;&#039;&lt;br /&gt;
		if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
			image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. escapeName(ship.name) .. image)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.manufacturer)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.hull)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.armor)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.shield)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.hardpoints)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.cargo)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.speed)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.accel)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.tonnage)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.aux)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.shipyardRep)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.playerLevel)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Search ships by name&lt;br /&gt;
--- {{#invoke:ShipCompare|search|Raptor}}&lt;br /&gt;
function p.search(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local partial = trim(args[1] or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if partial == &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.search needs a search term.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local results = searchShips(partial, data)&lt;br /&gt;
	&lt;br /&gt;
	if #results == 0 then&lt;br /&gt;
		return &amp;quot;No ships matching &#039;&#039;&#039;&amp;quot; .. escapeName(partial) .. &amp;quot;&#039;&#039;&#039; found.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &amp;quot;Ships matching &#039;&#039;&#039;&amp;quot; .. escapeName(partial) .. &amp;quot;&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Class&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Role&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #results do&lt;br /&gt;
		local r = results[i]&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| [[&#039; .. r.name .. &#039;]]&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.manufacturer)&lt;br /&gt;
		table.insert(result, &#039;| [[&#039; .. r.class .. &#039;]]&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.size)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.role)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Database statistics&lt;br /&gt;
--- {{#invoke:ShipCompare|stats}}&lt;br /&gt;
function p.stats(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|+ Ship List Statistics&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size Category&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Classes&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ships&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local grandTotal = 0&lt;br /&gt;
	local grandClasses = 0&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		local classCount = 0&lt;br /&gt;
		local shipCount = 0&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				classCount = classCount + 1&lt;br /&gt;
				shipCount = shipCount + #ships&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. sizeLabelsDisplay[si])&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. classCount)&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. shipCount)&lt;br /&gt;
		&lt;br /&gt;
		grandTotal = grandTotal + shipCount&lt;br /&gt;
		grandClasses = grandClasses + classCount&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Total&#039;)&lt;br /&gt;
	table.insert(result, &#039;! &#039; .. grandClasses)&lt;br /&gt;
	table.insert(result, &#039;! &#039; .. grandTotal)&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- List all classes&lt;br /&gt;
--- {{#invoke:ShipCompare|classes}}&lt;br /&gt;
function p.classes(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Class&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Role&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ships&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				local ci = data.byClass[cn]&lt;br /&gt;
				local role = ci and ci.role or &#039;—&#039;&lt;br /&gt;
				table.insert(result, &#039;|-&#039;)&lt;br /&gt;
				table.insert(result, &#039;| &#039; .. sizeLabelsDisplay[si])&lt;br /&gt;
				table.insert(result, &#039;| [[&#039; .. cn .. &#039;]]&#039;)&lt;br /&gt;
				table.insert(result, &#039;| &#039; .. role)&lt;br /&gt;
				table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. #ships)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Module:ShipCompare&amp;diff=3904</id>
		<title>Module:ShipCompare</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Module:ShipCompare&amp;diff=3904"/>
		<updated>2026-07-21T16:58:33Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: Fix multi-line parsing: split by &amp;#039; | &amp;#039; instead of line-by-line &amp;#039;^|&amp;#039; to handle File:... on separate lines&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Module:ShipCompare&lt;br /&gt;
-- Side-by-side ship comparison tool for Vanguard Galaxy Wiki&lt;br /&gt;
--&lt;br /&gt;
-- Reads ship data directly from [[Ship List]] page — no separate data page needed.&lt;br /&gt;
-- Ships added to the Ship List page automatically appear here.&lt;br /&gt;
--&lt;br /&gt;
-- Usage:&lt;br /&gt;
--   {{#invoke:ShipCompare|compare|Raptor|Zephyr}}&lt;br /&gt;
--     Side-by-side comparison of 2+ ships&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|class|Cutters}}&lt;br /&gt;
--     Table of all ships in the &#039;Cutters&#039; class&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|search|Raptor}}&lt;br /&gt;
--     Search ships by partial name&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|stats}}&lt;br /&gt;
--     Database statistics&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|classes}}&lt;br /&gt;
--     List all classes with ship counts&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Page reader — fetches and caches the Ship List page&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local shipListPage = nil&lt;br /&gt;
&lt;br /&gt;
local function getShipListContent()&lt;br /&gt;
	if shipListPage then&lt;br /&gt;
		return shipListPage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(&#039;Ship_List&#039;)&lt;br /&gt;
	if not title then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local content = title:getContent()&lt;br /&gt;
	shipListPage = content&lt;br /&gt;
	return content&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Wikitable parser — converts Ship List wikitext to Lua data&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local sizeLabelsDisplay = { &#039;Small Ships&#039;, &#039;Medium Ships&#039;, &#039;Large Ships&#039; }&lt;br /&gt;
local sizeKeys = { &#039;small&#039;, &#039;medium&#039;, &#039;large&#039; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
	return mw.text.trim(s or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse a wiki table cell value: strip links, HTML, whitespace&lt;br /&gt;
local function cleanCell(cell)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	cell = cell:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	-- Extract manufacturer name from [[Link]]&lt;br /&gt;
	cell = cell:gsub(&#039;%[%[([^%[%]|]+)%|?[^%[%]]*%]%]&#039;, function(name)&lt;br /&gt;
		return trim(name)&lt;br /&gt;
	end)&lt;br /&gt;
	-- Remove &amp;lt;span&amp;gt; tags but keep their text&lt;br /&gt;
	cell = cell:gsub(&#039;&amp;lt;span[^&amp;gt;]*&amp;gt;&#039;, &#039;&#039;):gsub(&#039;&amp;lt;/span&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	-- Remove &amp;lt;br&amp;gt; tags (replace with space)&lt;br /&gt;
	cell = cell:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;&#039;, &#039; &#039;)&lt;br /&gt;
	-- Remove {{beta}} templates&lt;br /&gt;
	cell = cell:gsub(&#039;{{[^}]*}}&#039;, &#039;&#039;)&lt;br /&gt;
	cell = cell:gsub(&#039;\n+&#039;, &#039; &#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	return cell&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Extract ship name and image filename from the first cell&lt;br /&gt;
--- Input: &amp;quot;| Raptor&amp;lt;br&amp;gt;[[File:Raptor.png|frameless|200px]]&amp;quot;&lt;br /&gt;
local function parseShipCell(cell)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	cell = cell:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	&lt;br /&gt;
	-- Normalize newlines (from wikitext line breaks) to &amp;lt;br&amp;gt;&lt;br /&gt;
	cell = cell:gsub(&#039;\n+&#039;, &#039;&amp;lt;br&amp;gt;&#039;)&lt;br /&gt;
	local name = cell&lt;br /&gt;
	local image = &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- Extract image [[File:...]]&lt;br /&gt;
	local imgStart, imgEnd = cell:find(&#039;%[%[File:&#039;)&lt;br /&gt;
	if imgStart then&lt;br /&gt;
		local afterFile = cell:sub(imgEnd + 1)&lt;br /&gt;
		local pipePos = afterFile:find(&#039;|&#039;)&lt;br /&gt;
		local closePos = afterFile:find(&#039;]]&#039;)&lt;br /&gt;
		if pipePos and (not closePos or pipePos &amp;lt; closePos) then&lt;br /&gt;
			image = afterFile:sub(1, pipePos - 1)&lt;br /&gt;
		elseif closePos then&lt;br /&gt;
			image = afterFile:sub(1, closePos - 1)&lt;br /&gt;
		end&lt;br /&gt;
		name = cell:sub(1, imgStart - 1)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;&#039;, &#039; &#039;)&lt;br /&gt;
	name = trim(name)&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;$&#039;, &#039;&#039;)&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;span[^&amp;gt;]*&amp;gt;&#039;, &#039;&#039;):gsub(&#039;&amp;lt;/span&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	name = name:gsub(&#039;{{[^}]*}}&#039;, &#039;&#039;)&lt;br /&gt;
	name = trim(name)&lt;br /&gt;
	&lt;br /&gt;
	image = trim(image)&lt;br /&gt;
	if image ~= &#039;&#039; then&lt;br /&gt;
		image = image .. &#039;|frameless|200px&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return name, image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Check if a row is a header row (contains ! cells)&lt;br /&gt;
local function isHeaderRow(rowText)&lt;br /&gt;
	for line in rowText:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
		line = trim(line)&lt;br /&gt;
		if line:find(&#039;^!&#039;) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse ship data rows from a sortable wikitable&lt;br /&gt;
--- @param tableText string — the content between {| and |} of a sortable table&lt;br /&gt;
--- @return table array of ship data records&lt;br /&gt;
local function parseShipTable(tableText)&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	local rows = mw.text.split(tableText, &#039;|%-&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for ri = 1, #rows do&lt;br /&gt;
		local rowText = trim(rows[ri])&lt;br /&gt;
		if rowText == &#039;&#039; then&lt;br /&gt;
			-- skip&lt;br /&gt;
		elseif isHeaderRow(rowText) then&lt;br /&gt;
			-- skip header rows&lt;br /&gt;
		elseif rowText:find(&#039;colspan&#039;, 1, true) then&lt;br /&gt;
			-- skip colspan rows&lt;br /&gt;
		else&lt;br /&gt;
			local cells = {}&lt;br /&gt;
			&lt;br /&gt;
			if rowText:find(&#039;||&#039;) then&lt;br /&gt;
				-- Inline format: | cell1 || cell2 || cell3&lt;br /&gt;
				local parts = mw.text.split(rowText, &#039;||&#039;)&lt;br /&gt;
				for pi = 1, #parts do&lt;br /&gt;
					local part = trim(parts[pi])&lt;br /&gt;
					part = part:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
					table.insert(cells, trim(part))&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				-- Single-pipe format: cells separated by &amp;quot; | &amp;quot; (space-pipe-space).&lt;br /&gt;
				-- This handles multi-line cells where [[File:...]] and remaining&lt;br /&gt;
				-- pipe-separated values are on a different line from the ship name.&lt;br /&gt;
				for part in (rowText .. &#039; | &#039;):gmatch(&#039;(.-) | &#039;) do&lt;br /&gt;
					local part2 = trim(part)&lt;br /&gt;
					part2 = part2:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
					table.insert(cells, trim(part2))&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if #cells &amp;gt;= 2 then&lt;br /&gt;
				local name, image = parseShipCell(cells[1])&lt;br /&gt;
				if name ~= &#039;&#039; then&lt;br /&gt;
					local ship = {&lt;br /&gt;
						name = name,&lt;br /&gt;
						image = image,&lt;br /&gt;
						manufacturer = cleanCell(cells[2] or &#039;&#039;),&lt;br /&gt;
						aux = cleanCell(cells[3] or &#039;&#039;),&lt;br /&gt;
						hull = cleanCell(cells[4] or &#039;&#039;),&lt;br /&gt;
						armor = cleanCell(cells[5] or &#039;&#039;),&lt;br /&gt;
						shield = cleanCell(cells[6] or &#039;&#039;),&lt;br /&gt;
						cargo = cleanCell(cells[7] or &#039;&#039;),&lt;br /&gt;
						speed = cleanCell(cells[8] or &#039;&#039;),&lt;br /&gt;
						accel = cleanCell(cells[9] or &#039;&#039;),&lt;br /&gt;
						hardpoints = cleanCell(cells[10] or &#039;&#039;),&lt;br /&gt;
						tonnage = cleanCell(cells[11] or &#039;&#039;),&lt;br /&gt;
						shipyardRep = cleanCell(cells[12] or &#039;&#039;),&lt;br /&gt;
						conquest = cleanCell(cells[13] or &#039;&#039;),&lt;br /&gt;
						playerLevel = cleanCell(cells[14] or &#039;&#039;),&lt;br /&gt;
						shipyardLevel = cleanCell(cells[15] or &#039;&#039;),&lt;br /&gt;
					}&lt;br /&gt;
					table.insert(ships, ship)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return ships&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Determine role from class name&lt;br /&gt;
local function roleFromClass(className)&lt;br /&gt;
	if className:find(&#039;Cutter&#039;) or className:find(&#039;Gunship&#039;) or className:find(&#039;Corvette&#039;) or className:find(&#039;Frigate&#039;) or className:find(&#039;Destroyer&#039;) or className:find(&#039;Battlecruiser&#039;) then&lt;br /&gt;
		return &#039;Combat&#039;&lt;br /&gt;
	elseif className:find(&#039;Mining&#039;) or className:find(&#039;Hewers&#039;) or className:find(&#039;Hewer&#039;) or className:find(&#039;Dredger&#039;) or className:find(&#039;Breaker&#039;) or className:find(&#039;Harvester&#039;) or className:find(&#039;Barge&#039;) then&lt;br /&gt;
		return &#039;Mining&#039;&lt;br /&gt;
	elseif className:find(&#039;Salvage&#039;) or className:find(&#039;Scow&#039;) or className:find(&#039;Scrapper&#039;) or className:find(&#039;Wrecker&#039;) or className:find(&#039;Reclaimer&#039;) then&lt;br /&gt;
		return &#039;Salvage&#039;&lt;br /&gt;
	elseif className:find(&#039;Courier&#039;) or className:find(&#039;Ferry&#039;) or className:find(&#039;Hauler&#039;) or className:find(&#039;Freighter&#039;) or className:find(&#039;Carrack&#039;) or className:find(&#039;Merchantman&#039;) then&lt;br /&gt;
		return &#039;Cargo&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;—&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse the entire Ship List page into ship data&lt;br /&gt;
--- TabberNeue uses |-|ClassName= syntax directly in wikitext (no &amp;lt;tabber&amp;gt; tags)&lt;br /&gt;
local function parseAllShips()&lt;br /&gt;
	local content = getShipListContent()&lt;br /&gt;
	if not content then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Split by size sections&lt;br /&gt;
	local bySize = {}&lt;br /&gt;
	local currentSize = nil&lt;br /&gt;
	&lt;br /&gt;
	for line in content:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
		line = trim(line)&lt;br /&gt;
		local sizeMatch = line:match(&#039;^==%s*(Small Ships|Medium Ships|Large Ships)%s*==$&#039;)&lt;br /&gt;
		if sizeMatch then&lt;br /&gt;
			if sizeMatch == &#039;Small Ships&#039; then currentSize = &#039;small&#039;&lt;br /&gt;
			elseif sizeMatch == &#039;Medium Ships&#039; then currentSize = &#039;medium&#039;&lt;br /&gt;
			elseif sizeMatch == &#039;Large Ships&#039; then currentSize = &#039;large&#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif currentSize then&lt;br /&gt;
			if not bySize[currentSize] then&lt;br /&gt;
				bySize[currentSize] = {}&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(bySize[currentSize], line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {&lt;br /&gt;
		ships = {},&lt;br /&gt;
		byClass = {},&lt;br /&gt;
		classes = {},&lt;br /&gt;
		bySize = { small = {}, medium = {}, large = {} },&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		if bySize[sizeKey] then&lt;br /&gt;
			local sectionText = table.concat(bySize[sizeKey], &#039;\n&#039;)&lt;br /&gt;
			&lt;br /&gt;
			-- TabberNeue uses |-|ClassName= for tabs&lt;br /&gt;
			-- Split by |-| to get individual tabs&lt;br /&gt;
			-- First part before any |-| is preamble (ignored)&lt;br /&gt;
			local tabs = mw.text.split(sectionText, &#039;|%-|&#039;)&lt;br /&gt;
			&lt;br /&gt;
			for ti = 1, #tabs do&lt;br /&gt;
				local tab = trim(tabs[ti])&lt;br /&gt;
				if tab ~= &#039;&#039; then&lt;br /&gt;
					-- First line = ClassName= or ClassName=&amp;quot;description&amp;quot;&lt;br /&gt;
					local firstNewline = tab:find(&#039;\n&#039;)&lt;br /&gt;
					if firstNewline then&lt;br /&gt;
						local classNameLine = trim(tab:sub(1, firstNewline - 1))&lt;br /&gt;
						&lt;br /&gt;
						-- Remove trailing = and any description after it&lt;br /&gt;
						local eqPos = classNameLine:find(&#039;=&#039;)&lt;br /&gt;
						local className = &#039;&#039;&lt;br /&gt;
						if eqPos then&lt;br /&gt;
							className = trim(classNameLine:sub(1, eqPos - 1))&lt;br /&gt;
						else&lt;br /&gt;
							className = classNameLine&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if className ~= &#039;&#039; then&lt;br /&gt;
							-- Find the sortable wikitable&lt;br /&gt;
							local tableStart = tab:find(&#039;%{%| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
							if tableStart then&lt;br /&gt;
								local tableClose = tab:find(&#039;\n%|}&#039;, tableStart)&lt;br /&gt;
								if tableClose then&lt;br /&gt;
									local tableContent = tab:sub(tableStart, tableClose)&lt;br /&gt;
									local firstPipe = tableContent:find(&#039;\n&#039;)&lt;br /&gt;
									if firstPipe then&lt;br /&gt;
										tableContent = tableContent:sub(firstPipe + 1)&lt;br /&gt;
									end&lt;br /&gt;
									tableContent = tableContent:gsub(&#039;\n%|}$&#039;, &#039;&#039;)&lt;br /&gt;
									&lt;br /&gt;
									local ships = parseShipTable(tableContent)&lt;br /&gt;
									local role = roleFromClass(className)&lt;br /&gt;
									&lt;br /&gt;
									local classInfo = {&lt;br /&gt;
										name = className,&lt;br /&gt;
										sizeKey = sizeKey,&lt;br /&gt;
										sizeLabel = sizeLabelsDisplay[si],&lt;br /&gt;
										role = role,&lt;br /&gt;
										count = #ships,&lt;br /&gt;
									}&lt;br /&gt;
									table.insert(result.classes, classInfo)&lt;br /&gt;
									result.byClass[className] = classInfo&lt;br /&gt;
									&lt;br /&gt;
									if not result.bySize[sizeKey] then&lt;br /&gt;
										result.bySize[sizeKey] = {}&lt;br /&gt;
									end&lt;br /&gt;
									result.bySize[sizeKey][className] = ships&lt;br /&gt;
									&lt;br /&gt;
									for si2 = 1, #ships do&lt;br /&gt;
										local ship = ships[si2]&lt;br /&gt;
										ship.className = className&lt;br /&gt;
										ship.sizeKey = sizeKey&lt;br /&gt;
										table.insert(result.ships, ship)&lt;br /&gt;
									end&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Lookup helpers&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local function findShip(name, data)&lt;br /&gt;
	local matches = {}&lt;br /&gt;
	for i = 1, #data.ships do&lt;br /&gt;
		local ship = data.ships[i]&lt;br /&gt;
		if ship.name:lower() == name:lower() then&lt;br /&gt;
			table.insert(matches, ship)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return matches&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function searchShips(partial, data)&lt;br /&gt;
	local seen = {}&lt;br /&gt;
	local results = {}&lt;br /&gt;
	for i = 1, #data.ships do&lt;br /&gt;
		local ship = data.ships[i]&lt;br /&gt;
		if ship.name:lower():find(partial:lower(), 1, true) then&lt;br /&gt;
			if not seen[ship.name] then&lt;br /&gt;
				seen[ship.name] = true&lt;br /&gt;
				local ci = data.byClass[ship.className]&lt;br /&gt;
				table.insert(results, {&lt;br /&gt;
					name = ship.name,&lt;br /&gt;
					manufacturer = ship.manufacturer,&lt;br /&gt;
					class = ship.className,&lt;br /&gt;
					size = ci and ci.sizeLabel or &#039;—&#039;,&lt;br /&gt;
					role = ci and ci.role or &#039;—&#039;,&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Output helpers&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local function escapeName(name)&lt;br /&gt;
	return name:gsub(&#039;|&#039;, &#039;&amp;amp;#124;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shipHeader(ship)&lt;br /&gt;
	local image = &#039;&#039;&lt;br /&gt;
	if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
		image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;! style=&amp;quot;min-width:180px; text-align:center;&amp;quot; | &#039; .. escapeName(ship.name) .. image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatVal(val)&lt;br /&gt;
	if val == &#039;&#039; or val == &#039;—&#039; or val == nil then&lt;br /&gt;
		return &#039;—&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Stat row definitions&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local statRows = {&lt;br /&gt;
	{ key = &#039;hull&#039;,       label = &#039;Hull HP&#039; },&lt;br /&gt;
	{ key = &#039;armor&#039;,      label = &#039;Armor HP&#039; },&lt;br /&gt;
	{ key = &#039;shield&#039;,     label = &#039;Shield HP&#039; },&lt;br /&gt;
	{ key = &#039;hardpoints&#039;, label = &#039;Hardpoints&#039; },&lt;br /&gt;
	{ key = &#039;cargo&#039;,      label = &#039;Cargo (m³)&#039; },&lt;br /&gt;
	{ key = &#039;speed&#039;,      label = &#039;Warp Speed (ls/s)&#039; },&lt;br /&gt;
	{ key = &#039;accel&#039;,      label = &#039;Warp Accel (ls/s²)&#039; },&lt;br /&gt;
	{ key = &#039;tonnage&#039;,    label = &#039;Tonnage&#039; },&lt;br /&gt;
	{ key = &#039;aux&#039;,        label = &#039;Auxiliary&#039; },&lt;br /&gt;
	{ key = &#039;manufacturer&#039;, label = &#039;Manufacturer&#039; },&lt;br /&gt;
	{ key = &#039;shipyardRep&#039;,  label = &#039;Shipyard Rep&#039; },&lt;br /&gt;
	{ key = &#039;conquest&#039;,   label = &#039;Conquest Rank&#039; },&lt;br /&gt;
	{ key = &#039;playerLevel&#039;,  label = &#039;Player Level&#039; },&lt;br /&gt;
	{ key = &#039;shipyardLevel&#039;, label = &#039;Shipyard Level&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Public functions&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
--- Compare 2+ ships side-by-side&lt;br /&gt;
--- {{#invoke:ShipCompare|compare|Ship1|Ship2|Ship3|...}}&lt;br /&gt;
function p.compare(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local shipNames = {}&lt;br /&gt;
	for i = 1, 20 do&lt;br /&gt;
		local arg = args[i]&lt;br /&gt;
		if arg and trim(arg) ~= &#039;&#039; then&lt;br /&gt;
			table.insert(shipNames, trim(arg))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #shipNames &amp;lt; 2 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.compare needs at least 2 ship names.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	local errors = {}&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #shipNames do&lt;br /&gt;
		local name = shipNames[i]&lt;br /&gt;
		local matches = findShip(name, data)&lt;br /&gt;
		if #matches == 0 then&lt;br /&gt;
			local suggestions = searchShips(name, data)&lt;br /&gt;
			local msg = &amp;quot;&#039;&#039;&#039;&amp;quot; .. escapeName(name) .. &amp;quot;&#039;&#039;&#039; not found.&amp;quot;&lt;br /&gt;
			if #suggestions &amp;gt; 0 then&lt;br /&gt;
				local suggestList = {}&lt;br /&gt;
				for j = 1, #suggestions do&lt;br /&gt;
					table.insert(suggestList, &amp;quot;[[&amp;quot; .. suggestions[j].name .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				msg = msg .. &amp;quot; Did you mean: &amp;quot; .. table.concat(suggestList, &amp;quot;, &amp;quot;) .. &amp;quot;?&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(errors, msg)&lt;br /&gt;
		else&lt;br /&gt;
			local ship = matches[1]&lt;br /&gt;
			if #matches &amp;gt; 1 then&lt;br /&gt;
				ship._dupes = true&lt;br /&gt;
				ship._dupeCount = #matches&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(ships, ship)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #errors &amp;gt; 0 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. table.concat(errors, &#039;&amp;lt;br&amp;gt;&#039;) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable ship-compare&amp;quot; style=&amp;quot;margin:0; width:100%;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		table.insert(result, shipHeader(ships[i]))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for ri = 1, #statRows do&lt;br /&gt;
		local row = statRows[ri]&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;! style=&amp;quot;text-align:left; min-width:140px;&amp;quot; | &#039; .. row.label)&lt;br /&gt;
		for si = 1, #ships do&lt;br /&gt;
			table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. formatVal(ships[si][row.key]))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! style=&amp;quot;text-align:left;&amp;quot; | Class&#039;)&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | [[&#039; .. (ships[i].className or &#039;—&#039;) .. &#039;]]&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		local ship = ships[i]&lt;br /&gt;
		if ship._dupes then&lt;br /&gt;
			table.insert(result, &#039;&amp;lt;div style=&amp;quot;font-size:0.85em; color:#666; margin-top:4px;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
			table.insert(result, &amp;quot;Note: &#039;&#039;&#039;&amp;quot; .. escapeName(ship.name) .. &amp;quot;&#039;&#039;&#039; has &amp;quot; .. ship._dupeCount .. &amp;quot; variants (different manufacturers). Showing the first match.&amp;quot;)&lt;br /&gt;
			table.insert(result, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Show all ships in a class&lt;br /&gt;
--- {{#invoke:ShipCompare|class|Cutters}}&lt;br /&gt;
function p.class(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local className = trim(args[1] or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if className == &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.class needs a class name.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	for sizeKey, classes in pairs(data.bySize) do&lt;br /&gt;
		if classes[className] then&lt;br /&gt;
			ships = classes[className]&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ships == 0 then&lt;br /&gt;
		for sizeKey, classes in pairs(data.bySize) do&lt;br /&gt;
			for cn, shipList in pairs(classes) do&lt;br /&gt;
				if cn:lower() == className:lower() then&lt;br /&gt;
					ships = shipList&lt;br /&gt;
					className = cn&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if #ships &amp;gt; 0 then break end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ships == 0 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Class &amp;quot;&#039; .. escapeName(className) .. &#039;&amp;quot; not found.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Hull&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Armor&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Shield&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Hardpoints&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Cargo&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Speed&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Accel&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Tonnage&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Aux&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Rep&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Level&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		local ship = ships[i]&lt;br /&gt;
		local image = &#039;&#039;&lt;br /&gt;
		if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
			image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. escapeName(ship.name) .. image)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.manufacturer)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.hull)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.armor)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.shield)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.hardpoints)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.cargo)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.speed)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.accel)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.tonnage)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.aux)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.shipyardRep)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.playerLevel)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Search ships by name&lt;br /&gt;
--- {{#invoke:ShipCompare|search|Raptor}}&lt;br /&gt;
function p.search(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local partial = trim(args[1] or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if partial == &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.search needs a search term.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local results = searchShips(partial, data)&lt;br /&gt;
	&lt;br /&gt;
	if #results == 0 then&lt;br /&gt;
		return &amp;quot;No ships matching &#039;&#039;&#039;&amp;quot; .. escapeName(partial) .. &amp;quot;&#039;&#039;&#039; found.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &amp;quot;Ships matching &#039;&#039;&#039;&amp;quot; .. escapeName(partial) .. &amp;quot;&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Class&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Role&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #results do&lt;br /&gt;
		local r = results[i]&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| [[&#039; .. r.name .. &#039;]]&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.manufacturer)&lt;br /&gt;
		table.insert(result, &#039;| [[&#039; .. r.class .. &#039;]]&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.size)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.role)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Database statistics&lt;br /&gt;
--- {{#invoke:ShipCompare|stats}}&lt;br /&gt;
function p.stats(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|+ Ship List Statistics&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size Category&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Classes&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ships&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local grandTotal = 0&lt;br /&gt;
	local grandClasses = 0&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		local classCount = 0&lt;br /&gt;
		local shipCount = 0&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				classCount = classCount + 1&lt;br /&gt;
				shipCount = shipCount + #ships&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. sizeLabelsDisplay[si])&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. classCount)&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. shipCount)&lt;br /&gt;
		&lt;br /&gt;
		grandTotal = grandTotal + shipCount&lt;br /&gt;
		grandClasses = grandClasses + classCount&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Total&#039;)&lt;br /&gt;
	table.insert(result, &#039;! &#039; .. grandClasses)&lt;br /&gt;
	table.insert(result, &#039;! &#039; .. grandTotal)&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- List all classes&lt;br /&gt;
--- {{#invoke:ShipCompare|classes}}&lt;br /&gt;
function p.classes(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Class&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Role&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ships&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				local ci = data.byClass[cn]&lt;br /&gt;
				local role = ci and ci.role or &#039;—&#039;&lt;br /&gt;
				table.insert(result, &#039;|-&#039;)&lt;br /&gt;
				table.insert(result, &#039;| &#039; .. sizeLabelsDisplay[si])&lt;br /&gt;
				table.insert(result, &#039;| [[&#039; .. cn .. &#039;]]&#039;)&lt;br /&gt;
				table.insert(result, &#039;| &#039; .. role)&lt;br /&gt;
				table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. #ships)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Module:ShipCompare&amp;diff=3901</id>
		<title>Module:ShipCompare</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Module:ShipCompare&amp;diff=3901"/>
		<updated>2026-07-21T16:46:31Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: Created page with &amp;quot;-- Module:ShipCompare -- Side-by-side ship comparison tool for Vanguard Galaxy Wiki -- -- Reads ship data directly from Ship List page — no separate data page needed. -- Ships added to the Ship List page automatically appear here. -- -- Usage: --   {{#invoke:ShipCompare|compare|Raptor|Zephyr}} --     Side-by-side comparison of 2+ ships -- --   {{#invoke:ShipCompare|class|Cutters}} --     Table of all ships in the &amp;#039;Cutters&amp;#039; class -- --   {{#invoke:ShipCompare|search...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Module:ShipCompare&lt;br /&gt;
-- Side-by-side ship comparison tool for Vanguard Galaxy Wiki&lt;br /&gt;
--&lt;br /&gt;
-- Reads ship data directly from [[Ship List]] page — no separate data page needed.&lt;br /&gt;
-- Ships added to the Ship List page automatically appear here.&lt;br /&gt;
--&lt;br /&gt;
-- Usage:&lt;br /&gt;
--   {{#invoke:ShipCompare|compare|Raptor|Zephyr}}&lt;br /&gt;
--     Side-by-side comparison of 2+ ships&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|class|Cutters}}&lt;br /&gt;
--     Table of all ships in the &#039;Cutters&#039; class&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|search|Raptor}}&lt;br /&gt;
--     Search ships by partial name&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|stats}}&lt;br /&gt;
--     Database statistics&lt;br /&gt;
--&lt;br /&gt;
--   {{#invoke:ShipCompare|classes}}&lt;br /&gt;
--     List all classes with ship counts&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Page reader — fetches and caches the Ship List page&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local shipListPage = nil&lt;br /&gt;
&lt;br /&gt;
local function getShipListContent()&lt;br /&gt;
	if shipListPage then&lt;br /&gt;
		return shipListPage&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(&#039;Ship_List&#039;)&lt;br /&gt;
	if not title then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local content = title:getContent()&lt;br /&gt;
	shipListPage = content&lt;br /&gt;
	return content&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Wikitable parser — converts Ship List wikitext to Lua data&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local sizeLabelsDisplay = { &#039;Small Ships&#039;, &#039;Medium Ships&#039;, &#039;Large Ships&#039; }&lt;br /&gt;
local sizeKeys = { &#039;small&#039;, &#039;medium&#039;, &#039;large&#039; }&lt;br /&gt;
&lt;br /&gt;
local function trim(s)&lt;br /&gt;
	return mw.text.trim(s or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse a wiki table cell value: strip links, HTML, whitespace&lt;br /&gt;
local function cleanCell(cell)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	cell = cell:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	-- Extract manufacturer name from [[Link]]&lt;br /&gt;
	cell = cell:gsub(&#039;%[%[([^%[%]|]+)%|?[^%[%]]*%]%]&#039;, function(name)&lt;br /&gt;
		return trim(name)&lt;br /&gt;
	end)&lt;br /&gt;
	-- Remove &amp;lt;span&amp;gt; tags but keep their text&lt;br /&gt;
	cell = cell:gsub(&#039;&amp;lt;span[^&amp;gt;]*&amp;gt;&#039;, &#039;&#039;):gsub(&#039;&amp;lt;/span&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	-- Remove &amp;lt;br&amp;gt; tags (replace with space)&lt;br /&gt;
	cell = cell:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;&#039;, &#039; &#039;)&lt;br /&gt;
	-- Remove {{beta}} templates&lt;br /&gt;
	cell = cell:gsub(&#039;{{[^}]*}}&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	return cell&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Extract ship name and image filename from the first cell&lt;br /&gt;
--- Input: &amp;quot;| Raptor&amp;lt;br&amp;gt;[[File:Raptor.png|frameless|200px]]&amp;quot;&lt;br /&gt;
local function parseShipCell(cell)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	cell = cell:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
	cell = trim(cell)&lt;br /&gt;
	&lt;br /&gt;
	local name = cell&lt;br /&gt;
	local image = &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- Extract image [[File:...]]&lt;br /&gt;
	local imgStart, imgEnd = cell:find(&#039;%[%[File:&#039;)&lt;br /&gt;
	if imgStart then&lt;br /&gt;
		local afterFile = cell:sub(imgEnd + 1)&lt;br /&gt;
		local pipePos = afterFile:find(&#039;|&#039;)&lt;br /&gt;
		local closePos = afterFile:find(&#039;]]&#039;)&lt;br /&gt;
		if pipePos and (not closePos or pipePos &amp;lt; closePos) then&lt;br /&gt;
			image = afterFile:sub(1, pipePos - 1)&lt;br /&gt;
		elseif closePos then&lt;br /&gt;
			image = afterFile:sub(1, closePos - 1)&lt;br /&gt;
		end&lt;br /&gt;
		name = cell:sub(1, imgStart - 1)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	name = trim(name)&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;br[^&amp;gt;]*&amp;gt;$&#039;, &#039;&#039;)&lt;br /&gt;
	name = name:gsub(&#039;&amp;lt;span[^&amp;gt;]*&amp;gt;&#039;, &#039;&#039;):gsub(&#039;&amp;lt;/span&amp;gt;&#039;, &#039;&#039;)&lt;br /&gt;
	name = name:gsub(&#039;{{[^}]*}}&#039;, &#039;&#039;)&lt;br /&gt;
	name = trim(name)&lt;br /&gt;
	&lt;br /&gt;
	image = trim(image)&lt;br /&gt;
	if image ~= &#039;&#039; then&lt;br /&gt;
		image = image .. &#039;|frameless|200px&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return name, image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Check if a row is a header row (contains ! cells)&lt;br /&gt;
local function isHeaderRow(rowText)&lt;br /&gt;
	for line in rowText:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
		line = trim(line)&lt;br /&gt;
		if line:find(&#039;^!&#039;) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse ship data rows from a sortable wikitable&lt;br /&gt;
--- @param tableText string — the content between {| and |} of a sortable table&lt;br /&gt;
--- @return table array of ship data records&lt;br /&gt;
local function parseShipTable(tableText)&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	local rows = mw.text.split(tableText, &#039;|%-&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for ri = 1, #rows do&lt;br /&gt;
		local rowText = trim(rows[ri])&lt;br /&gt;
		if rowText == &#039;&#039; then&lt;br /&gt;
			-- skip&lt;br /&gt;
		elseif isHeaderRow(rowText) then&lt;br /&gt;
			-- skip header rows&lt;br /&gt;
		elseif rowText:find(&#039;colspan&#039;, 1, true) then&lt;br /&gt;
			-- skip colspan rows&lt;br /&gt;
		else&lt;br /&gt;
			local cells = {}&lt;br /&gt;
			&lt;br /&gt;
			if rowText:find(&#039;||&#039;) then&lt;br /&gt;
				-- Inline format: | cell1 || cell2 || cell3&lt;br /&gt;
				local parts = mw.text.split(rowText, &#039;||&#039;)&lt;br /&gt;
				for pi = 1, #parts do&lt;br /&gt;
					local part = trim(parts[pi])&lt;br /&gt;
					part = part:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
					table.insert(cells, trim(part))&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				-- Multi-line format: each | cell on its own line&lt;br /&gt;
				for line in rowText:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
					line = trim(line)&lt;br /&gt;
					if line:find(&#039;^|&#039;) and not line:find(&#039;^|%+&#039;) and not line:find(&#039;^|}&#039;) then&lt;br /&gt;
						line = line:gsub(&#039;^|&#039;, &#039;&#039;)&lt;br /&gt;
						table.insert(cells, trim(line))&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if #cells &amp;gt;= 2 then&lt;br /&gt;
				local name, image = parseShipCell(cells[1])&lt;br /&gt;
				if name ~= &#039;&#039; then&lt;br /&gt;
					local ship = {&lt;br /&gt;
						name = name,&lt;br /&gt;
						image = image,&lt;br /&gt;
						manufacturer = cleanCell(cells[2] or &#039;&#039;),&lt;br /&gt;
						aux = cleanCell(cells[3] or &#039;&#039;),&lt;br /&gt;
						hull = cleanCell(cells[4] or &#039;&#039;),&lt;br /&gt;
						armor = cleanCell(cells[5] or &#039;&#039;),&lt;br /&gt;
						shield = cleanCell(cells[6] or &#039;&#039;),&lt;br /&gt;
						cargo = cleanCell(cells[7] or &#039;&#039;),&lt;br /&gt;
						speed = cleanCell(cells[8] or &#039;&#039;),&lt;br /&gt;
						accel = cleanCell(cells[9] or &#039;&#039;),&lt;br /&gt;
						hardpoints = cleanCell(cells[10] or &#039;&#039;),&lt;br /&gt;
						tonnage = cleanCell(cells[11] or &#039;&#039;),&lt;br /&gt;
						shipyardRep = cleanCell(cells[12] or &#039;&#039;),&lt;br /&gt;
						conquest = cleanCell(cells[13] or &#039;&#039;),&lt;br /&gt;
						playerLevel = cleanCell(cells[14] or &#039;&#039;),&lt;br /&gt;
						shipyardLevel = cleanCell(cells[15] or &#039;&#039;),&lt;br /&gt;
					}&lt;br /&gt;
					table.insert(ships, ship)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return ships&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Determine role from class name&lt;br /&gt;
local function roleFromClass(className)&lt;br /&gt;
	if className:find(&#039;Cutter&#039;) or className:find(&#039;Gunship&#039;) or className:find(&#039;Corvette&#039;) or className:find(&#039;Frigate&#039;) or className:find(&#039;Destroyer&#039;) or className:find(&#039;Battlecruiser&#039;) then&lt;br /&gt;
		return &#039;Combat&#039;&lt;br /&gt;
	elseif className:find(&#039;Mining&#039;) or className:find(&#039;Hewers&#039;) or className:find(&#039;Hewer&#039;) or className:find(&#039;Dredger&#039;) or className:find(&#039;Breaker&#039;) or className:find(&#039;Harvester&#039;) or className:find(&#039;Barge&#039;) then&lt;br /&gt;
		return &#039;Mining&#039;&lt;br /&gt;
	elseif className:find(&#039;Salvage&#039;) or className:find(&#039;Scow&#039;) or className:find(&#039;Scrapper&#039;) or className:find(&#039;Wrecker&#039;) or className:find(&#039;Reclaimer&#039;) then&lt;br /&gt;
		return &#039;Salvage&#039;&lt;br /&gt;
	elseif className:find(&#039;Courier&#039;) or className:find(&#039;Ferry&#039;) or className:find(&#039;Hauler&#039;) or className:find(&#039;Freighter&#039;) or className:find(&#039;Carrack&#039;) or className:find(&#039;Merchantman&#039;) then&lt;br /&gt;
		return &#039;Cargo&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;—&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Parse the entire Ship List page into ship data&lt;br /&gt;
--- TabberNeue uses |-|ClassName= syntax directly in wikitext (no &amp;lt;tabber&amp;gt; tags)&lt;br /&gt;
local function parseAllShips()&lt;br /&gt;
	local content = getShipListContent()&lt;br /&gt;
	if not content then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Split by size sections&lt;br /&gt;
	local bySize = {}&lt;br /&gt;
	local currentSize = nil&lt;br /&gt;
	&lt;br /&gt;
	for line in content:gmatch(&#039;[^\n]+&#039;) do&lt;br /&gt;
		line = trim(line)&lt;br /&gt;
		local sizeMatch = line:match(&#039;^==%s*(Small Ships|Medium Ships|Large Ships)%s*==$&#039;)&lt;br /&gt;
		if sizeMatch then&lt;br /&gt;
			if sizeMatch == &#039;Small Ships&#039; then currentSize = &#039;small&#039;&lt;br /&gt;
			elseif sizeMatch == &#039;Medium Ships&#039; then currentSize = &#039;medium&#039;&lt;br /&gt;
			elseif sizeMatch == &#039;Large Ships&#039; then currentSize = &#039;large&#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif currentSize then&lt;br /&gt;
			if not bySize[currentSize] then&lt;br /&gt;
				bySize[currentSize] = {}&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(bySize[currentSize], line)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {&lt;br /&gt;
		ships = {},&lt;br /&gt;
		byClass = {},&lt;br /&gt;
		classes = {},&lt;br /&gt;
		bySize = { small = {}, medium = {}, large = {} },&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		if bySize[sizeKey] then&lt;br /&gt;
			local sectionText = table.concat(bySize[sizeKey], &#039;\n&#039;)&lt;br /&gt;
			&lt;br /&gt;
			-- TabberNeue uses |-|ClassName= for tabs&lt;br /&gt;
			-- Split by |-| to get individual tabs&lt;br /&gt;
			-- First part before any |-| is preamble (ignored)&lt;br /&gt;
			local tabs = mw.text.split(sectionText, &#039;|%-|&#039;)&lt;br /&gt;
			&lt;br /&gt;
			for ti = 1, #tabs do&lt;br /&gt;
				local tab = trim(tabs[ti])&lt;br /&gt;
				if tab ~= &#039;&#039; then&lt;br /&gt;
					-- First line = ClassName= or ClassName=&amp;quot;description&amp;quot;&lt;br /&gt;
					local firstNewline = tab:find(&#039;\n&#039;)&lt;br /&gt;
					if firstNewline then&lt;br /&gt;
						local classNameLine = trim(tab:sub(1, firstNewline - 1))&lt;br /&gt;
						&lt;br /&gt;
						-- Remove trailing = and any description after it&lt;br /&gt;
						local eqPos = classNameLine:find(&#039;=&#039;)&lt;br /&gt;
						local className = &#039;&#039;&lt;br /&gt;
						if eqPos then&lt;br /&gt;
							className = trim(classNameLine:sub(1, eqPos - 1))&lt;br /&gt;
						else&lt;br /&gt;
							className = classNameLine&lt;br /&gt;
						end&lt;br /&gt;
						&lt;br /&gt;
						if className ~= &#039;&#039; then&lt;br /&gt;
							-- Find the sortable wikitable&lt;br /&gt;
							local tableStart = tab:find(&#039;%{%| class=&amp;quot;wikitable sortable&amp;quot;&#039;)&lt;br /&gt;
							if tableStart then&lt;br /&gt;
								local tableClose = tab:find(&#039;\n%|}&#039;, tableStart)&lt;br /&gt;
								if tableClose then&lt;br /&gt;
									local tableContent = tab:sub(tableStart, tableClose)&lt;br /&gt;
									local firstPipe = tableContent:find(&#039;\n&#039;)&lt;br /&gt;
									if firstPipe then&lt;br /&gt;
										tableContent = tableContent:sub(firstPipe + 1)&lt;br /&gt;
									end&lt;br /&gt;
									tableContent = tableContent:gsub(&#039;\n%|}$&#039;, &#039;&#039;)&lt;br /&gt;
									&lt;br /&gt;
									local ships = parseShipTable(tableContent)&lt;br /&gt;
									local role = roleFromClass(className)&lt;br /&gt;
									&lt;br /&gt;
									local classInfo = {&lt;br /&gt;
										name = className,&lt;br /&gt;
										sizeKey = sizeKey,&lt;br /&gt;
										sizeLabel = sizeLabelsDisplay[si],&lt;br /&gt;
										role = role,&lt;br /&gt;
										count = #ships,&lt;br /&gt;
									}&lt;br /&gt;
									table.insert(result.classes, classInfo)&lt;br /&gt;
									result.byClass[className] = classInfo&lt;br /&gt;
									&lt;br /&gt;
									if not result.bySize[sizeKey] then&lt;br /&gt;
										result.bySize[sizeKey] = {}&lt;br /&gt;
									end&lt;br /&gt;
									result.bySize[sizeKey][className] = ships&lt;br /&gt;
									&lt;br /&gt;
									for si2 = 1, #ships do&lt;br /&gt;
										local ship = ships[si2]&lt;br /&gt;
										ship.className = className&lt;br /&gt;
										ship.sizeKey = sizeKey&lt;br /&gt;
										table.insert(result.ships, ship)&lt;br /&gt;
									end&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Lookup helpers&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local function findShip(name, data)&lt;br /&gt;
	local matches = {}&lt;br /&gt;
	for i = 1, #data.ships do&lt;br /&gt;
		local ship = data.ships[i]&lt;br /&gt;
		if ship.name:lower() == name:lower() then&lt;br /&gt;
			table.insert(matches, ship)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return matches&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function searchShips(partial, data)&lt;br /&gt;
	local seen = {}&lt;br /&gt;
	local results = {}&lt;br /&gt;
	for i = 1, #data.ships do&lt;br /&gt;
		local ship = data.ships[i]&lt;br /&gt;
		if ship.name:lower():find(partial:lower(), 1, true) then&lt;br /&gt;
			if not seen[ship.name] then&lt;br /&gt;
				seen[ship.name] = true&lt;br /&gt;
				local ci = data.byClass[ship.className]&lt;br /&gt;
				table.insert(results, {&lt;br /&gt;
					name = ship.name,&lt;br /&gt;
					manufacturer = ship.manufacturer,&lt;br /&gt;
					class = ship.className,&lt;br /&gt;
					size = ci and ci.sizeLabel or &#039;—&#039;,&lt;br /&gt;
					role = ci and ci.role or &#039;—&#039;,&lt;br /&gt;
				})&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Output helpers&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local function escapeName(name)&lt;br /&gt;
	return name:gsub(&#039;|&#039;, &#039;&amp;amp;#124;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shipHeader(ship)&lt;br /&gt;
	local image = &#039;&#039;&lt;br /&gt;
	if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
		image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;! style=&amp;quot;min-width:180px; text-align:center;&amp;quot; | &#039; .. escapeName(ship.name) .. image&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatVal(val)&lt;br /&gt;
	if val == &#039;&#039; or val == &#039;—&#039; or val == nil then&lt;br /&gt;
		return &#039;—&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Stat row definitions&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
local statRows = {&lt;br /&gt;
	{ key = &#039;hull&#039;,       label = &#039;Hull HP&#039; },&lt;br /&gt;
	{ key = &#039;armor&#039;,      label = &#039;Armor HP&#039; },&lt;br /&gt;
	{ key = &#039;shield&#039;,     label = &#039;Shield HP&#039; },&lt;br /&gt;
	{ key = &#039;hardpoints&#039;, label = &#039;Hardpoints&#039; },&lt;br /&gt;
	{ key = &#039;cargo&#039;,      label = &#039;Cargo (m³)&#039; },&lt;br /&gt;
	{ key = &#039;speed&#039;,      label = &#039;Warp Speed (ls/s)&#039; },&lt;br /&gt;
	{ key = &#039;accel&#039;,      label = &#039;Warp Accel (ls/s²)&#039; },&lt;br /&gt;
	{ key = &#039;tonnage&#039;,    label = &#039;Tonnage&#039; },&lt;br /&gt;
	{ key = &#039;aux&#039;,        label = &#039;Auxiliary&#039; },&lt;br /&gt;
	{ key = &#039;manufacturer&#039;, label = &#039;Manufacturer&#039; },&lt;br /&gt;
	{ key = &#039;shipyardRep&#039;,  label = &#039;Shipyard Rep&#039; },&lt;br /&gt;
	{ key = &#039;conquest&#039;,   label = &#039;Conquest Rank&#039; },&lt;br /&gt;
	{ key = &#039;playerLevel&#039;,  label = &#039;Player Level&#039; },&lt;br /&gt;
	{ key = &#039;shipyardLevel&#039;, label = &#039;Shipyard Level&#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================&lt;br /&gt;
-- Public functions&lt;br /&gt;
-- ============================================================&lt;br /&gt;
&lt;br /&gt;
--- Compare 2+ ships side-by-side&lt;br /&gt;
--- {{#invoke:ShipCompare|compare|Ship1|Ship2|Ship3|...}}&lt;br /&gt;
function p.compare(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local shipNames = {}&lt;br /&gt;
	for i = 1, 20 do&lt;br /&gt;
		local arg = args[i]&lt;br /&gt;
		if arg and trim(arg) ~= &#039;&#039; then&lt;br /&gt;
			table.insert(shipNames, trim(arg))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #shipNames &amp;lt; 2 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.compare needs at least 2 ship names.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	local errors = {}&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #shipNames do&lt;br /&gt;
		local name = shipNames[i]&lt;br /&gt;
		local matches = findShip(name, data)&lt;br /&gt;
		if #matches == 0 then&lt;br /&gt;
			local suggestions = searchShips(name, data)&lt;br /&gt;
			local msg = &amp;quot;&#039;&#039;&#039;&amp;quot; .. escapeName(name) .. &amp;quot;&#039;&#039;&#039; not found.&amp;quot;&lt;br /&gt;
			if #suggestions &amp;gt; 0 then&lt;br /&gt;
				local suggestList = {}&lt;br /&gt;
				for j = 1, #suggestions do&lt;br /&gt;
					table.insert(suggestList, &amp;quot;[[&amp;quot; .. suggestions[j].name .. &amp;quot;]]&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
				msg = msg .. &amp;quot; Did you mean: &amp;quot; .. table.concat(suggestList, &amp;quot;, &amp;quot;) .. &amp;quot;?&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(errors, msg)&lt;br /&gt;
		else&lt;br /&gt;
			local ship = matches[1]&lt;br /&gt;
			if #matches &amp;gt; 1 then&lt;br /&gt;
				ship._dupes = true&lt;br /&gt;
				ship._dupeCount = #matches&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(ships, ship)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #errors &amp;gt; 0 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;&#039; .. table.concat(errors, &#039;&amp;lt;br&amp;gt;&#039;) .. &#039;&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable ship-compare&amp;quot; style=&amp;quot;margin:0; width:100%;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		table.insert(result, shipHeader(ships[i]))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for ri = 1, #statRows do&lt;br /&gt;
		local row = statRows[ri]&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;! style=&amp;quot;text-align:left; min-width:140px;&amp;quot; | &#039; .. row.label)&lt;br /&gt;
		for si = 1, #ships do&lt;br /&gt;
			table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. formatVal(ships[si][row.key]))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! style=&amp;quot;text-align:left;&amp;quot; | Class&#039;)&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | [[&#039; .. (ships[i].className or &#039;—&#039;) .. &#039;]]&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		local ship = ships[i]&lt;br /&gt;
		if ship._dupes then&lt;br /&gt;
			table.insert(result, &#039;&amp;lt;div style=&amp;quot;font-size:0.85em; color:#666; margin-top:4px;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
			table.insert(result, &amp;quot;Note: &#039;&#039;&#039;&amp;quot; .. escapeName(ship.name) .. &amp;quot;&#039;&#039;&#039; has &amp;quot; .. ship._dupeCount .. &amp;quot; variants (different manufacturers). Showing the first match.&amp;quot;)&lt;br /&gt;
			table.insert(result, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Show all ships in a class&lt;br /&gt;
--- {{#invoke:ShipCompare|class|Cutters}}&lt;br /&gt;
function p.class(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local className = trim(args[1] or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if className == &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.class needs a class name.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local ships = {}&lt;br /&gt;
	for sizeKey, classes in pairs(data.bySize) do&lt;br /&gt;
		if classes[className] then&lt;br /&gt;
			ships = classes[className]&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ships == 0 then&lt;br /&gt;
		for sizeKey, classes in pairs(data.bySize) do&lt;br /&gt;
			for cn, shipList in pairs(classes) do&lt;br /&gt;
				if cn:lower() == className:lower() then&lt;br /&gt;
					ships = shipList&lt;br /&gt;
					className = cn&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if #ships &amp;gt; 0 then break end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if #ships == 0 then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Class &amp;quot;&#039; .. escapeName(className) .. &#039;&amp;quot; not found.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Hull&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Armor&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Shield&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Hardpoints&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Cargo&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Speed&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Accel&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Tonnage&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Aux&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Rep&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Level&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #ships do&lt;br /&gt;
		local ship = ships[i]&lt;br /&gt;
		local image = &#039;&#039;&lt;br /&gt;
		if ship.image and ship.image ~= &#039;&#039; then&lt;br /&gt;
			image = &#039;&amp;lt;br&amp;gt;[[File:&#039; .. ship.image .. &#039;]]&#039;&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. escapeName(ship.name) .. image)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.manufacturer)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.hull)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.armor)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.shield)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.hardpoints)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.cargo)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.speed)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.accel)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.tonnage)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.aux)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.shipyardRep)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. ship.playerLevel)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Search ships by name&lt;br /&gt;
--- {{#invoke:ShipCompare|search|Raptor}}&lt;br /&gt;
function p.search(frame)&lt;br /&gt;
	local args = frame.args&lt;br /&gt;
	local partial = trim(args[1] or &#039;&#039;)&lt;br /&gt;
	&lt;br /&gt;
	if partial == &#039;&#039; then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;ShipCompare.search needs a search term.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local results = searchShips(partial, data)&lt;br /&gt;
	&lt;br /&gt;
	if #results == 0 then&lt;br /&gt;
		return &amp;quot;No ships matching &#039;&#039;&#039;&amp;quot; .. escapeName(partial) .. &amp;quot;&#039;&#039;&#039; found.&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &amp;quot;Ships matching &#039;&#039;&#039;&amp;quot; .. escapeName(partial) .. &amp;quot;&#039;&#039;&#039;:&amp;lt;br&amp;gt;&amp;quot;)&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ship&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Manufacturer&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Class&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Role&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for i = 1, #results do&lt;br /&gt;
		local r = results[i]&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| [[&#039; .. r.name .. &#039;]]&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.manufacturer)&lt;br /&gt;
		table.insert(result, &#039;| [[&#039; .. r.class .. &#039;]]&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.size)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. r.role)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Database statistics&lt;br /&gt;
--- {{#invoke:ShipCompare|stats}}&lt;br /&gt;
function p.stats(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0;&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|+ Ship List Statistics&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size Category&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Classes&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ships&#039;)&lt;br /&gt;
	&lt;br /&gt;
	local grandTotal = 0&lt;br /&gt;
	local grandClasses = 0&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		local classCount = 0&lt;br /&gt;
		local shipCount = 0&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				classCount = classCount + 1&lt;br /&gt;
				shipCount = shipCount + #ships&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		table.insert(result, &#039;|-&#039;)&lt;br /&gt;
		table.insert(result, &#039;| &#039; .. sizeLabelsDisplay[si])&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. classCount)&lt;br /&gt;
		table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. shipCount)&lt;br /&gt;
		&lt;br /&gt;
		grandTotal = grandTotal + shipCount&lt;br /&gt;
		grandClasses = grandClasses + classCount&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Total&#039;)&lt;br /&gt;
	table.insert(result, &#039;! &#039; .. grandClasses)&lt;br /&gt;
	table.insert(result, &#039;! &#039; .. grandTotal)&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- List all classes&lt;br /&gt;
--- {{#invoke:ShipCompare|classes}}&lt;br /&gt;
function p.classes(frame)&lt;br /&gt;
	local data = parseAllShips()&lt;br /&gt;
	if not data then&lt;br /&gt;
		return &#039;&amp;lt;div class=&amp;quot;error&amp;quot;&amp;gt;Could not read [[Ship List]] page.&amp;lt;/div&amp;gt;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	table.insert(result, &#039;{| class=&amp;quot;wikitable&amp;quot;&#039;)&lt;br /&gt;
	table.insert(result, &#039;|-&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Size&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Class&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Role&#039;)&lt;br /&gt;
	table.insert(result, &#039;! Ships&#039;)&lt;br /&gt;
	&lt;br /&gt;
	for si = 1, #sizeKeys do&lt;br /&gt;
		local sizeKey = sizeKeys[si]&lt;br /&gt;
		if data.bySize[sizeKey] then&lt;br /&gt;
			for cn, ships in pairs(data.bySize[sizeKey]) do&lt;br /&gt;
				local ci = data.byClass[cn]&lt;br /&gt;
				local role = ci and ci.role or &#039;—&#039;&lt;br /&gt;
				table.insert(result, &#039;|-&#039;)&lt;br /&gt;
				table.insert(result, &#039;| &#039; .. sizeLabelsDisplay[si])&lt;br /&gt;
				table.insert(result, &#039;| [[&#039; .. cn .. &#039;]]&#039;)&lt;br /&gt;
				table.insert(result, &#039;| &#039; .. role)&lt;br /&gt;
				table.insert(result, &#039;| style=&amp;quot;text-align:center;&amp;quot; | &#039; .. #ships)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert(result, &#039;|}&#039;)&lt;br /&gt;
	return table.concat(result, &#039;\n&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3893</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3893"/>
		<updated>2026-07-21T16:04:12Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Hangar spawn.png|thumb|500x500px|Fighters deploying from a Hangar Bay]]&lt;br /&gt;
Hangar Bays are equipment modules that allow a ship to carry, deploy, and recall &#039;&#039;&#039;fighter craft&#039;&#039;&#039;, small combat ships that act as autonomous wingmen. Unlike Drones, fighters are fully-fledged ships with their own equipment, hull, and crew requirements.&lt;br /&gt;
&lt;br /&gt;
The individual setup of fighters is entirely up to the Player. &lt;br /&gt;
&lt;br /&gt;
[[Echo|ECHO]] can use Hangar Bays, and will actively deploy fighters when entering combat and recall them when leaving a POI. The Player can also deploy or recall manually by clicking the &#039;&#039;&#039;Deploy&#039;&#039;&#039; / &#039;&#039;&#039;Recall&#039;&#039;&#039; buttons at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
Fighters can be destroyed by enemy activity. When destroyed, the Hangar Bay will manufacture a replacement after a delay. Launching an Emergency Jump with fighters deployed is not an issue — the bay automatically despawns them and they&#039;ll be rebuilt when re-deployed.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Hangar Bay Slots&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Hangar Bays exist in all rarities and sizes. The number of fighter slots depends on the bay&#039;s base capacity and your Engineering skill unlocks.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Hangar Bay Slots Base off Module&lt;br /&gt;
!Size&lt;br /&gt;
!Medium&lt;br /&gt;
!With Skills&lt;br /&gt;
|-&lt;br /&gt;
!Base Slots&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
!Unique Skill&lt;br /&gt;
|—&lt;br /&gt;
|Hangar Extension +&lt;br /&gt;
|-&lt;br /&gt;
!Total Slots&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;bottom&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is 1 Engineering skill that increases the maximum amount of Fighters that can be stored and controlled , a Tier 3 unique skill unlocked via a specific captain (Stella).&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Assigning Fighters&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Unlike Drones which are configured per-slot from the Drone Bay UI, fighters are assigned from your &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; (accessible at any Space Station with a hangar facility).&lt;br /&gt;
&lt;br /&gt;
To assign a fighter:&lt;br /&gt;
# Dock at a Space Station&lt;br /&gt;
# Open the &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; screen&lt;br /&gt;
# Select the ship you want to act as carrier&lt;br /&gt;
# Click on an empty Hangar Slot&lt;br /&gt;
# Choose one of your owned ships from the list&lt;br /&gt;
&lt;br /&gt;
Any ship in your fleet can be assigned as a fighter — including captured ships, mission rewards, or vessels you&#039;ve built. The fighter keeps all its equipment, custom name, paint, and configuration.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Behavior&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Once deployed, fighters act on their own for most combat activities. They can be re-focused on a single target by clicking it.&lt;br /&gt;
&lt;br /&gt;
In combat, all fighters will focus on the target you click or the target that attacks the player first — unless you specifically order them elsewhere by clicking a different target.&lt;br /&gt;
&lt;br /&gt;
Fighters will not follow you into a Space Station interior or through a Jump Gate. They will return to the Hangar Bay automatically when you leave the POI.&lt;br /&gt;
&lt;br /&gt;
If a fighter is damaged, it can be ordered back to the bay for repairs using the &#039;&#039;&#039;Auto-Repair Recall&#039;&#039;&#039; feature — the fighter will fly back, dock, repair, and re-deploy automatically once its hull and armor are restored.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Resupply&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters accumulate cargo — mostly salvage and loot from combat kills. When a fighter returns to the bay for repairs or recall, its cargo is automatically transferred to the carrier ship. This makes fighters excellent as mobile cargo mules in combat-heavy areas.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Power &amp;amp; Stats&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters do &#039;&#039;&#039;not&#039;&#039;&#039; draw from the ship&#039;s weapon power pool. Each fighter is an independent ship with its own:&lt;br /&gt;
* &#039;&#039;&#039;Hull HP&#039;&#039;&#039; and &#039;&#039;&#039;Armor HP&#039;&#039;&#039; — fully independent from the carrier&lt;br /&gt;
* &#039;&#039;&#039;Equipment&#039;&#039;&#039; — all modules, turrets, and systems function independently&lt;br /&gt;
* &#039;&#039;&#039;Crew&#039;&#039;&#039; — Fighters require &#039;&#039;&#039;Pilot&#039;&#039;&#039; crew (from your carrier&#039;s crew pool)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Pilot Requirement&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Each deployed fighter consumes &#039;&#039;&#039;1 Pilot&#039;&#039;&#039; from the carrier&#039;s crew. If you don&#039;t have enough Pilots, the bay will show a warning:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&amp;quot;No Pilots available&amp;quot;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deployment simply won&#039;t happen until you assign more Pilots. Off-duty fighters in the bay don&#039;t consume crew.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Passive Bay Repair&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The bay has a built-in repair rate of roughly &#039;&#039;&#039;1/90th of max hull per second&#039;&#039;&#039;. Fighters sitting in the bay slowly regenerate health and armor over time — no action required. The formula is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;repair_per_second = (1/90) * max_hp * (1 + HangarBayRepairRate_bonus)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat comes from equipment, aspects, skills, or hull bonuses and applies to both repair speed and rebuild time.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Key Constants&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Constant&lt;br /&gt;
!Value&lt;br /&gt;
|-&lt;br /&gt;
|Rebuild time (base)&lt;br /&gt;
|120 seconds&lt;br /&gt;
|-&lt;br /&gt;
|Launch clearance distance&lt;br /&gt;
|4 units&lt;br /&gt;
|-&lt;br /&gt;
|Launch impulse speed&lt;br /&gt;
|6 units/sec&lt;br /&gt;
|-&lt;br /&gt;
|Bay repair rate&lt;br /&gt;
|1/90th max HP/sec&lt;br /&gt;
|-&lt;br /&gt;
|Dock snap distance&lt;br /&gt;
|0.3 units&lt;br /&gt;
|-&lt;br /&gt;
|Hide radius fraction&lt;br /&gt;
|1.0x ship size&lt;br /&gt;
|-&lt;br /&gt;
|Resupply cooldown (empty)&lt;br /&gt;
|15 seconds&lt;br /&gt;
|-&lt;br /&gt;
|Docking capture radius&lt;br /&gt;
|2 units&lt;br /&gt;
|-&lt;br /&gt;
|Path sample count&lt;br /&gt;
|16 points&lt;br /&gt;
|-&lt;br /&gt;
|Carrier lead time&lt;br /&gt;
|0.5 seconds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Rebuilding&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
When a fighter is destroyed:&lt;br /&gt;
# The slot enters &#039;&#039;&#039;Rebuild&#039;&#039;&#039; mode&lt;br /&gt;
# A &#039;&#039;&#039;120-second timer&#039;&#039;&#039; starts&lt;br /&gt;
# The timer is modified by the carrier&#039;s &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat&lt;br /&gt;
# Once the timer finishes, the fighter is fully restored (full hull, armor, and shields)&lt;br /&gt;
# If the carrier is still in combat with fighters set to auto-deploy, the fighter launches immediately&lt;br /&gt;
&lt;br /&gt;
If the carrier performs an Emergency Jump while a fighter is being rebuilt, the rebuild timer pauses and resumes when you&#039;re cleared for deployment again.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Known Limitations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Combat only&#039;&#039;&#039; — fighters cannot mine, salvage, or use utility beams. They are pure combat vessels.&lt;br /&gt;
* &#039;&#039;&#039;Pilot requirement&#039;&#039;&#039; — each active fighter needs 1 Pilot crew. Running out means no deployment.&lt;br /&gt;
* &#039;&#039;&#039;Station docking&#039;&#039;&#039; — fighters cannot dock at Space Stations independently. They follow the carrier.&lt;br /&gt;
* &#039;&#039;&#039;Flat rebuild time&#039;&#039;&#039; — rebuilding takes 120 seconds regardless of the fighter&#039;s cost, rarity, or equipment value.&lt;br /&gt;
* &#039;&#039;&#039;Despawn on travel&#039;&#039;&#039; — if the carrier enters warp, uses a Jump Gate, or Emergency Jumps, all fighters are despawned immediately and must be rebuilt.&lt;br /&gt;
* &#039;&#039;&#039;Slot cap&#039;&#039;&#039; — Large bays can hold at most 3 fighters (2 base + 1 skill). There are no Aspect upgrades for hangar slots (unlike Drone Bays which can stack up to 18).&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Tips&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* Assign your &#039;&#039;&#039;best-equipped spare ship&#039;&#039;&#039; as a fighter — it keeps all its modules, turrets, and weapons&lt;br /&gt;
* Fighters are excellent for drawing aggro away from your main ship in tough fight.&lt;br /&gt;
* The Hangar Extension skill is a massive power spike — 6 fighters instead of 5 is a 20% increase in firepower&lt;br /&gt;
* If you&#039;re running low on Pilots, check your crew assignments — you may have Pilots assigned to other roles or not enough trained&lt;br /&gt;
* Fighters with long-range weapons (missiles, beams) are more survivable than close-range brawlers since they stay at distance&lt;br /&gt;
* If your carrier has strong shields, fighters benefit indirectly by having fewer enemies targeting them&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=File:Hangar_spawn.png&amp;diff=3892</id>
		<title>File:Hangar spawn.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=File:Hangar_spawn.png&amp;diff=3892"/>
		<updated>2026-07-21T16:03:24Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3891</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3891"/>
		<updated>2026-07-21T16:00:58Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Hangar_Bay_Example.png|thumb|500px|right|Fighters deploying from a Hangar Bay]]&lt;br /&gt;
[[File:Hangar_skilltree.png|thumb|Hangar Bay Skill Tree|320px|right]]&lt;br /&gt;
&lt;br /&gt;
Hangar Bays are equipment modules that allow a ship to carry, deploy, and recall &#039;&#039;&#039;fighter craft&#039;&#039;&#039;, small combat ships that act as autonomous wingmen. Unlike Drones, fighters are fully-fledged ships with their own equipment, hull, and crew requirements.&lt;br /&gt;
&lt;br /&gt;
The individual setup of fighters is entirely up to the Player. &lt;br /&gt;
&lt;br /&gt;
[[Echo|ECHO]] can use Hangar Bays, and will actively deploy fighters when entering combat and recall them when leaving a POI. The Player can also deploy or recall manually by clicking the &#039;&#039;&#039;Deploy&#039;&#039;&#039; / &#039;&#039;&#039;Recall&#039;&#039;&#039; buttons at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
Fighters can be destroyed by enemy activity. When destroyed, the Hangar Bay will manufacture a replacement after a delay. Launching an Emergency Jump with fighters deployed is not an issue — the bay automatically despawns them and they&#039;ll be rebuilt when re-deployed.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Hangar Bay Slots&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Hangar Bays exist in all rarities and sizes. The number of fighter slots depends on the bay&#039;s base capacity and your Engineering skill unlocks.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:transparent; border:none;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Hangar Bay Slots Base off Module&lt;br /&gt;
!Size&lt;br /&gt;
!Medium&lt;br /&gt;
!With Skills&lt;br /&gt;
|-&lt;br /&gt;
!Base Slots&lt;br /&gt;
|5&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
!Unique Skill&lt;br /&gt;
|—&lt;br /&gt;
|Hangar Extension +&lt;br /&gt;
|-&lt;br /&gt;
!Total Slots&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|}&lt;br /&gt;
| valign=&amp;quot;bottom&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is 1 Engineering skill that increases the maximum amount of Fighters that can be stored and controlled , a Tier 3 unique skill unlocked via a specific captain (Stella).&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Assigning Fighters&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Unlike Drones which are configured per-slot from the Drone Bay UI, fighters are assigned from your &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; (accessible at any Space Station with a hangar facility).&lt;br /&gt;
&lt;br /&gt;
To assign a fighter:&lt;br /&gt;
# Dock at a Space Station&lt;br /&gt;
# Open the &#039;&#039;&#039;Personal Hangar&#039;&#039;&#039; screen&lt;br /&gt;
# Select the ship you want to act as carrier&lt;br /&gt;
# Click on an empty Hangar Slot&lt;br /&gt;
# Choose one of your owned ships from the list&lt;br /&gt;
&lt;br /&gt;
Any ship in your fleet can be assigned as a fighter — including captured ships, mission rewards, or vessels you&#039;ve built. The fighter keeps all its equipment, custom name, paint, and configuration.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Behavior&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Once deployed, fighters act on their own for most combat activities. They can be re-focused on a single target by clicking it.&lt;br /&gt;
&lt;br /&gt;
In combat, all fighters will focus on the target you click or the target that attacks the player first — unless you specifically order them elsewhere by clicking a different target.&lt;br /&gt;
&lt;br /&gt;
Fighters will not follow you into a Space Station interior or through a Jump Gate. They will return to the Hangar Bay automatically when you leave the POI.&lt;br /&gt;
&lt;br /&gt;
If a fighter is damaged, it can be ordered back to the bay for repairs using the &#039;&#039;&#039;Auto-Repair Recall&#039;&#039;&#039; feature — the fighter will fly back, dock, repair, and re-deploy automatically once its hull and armor are restored.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Resupply&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters accumulate cargo — mostly salvage and loot from combat kills. When a fighter returns to the bay for repairs or recall, its cargo is automatically transferred to the carrier ship. This makes fighters excellent as mobile cargo mules in combat-heavy areas.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Power &amp;amp; Stats&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters do &#039;&#039;&#039;not&#039;&#039;&#039; draw from the ship&#039;s weapon power pool. Each fighter is an independent ship with its own:&lt;br /&gt;
* &#039;&#039;&#039;Hull HP&#039;&#039;&#039; and &#039;&#039;&#039;Armor HP&#039;&#039;&#039; — fully independent from the carrier&lt;br /&gt;
* &#039;&#039;&#039;Equipment&#039;&#039;&#039; — all modules, turrets, and systems function independently&lt;br /&gt;
* &#039;&#039;&#039;Crew&#039;&#039;&#039; — Fighters require &#039;&#039;&#039;Pilot&#039;&#039;&#039; crew (from your carrier&#039;s crew pool)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Pilot Requirement&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Each deployed fighter consumes &#039;&#039;&#039;1 Pilot&#039;&#039;&#039; from the carrier&#039;s crew. If you don&#039;t have enough Pilots, the bay will show a warning:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;&amp;quot;No Pilots available&amp;quot;&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deployment simply won&#039;t happen until you assign more Pilots. Off-duty fighters in the bay don&#039;t consume crew.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Passive Bay Repair&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
The bay has a built-in repair rate of roughly &#039;&#039;&#039;1/90th of max hull per second&#039;&#039;&#039;. Fighters sitting in the bay slowly regenerate health and armor over time — no action required. The formula is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;repair_per_second = (1/90) * max_hp * (1 + HangarBayRepairRate_bonus)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat comes from equipment, aspects, skills, or hull bonuses and applies to both repair speed and rebuild time.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Key Constants&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Constant&lt;br /&gt;
!Value&lt;br /&gt;
|-&lt;br /&gt;
|Rebuild time (base)&lt;br /&gt;
|120 seconds&lt;br /&gt;
|-&lt;br /&gt;
|Launch clearance distance&lt;br /&gt;
|4 units&lt;br /&gt;
|-&lt;br /&gt;
|Launch impulse speed&lt;br /&gt;
|6 units/sec&lt;br /&gt;
|-&lt;br /&gt;
|Bay repair rate&lt;br /&gt;
|1/90th max HP/sec&lt;br /&gt;
|-&lt;br /&gt;
|Dock snap distance&lt;br /&gt;
|0.3 units&lt;br /&gt;
|-&lt;br /&gt;
|Hide radius fraction&lt;br /&gt;
|1.0x ship size&lt;br /&gt;
|-&lt;br /&gt;
|Resupply cooldown (empty)&lt;br /&gt;
|15 seconds&lt;br /&gt;
|-&lt;br /&gt;
|Docking capture radius&lt;br /&gt;
|2 units&lt;br /&gt;
|-&lt;br /&gt;
|Path sample count&lt;br /&gt;
|16 points&lt;br /&gt;
|-&lt;br /&gt;
|Carrier lead time&lt;br /&gt;
|0.5 seconds&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Fighter Rebuilding&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
When a fighter is destroyed:&lt;br /&gt;
# The slot enters &#039;&#039;&#039;Rebuild&#039;&#039;&#039; mode&lt;br /&gt;
# A &#039;&#039;&#039;120-second timer&#039;&#039;&#039; starts&lt;br /&gt;
# The timer is modified by the carrier&#039;s &amp;lt;code&amp;gt;HangarBayRepairRate&amp;lt;/code&amp;gt; stat&lt;br /&gt;
# Once the timer finishes, the fighter is fully restored (full hull, armor, and shields)&lt;br /&gt;
# If the carrier is still in combat with fighters set to auto-deploy, the fighter launches immediately&lt;br /&gt;
&lt;br /&gt;
If the carrier performs an Emergency Jump while a fighter is being rebuilt, the rebuild timer pauses and resumes when you&#039;re cleared for deployment again.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Known Limitations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Combat only&#039;&#039;&#039; — fighters cannot mine, salvage, or use utility beams. They are pure combat vessels.&lt;br /&gt;
* &#039;&#039;&#039;Pilot requirement&#039;&#039;&#039; — each active fighter needs 1 Pilot crew. Running out means no deployment.&lt;br /&gt;
* &#039;&#039;&#039;Station docking&#039;&#039;&#039; — fighters cannot dock at Space Stations independently. They follow the carrier.&lt;br /&gt;
* &#039;&#039;&#039;Flat rebuild time&#039;&#039;&#039; — rebuilding takes 120 seconds regardless of the fighter&#039;s cost, rarity, or equipment value.&lt;br /&gt;
* &#039;&#039;&#039;Despawn on travel&#039;&#039;&#039; — if the carrier enters warp, uses a Jump Gate, or Emergency Jumps, all fighters are despawned immediately and must be rebuilt.&lt;br /&gt;
* &#039;&#039;&#039;Slot cap&#039;&#039;&#039; — Large bays can hold at most 3 fighters (2 base + 1 skill). There are no Aspect upgrades for hangar slots (unlike Drone Bays which can stack up to 18).&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Tips&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* Assign your &#039;&#039;&#039;best-equipped spare ship&#039;&#039;&#039; as a fighter — it keeps all its modules, turrets, and weapons&lt;br /&gt;
* Fighters are excellent for drawing aggro away from your main ship in tough fight.&lt;br /&gt;
* The Hangar Extension skill is a massive power spike — 6 fighters instead of 5 is a 20% increase in firepower&lt;br /&gt;
* If you&#039;re running low on Pilots, check your crew assignments — you may have Pilots assigned to other roles or not enough trained&lt;br /&gt;
* Fighters with long-range weapons (missiles, beams) are more survivable than close-range brawlers since they stay at distance&lt;br /&gt;
* If your carrier has strong shields, fighters benefit indirectly by having fewer enemies targeting them&lt;br /&gt;
&lt;br /&gt;
[[Category:Game Concepts]]&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
</feed>