<?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-08-23T12:03:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<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>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3890</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3890"/>
		<updated>2026-07-21T15:53:45Z</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. It&#039;s quite common to use fighters for anti-fighter screening while your main ship focuses on capital ships, or to assign them as priority interceptors against specific threats.&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 short 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;
!Small&lt;br /&gt;
!Medium&lt;br /&gt;
!Large&lt;br /&gt;
|-&lt;br /&gt;
!Base Slots&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
!Unique Skill&lt;br /&gt;
|—&lt;br /&gt;
|—&lt;br /&gt;
|T3HangarBayStella: +1&lt;br /&gt;
|-&lt;br /&gt;
!Total Slots&lt;br /&gt;
|&#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;3&#039;&#039;&#039;&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 — &#039;&#039;&#039;T3HangarBayStella&#039;&#039;&#039;, 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;
Slots are stored in your save as &amp;lt;code&amp;gt;HangarBaySlotData&amp;lt;/code&amp;gt; — each slot records the fighter&#039;s GUID and a rebuild timer if the fighter was destroyed. Empty slots auto-sync as capacity changes, so you never have to manually clean up.&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;
If cargo transfer fails or finds nothing to move, the slot goes on a &#039;&#039;&#039;15-second cooldown&#039;&#039;&#039; before it can request resupply again.&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;Docking Path&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
When a fighter returns to the bay, it doesn&#039;t just snap back. It flies a &#039;&#039;&#039;cubic Bezier curve&#039;&#039;&#039; calculated in real-time:&lt;br /&gt;
# The fighter&#039;s current position and velocity are sampled&lt;br /&gt;
# The carrier&#039;s future position is predicted (0.5s lead time)&lt;br /&gt;
# A 16-point curved path is generated with control arms clamped between 2 and 12 units&lt;br /&gt;
# The fighter follows the path at its natural speed, adjusting heading at up to 300°/sec&lt;br /&gt;
# At 2 units from the dock point, the fighter enters the bay mask and the sprite hides&lt;br /&gt;
# At 0.3 units from dock, the fighter is considered docked&lt;br /&gt;
&lt;br /&gt;
This means fighters can chase a moving carrier and still land cleanly — even if the carrier is turning or accelerating.&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;Launch Effects&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Fighters launch from visually marked &#039;&#039;&#039;Launch Points&#039;&#039;&#039; on the carrier ship model. During launch:&lt;br /&gt;
* A smoke puff effect spawns at the launch point (size 3.2, 22 particles, 3.5s lifetime)&lt;br /&gt;
* The fighter accelerates to 6 units/sec away from the bay&lt;br /&gt;
* A sprite mask hides the fighter while inside the bay, then reveals it as it exits&lt;br /&gt;
* A smoke trail follows the fighter (0.35 size, 1.2s duration, 35 particles/sec spawn rate)&lt;br /&gt;
* The fighter is marked &amp;lt;code&amp;gt;isLaunching = true&amp;lt;/code&amp;gt; until it clears 4 units from the bay&lt;br /&gt;
&lt;br /&gt;
The docking animation mirrors all of this in reverse — the fighter enters the mask, hides, and despawns.&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 fights&lt;br /&gt;
* Use the &#039;&#039;&#039;Recall&#039;&#039;&#039; button before looting to collect fighter cargo without manually transferring&lt;br /&gt;
* The &#039;&#039;&#039;T3HangarBayStella&#039;&#039;&#039; skill is a massive power spike — 3 fighters instead of 2 is a 50% 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=3889</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3889"/>
		<updated>2026-07-21T15:49:14Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Hangar Bay Module&lt;br /&gt;
&lt;br /&gt;
Hangar Bays are equipment modules that allow a ship to carry, deploy, and recall **fighter craft** — 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. It&#039;s quite common to use fighters for anti-fighter screening while your main ship focuses on capital ships, or to assign them as priority interceptors against specific threats.&lt;br /&gt;
&lt;br /&gt;
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 **Deploy** / **Recall** 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 short 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;
---&lt;br /&gt;
&lt;br /&gt;
## Hangar Bay Slots&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;
### Slot Count&lt;br /&gt;
&lt;br /&gt;
| Size | Base Slots | Skill Bonus | Total Slots |&lt;br /&gt;
|------|-----------|-------------|-------------|&lt;br /&gt;
| Small | 1 | — | 1 |&lt;br /&gt;
| Medium | 1 | — | 1 |&lt;br /&gt;
| Large | 2 | T3HangarBayStella: +1 | **3** |&lt;br /&gt;
&lt;br /&gt;
There is 1 Engineering skill that increases the maximum amount of Fighters that can be stored and controlled — **T3HangarBayStella**, a Tier 3 unique skill unlocked via a specific captain (Stella).&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## Assigning Fighters&lt;br /&gt;
&lt;br /&gt;
Unlike Drones which are configured per-slot from the Drone Bay UI, fighters are assigned from your **Personal Hangar** (accessible at any Space Station with a hangar facility).&lt;br /&gt;
&lt;br /&gt;
To assign a fighter:&lt;br /&gt;
&lt;br /&gt;
1. Dock at a Space Station&lt;br /&gt;
2. Open the **Personal Hangar** screen&lt;br /&gt;
3. Select the ship you want to act as carrier&lt;br /&gt;
4. Click on an empty Hangar Slot&lt;br /&gt;
5. 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;
Slots are stored in your save as `HangarBaySlotData` — each slot records the fighter&#039;s GUID and a rebuild timer if the fighter was destroyed. Empty slots auto-sync as capacity changes, so you never have to manually clean up.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## Fighter Behavior&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 **Auto-Repair Recall** 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;
---&lt;br /&gt;
&lt;br /&gt;
## Resupply&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;
If cargo transfer fails or finds nothing to move, the slot goes on a **15-second cooldown** before it can request resupply again.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## Fighter Power &amp;amp; Stats&lt;br /&gt;
&lt;br /&gt;
Fighters do **not** draw from the ship&#039;s weapon power pool. Each fighter is an independent ship with its own:&lt;br /&gt;
&lt;br /&gt;
- **Hull HP** and **Armor HP** — fully independent from the carrier&lt;br /&gt;
- **Equipment** — all modules, turrets, and systems function independently&lt;br /&gt;
- **Crew** — Fighters require **Pilot** crew (from your carrier&#039;s crew pool)&lt;br /&gt;
&lt;br /&gt;
### Pilot Requirement&lt;br /&gt;
&lt;br /&gt;
Each deployed fighter consumes **1 Pilot** 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;gt; *&amp;quot;No Pilots available&amp;quot;*&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;
### Passive Bay Repair&lt;br /&gt;
&lt;br /&gt;
The bay has a built-in repair rate of roughly **1/90th of max hull per second**. Fighters sitting in the bay slowly regenerate health and armor over time — no action required. The formula is:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
repair_per_second = (1/90) * max_hp * (1 + HangarBayRepairRate_bonus)&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
The `HangarBayRepairRate` stat comes from equipment, aspects, skills, or hull bonuses and applies to both repair speed and rebuild time.&lt;br /&gt;
&lt;br /&gt;
### Key Constants&lt;br /&gt;
&lt;br /&gt;
| Constant | Value |&lt;br /&gt;
|----------|-------|&lt;br /&gt;
| Rebuild time (base) | 120 seconds |&lt;br /&gt;
| Launch clearance distance | 4 units |&lt;br /&gt;
| Launch impulse speed | 6 units/sec |&lt;br /&gt;
| Bay repair rate | 1/90th max HP/sec |&lt;br /&gt;
| Dock snap distance | 0.3 units |&lt;br /&gt;
| Hide radius fraction | 1.0x ship size |&lt;br /&gt;
| Resupply cooldown (empty) | 15 seconds |&lt;br /&gt;
| Docking capture radius | 2 units |&lt;br /&gt;
| Path sample count | 16 points |&lt;br /&gt;
| Carrier lead time | 0.5 seconds |&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## Docking Path&lt;br /&gt;
&lt;br /&gt;
When a fighter returns to the bay, it doesn&#039;t just snap back. It flies a **cubic Bezier curve** calculated in real-time:&lt;br /&gt;
&lt;br /&gt;
1. The fighter&#039;s current position and velocity are sampled&lt;br /&gt;
2. The carrier&#039;s future position is predicted (0.5s lead time)&lt;br /&gt;
3. A 16-point curved path is generated with control arms clamped between 2 and 12 units&lt;br /&gt;
4. The fighter follows the path at its natural speed, adjusting heading at up to 300°/sec&lt;br /&gt;
5. At 2 units from the dock point, the fighter enters the bay mask and the sprite hides&lt;br /&gt;
6. At 0.3 units from dock, the fighter is considered docked&lt;br /&gt;
&lt;br /&gt;
This means fighters can chase a moving carrier and still land cleanly — even if the carrier is turning or accelerating.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## Fighter Rebuilding&lt;br /&gt;
&lt;br /&gt;
When a fighter is destroyed:&lt;br /&gt;
&lt;br /&gt;
1. The slot enters **Rebuild** mode&lt;br /&gt;
2. A **120-second timer** starts&lt;br /&gt;
3. The timer is modified by the carrier&#039;s `HangarBayRepairRate` stat&lt;br /&gt;
4. Once the timer finishes, the fighter is fully restored (full hull, armor, and shields)&lt;br /&gt;
5. 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;
---&lt;br /&gt;
&lt;br /&gt;
## Launch Effects&lt;br /&gt;
&lt;br /&gt;
Fighters launch from visually marked **Launch Points** on the carrier ship model. During launch:&lt;br /&gt;
&lt;br /&gt;
- A smoke puff effect spawns at the launch point (size 3.2, 22 particles, 3.5s lifetime)&lt;br /&gt;
- The fighter accelerates to 6 units/sec away from the bay&lt;br /&gt;
- A sprite mask hides the fighter while inside the bay, then reveals it as it exits&lt;br /&gt;
- A smoke trail follows the fighter (0.35 size, 1.2s duration, 35 particles/sec spawn rate)&lt;br /&gt;
- The fighter is marked `isLaunching = true` until it clears 4 units from the bay&lt;br /&gt;
&lt;br /&gt;
The docking animation mirrors all of this in reverse — the fighter enters the mask, hides, and despawns.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
## Known Limitations&lt;br /&gt;
&lt;br /&gt;
- **Combat only** — fighters cannot mine, salvage, or use utility beams. They are pure combat vessels.&lt;br /&gt;
- **Pilot requirement** — each active fighter needs 1 Pilot crew. Running out means no deployment.&lt;br /&gt;
- **Station docking** — fighters cannot dock at Space Stations independently. They follow the carrier.&lt;br /&gt;
- **Flat rebuild time** — rebuilding takes 120 seconds regardless of the fighter&#039;s cost, rarity, or equipment value.&lt;br /&gt;
- **Despawn on travel** — if the carrier enters warp, uses a Jump Gate, or Emergency Jumps, all fighters are despawned immediately and must be rebuilt.&lt;br /&gt;
- **Slot cap** — 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;
---&lt;br /&gt;
&lt;br /&gt;
## Tips&lt;br /&gt;
&lt;br /&gt;
- Assign your **best-equipped spare ship** 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 fights&lt;br /&gt;
- Use the **Recall** button before looting to collect fighter cargo without manually transferring&lt;br /&gt;
- The **T3HangarBayStella** skill is a massive power spike — 3 fighters instead of 2 is a 50% 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;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3888</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3888"/>
		<updated>2026-07-21T15:47:31Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
Fighters deploying from a Hangar Bay&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hangar Bay Skill Tree nodes&lt;br /&gt;
&lt;br /&gt;
Hangar Bays are equipment modules that allow a ship to carry, deploy, and recall **fighter craft** - 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. It&#039;s quite common to use fighters for anti-fighter screening while your main ship focuses on capital ships, or to assign them as priority interceptors against specific threats.&lt;br /&gt;
&lt;br /&gt;
[ECHO](/Echo &amp;quot;Echo&amp;quot;) 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 &amp;quot;Deploy&amp;quot; / &amp;quot;Recall&amp;quot; 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 short 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;
## **Hangar Bay Slots**&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;
Hangar Bay Slots Base off Module&lt;br /&gt;
&lt;br /&gt;
| | ![](/images/5/5c/Small_Hangar_Bay.png) Small | ![](/images/e/ea/Medium_Hangar_Bay.png) Medium | ![](/images/9/94/Hangar_Bay_Large.png) Large |&lt;br /&gt;
|---|---|---|---|&lt;br /&gt;
| **Base Slots** | 1 | 1 | 2 |&lt;br /&gt;
| **Unique Skill** | - | - | T3HangarBayStella: +1 |&lt;br /&gt;
| **Total Slots** | 1 | 1 | **3** |&lt;br /&gt;
&lt;br /&gt;
There is 1 Engineering skill that increases the maximum amount of Fighters that can be stored and controlled — **T3HangarBayStella**, a Tier 3 unique skill (unlocked via a specific captain, Stella).&lt;br /&gt;
&lt;br /&gt;
## **Assigning Fighters**&lt;br /&gt;
&lt;br /&gt;
Unlike Drones which are configured per-slot from the Drone Bay UI, fighters are assigned from your **Personal Hangar** (accessible at any Space Station with a hangar facility).&lt;br /&gt;
&lt;br /&gt;
To assign a fighter:&lt;br /&gt;
&lt;br /&gt;
1. Dock at a Space Station&lt;br /&gt;
2. Open the **Personal Hangar** screen&lt;br /&gt;
3. Select the ship you want to act as carrier&lt;br /&gt;
4. Click on an empty Hangar Slot&lt;br /&gt;
5. 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 its equipment, name, and configuration.&lt;br /&gt;
&lt;br /&gt;
## **Fighter Behavior**&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 **Auto-Repair Recall** 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;
## **Resupply**&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;
## **Fighter Power &amp;amp; Stats**&lt;br /&gt;
&lt;br /&gt;
Fighters do not draw from the ship&#039;s weapon power pool. Each fighter is an independent ship with its own:&lt;br /&gt;
&lt;br /&gt;
- **Hull HP** and **Armor HP** — fully independent from the carrier&lt;br /&gt;
- **Equipment** — all modules, turrets, and systems function normally&lt;br /&gt;
- **Crew** — Fighters require **Pilot** crew (from your carrier&#039;s crew pool). Each deployed fighter consumes 1 Pilot. If you don&#039;t have enough Pilots, fighters cannot deploy.&lt;br /&gt;
&lt;br /&gt;
The bay itself has a **passive repair rate** of roughly 1/90th of max hull per second. Fighters sitting in the bay slowly regenerate health and armor over time - no action required. The regeneration speed is modified by the carrier&#039;s `HangarBayRepairRate` stat (from equipment, skills, or hull bonuses).&lt;br /&gt;
&lt;br /&gt;
The carrier&#039;s shield and armor have no effect on fighters - each fighter is responsible for its own survival.&lt;br /&gt;
&lt;br /&gt;
## **Fighter Rebuilding**&lt;br /&gt;
&lt;br /&gt;
When a fighter is destroyed:&lt;br /&gt;
&lt;br /&gt;
1. The slot enters **Rebuild** mode&lt;br /&gt;
2. A **120-second timer** starts (modified by `HangarBayRepairRate` stat)&lt;br /&gt;
3. Once the timer finishes, the fighter is restored with full HP and armor&lt;br /&gt;
4. If the carrier is still in combat mode, the fighter auto-deploys&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;
## **Launch Effects**&lt;br /&gt;
&lt;br /&gt;
Fighters launch from visually marked **Launch Points** on the carrier ship model. During launch:&lt;br /&gt;
&lt;br /&gt;
- A smoke puff effect appears at the launch point&lt;br /&gt;
- The fighter accelerates away at high speed (6 units/sec)&lt;br /&gt;
- A sprite mask hides the fighter while inside the bay, then reveals it as it exits&lt;br /&gt;
- A smoke trail follows the fighter during the first moments of launch&lt;br /&gt;
&lt;br /&gt;
The docking animation uses a smooth curved approach path, calculated in real-time based on the carrier&#039;s current movement and the fighter&#039;s speed.&lt;br /&gt;
&lt;br /&gt;
## **Known Limitations**&lt;br /&gt;
&lt;br /&gt;
- Fighters are **combat only** — they cannot mine, salvage, or use utility beams&lt;br /&gt;
- Each fighter requires **1 Pilot crew** from the carrier — running out of pilots means no deployment&lt;br /&gt;
- Fighters cannot dock at Space Stations independently — they follow the carrier&lt;br /&gt;
- Rebuilding a destroyed fighter takes a flat **120 seconds** regardless of the fighter&#039;s original cost or rarity&lt;br /&gt;
- If the carrier travels or jumps while fighters are deployed, they are **immediately despawned** and must be rebuilt&lt;br /&gt;
&lt;br /&gt;
## **Tips**&lt;br /&gt;
&lt;br /&gt;
- Assign your **best-equipped spare ship** as a fighter — it keeps all its modules and weapons&lt;br /&gt;
- Fighters are excellent for drawing aggro away from your main ship in tough fights&lt;br /&gt;
- Use the **Recall** button before looting to collect fighter cargo without manually transferring&lt;br /&gt;
- The T3HangarBayStella skill is a massive power spike — 3 fighters instead of 2 is a 50% increase&lt;br /&gt;
- If you&#039;re running low on Pilots, check your crew assignments — you may have Pilots assigned to other roles&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3887</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3887"/>
		<updated>2026-07-21T15:46:33Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[![](/images/0/0e/Hangar_Bay_Example.png)](/File:Hangar_Bay_Example.png)&lt;br /&gt;
&lt;br /&gt;
Fighters deploying from a Hangar Bay&lt;br /&gt;
&lt;br /&gt;
[![](/images/thumb/8/85/Hangar_skilltree.png/320px-Hangar_skilltree.png)](/File:Hangar_skilltree.png)&lt;br /&gt;
&lt;br /&gt;
Hangar Bay Skill Tree nodes&lt;br /&gt;
&lt;br /&gt;
Hangar Bays are equipment modules that allow a ship to carry, deploy, and recall **fighter craft** - 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. It&#039;s quite common to use fighters for anti-fighter screening while your main ship focuses on capital ships, or to assign them as priority interceptors against specific threats.&lt;br /&gt;
&lt;br /&gt;
[ECHO](/Echo &amp;quot;Echo&amp;quot;) 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 &amp;quot;Deploy&amp;quot; / &amp;quot;Recall&amp;quot; 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 short 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;
## **Hangar Bay Slots**&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;
Hangar Bay Slots Base off Module&lt;br /&gt;
&lt;br /&gt;
| | ![](/images/5/5c/Small_Hangar_Bay.png) Small | ![](/images/e/ea/Medium_Hangar_Bay.png) Medium | ![](/images/9/94/Hangar_Bay_Large.png) Large |&lt;br /&gt;
|---|---|---|---|&lt;br /&gt;
| **Base Slots** | 1 | 1 | 2 |&lt;br /&gt;
| **Unique Skill** | - | - | T3HangarBayStella: +1 |&lt;br /&gt;
| **Total Slots** | 1 | 1 | **3** |&lt;br /&gt;
&lt;br /&gt;
There is 1 Engineering skill that increases the maximum amount of Fighters that can be stored and controlled — **T3HangarBayStella**, a Tier 3 unique skill (unlocked via a specific captain, Stella).&lt;br /&gt;
&lt;br /&gt;
## **Assigning Fighters**&lt;br /&gt;
&lt;br /&gt;
Unlike Drones which are configured per-slot from the Drone Bay UI, fighters are assigned from your **Personal Hangar** (accessible at any Space Station with a hangar facility).&lt;br /&gt;
&lt;br /&gt;
To assign a fighter:&lt;br /&gt;
&lt;br /&gt;
1. Dock at a Space Station&lt;br /&gt;
2. Open the **Personal Hangar** screen&lt;br /&gt;
3. Select the ship you want to act as carrier&lt;br /&gt;
4. Click on an empty Hangar Slot&lt;br /&gt;
5. 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 its equipment, name, and configuration.&lt;br /&gt;
&lt;br /&gt;
## **Fighter Behavior**&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 **Auto-Repair Recall** 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;
## **Resupply**&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;
## **Fighter Power &amp;amp; Stats**&lt;br /&gt;
&lt;br /&gt;
Fighters do not draw from the ship&#039;s weapon power pool. Each fighter is an independent ship with its own:&lt;br /&gt;
&lt;br /&gt;
- **Hull HP** and **Armor HP** — fully independent from the carrier&lt;br /&gt;
- **Equipment** — all modules, turrets, and systems function normally&lt;br /&gt;
- **Crew** — Fighters require **Pilot** crew (from your carrier&#039;s crew pool). Each deployed fighter consumes 1 Pilot. If you don&#039;t have enough Pilots, fighters cannot deploy.&lt;br /&gt;
&lt;br /&gt;
The bay itself has a **passive repair rate** of roughly 1/90th of max hull per second. Fighters sitting in the bay slowly regenerate health and armor over time - no action required. The regeneration speed is modified by the carrier&#039;s `HangarBayRepairRate` stat (from equipment, skills, or hull bonuses).&lt;br /&gt;
&lt;br /&gt;
The carrier&#039;s shield and armor have no effect on fighters - each fighter is responsible for its own survival.&lt;br /&gt;
&lt;br /&gt;
## **Fighter Rebuilding**&lt;br /&gt;
&lt;br /&gt;
When a fighter is destroyed:&lt;br /&gt;
&lt;br /&gt;
1. The slot enters **Rebuild** mode&lt;br /&gt;
2. A **120-second timer** starts (modified by `HangarBayRepairRate` stat)&lt;br /&gt;
3. Once the timer finishes, the fighter is restored with full HP and armor&lt;br /&gt;
4. If the carrier is still in combat mode, the fighter auto-deploys&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;
## **Launch Effects**&lt;br /&gt;
&lt;br /&gt;
Fighters launch from visually marked **Launch Points** on the carrier ship model. During launch:&lt;br /&gt;
&lt;br /&gt;
- A smoke puff effect appears at the launch point&lt;br /&gt;
- The fighter accelerates away at high speed (6 units/sec)&lt;br /&gt;
- A sprite mask hides the fighter while inside the bay, then reveals it as it exits&lt;br /&gt;
- A smoke trail follows the fighter during the first moments of launch&lt;br /&gt;
&lt;br /&gt;
The docking animation uses a smooth curved approach path, calculated in real-time based on the carrier&#039;s current movement and the fighter&#039;s speed.&lt;br /&gt;
&lt;br /&gt;
## **Known Limitations**&lt;br /&gt;
&lt;br /&gt;
- Fighters are **combat only** — they cannot mine, salvage, or use utility beams&lt;br /&gt;
- Each fighter requires **1 Pilot crew** from the carrier — running out of pilots means no deployment&lt;br /&gt;
- Fighters cannot dock at Space Stations independently — they follow the carrier&lt;br /&gt;
- Rebuilding a destroyed fighter takes a flat **120 seconds** regardless of the fighter&#039;s original cost or rarity&lt;br /&gt;
- If the carrier travels or jumps while fighters are deployed, they are **immediately despawned** and must be rebuilt&lt;br /&gt;
&lt;br /&gt;
## **Tips**&lt;br /&gt;
&lt;br /&gt;
- Assign your **best-equipped spare ship** as a fighter — it keeps all its modules and weapons&lt;br /&gt;
- Fighters are excellent for drawing aggro away from your main ship in tough fights&lt;br /&gt;
- Use the **Recall** button before looting to collect fighter cargo without manually transferring&lt;br /&gt;
- The T3HangarBayStella skill is a massive power spike — 3 fighters instead of 2 is a 50% increase&lt;br /&gt;
- If you&#039;re running low on Pilots, check your crew assignments — you may have Pilots assigned to other roles&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=Factions&amp;diff=3883</id>
		<title>Factions</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Factions&amp;diff=3883"/>
		<updated>2026-07-21T07:09:02Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: /* Major Factions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Stellar factions are sovereign space entities, stretching multiple sectors and controlling a large number of individual systems.&lt;br /&gt;
Each may have their own preferred [[Ship Manufacturers|ship manufacturer]], or they may do it themselves.&lt;br /&gt;
They are generally divided into Major and Minor factions.&lt;br /&gt;
&lt;br /&gt;
The Galaxy accommodates all these Factions, each with their own Goals and Ideas. Each Faction sells you their Idea of the perfect Spaceship. It&#039;s up to you to decide who is right and who is wrong. Player can progress their storylines by performing missions or doing other Tasks. Each of the Factions can have a Standing with the player in the form of Reputation, and those involved in Conquest will ave a separate Conquest Reputation score with different rewards.&lt;br /&gt;
&lt;br /&gt;
You can declare War against any Faction. Not only that, but you also can declare Peace with them, but for this you need to raise your standing by performing missions at their Embassy (if they have one). The Embassies are marked on the Map with a golden outline.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Major Factions&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Major Factions are the main driver of expansion into Darkspace Territories, and they start the Faction War.&lt;br /&gt;
&amp;lt;!-- THIS IS ONLY USED FOR THE LLM DO NOT EDIT WITHOUT PERMISSION OR I WILL SNAP YOUR BALLS.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Major Factions&lt;br /&gt;
! style=&amp;quot;width: 64px;&amp;quot; | &#039;&#039;&#039;Logo&#039;&#039;&#039;&lt;br /&gt;
! style=&amp;quot;width: 200px;&amp;quot; | &#039;&#039;&#039;Faction&#039;&#039;&#039;&lt;br /&gt;
! style=&amp;quot;width: 600px;&amp;quot; | &#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Stellar Industries Logo.png|center|64px]]&lt;br /&gt;
|[[Stellar Industries]]&lt;br /&gt;
|Megacorporation.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Luminate Combine Logo.png|center|64px]]&lt;br /&gt;
|[[Luminate Combine]]&lt;br /&gt;
|Behaves like a cybercratic cult.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Kolyatov Collective Logo.png|center|64px]]&lt;br /&gt;
|[[Kolyatov Collective]]&lt;br /&gt;
|A Soviet Socialistic Utopia. &lt;br /&gt;
|-&lt;br /&gt;
|[[File:Darkspace Compat Logo.png|center|64px]]&lt;br /&gt;
|[[Darkspace Compact]]&lt;br /&gt;
|Mysterious owners of the Darkspace, currently invaded by Major factions. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Minor Factions&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
While Minor Factions do not start actively participating in Conquest, they can establish themselves with player&#039;s assistance and eventually grow to rival the Major Factions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Minor Factions&lt;br /&gt;
! style=&amp;quot;width: 64px;&amp;quot; | &#039;&#039;&#039;Logo&#039;&#039;&#039;&lt;br /&gt;
! style=&amp;quot;width: 200px;&amp;quot; | &#039;&#039;&#039;Faction&#039;&#039;&#039;&lt;br /&gt;
! style=&amp;quot;width: 600px;&amp;quot; | &#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Mindus Holdings Logo.png|center|64px]]&lt;br /&gt;
|[[Mindus Holdings]]&lt;br /&gt;
|Mining corporation dedicated to ore processing.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Steel Vultures Logo.png|center|64px]]&lt;br /&gt;
|[[Steel Vultures]]&lt;br /&gt;
|A collection of space salvagers and rippers.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Stranded Logo.png|center|64px]]&lt;br /&gt;
|[[Stranded]]&lt;br /&gt;
|Remnants of frontier pioneers and colonists stranded after failing to reach the [[Great Gate]]. &lt;br /&gt;
|-&lt;br /&gt;
|[[File:Corsair Syndicate Logo.png|center|64px]]&lt;br /&gt;
|[[Corsair Syndicate]]&lt;br /&gt;
|Pirates. &lt;br /&gt;
|-&lt;br /&gt;
|[[File:Umbral Reach Logo.png|center|64px]]&lt;br /&gt;
|[[Umbral Reach]]&lt;br /&gt;
|An extremely mysterious organization with quite insidious methods of spreading their reach. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Pacifists and Pacifiers&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The following Factions do not actively participate in Conquest, and have no interest in doing so. They primarily offer specialized services and their missions grant very specialized rewards.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Goods and Services&lt;br /&gt;
! style=&amp;quot;width: 64px;&amp;quot; | &#039;&#039;&#039;Logo&#039;&#039;&#039;&lt;br /&gt;
! style=&amp;quot;width: 200px;&amp;quot; | &#039;&#039;&#039;Faction&#039;&#039;&#039;&lt;br /&gt;
! style=&amp;quot;width: 600px;&amp;quot; | &#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Intertrade Network Logo.png|center|64px]]&lt;br /&gt;
|[[Intertrade Network]]&lt;br /&gt;
|Global network of stock-market stations dealing in everything from guns to TV. &lt;br /&gt;
|-&lt;br /&gt;
|[[File:Forge Industries Logo.png|center|64px]]&lt;br /&gt;
|[[Forge Industries]]&lt;br /&gt;
|Company looking to expand through business ventures that tend to draw hostile fire. &lt;br /&gt;
|-&lt;br /&gt;
|[[File:Canisec Logo.png|center|64px]]&lt;br /&gt;
|[[Canisec]]&lt;br /&gt;
|Police security force ensuring compliance and hunting pirates across the quadrant. &lt;br /&gt;
|-&lt;br /&gt;
|[[File:Orsanon Security Logo.png|center|64px]]&lt;br /&gt;
|[[Orsanon Security]]&lt;br /&gt;
|Private bounty-hunting force on the lookout for pirate leaders. &lt;br /&gt;
|-&lt;br /&gt;
|[[File:Omnitac Agency Logo.png|center|64px]]&lt;br /&gt;
|[[Omnitac Agency]]&lt;br /&gt;
|Mercenary company offering its services. &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;The Unknown / Unclassified Factions&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Next to nothing is known about these factions. While they do own stations, or can at least technically become their owners, they do not offer much in the way of quests or info.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Unknown&lt;br /&gt;
! style=&amp;quot;width: 64px;&amp;quot; | &#039;&#039;&#039;Logo&#039;&#039;&#039;&lt;br /&gt;
! style=&amp;quot;width: 200px;&amp;quot; | &#039;&#039;&#039;Faction&#039;&#039;&#039;&lt;br /&gt;
! style=&amp;quot;width: 600px;&amp;quot; | &#039;&#039;&#039;Notes&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Void Drifters Logo.png|center|64px]]&lt;br /&gt;
|[[Void Drifters]]&lt;br /&gt;
|Little is known about them.&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Meridias Chosen Logo.png|center|64px]]&lt;br /&gt;
|[[Meridia&#039;s Chosen]]&lt;br /&gt;
|Extremely hostile band (nation?) of raving fanatics, no communication possible.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Faction Controlled Space&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
There are two main types of Faction controlled space in Vanguard Galaxy:&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Controlled systems&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
[[File:Warzone 1.png|thumb|500px|right|War zone]]&lt;br /&gt;
&lt;br /&gt;
These apply to the &#039;&#039;Frontier&#039;&#039; - the first half of &#039;&#039;Canis Majoris&#039;&#039; Sector.&lt;br /&gt;
&lt;br /&gt;
Specific systems can be under the exclusive control of a factions, such as Motherlodes, Graveyards, Dread Ports and War zones. Getting to them required either buying a gate key from the owner&#039;s station outside the controlled space, or by looting it off dead pirates also found outside controlled space.&lt;br /&gt;
&lt;br /&gt;
See [[Navigation]] for more details.&lt;br /&gt;
&lt;br /&gt;
Inside these controlled confines, the player can find special loot - Skillpoints - either for purchase at stations, or looted from remains of pirate/enemy leaders.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Zones:&#039;&#039;&#039; Player will not lose reputation when fighting against a Faction inside a War Zone. Defeat everything in order to get a skillpont from the hostile station.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dread Ports:&#039;&#039;&#039; When fighting against the [[Corsair Syndicate]] and attempting to get a Gate Key to their Dread Port, the Gate Key can be found in a Combat Zone inside the subsector Dread Port is in (not necessarily the same system). It will drop from the last ship defeated. Once through the gate, defeat the patrolling enemies first before attacking the Station. The station&#039;s defense will decrease with each defeated patrol. Reward is a skillpoint and standard loot. &lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Conquest space&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
These apply to &#039;&#039;Ara Martis&#039;&#039; - the Conquest. &lt;br /&gt;
&lt;br /&gt;
Inside &#039;&#039;Ara Martis&#039;&#039; the factions extend their reach and control over vast swathe of systems, and the player is incentivized to help them extend their grasp even further.&lt;br /&gt;
&lt;br /&gt;
See [[Conquest Zone]] for more information.&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=Hangar_Module&amp;diff=3882</id>
		<title>Hangar Module</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Hangar_Module&amp;diff=3882"/>
		<updated>2026-07-21T06:09:41Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: Created page with &amp;quot;405x405px The Hangar Module (Also called Hangar Bay) is the key component for all Carrier type of Ships. With this module, you can manage, repair, and store ships.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Hangar ships.png|thumb|405x405px]]&lt;br /&gt;
The Hangar Module (Also called Hangar Bay) is the key component for all Carrier type of [[Ships]]. With this module, you can manage, repair, and store ships.&lt;/div&gt;</summary>
		<author><name>Dreadbyte</name></author>
	</entry>
	<entry>
		<id>https://wiki.vanguardgalaxy.com/index.php?title=File:Hangar_ships.png&amp;diff=3881</id>
		<title>File:Hangar ships.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=File:Hangar_ships.png&amp;diff=3881"/>
		<updated>2026-07-21T05:57:47Z</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=File:Hangar_ui.png&amp;diff=3880</id>
		<title>File:Hangar ui.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=File:Hangar_ui.png&amp;diff=3880"/>
		<updated>2026-07-21T05:47:28Z</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=File:Hangar_bay.png&amp;diff=3879</id>
		<title>File:Hangar bay.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=File:Hangar_bay.png&amp;diff=3879"/>
		<updated>2026-07-21T05:47:21Z</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=File:Hangar_deploy.png&amp;diff=3878</id>
		<title>File:Hangar deploy.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=File:Hangar_deploy.png&amp;diff=3878"/>
		<updated>2026-07-21T05:47:13Z</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=Conquest_Reputation&amp;diff=3877</id>
		<title>Conquest Reputation</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Conquest_Reputation&amp;diff=3877"/>
		<updated>2026-07-21T04:49:43Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Conquest.reputation.png|frameless|700x700px]]&lt;br /&gt;
&lt;br /&gt;
Completing missions for the warring [[Factions]] within [[Conquest Zone]] grants Conquest Reputation.&lt;br /&gt;
&lt;br /&gt;
Conquest Reputation is necessary for unlocking even more Conquest Reputation, which in turn begets more Conquest Reputation, even faster.&lt;br /&gt;
&lt;br /&gt;
As a side-effect, the player can also gain more [[Vanguard Marks|Vanguard]] Marks as a part of the mission rewards, and the ability to purchase Destroyers and other powerful ships.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;: Conquest Rep/Reputation/Standing is directly added by the Fleet strength gained from mission/activity.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Conquest Zone Standing&#039;&#039;&#039; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|Reputation Threshold &lt;br /&gt;
|10&lt;br /&gt;
|150&lt;br /&gt;
|450&lt;br /&gt;
|1000&lt;br /&gt;
|2500&lt;br /&gt;
|4500&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Luminate Combine Logo.png|center]]&lt;br /&gt;
|[[Luminate Combine]]&lt;br /&gt;
|Seeker&lt;br /&gt;
|Initiate&lt;br /&gt;
|Data Acolyte&lt;br /&gt;
|Drone Devotee&lt;br /&gt;
|Conduit of the Swarm&lt;br /&gt;
|Oracle&#039;s Chosen&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Kolyatov Collective Logo.png|center]]&lt;br /&gt;
|[[Kolyatov Collective]]&lt;br /&gt;
|Conscript&lt;br /&gt;
|Comrade&lt;br /&gt;
|Comissar&lt;br /&gt;
|Defender of Solidarity&lt;br /&gt;
|Revolutionary Marshal&lt;br /&gt;
|Hero of the People&#039;s Glory&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Stellar Industries Logo.png|center]]&lt;br /&gt;
|[[Stellar Industries]]&lt;br /&gt;
|Intern&lt;br /&gt;
|Associate&lt;br /&gt;
|Senior Associate&lt;br /&gt;
|Operations Manager&lt;br /&gt;
|Executive Director&lt;br /&gt;
|Sector Partner&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Mindus Holdings Logo.png|center]]&lt;br /&gt;
|[[Mindus Holdings]]&lt;br /&gt;
|Chiseller&lt;br /&gt;
|Pickaxe Wielder&lt;br /&gt;
|Foreman&lt;br /&gt;
|Chief Engineer&lt;br /&gt;
|Ore Connoisseur&lt;br /&gt;
|Ultra Miner&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Steel Vultures Logo.png|center]]&lt;br /&gt;
|[[Steel Vultures]]&lt;br /&gt;
|Hullpicker&lt;br /&gt;
|Wreckhand&lt;br /&gt;
|Steel Reclaimer&lt;br /&gt;
|Ship Ripper&lt;br /&gt;
|Master of Wrecks&lt;br /&gt;
|Scraplord&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Stranded Logo.png|center]]&lt;br /&gt;
|[[Stranded]]&lt;br /&gt;
|Companion&lt;br /&gt;
|Bloodbound&lt;br /&gt;
|Steward&lt;br /&gt;
|Pact Binder&lt;br /&gt;
|Covenant Captain&lt;br /&gt;
|Bacon of Hope&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Darkspace Compat Logo.png|center]]&lt;br /&gt;
|[[Darkspace Compact]]&lt;br /&gt;
|Worm&lt;br /&gt;
|Darkspace Drifter&lt;br /&gt;
|Fiberguard&lt;br /&gt;
|Nightblade&lt;br /&gt;
|Black Lance&lt;br /&gt;
|Canis Warlord&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Corsair Syndicate Logo.png|center]]&lt;br /&gt;
|[[Corsair Syndicate]]&lt;br /&gt;
|Raider&lt;br /&gt;
|Cutthroat&lt;br /&gt;
|Syndicate Corsair&lt;br /&gt;
|Blood Reaver&lt;br /&gt;
|Death Captain&lt;br /&gt;
|Tyrant&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Umbral Reach Logo.png|center]]&lt;br /&gt;
|[[Umbral Reach]] (*)&lt;br /&gt;
|String&lt;br /&gt;
|Infiltrator&lt;br /&gt;
|Cloakbearer&lt;br /&gt;
|Untracked&lt;br /&gt;
|System Reaper&lt;br /&gt;
|The Hand of Umbral&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;Bonuses for each Rank&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +10%&lt;br /&gt;
Mission Fleet Strength: +10%&lt;br /&gt;
Mission Credit: +4%&lt;br /&gt;
Mission Reputation: +3%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +20%&lt;br /&gt;
Mission Fleet Strength: +20%&lt;br /&gt;
Mission Credit: +10%&lt;br /&gt;
Mission Reputation: +6%&lt;br /&gt;
Destroyer Permit&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +40%&lt;br /&gt;
Mission Fleet Strength: +40%&lt;br /&gt;
Mission Credit: +16%&lt;br /&gt;
Mission Reputation: +10%&lt;br /&gt;
Destroyer Permit&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +60%&lt;br /&gt;
Mission Fleet Strength: +60%&lt;br /&gt;
Mission Credit: +24%&lt;br /&gt;
Mission Reputation: +15%&lt;br /&gt;
Destroyer Permit&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +80%&lt;br /&gt;
Mission Fleet Strength: +80%&lt;br /&gt;
Mission Credit: +32%&lt;br /&gt;
Mission Reputation: +20%&lt;br /&gt;
Destroyer Permit&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +100%&lt;br /&gt;
Mission Fleet Strength: +100%&lt;br /&gt;
Mission Credit: +40%&lt;br /&gt;
Mission Reputation: +25%&lt;br /&gt;
Destroyer Permit&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;Umbral Bonuses for each Rank&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +2.5%&lt;br /&gt;
Mission Credit: +4%&lt;br /&gt;
Mission Reputation: +3%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +5%&lt;br /&gt;
Mission Credit: +10%&lt;br /&gt;
Mission Reputation: +6%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +10%&lt;br /&gt;
Mission Credit: +16%&lt;br /&gt;
Mission Reputation: +10%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +15%&lt;br /&gt;
Mission Credit: +24%&lt;br /&gt;
Mission Reputation: +15%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +20%&lt;br /&gt;
Mission Credit: +32%&lt;br /&gt;
Mission Reputation: +20%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +25%&lt;br /&gt;
Mission Credit: +40%&lt;br /&gt;
Mission Reputation: +25%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Umbral Reach is specific as their bonuses do not grant Fleet Power. This is offset by their missions granting a massive amount of Commendations and Credits instead.&lt;br /&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=Faction_Reputation&amp;diff=3876</id>
		<title>Faction Reputation</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Faction_Reputation&amp;diff=3876"/>
		<updated>2026-07-21T04:48:59Z</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 player 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;
Throughout &#039;&#039;Frontier&#039;&#039; (See [[Navigation]]) reputation cna be increased with all factions with the exception of [[Corsair Syndicate]] which serve 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 can not 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=Conquest_Zone&amp;diff=3875</id>
		<title>Conquest Zone</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Conquest_Zone&amp;diff=3875"/>
		<updated>2026-07-21T04:48:40Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Conquest Zone is a set of [[Navigation|subsectors]] collectively named &amp;quot;The Conquest&amp;quot;. It is geared for player levels 30-60.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The Conquest is regenerated for every new game.&#039;&#039;&#039; Subsector layout, the 75–89 systems inside &#039;&#039;Ara Martis&#039;&#039;, which of [[Luminate Combine]] / [[Kolyatov Collective]] / [[Stellar Industries]] takes which embassy, the position of the [[Darkspace Compact]] HQ, which guilds settle which Lux subsector, and where the hidden [[Umbral Reach]] outpost spawns are all randomised per save. The mechanics described on this page (faction roster, tick cadence, formulas, reputation gates) are fixed across all games; the geography is not.&lt;br /&gt;
&lt;br /&gt;
[[File:Conquest.map.example.png|800px|right|thumb|An Example of a Conquest map layout]]&lt;br /&gt;
&lt;br /&gt;
Goals of Conquest are simple and straightforward - Three major [[Factions]] are invading the [[Darkspace Compact]] territory with the intention of claiming it in entirety. However, minor factions are also present and look upon this all-out war as an opportunity to expand and rival other majors.&lt;br /&gt;
&lt;br /&gt;
On the sidelines, [[Darkspace Compact]] is engaged in a bloody feud with [[Meridia&#039;s Chosen]], and have no resources to spare for defense.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Player Options&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Player can approach this situation however they see fit.&lt;br /&gt;
* Pick one of  the major factions, lead them to victory&lt;br /&gt;
* Pick one of the minor factions, help them break into conquest and become a major&lt;br /&gt;
* Pick everyone and reap the benefits of having access to all their rewards&lt;br /&gt;
* Pick noone and ignore the whole kerfuffle, while focusing on mining, salvage or trade.&lt;br /&gt;
* Mix and match any of the above.&lt;br /&gt;
&lt;br /&gt;
Player is under no pressure to engage in any hostilities, except with Meridia&#039;s chosen who take on the role of the default antagonist - held thus far by [[Corsair Syndicate]]. All stations inside the Conquest Zone level up with the players&#039; level. It sometimes can take a bit before they change their station level. &lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Map Layout&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Conquest_sector.png|thumb|500px|right|Conquest sector initial map layout]]&lt;br /&gt;
&lt;br /&gt;
Within conquest zone, there is a trio of subsectors hosting all of the [[Factions]]&#039; &#039;&#039;&#039;embassies&#039;&#039;&#039; - which are marked by an the map by a golden outline. Their position and contents are dynamically named, but their names are the same - &#039;&#039;Lux Arctos&#039;&#039; to the north, &#039;&#039;Lux Magna&#039;&#039; in the middle, and &#039;&#039;Lux Australis&#039;&#039; to the south. &lt;br /&gt;
&lt;br /&gt;
Sample Embassy station:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Conquest.embassy.png]]&lt;br /&gt;
&lt;br /&gt;
In the middle is the massive &#039;&#039;Ara Martis&#039;&#039; (&amp;quot;The Altar of Mars&amp;quot;) with almost a 100 systems within.&lt;br /&gt;
&lt;br /&gt;
To the right, leading outwards from &#039;&#039;Ara Martis&#039;&#039; is the &#039;&#039;Penumbra&#039;&#039;, home of the [[Darkspace Compact]]. In order to get to &#039;&#039;Penumbra&#039;&#039;, player needs to be at least level 55 for the gate keys to spawn.&lt;br /&gt;
&lt;br /&gt;
Finally, further into Darkspace is &#039;&#039;Lucifer&#039;&#039;, the accursed set of systems hosting [[Meridia&#039;s Chosen]].&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;System Layout&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Within each system there is a single &#039;&#039;&#039;Conquest Station&#039;&#039;&#039;. This station has barebones facilities and is viable to flip ownership. Performing missions at this station grants the owner &#039;&#039;&#039;Fleet Power&#039;&#039;&#039; (see below), and the player receives &#039;&#039;&#039;[[Vanguard Marks]]&#039;&#039;&#039; (tokens) in addition to regular rewards.&lt;br /&gt;
&lt;br /&gt;
Each faction currently present in &#039;&#039;Ara Martis&#039;&#039; will also have a &#039;&#039;&#039;Headquarters Station&#039;&#039;&#039; (marked on the map with a silver outline) where their head can interact with the player. The HQ system also has a special gate connecting the HQ to the Embassy station in one of the &#039;&#039;Lux&#039;&#039; subsectors. If the player is at war with the faction, this express gate will be closed, otherwise it will be open. The HQ also hosts a special &#039;&#039;&#039;Conquest Shop&#039;&#039;&#039; where blue and purple gear can be bought for Vanguard commendation tokens, at a higher than normal level, depending on the player&#039;s [[conquest Reputation]].&lt;br /&gt;
&lt;br /&gt;
Sample Headquarters Station:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Conquest.headquarters.png]]&lt;br /&gt;
&lt;br /&gt;
Other stations are &#039;&#039;not&#039;&#039; Conquest stations. They function normally, with the following notes:&lt;br /&gt;
* Non-conquest [[Steel Vultures]] stations will be in graveyard-like systems, with plenty of scrap to salvage.&lt;br /&gt;
* Non-conquest [[Mindus Holdings]] stations will be in motherlode-like systems, with plenty of ores to salvage.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Ara Martis&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
The conquest zone sector starts with 5 factions holding territory: [[Luminate Combine]] (yellow), [[Meridia&#039;s Chosen]] (purple), [[Darkspace Compact]] (gray), [[Stellar Industries]] (blue) and [[Kolyatov Collective]] (red).&lt;br /&gt;
&lt;br /&gt;
Each system has three relevant stats:&lt;br /&gt;
* &#039;&#039;&#039;Fleet Strength&#039;&#039;&#039;: How dangerous the forces in this sector are. 0 = nonexistant, 100+ = very powerful&lt;br /&gt;
* &#039;&#039;&#039;Reinforcements&#039;&#039;&#039;: How long the current owner can retain system ownership if their fleet strength is zeroed. 0 = will lose next hourly tick, 20+ = more than a few hours of active bombardment.&lt;br /&gt;
* &#039;&#039;&#039;System control&#039;&#039;&#039;: How strong is the owner&#039;s control over the system. Secure = secure, Tenuous = not secure, Contested = viable to flip.&lt;br /&gt;
&lt;br /&gt;
Every hour the conquest map will &#039;&#039;tick&#039;&#039;, and systems may swap ownership. This is where the player comes in and can tip the scales, massively.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Ways to help the Factions&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Declare.war.png|500px|right|thumb|Declare War button]]&lt;br /&gt;
&lt;br /&gt;
There are several methods of accruing Fleet Power or helping chosen factions:&lt;br /&gt;
&lt;br /&gt;
# Passive support by performing support missions - mining, salvage, deliveries, fighting pirates. These missions do not require the player to set anyone at war status.&lt;br /&gt;
# Active support - set the faction&#039;s neighbors as enemies in the Reputation screen, then fly to their stations and destroy them. This will negate their fleet power, and on the next tick their Reinforecements value will fall. Once it is sufficiently low, as compared to neighboring values, and if their Fleet Strength is below their enemies, system will be conquered.&lt;br /&gt;
# Mixed approach - bolster chosen faction&#039;s FP, while actively &amp;quot;zeroing out&amp;quot; neighboring systems so they fall faster.&lt;br /&gt;
&lt;br /&gt;
To conquer a system for a faction, the faction that you want to help needs to be adjacent and &#039;&#039;&#039;connected with a gate&#039;&#039;&#039;. The control needs to be contested and the attacking faction needs to have higher fleet power in the adjacent system, with the reinforcement rate on the defender&#039;s side also being low enough.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;Enlisting the Minors&#039;&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
[[File:Stranded_taking_systems.png|thumb|500px|Stranded faction (dark green) and mindus (light green) owning systems]]&lt;br /&gt;
&lt;br /&gt;
The minor [[Factions]] do not participate initially. However, they have representatives at their Embassy stations which ask the player to intervene. Performing missions at the embassies lets them accrue Fleet Strength.&lt;br /&gt;
&lt;br /&gt;
After they collect enough of Fleet Strength, they will spawn the &amp;quot;Headquarters&amp;lt;-&amp;gt;Embassy&amp;quot; gate, and break into &#039;&#039;Ara Martis&#039;&#039; at a random position. At that point and onwards, the same rules apply to them as for any of the initial contestants.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: The same mechanic applies to every participant that is somehow pushed out of &#039;&#039;Ara Martis&#039;&#039;. For example, if Luminate collective are wiped out, doing quests at their embassy makes them viable to return into the frey. Only exception to this rule is [[Meridia&#039;s Chosen]], which have no embassy, nor own a HQ&amp;lt;-&amp;gt;Embassy highway gate. Once they are pushed out, they stay out, at the loud cheering of [[Darkspace Compact]].&lt;br /&gt;
&lt;br /&gt;
Example of launching a Minor invasion into Conquest:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Invasion launch.png]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Making Peace&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
At any given moment the player can &amp;quot;set peace&amp;quot; with an enemy faction. To do so they need to:&lt;br /&gt;
* Fly to the enemy&#039;s Embassy - Keep in mind Darkspace requires level 55 to reach their embassy, and Meridia&#039;s Chosen cannot be interacted with.&lt;br /&gt;
* Perform &amp;quot;conciliatory missions&amp;quot; - missions at the embassy will grant upwards of 1000-1500 reputation per mission, as long as the score is negative&lt;br /&gt;
* Once score is positive, &amp;quot;Make Peace&amp;quot; button is enabled and peace can be proclaimed.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Important Addenda&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;System level&#039;&#039;&#039;: Is determined by player level, increasing slowly until the systems reach level 64 as player progresses towards character level 60. Destroyers start appearing at system level 40.&lt;br /&gt;
* &#039;&#039;&#039;The Enemy&#039;&#039;&#039;: Player can help all factions except for [[Meridia&#039;s Chosen]]. It is possible to ally everyone and stay pacifist with everyone except Meridia&#039;s.&lt;br /&gt;
* &#039;&#039;&#039;Map is alive&#039;&#039;&#039;: Factions will change the Map even without player intervention. However these changes are slow and do not alter the map much.&lt;br /&gt;
* &#039;&#039;&#039;Reputation matters&#039;&#039;&#039;: Fighting a faction openly will lower reputation with them. Once the [[Umbral Reach]] enters the fight, they provide for means to mask ship ID via &#039;&#039;&#039;Decoy Transponders&#039;&#039;&#039;. These prevent reputation loss (and gains) from fighting other factions.&lt;br /&gt;
* &#039;&#039;&#039;Reputation matters more&#039;&#039;&#039;: Performing Conquest missions grants [[Conquest Reputation]]. It is through this reputation one is able to acquire Destroyers and other massive craft. Destroyers are bought in Tokens (see [[Faction Currencies]]), and Conquest Shops also sell gear for Tokens. Having a high conquest reputation will help to acquire the Vanguard Commendations more quickly.&lt;br /&gt;
* &#039;&#039;&#039;Look for color&#039;&#039;&#039;: The HQs from each Faction are highlighted by a silver outline, and their Embassies (outside &#039;&#039;Ara Martis&#039;&#039;) are highlighted in gold. Both have special &#039;&#039;&#039;Conquest Shops&#039;&#039;&#039; that sell powerful gear for Tokens, and the HQ shop will sell level 74 gear at maximum conquest reputation.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;The Infection&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
[[File:Decoy transponder.png|500px|thumb|right|Decoy Transponder - a cloaking tool]]&lt;br /&gt;
&lt;br /&gt;
the [[Umbral Reach]] has an unorthodox approach to Conquest. They spread their system net-infection code and slowly take over stations from within. Player can help them out and this unlocks massive benefits in the form of a hidden Umbral Shop (which behaves like a Conquest Shop, reaching level 74 blue/purple inventory at &#039;&#039;&#039;every&#039;&#039;&#039; conquest station), as well as access to specialized hacking tools to perform piracy on unsuspecting ships, mask one&#039;s identity while backstabing friends, and opportunity to perform daily missions at every station which can result in &#039;&#039;thousands&#039;&#039; of Vanguard commendations and &#039;&#039;millions&#039;&#039; in Credits, &#039;&#039;each&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See [[Umbral Reach]] for more information.&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=Vanguard_Marks&amp;diff=3866</id>
		<title>Vanguard Marks</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Vanguard_Marks&amp;diff=3866"/>
		<updated>2026-07-20T11:17:12Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Industry.shop.png|800px|thumb|right|Example of Industry Shop Token use]]&lt;br /&gt;
&lt;br /&gt;
Within [[Conquest Zone]] the main method of payment is slowly shifting from cold, hard Credits towards &#039;&#039;&#039;Commendations&#039;&#039;&#039;, a.k.a. Tokens.&lt;br /&gt;
&lt;br /&gt;
Player can already encounter different types of Commendations at [[Canisec]] (while doing [[Patrol]]), [[Orsanon Security]] (while doing [[Bounty Hunt]]), and [[Forge Industries]] (while doing [[Industrial Ops]]). Commendations so gained can also be bought directly from the respective shops of the aforementioned factions, though at exorbitant prices.&lt;br /&gt;
&lt;br /&gt;
In essence, doing specialized quests will grant these tokens by the issuing factions.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Token Uses&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Each token can only be used within the confines of the issuing faction&#039;s stations. Those stations have specialized shops - &#039;&#039;&#039;Patrol Shop&#039;&#039;&#039;, &#039;&#039;&#039;Bounty Shop&#039;&#039;&#039;, and &#039;&#039;&#039;Industry Shop&#039;&#039;&#039;, where they offer blue+ gear in exchange for these tokens. Of special note are the Industry Shops of the [[Forge Industries]] which will also sell rare purple blueprints in exchange for &#039;&#039;Industry Commendations&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Within &#039;&#039;Conquest&#039;&#039;, player is introduced to &amp;quot;general&amp;quot; &#039;&#039;&#039;Conquest Shops&#039;&#039;&#039; which function identically to the first three, but take &#039;&#039;Vanguard Tokens&#039;&#039;. Later, with the [[Umbral Reach]] quest line, player has the ability to establish &#039;&#039;&#039;Umbral Shops&#039;&#039;&#039; in all Conquest Stations (See [[Conquest Zone]]), which also use &#039;&#039;Mars Commendations&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Additionally, shipyards of conquest factions will sell Destroyers and other size-5 ships for a mix of Credits and &#039;&#039;Vanguard Tokens&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example of Token usage in faction shipyards:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Shipyard.tokens.png]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Types of commendations&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Types of Commendations and acquire methods.&lt;br /&gt;
|Patrol Commendation&lt;br /&gt;
|[[File:Canisec Commendation.png|60px]]&lt;br /&gt;
|This commendation will be awarded for clearing all [[Patrol]] Waves.&lt;br /&gt;
|[[Canisec]]&lt;br /&gt;
|-&lt;br /&gt;
|Bounty Commendation&lt;br /&gt;
|[[File:Orsanon Commendation.png|60px]]&lt;br /&gt;
|This commendation will be awarded for clearing all [[Bounty Hunt]] Waves.&lt;br /&gt;
|[[Orsanon Security]]&lt;br /&gt;
|-&lt;br /&gt;
|Industry Commendation&lt;br /&gt;
|[[File:Forge Commendation.png|60px]]&lt;br /&gt;
|This commendation will be awarded for supporting the Station with Supplies during [[Industrial Ops]].&lt;br /&gt;
|[[Forge Industries]]&lt;br /&gt;
|-&lt;br /&gt;
|Mars Commendation&lt;br /&gt;
|[[File:Mars Commendation.png|60px]]&lt;br /&gt;
|This commendation is given out in the Conquest Zone for completing conquest-related missions.&lt;br /&gt;
|Any participating Faction&lt;br /&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=Conquest_Reputation&amp;diff=3865</id>
		<title>Conquest Reputation</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Conquest_Reputation&amp;diff=3865"/>
		<updated>2026-07-20T11:16:29Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Conquest.reputation.png|frameless|700x700px]]&lt;br /&gt;
&lt;br /&gt;
Completing missions for the warring [[Factions]] within [[Conquest Zone]] grants Conquest Reputation.&lt;br /&gt;
&lt;br /&gt;
Conquest Reputation is necessary for unlocking even more Conquest Reputation, which in turn begets more Conquest Reputation, even faster.&lt;br /&gt;
&lt;br /&gt;
As a side-effect, the player can also gain more Mars Tokens (Vanguard Token) as a part of the mission rewards, and the ability to purchase Destroyers and other powerful ships.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes&#039;&#039;&#039;: Conquest Rep/Reputation/Standing is directly added by the Fleet strength gained from mission/activity.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Conquest Zone Standing&#039;&#039;&#039; ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|Reputation Threshold &lt;br /&gt;
|10&lt;br /&gt;
|150&lt;br /&gt;
|450&lt;br /&gt;
|1000&lt;br /&gt;
|2500&lt;br /&gt;
|4500&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Luminate Combine Logo.png|center]]&lt;br /&gt;
|[[Luminate Combine]]&lt;br /&gt;
|Seeker&lt;br /&gt;
|Initiate&lt;br /&gt;
|Data Acolyte&lt;br /&gt;
|Drone Devotee&lt;br /&gt;
|Conduit of the Swarm&lt;br /&gt;
|Oracle&#039;s Chosen&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Kolyatov Collective Logo.png|center]]&lt;br /&gt;
|[[Kolyatov Collective]]&lt;br /&gt;
|Conscript&lt;br /&gt;
|Comrade&lt;br /&gt;
|Comissar&lt;br /&gt;
|Defender of Solidarity&lt;br /&gt;
|Revolutionary Marshal&lt;br /&gt;
|Hero of the People&#039;s Glory&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Stellar Industries Logo.png|center]]&lt;br /&gt;
|[[Stellar Industries]]&lt;br /&gt;
|Intern&lt;br /&gt;
|Associate&lt;br /&gt;
|Senior Associate&lt;br /&gt;
|Operations Manager&lt;br /&gt;
|Executive Director&lt;br /&gt;
|Sector Partner&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Mindus Holdings Logo.png|center]]&lt;br /&gt;
|[[Mindus Holdings]]&lt;br /&gt;
|Chiseller&lt;br /&gt;
|Pickaxe Wielder&lt;br /&gt;
|Foreman&lt;br /&gt;
|Chief Engineer&lt;br /&gt;
|Ore Connoisseur&lt;br /&gt;
|Ultra Miner&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Steel Vultures Logo.png|center]]&lt;br /&gt;
|[[Steel Vultures]]&lt;br /&gt;
|Hullpicker&lt;br /&gt;
|Wreckhand&lt;br /&gt;
|Steel Reclaimer&lt;br /&gt;
|Ship Ripper&lt;br /&gt;
|Master of Wrecks&lt;br /&gt;
|Scraplord&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Stranded Logo.png|center]]&lt;br /&gt;
|[[Stranded]]&lt;br /&gt;
|Companion&lt;br /&gt;
|Bloodbound&lt;br /&gt;
|Steward&lt;br /&gt;
|Pact Binder&lt;br /&gt;
|Covenant Captain&lt;br /&gt;
|Bacon of Hope&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Darkspace Compat Logo.png|center]]&lt;br /&gt;
|[[Darkspace Compact]]&lt;br /&gt;
|Worm&lt;br /&gt;
|Darkspace Drifter&lt;br /&gt;
|Fiberguard&lt;br /&gt;
|Nightblade&lt;br /&gt;
|Black Lance&lt;br /&gt;
|Canis Warlord&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Corsair Syndicate Logo.png|center]]&lt;br /&gt;
|[[Corsair Syndicate]]&lt;br /&gt;
|Raider&lt;br /&gt;
|Cutthroat&lt;br /&gt;
|Syndicate Corsair&lt;br /&gt;
|Blood Reaver&lt;br /&gt;
|Death Captain&lt;br /&gt;
|Tyrant&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Umbral Reach Logo.png|center]]&lt;br /&gt;
|[[Umbral Reach]] (*)&lt;br /&gt;
|String&lt;br /&gt;
|Infiltrator&lt;br /&gt;
|Cloakbearer&lt;br /&gt;
|Untracked&lt;br /&gt;
|System Reaper&lt;br /&gt;
|The Hand of Umbral&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;Bonuses for each Rank&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +10%&lt;br /&gt;
Mission Fleet Strength: +10%&lt;br /&gt;
Mission Credit: +4%&lt;br /&gt;
Mission Reputation: +3%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +20%&lt;br /&gt;
Mission Fleet Strength: +20%&lt;br /&gt;
Mission Credit: +10%&lt;br /&gt;
Mission Reputation: +6%&lt;br /&gt;
Destroyer Permit&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +40%&lt;br /&gt;
Mission Fleet Strength: +40%&lt;br /&gt;
Mission Credit: +16%&lt;br /&gt;
Mission Reputation: +10%&lt;br /&gt;
Destroyer Permit&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +60%&lt;br /&gt;
Mission Fleet Strength: +60%&lt;br /&gt;
Mission Credit: +24%&lt;br /&gt;
Mission Reputation: +15%&lt;br /&gt;
Destroyer Permit&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +80%&lt;br /&gt;
Mission Fleet Strength: +80%&lt;br /&gt;
Mission Credit: +32%&lt;br /&gt;
Mission Reputation: +20%&lt;br /&gt;
Destroyer Permit&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +100%&lt;br /&gt;
Mission Fleet Strength: +100%&lt;br /&gt;
Mission Credit: +40%&lt;br /&gt;
Mission Reputation: +25%&lt;br /&gt;
Destroyer Permit&amp;lt;/pre&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&#039;&#039;&#039;Umbral Bonuses for each Rank&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +2.5%&lt;br /&gt;
Mission Credit: +4%&lt;br /&gt;
Mission Reputation: +3%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +5%&lt;br /&gt;
Mission Credit: +10%&lt;br /&gt;
Mission Reputation: +6%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +10%&lt;br /&gt;
Mission Credit: +16%&lt;br /&gt;
Mission Reputation: +10%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +15%&lt;br /&gt;
Mission Credit: +24%&lt;br /&gt;
Mission Reputation: +15%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +20%&lt;br /&gt;
Mission Credit: +32%&lt;br /&gt;
Mission Reputation: +20%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;pre&amp;gt;Mission Vanguard Commendations: +25%&lt;br /&gt;
Mission Credit: +40%&lt;br /&gt;
Mission Reputation: +25%&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Umbral Reach is specific as their bonuses do not grant Fleet Power. This is offset by their missions granting a massive amount of Commendations and Credits instead.&lt;br /&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=Umbral_Reach&amp;diff=3864</id>
		<title>Umbral Reach</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Umbral_Reach&amp;diff=3864"/>
		<updated>2026-07-20T11:14:40Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Faction&lt;br /&gt;
 | title = Umbral Reach&lt;br /&gt;
 | image = Umbral Reach Logo.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Character&lt;br /&gt;
 | name = Mysterious Employer&lt;br /&gt;
 | image = mysterious.employer.png&lt;br /&gt;
 | imagecaption = Mysterious Employer&lt;br /&gt;
 | affiliation  = Umbral Reach&lt;br /&gt;
 | title = ??&lt;br /&gt;
 | location =??&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Character&lt;br /&gt;
 | name = Stella Chion&lt;br /&gt;
 | image = stella.chion.png&lt;br /&gt;
 | imagecaption = Stella Chion&lt;br /&gt;
 | affiliation  = Umbral Reach&lt;br /&gt;
 | title = Umbral Reach Spymaster&lt;br /&gt;
 | location = Conquest Embassy&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Umbral Reach are a minor [[Factions|faction]].&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;The Goals of Umbral&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Umbral Reach serves as the main story motivator as the player starts as a mercenary in the employ of Umbral&#039;s Mysterious Employer. What&#039;s less clear - and could not be more opaque - is what Umbral actually is, why it does what it does, nor what are its goals. &lt;br /&gt;
&lt;br /&gt;
Umbral methods of expansion are unlike anything else encountered and rely primarily on infiltration, electronic warfare, and insidious taking over of stations without their owners ever noticing it. They are hacking experts, creators of various bots to track and steal cargo, commandeer ships and more. They join the Conquest war in this fashion and can easily dominate the entire Conquest sector without anyone realizing.&lt;br /&gt;
&lt;br /&gt;
While it&#039;s conceivable ECHO is one of Umbral, and that Umbral is an entirely AI-led faction, fact remains they use human agents when needed, such as Stella Chion, or mercenary captains like the player.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Umbral Reach Characters&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
* [[Mysterious Employer]]&lt;br /&gt;
* [[Stella Chion]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Umbral Missions and Shops&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
After the main story line where the player helps Umbral to establish themselves in Conquest, every station controlled offers a daily quest - hidden in the Mission Board. These quests reset at midnight, and offer massive rewards in both cash and Vanguard tokens. See [[Umbral Missions]] for more information.&lt;br /&gt;
&lt;br /&gt;
[[File:Umbral.quest.png|600px|right|thumb|Umbral Mission Example]]&lt;br /&gt;
&lt;br /&gt;
Similarly, every controlled station hosts a secret Umbral Shop. Item level in this shop depends on the Conquest Rating with the station&#039;s nominal owner; for each rank of Conquest Reputation, items in Umbral shop are increased by +2. Thus, at maximum reputation (4500), the station&#039;s Umbral Shop will offer level 74 items - of the highest rarities.&lt;br /&gt;
&lt;br /&gt;
[[File:Umbral.shop.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Umbral.shop.2.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Ships Manufactured&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Umbral Reach has no need for ships - it does not own shipyards, and offers no ships for sale.&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=Ships&amp;diff=3861</id>
		<title>Ships</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Ships&amp;diff=3861"/>
		<updated>2026-07-20T06:21:02Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &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;
&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=3860</id>
		<title>Ships</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Ships&amp;diff=3860"/>
		<updated>2026-07-20T06:19:20Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &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;
* Hangar Bay: 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;
&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=Missions&amp;diff=3800</id>
		<title>Missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Missions&amp;diff=3800"/>
		<updated>2026-07-04T08:16:46Z</updated>

		<summary type="html">&lt;p&gt;Dreadbyte: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Missions.png|800px|right|thumb|A typically mission board.]]&lt;br /&gt;
&lt;br /&gt;
Missions in Vanguard Galaxy come in many flavors, and reward many different quest rewards.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;Mission types&#039;&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
There are following mission types player may encounter during the game:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Story Missions&#039;&#039;&#039;: These progress the story and also serve as a tutorial to all the activity types player might normally do. For a spoiler-filled listing, see [[Story Missions]].&lt;br /&gt;
* &#039;&#039;&#039;Skill Missions&#039;&#039;&#039;: Missions that enable [[Skills|skills]] and often grant Skill Points. Can be mandatory or optional. See [[Skill Missions]].&lt;br /&gt;
* &#039;&#039;&#039;Mission Board&#039;&#039;&#039;: Available at any Mission Board at (almost) any [[Stations|station]], these grant [[Faction Reputation]], [[Credits]], [[Items]], and optionally [[Faction Currencies]] and [[Workshop|Workshop Credit]]. These will be shown a yellow ! on the Station when the Mission goal is reached.&lt;br /&gt;
* &#039;&#039;&#039;Special Missions&#039;&#039;&#039;: These are specifically crafted for active play and nominally reward [[Faction Currencies]] in addition to regular rewards.&lt;br /&gt;
** [[Patrol]] - Patrol a system, hunt pirates.&lt;br /&gt;
** [[Bounty Hunt]] - Hunt a Pirate Leader.&lt;br /&gt;
** [[Industrial Ops]] - Mine, salvage, craft and fight at the same time.&lt;br /&gt;
** [[Umbral Missions]] - Daily repeatables for large rewards, one per station per day.&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=Drones&amp;diff=3799</id>
		<title>Drones</title>
		<link rel="alternate" type="text/html" href="https://wiki.vanguardgalaxy.com/index.php?title=Drones&amp;diff=3799"/>
		<updated>2026-07-03T11:22:15Z</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, it draws from a &#039;&#039;&#039;shared pool&#039;&#039;&#039; built from the ship&#039;s matching activity Power (Combat/Mining/Salvage — see [[Power]]), the ship&#039;s &amp;lt;code&amp;gt;Drone Power&amp;lt;/code&amp;gt; stat, and the sum of every loaded drone&#039;s own Power. That pool is then sliced into per-drone attack power by a per-turret formula.&lt;br /&gt;
&lt;br /&gt;
In rough terms:&lt;br /&gt;
&lt;br /&gt;
* Adding more drone slots adds firepower overall, but each individual drone&#039;s per-shot power drops slightly as the pool is shared more ways.&lt;br /&gt;
* The bay&#039;s tooltip &amp;quot;Drone Power&amp;quot; figure is cosmetic, it tells you what each loaded drone&#039;s turret is rated at, not the actual stat used in damage math.&lt;br /&gt;
* Drone shots feed off ship Power (a mining drone would use Mining Power), but the reverse is also true, drones&#039; own Power contributes to &#039;&#039;&#039;ship&#039;&#039;&#039; 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>
</feed>