@johnmorrisdotca/uchusen-rockets 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1562) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +19 -3
  3. package/dist/assets/fleet-02-fleet-02-apart.painted.svg +1 -0
  4. package/dist/assets/fleet-02-fleet-02-apart.svg +1 -0
  5. package/dist/assets/fleet-02-fleet-02-apart.thick.svg +1 -0
  6. package/dist/assets/fleet-02-fleet-02-attitude-thrusters.painted.svg +1 -0
  7. package/dist/assets/fleet-02-fleet-02-attitude-thrusters.svg +1 -0
  8. package/dist/assets/fleet-02-fleet-02-attitude-thrusters.thick.svg +1 -0
  9. package/dist/assets/fleet-02-fleet-02-cargo-1.painted.svg +1 -0
  10. package/dist/assets/fleet-02-fleet-02-cargo-1.svg +1 -0
  11. package/dist/assets/fleet-02-fleet-02-cargo-1.thick.svg +1 -0
  12. package/dist/assets/fleet-02-fleet-02-cargo-2.painted.svg +1 -0
  13. package/dist/assets/fleet-02-fleet-02-cargo-2.svg +1 -0
  14. package/dist/assets/fleet-02-fleet-02-cargo-2.thick.svg +1 -0
  15. package/dist/assets/fleet-02-fleet-02-cargo-3.painted.svg +1 -0
  16. package/dist/assets/fleet-02-fleet-02-cargo-3.svg +1 -0
  17. package/dist/assets/fleet-02-fleet-02-cargo-3.thick.svg +1 -0
  18. package/dist/assets/fleet-02-fleet-02-cargo-4.painted.svg +1 -0
  19. package/dist/assets/fleet-02-fleet-02-cargo-4.svg +1 -0
  20. package/dist/assets/fleet-02-fleet-02-cargo-4.thick.svg +1 -0
  21. package/dist/assets/fleet-02-fleet-02-cargo-inside.painted.svg +1 -0
  22. package/dist/assets/fleet-02-fleet-02-cargo-inside.svg +1 -0
  23. package/dist/assets/fleet-02-fleet-02-cargo-inside.thick.svg +1 -0
  24. package/dist/assets/fleet-02-fleet-02-command-bridge.painted.svg +1 -0
  25. package/dist/assets/fleet-02-fleet-02-command-bridge.svg +1 -0
  26. package/dist/assets/fleet-02-fleet-02-command-bridge.thick.svg +1 -0
  27. package/dist/assets/fleet-02-fleet-02-command-crew.painted.svg +1 -0
  28. package/dist/assets/fleet-02-fleet-02-command-crew.svg +1 -0
  29. package/dist/assets/fleet-02-fleet-02-command-crew.thick.svg +1 -0
  30. package/dist/assets/fleet-02-fleet-02-command-medbay.painted.svg +1 -0
  31. package/dist/assets/fleet-02-fleet-02-command-medbay.svg +1 -0
  32. package/dist/assets/fleet-02-fleet-02-command-medbay.thick.svg +1 -0
  33. package/dist/assets/fleet-02-fleet-02-command.painted.svg +1 -0
  34. package/dist/assets/fleet-02-fleet-02-command.svg +1 -0
  35. package/dist/assets/fleet-02-fleet-02-command.thick.svg +1 -0
  36. package/dist/assets/fleet-02-fleet-02-dock-hangar.painted.svg +1 -0
  37. package/dist/assets/fleet-02-fleet-02-dock-hangar.svg +1 -0
  38. package/dist/assets/fleet-02-fleet-02-dock-hangar.thick.svg +1 -0
  39. package/dist/assets/fleet-02-fleet-02-dock-works.painted.svg +1 -0
  40. package/dist/assets/fleet-02-fleet-02-dock-works.svg +1 -0
  41. package/dist/assets/fleet-02-fleet-02-dock-works.thick.svg +1 -0
  42. package/dist/assets/fleet-02-fleet-02-dock.painted.svg +1 -0
  43. package/dist/assets/fleet-02-fleet-02-dock.svg +1 -0
  44. package/dist/assets/fleet-02-fleet-02-dock.thick.svg +1 -0
  45. package/dist/assets/fleet-02-fleet-02-drive-engines.painted.svg +1 -0
  46. package/dist/assets/fleet-02-fleet-02-drive-engines.svg +1 -0
  47. package/dist/assets/fleet-02-fleet-02-drive-engines.thick.svg +1 -0
  48. package/dist/assets/fleet-02-fleet-02-drive.painted.svg +1 -0
  49. package/dist/assets/fleet-02-fleet-02-drive.svg +1 -0
  50. package/dist/assets/fleet-02-fleet-02-drive.thick.svg +1 -0
  51. package/dist/assets/fleet-02-fleet-02-farm-terrace-1.painted.svg +1 -0
  52. package/dist/assets/fleet-02-fleet-02-farm-terrace-1.svg +1 -0
  53. package/dist/assets/fleet-02-fleet-02-farm-terrace-1.thick.svg +1 -0
  54. package/dist/assets/fleet-02-fleet-02-farm-terrace-2.painted.svg +1 -0
  55. package/dist/assets/fleet-02-fleet-02-farm-terrace-2.svg +1 -0
  56. package/dist/assets/fleet-02-fleet-02-farm-terrace-2.thick.svg +1 -0
  57. package/dist/assets/fleet-02-fleet-02-farm-terrace-3.painted.svg +1 -0
  58. package/dist/assets/fleet-02-fleet-02-farm-terrace-3.svg +1 -0
  59. package/dist/assets/fleet-02-fleet-02-farm-terrace-3.thick.svg +1 -0
  60. package/dist/assets/fleet-02-fleet-02-farm.painted.svg +1 -0
  61. package/dist/assets/fleet-02-fleet-02-farm.svg +1 -0
  62. package/dist/assets/fleet-02-fleet-02-farm.thick.svg +1 -0
  63. package/dist/assets/fleet-02-fleet-02-habitat-a-deck-1.painted.svg +1 -0
  64. package/dist/assets/fleet-02-fleet-02-habitat-a-deck-1.svg +1 -0
  65. package/dist/assets/fleet-02-fleet-02-habitat-a-deck-1.thick.svg +1 -0
  66. package/dist/assets/fleet-02-fleet-02-habitat-a-deck-2.painted.svg +1 -0
  67. package/dist/assets/fleet-02-fleet-02-habitat-a-deck-2.svg +1 -0
  68. package/dist/assets/fleet-02-fleet-02-habitat-a-deck-2.thick.svg +1 -0
  69. package/dist/assets/fleet-02-fleet-02-habitat-a-deck-3.painted.svg +1 -0
  70. package/dist/assets/fleet-02-fleet-02-habitat-a-deck-3.svg +1 -0
  71. package/dist/assets/fleet-02-fleet-02-habitat-a-deck-3.thick.svg +1 -0
  72. package/dist/assets/fleet-02-fleet-02-habitat-a.painted.svg +1 -0
  73. package/dist/assets/fleet-02-fleet-02-habitat-a.svg +1 -0
  74. package/dist/assets/fleet-02-fleet-02-habitat-a.thick.svg +1 -0
  75. package/dist/assets/fleet-02-fleet-02-habitat-b-deck-1.painted.svg +1 -0
  76. package/dist/assets/fleet-02-fleet-02-habitat-b-deck-1.svg +1 -0
  77. package/dist/assets/fleet-02-fleet-02-habitat-b-deck-1.thick.svg +1 -0
  78. package/dist/assets/fleet-02-fleet-02-habitat-b-deck-2.painted.svg +1 -0
  79. package/dist/assets/fleet-02-fleet-02-habitat-b-deck-2.svg +1 -0
  80. package/dist/assets/fleet-02-fleet-02-habitat-b-deck-2.thick.svg +1 -0
  81. package/dist/assets/fleet-02-fleet-02-habitat-b-deck-3.painted.svg +1 -0
  82. package/dist/assets/fleet-02-fleet-02-habitat-b-deck-3.svg +1 -0
  83. package/dist/assets/fleet-02-fleet-02-habitat-b-deck-3.thick.svg +1 -0
  84. package/dist/assets/fleet-02-fleet-02-habitat-b.painted.svg +1 -0
  85. package/dist/assets/fleet-02-fleet-02-habitat-b.svg +1 -0
  86. package/dist/assets/fleet-02-fleet-02-habitat-b.thick.svg +1 -0
  87. package/dist/assets/fleet-02-fleet-02-header-tanks.painted.svg +1 -0
  88. package/dist/assets/fleet-02-fleet-02-header-tanks.svg +1 -0
  89. package/dist/assets/fleet-02-fleet-02-header-tanks.thick.svg +1 -0
  90. package/dist/assets/fleet-02-fleet-02-pod-ventral.painted.svg +1 -0
  91. package/dist/assets/fleet-02-fleet-02-pod-ventral.svg +1 -0
  92. package/dist/assets/fleet-02-fleet-02-pod-ventral.thick.svg +1 -0
  93. package/dist/assets/fleet-02-fleet-02-pod.painted.svg +1 -0
  94. package/dist/assets/fleet-02-fleet-02-pod.svg +1 -0
  95. package/dist/assets/fleet-02-fleet-02-pod.thick.svg +1 -0
  96. package/dist/assets/fleet-02-fleet-02-propellant-lines.painted.svg +1 -0
  97. package/dist/assets/fleet-02-fleet-02-propellant-lines.svg +1 -0
  98. package/dist/assets/fleet-02-fleet-02-propellant-lines.thick.svg +1 -0
  99. package/dist/assets/fleet-02-fleet-02-radiator-port.painted.svg +1 -0
  100. package/dist/assets/fleet-02-fleet-02-radiator-port.svg +1 -0
  101. package/dist/assets/fleet-02-fleet-02-radiator-port.thick.svg +1 -0
  102. package/dist/assets/fleet-02-fleet-02-radiator-starboard.painted.svg +1 -0
  103. package/dist/assets/fleet-02-fleet-02-radiator-starboard.svg +1 -0
  104. package/dist/assets/fleet-02-fleet-02-radiator-starboard.thick.svg +1 -0
  105. package/dist/assets/fleet-02-fleet-02-radiators-stowed.painted.svg +1 -0
  106. package/dist/assets/fleet-02-fleet-02-radiators-stowed.svg +1 -0
  107. package/dist/assets/fleet-02-fleet-02-radiators-stowed.thick.svg +1 -0
  108. package/dist/assets/fleet-02-fleet-02-reactor-inside.painted.svg +1 -0
  109. package/dist/assets/fleet-02-fleet-02-reactor-inside.svg +1 -0
  110. package/dist/assets/fleet-02-fleet-02-reactor-inside.thick.svg +1 -0
  111. package/dist/assets/fleet-02-fleet-02-reactor.painted.svg +1 -0
  112. package/dist/assets/fleet-02-fleet-02-reactor.svg +1 -0
  113. package/dist/assets/fleet-02-fleet-02-reactor.thick.svg +1 -0
  114. package/dist/assets/fleet-02-fleet-02-rescue-apart.painted.svg +1 -0
  115. package/dist/assets/fleet-02-fleet-02-rescue-apart.svg +1 -0
  116. package/dist/assets/fleet-02-fleet-02-rescue-apart.thick.svg +1 -0
  117. package/dist/assets/fleet-02-fleet-02-rescue-attitude-thrusters.painted.svg +1 -0
  118. package/dist/assets/fleet-02-fleet-02-rescue-attitude-thrusters.svg +1 -0
  119. package/dist/assets/fleet-02-fleet-02-rescue-attitude-thrusters.thick.svg +1 -0
  120. package/dist/assets/fleet-02-fleet-02-rescue-cargo-1.painted.svg +1 -0
  121. package/dist/assets/fleet-02-fleet-02-rescue-cargo-1.svg +1 -0
  122. package/dist/assets/fleet-02-fleet-02-rescue-cargo-1.thick.svg +1 -0
  123. package/dist/assets/fleet-02-fleet-02-rescue-cargo-2.painted.svg +1 -0
  124. package/dist/assets/fleet-02-fleet-02-rescue-cargo-2.svg +1 -0
  125. package/dist/assets/fleet-02-fleet-02-rescue-cargo-2.thick.svg +1 -0
  126. package/dist/assets/fleet-02-fleet-02-rescue-cargo-3.painted.svg +1 -0
  127. package/dist/assets/fleet-02-fleet-02-rescue-cargo-3.svg +1 -0
  128. package/dist/assets/fleet-02-fleet-02-rescue-cargo-3.thick.svg +1 -0
  129. package/dist/assets/fleet-02-fleet-02-rescue-cargo-4.painted.svg +1 -0
  130. package/dist/assets/fleet-02-fleet-02-rescue-cargo-4.svg +1 -0
  131. package/dist/assets/fleet-02-fleet-02-rescue-cargo-4.thick.svg +1 -0
  132. package/dist/assets/fleet-02-fleet-02-rescue-cargo-inside.painted.svg +1 -0
  133. package/dist/assets/fleet-02-fleet-02-rescue-cargo-inside.svg +1 -0
  134. package/dist/assets/fleet-02-fleet-02-rescue-cargo-inside.thick.svg +1 -0
  135. package/dist/assets/fleet-02-fleet-02-rescue-command-bridge.painted.svg +1 -0
  136. package/dist/assets/fleet-02-fleet-02-rescue-command-bridge.svg +1 -0
  137. package/dist/assets/fleet-02-fleet-02-rescue-command-bridge.thick.svg +1 -0
  138. package/dist/assets/fleet-02-fleet-02-rescue-command-crew.painted.svg +1 -0
  139. package/dist/assets/fleet-02-fleet-02-rescue-command-crew.svg +1 -0
  140. package/dist/assets/fleet-02-fleet-02-rescue-command-crew.thick.svg +1 -0
  141. package/dist/assets/fleet-02-fleet-02-rescue-command-medbay.painted.svg +1 -0
  142. package/dist/assets/fleet-02-fleet-02-rescue-command-medbay.svg +1 -0
  143. package/dist/assets/fleet-02-fleet-02-rescue-command-medbay.thick.svg +1 -0
  144. package/dist/assets/fleet-02-fleet-02-rescue-command.painted.svg +1 -0
  145. package/dist/assets/fleet-02-fleet-02-rescue-command.svg +1 -0
  146. package/dist/assets/fleet-02-fleet-02-rescue-command.thick.svg +1 -0
  147. package/dist/assets/fleet-02-fleet-02-rescue-dock-hangar.painted.svg +1 -0
  148. package/dist/assets/fleet-02-fleet-02-rescue-dock-hangar.svg +1 -0
  149. package/dist/assets/fleet-02-fleet-02-rescue-dock-hangar.thick.svg +1 -0
  150. package/dist/assets/fleet-02-fleet-02-rescue-dock-works.painted.svg +1 -0
  151. package/dist/assets/fleet-02-fleet-02-rescue-dock-works.svg +1 -0
  152. package/dist/assets/fleet-02-fleet-02-rescue-dock-works.thick.svg +1 -0
  153. package/dist/assets/fleet-02-fleet-02-rescue-dock.painted.svg +1 -0
  154. package/dist/assets/fleet-02-fleet-02-rescue-dock.svg +1 -0
  155. package/dist/assets/fleet-02-fleet-02-rescue-dock.thick.svg +1 -0
  156. package/dist/assets/fleet-02-fleet-02-rescue-drive-engines.painted.svg +1 -0
  157. package/dist/assets/fleet-02-fleet-02-rescue-drive-engines.svg +1 -0
  158. package/dist/assets/fleet-02-fleet-02-rescue-drive-engines.thick.svg +1 -0
  159. package/dist/assets/fleet-02-fleet-02-rescue-drive.painted.svg +1 -0
  160. package/dist/assets/fleet-02-fleet-02-rescue-drive.svg +1 -0
  161. package/dist/assets/fleet-02-fleet-02-rescue-drive.thick.svg +1 -0
  162. package/dist/assets/fleet-02-fleet-02-rescue-farm-terrace-1.painted.svg +1 -0
  163. package/dist/assets/fleet-02-fleet-02-rescue-farm-terrace-1.svg +1 -0
  164. package/dist/assets/fleet-02-fleet-02-rescue-farm-terrace-1.thick.svg +1 -0
  165. package/dist/assets/fleet-02-fleet-02-rescue-farm-terrace-2.painted.svg +1 -0
  166. package/dist/assets/fleet-02-fleet-02-rescue-farm-terrace-2.svg +1 -0
  167. package/dist/assets/fleet-02-fleet-02-rescue-farm-terrace-2.thick.svg +1 -0
  168. package/dist/assets/fleet-02-fleet-02-rescue-farm-terrace-3.painted.svg +1 -0
  169. package/dist/assets/fleet-02-fleet-02-rescue-farm-terrace-3.svg +1 -0
  170. package/dist/assets/fleet-02-fleet-02-rescue-farm-terrace-3.thick.svg +1 -0
  171. package/dist/assets/fleet-02-fleet-02-rescue-farm.painted.svg +1 -0
  172. package/dist/assets/fleet-02-fleet-02-rescue-farm.svg +1 -0
  173. package/dist/assets/fleet-02-fleet-02-rescue-farm.thick.svg +1 -0
  174. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a-deck-1.painted.svg +1 -0
  175. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a-deck-1.svg +1 -0
  176. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a-deck-1.thick.svg +1 -0
  177. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a-deck-2.painted.svg +1 -0
  178. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a-deck-2.svg +1 -0
  179. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a-deck-2.thick.svg +1 -0
  180. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a-deck-3.painted.svg +1 -0
  181. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a-deck-3.svg +1 -0
  182. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a-deck-3.thick.svg +1 -0
  183. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a.painted.svg +1 -0
  184. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a.svg +1 -0
  185. package/dist/assets/fleet-02-fleet-02-rescue-habitat-a.thick.svg +1 -0
  186. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b-deck-1.painted.svg +1 -0
  187. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b-deck-1.svg +1 -0
  188. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b-deck-1.thick.svg +1 -0
  189. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b-deck-2.painted.svg +1 -0
  190. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b-deck-2.svg +1 -0
  191. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b-deck-2.thick.svg +1 -0
  192. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b-deck-3.painted.svg +1 -0
  193. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b-deck-3.svg +1 -0
  194. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b-deck-3.thick.svg +1 -0
  195. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b.painted.svg +1 -0
  196. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b.svg +1 -0
  197. package/dist/assets/fleet-02-fleet-02-rescue-habitat-b.thick.svg +1 -0
  198. package/dist/assets/fleet-02-fleet-02-rescue-header-tanks.painted.svg +1 -0
  199. package/dist/assets/fleet-02-fleet-02-rescue-header-tanks.svg +1 -0
  200. package/dist/assets/fleet-02-fleet-02-rescue-header-tanks.thick.svg +1 -0
  201. package/dist/assets/fleet-02-fleet-02-rescue-pod-ventral.painted.svg +1 -0
  202. package/dist/assets/fleet-02-fleet-02-rescue-pod-ventral.svg +1 -0
  203. package/dist/assets/fleet-02-fleet-02-rescue-pod-ventral.thick.svg +1 -0
  204. package/dist/assets/fleet-02-fleet-02-rescue-pod.painted.svg +1 -0
  205. package/dist/assets/fleet-02-fleet-02-rescue-pod.svg +1 -0
  206. package/dist/assets/fleet-02-fleet-02-rescue-pod.thick.svg +1 -0
  207. package/dist/assets/fleet-02-fleet-02-rescue-propellant-lines.painted.svg +1 -0
  208. package/dist/assets/fleet-02-fleet-02-rescue-propellant-lines.svg +1 -0
  209. package/dist/assets/fleet-02-fleet-02-rescue-propellant-lines.thick.svg +1 -0
  210. package/dist/assets/fleet-02-fleet-02-rescue-radiator-port.painted.svg +1 -0
  211. package/dist/assets/fleet-02-fleet-02-rescue-radiator-port.svg +1 -0
  212. package/dist/assets/fleet-02-fleet-02-rescue-radiator-port.thick.svg +1 -0
  213. package/dist/assets/fleet-02-fleet-02-rescue-radiator-starboard.painted.svg +1 -0
  214. package/dist/assets/fleet-02-fleet-02-rescue-radiator-starboard.svg +1 -0
  215. package/dist/assets/fleet-02-fleet-02-rescue-radiator-starboard.thick.svg +1 -0
  216. package/dist/assets/fleet-02-fleet-02-rescue-radiators-stowed.painted.svg +1 -0
  217. package/dist/assets/fleet-02-fleet-02-rescue-radiators-stowed.svg +1 -0
  218. package/dist/assets/fleet-02-fleet-02-rescue-radiators-stowed.thick.svg +1 -0
  219. package/dist/assets/fleet-02-fleet-02-rescue-reactor-inside.painted.svg +1 -0
  220. package/dist/assets/fleet-02-fleet-02-rescue-reactor-inside.svg +1 -0
  221. package/dist/assets/fleet-02-fleet-02-rescue-reactor-inside.thick.svg +1 -0
  222. package/dist/assets/fleet-02-fleet-02-rescue-reactor.painted.svg +1 -0
  223. package/dist/assets/fleet-02-fleet-02-rescue-reactor.svg +1 -0
  224. package/dist/assets/fleet-02-fleet-02-rescue-reactor.thick.svg +1 -0
  225. package/dist/assets/fleet-02-fleet-02-rescue-shadow-shield.painted.svg +1 -0
  226. package/dist/assets/fleet-02-fleet-02-rescue-shadow-shield.svg +1 -0
  227. package/dist/assets/fleet-02-fleet-02-rescue-shadow-shield.thick.svg +1 -0
  228. package/dist/assets/fleet-02-fleet-02-rescue-shield.painted.svg +1 -0
  229. package/dist/assets/fleet-02-fleet-02-rescue-shield.svg +1 -0
  230. package/dist/assets/fleet-02-fleet-02-rescue-shield.thick.svg +1 -0
  231. package/dist/assets/fleet-02-fleet-02-rescue-spine.painted.svg +1 -0
  232. package/dist/assets/fleet-02-fleet-02-rescue-spine.svg +1 -0
  233. package/dist/assets/fleet-02-fleet-02-rescue-spine.thick.svg +1 -0
  234. package/dist/assets/fleet-02-fleet-02-rescue-tank-1.painted.svg +1 -0
  235. package/dist/assets/fleet-02-fleet-02-rescue-tank-1.svg +1 -0
  236. package/dist/assets/fleet-02-fleet-02-rescue-tank-1.thick.svg +1 -0
  237. package/dist/assets/fleet-02-fleet-02-rescue-tank-2.painted.svg +1 -0
  238. package/dist/assets/fleet-02-fleet-02-rescue-tank-2.svg +1 -0
  239. package/dist/assets/fleet-02-fleet-02-rescue-tank-2.thick.svg +1 -0
  240. package/dist/assets/fleet-02-fleet-02-rescue-tank-3.painted.svg +1 -0
  241. package/dist/assets/fleet-02-fleet-02-rescue-tank-3.svg +1 -0
  242. package/dist/assets/fleet-02-fleet-02-rescue-tank-3.thick.svg +1 -0
  243. package/dist/assets/fleet-02-fleet-02-rescue-tank-4.painted.svg +1 -0
  244. package/dist/assets/fleet-02-fleet-02-rescue-tank-4.svg +1 -0
  245. package/dist/assets/fleet-02-fleet-02-rescue-tank-4.thick.svg +1 -0
  246. package/dist/assets/fleet-02-fleet-02-rescue-tank-inside.painted.svg +1 -0
  247. package/dist/assets/fleet-02-fleet-02-rescue-tank-inside.svg +1 -0
  248. package/dist/assets/fleet-02-fleet-02-rescue-tank-inside.thick.svg +1 -0
  249. package/dist/assets/fleet-02-fleet-02-rescue-tip-port.painted.svg +1 -0
  250. package/dist/assets/fleet-02-fleet-02-rescue-tip-port.svg +1 -0
  251. package/dist/assets/fleet-02-fleet-02-rescue-tip-port.thick.svg +1 -0
  252. package/dist/assets/fleet-02-fleet-02-rescue-tip-starboard.painted.svg +1 -0
  253. package/dist/assets/fleet-02-fleet-02-rescue-tip-starboard.svg +1 -0
  254. package/dist/assets/fleet-02-fleet-02-rescue-tip-starboard.thick.svg +1 -0
  255. package/dist/assets/fleet-02-fleet-02-rescue-verniers.painted.svg +1 -0
  256. package/dist/assets/fleet-02-fleet-02-rescue-verniers.svg +1 -0
  257. package/dist/assets/fleet-02-fleet-02-rescue-verniers.thick.svg +1 -0
  258. package/dist/assets/fleet-02-fleet-02-rescue.painted.svg +1 -0
  259. package/dist/assets/fleet-02-fleet-02-rescue.svg +1 -0
  260. package/dist/assets/fleet-02-fleet-02-rescue.thick.svg +1 -0
  261. package/dist/assets/fleet-02-fleet-02-shadow-shield.painted.svg +1 -0
  262. package/dist/assets/fleet-02-fleet-02-shadow-shield.svg +1 -0
  263. package/dist/assets/fleet-02-fleet-02-shadow-shield.thick.svg +1 -0
  264. package/dist/assets/fleet-02-fleet-02-shield.painted.svg +1 -0
  265. package/dist/assets/fleet-02-fleet-02-shield.svg +1 -0
  266. package/dist/assets/fleet-02-fleet-02-shield.thick.svg +1 -0
  267. package/dist/assets/fleet-02-fleet-02-spine.painted.svg +1 -0
  268. package/dist/assets/fleet-02-fleet-02-spine.svg +1 -0
  269. package/dist/assets/fleet-02-fleet-02-spine.thick.svg +1 -0
  270. package/dist/assets/fleet-02-fleet-02-survey-apart.painted.svg +1 -0
  271. package/dist/assets/fleet-02-fleet-02-survey-apart.svg +1 -0
  272. package/dist/assets/fleet-02-fleet-02-survey-apart.thick.svg +1 -0
  273. package/dist/assets/fleet-02-fleet-02-survey-attitude-thrusters.painted.svg +1 -0
  274. package/dist/assets/fleet-02-fleet-02-survey-attitude-thrusters.svg +1 -0
  275. package/dist/assets/fleet-02-fleet-02-survey-attitude-thrusters.thick.svg +1 -0
  276. package/dist/assets/fleet-02-fleet-02-survey-cargo-1.painted.svg +1 -0
  277. package/dist/assets/fleet-02-fleet-02-survey-cargo-1.svg +1 -0
  278. package/dist/assets/fleet-02-fleet-02-survey-cargo-1.thick.svg +1 -0
  279. package/dist/assets/fleet-02-fleet-02-survey-cargo-2.painted.svg +1 -0
  280. package/dist/assets/fleet-02-fleet-02-survey-cargo-2.svg +1 -0
  281. package/dist/assets/fleet-02-fleet-02-survey-cargo-2.thick.svg +1 -0
  282. package/dist/assets/fleet-02-fleet-02-survey-cargo-3.painted.svg +1 -0
  283. package/dist/assets/fleet-02-fleet-02-survey-cargo-3.svg +1 -0
  284. package/dist/assets/fleet-02-fleet-02-survey-cargo-3.thick.svg +1 -0
  285. package/dist/assets/fleet-02-fleet-02-survey-cargo-4.painted.svg +1 -0
  286. package/dist/assets/fleet-02-fleet-02-survey-cargo-4.svg +1 -0
  287. package/dist/assets/fleet-02-fleet-02-survey-cargo-4.thick.svg +1 -0
  288. package/dist/assets/fleet-02-fleet-02-survey-cargo-inside.painted.svg +1 -0
  289. package/dist/assets/fleet-02-fleet-02-survey-cargo-inside.svg +1 -0
  290. package/dist/assets/fleet-02-fleet-02-survey-cargo-inside.thick.svg +1 -0
  291. package/dist/assets/fleet-02-fleet-02-survey-command-bridge.painted.svg +1 -0
  292. package/dist/assets/fleet-02-fleet-02-survey-command-bridge.svg +1 -0
  293. package/dist/assets/fleet-02-fleet-02-survey-command-bridge.thick.svg +1 -0
  294. package/dist/assets/fleet-02-fleet-02-survey-command-crew.painted.svg +1 -0
  295. package/dist/assets/fleet-02-fleet-02-survey-command-crew.svg +1 -0
  296. package/dist/assets/fleet-02-fleet-02-survey-command-crew.thick.svg +1 -0
  297. package/dist/assets/fleet-02-fleet-02-survey-command-medbay.painted.svg +1 -0
  298. package/dist/assets/fleet-02-fleet-02-survey-command-medbay.svg +1 -0
  299. package/dist/assets/fleet-02-fleet-02-survey-command-medbay.thick.svg +1 -0
  300. package/dist/assets/fleet-02-fleet-02-survey-command.painted.svg +1 -0
  301. package/dist/assets/fleet-02-fleet-02-survey-command.svg +1 -0
  302. package/dist/assets/fleet-02-fleet-02-survey-command.thick.svg +1 -0
  303. package/dist/assets/fleet-02-fleet-02-survey-dock-hangar.painted.svg +1 -0
  304. package/dist/assets/fleet-02-fleet-02-survey-dock-hangar.svg +1 -0
  305. package/dist/assets/fleet-02-fleet-02-survey-dock-hangar.thick.svg +1 -0
  306. package/dist/assets/fleet-02-fleet-02-survey-dock-works.painted.svg +1 -0
  307. package/dist/assets/fleet-02-fleet-02-survey-dock-works.svg +1 -0
  308. package/dist/assets/fleet-02-fleet-02-survey-dock-works.thick.svg +1 -0
  309. package/dist/assets/fleet-02-fleet-02-survey-dock.painted.svg +1 -0
  310. package/dist/assets/fleet-02-fleet-02-survey-dock.svg +1 -0
  311. package/dist/assets/fleet-02-fleet-02-survey-dock.thick.svg +1 -0
  312. package/dist/assets/fleet-02-fleet-02-survey-drive-engines.painted.svg +1 -0
  313. package/dist/assets/fleet-02-fleet-02-survey-drive-engines.svg +1 -0
  314. package/dist/assets/fleet-02-fleet-02-survey-drive-engines.thick.svg +1 -0
  315. package/dist/assets/fleet-02-fleet-02-survey-drive.painted.svg +1 -0
  316. package/dist/assets/fleet-02-fleet-02-survey-drive.svg +1 -0
  317. package/dist/assets/fleet-02-fleet-02-survey-drive.thick.svg +1 -0
  318. package/dist/assets/fleet-02-fleet-02-survey-farm-terrace-1.painted.svg +1 -0
  319. package/dist/assets/fleet-02-fleet-02-survey-farm-terrace-1.svg +1 -0
  320. package/dist/assets/fleet-02-fleet-02-survey-farm-terrace-1.thick.svg +1 -0
  321. package/dist/assets/fleet-02-fleet-02-survey-farm-terrace-2.painted.svg +1 -0
  322. package/dist/assets/fleet-02-fleet-02-survey-farm-terrace-2.svg +1 -0
  323. package/dist/assets/fleet-02-fleet-02-survey-farm-terrace-2.thick.svg +1 -0
  324. package/dist/assets/fleet-02-fleet-02-survey-farm-terrace-3.painted.svg +1 -0
  325. package/dist/assets/fleet-02-fleet-02-survey-farm-terrace-3.svg +1 -0
  326. package/dist/assets/fleet-02-fleet-02-survey-farm-terrace-3.thick.svg +1 -0
  327. package/dist/assets/fleet-02-fleet-02-survey-farm.painted.svg +1 -0
  328. package/dist/assets/fleet-02-fleet-02-survey-farm.svg +1 -0
  329. package/dist/assets/fleet-02-fleet-02-survey-farm.thick.svg +1 -0
  330. package/dist/assets/fleet-02-fleet-02-survey-habitat-a-deck-1.painted.svg +1 -0
  331. package/dist/assets/fleet-02-fleet-02-survey-habitat-a-deck-1.svg +1 -0
  332. package/dist/assets/fleet-02-fleet-02-survey-habitat-a-deck-1.thick.svg +1 -0
  333. package/dist/assets/fleet-02-fleet-02-survey-habitat-a-deck-2.painted.svg +1 -0
  334. package/dist/assets/fleet-02-fleet-02-survey-habitat-a-deck-2.svg +1 -0
  335. package/dist/assets/fleet-02-fleet-02-survey-habitat-a-deck-2.thick.svg +1 -0
  336. package/dist/assets/fleet-02-fleet-02-survey-habitat-a-deck-3.painted.svg +1 -0
  337. package/dist/assets/fleet-02-fleet-02-survey-habitat-a-deck-3.svg +1 -0
  338. package/dist/assets/fleet-02-fleet-02-survey-habitat-a-deck-3.thick.svg +1 -0
  339. package/dist/assets/fleet-02-fleet-02-survey-habitat-a.painted.svg +1 -0
  340. package/dist/assets/fleet-02-fleet-02-survey-habitat-a.svg +1 -0
  341. package/dist/assets/fleet-02-fleet-02-survey-habitat-a.thick.svg +1 -0
  342. package/dist/assets/fleet-02-fleet-02-survey-habitat-b-deck-1.painted.svg +1 -0
  343. package/dist/assets/fleet-02-fleet-02-survey-habitat-b-deck-1.svg +1 -0
  344. package/dist/assets/fleet-02-fleet-02-survey-habitat-b-deck-1.thick.svg +1 -0
  345. package/dist/assets/fleet-02-fleet-02-survey-habitat-b-deck-2.painted.svg +1 -0
  346. package/dist/assets/fleet-02-fleet-02-survey-habitat-b-deck-2.svg +1 -0
  347. package/dist/assets/fleet-02-fleet-02-survey-habitat-b-deck-2.thick.svg +1 -0
  348. package/dist/assets/fleet-02-fleet-02-survey-habitat-b-deck-3.painted.svg +1 -0
  349. package/dist/assets/fleet-02-fleet-02-survey-habitat-b-deck-3.svg +1 -0
  350. package/dist/assets/fleet-02-fleet-02-survey-habitat-b-deck-3.thick.svg +1 -0
  351. package/dist/assets/fleet-02-fleet-02-survey-habitat-b.painted.svg +1 -0
  352. package/dist/assets/fleet-02-fleet-02-survey-habitat-b.svg +1 -0
  353. package/dist/assets/fleet-02-fleet-02-survey-habitat-b.thick.svg +1 -0
  354. package/dist/assets/fleet-02-fleet-02-survey-header-tanks.painted.svg +1 -0
  355. package/dist/assets/fleet-02-fleet-02-survey-header-tanks.svg +1 -0
  356. package/dist/assets/fleet-02-fleet-02-survey-header-tanks.thick.svg +1 -0
  357. package/dist/assets/fleet-02-fleet-02-survey-pod-ventral.painted.svg +1 -0
  358. package/dist/assets/fleet-02-fleet-02-survey-pod-ventral.svg +1 -0
  359. package/dist/assets/fleet-02-fleet-02-survey-pod-ventral.thick.svg +1 -0
  360. package/dist/assets/fleet-02-fleet-02-survey-pod.painted.svg +1 -0
  361. package/dist/assets/fleet-02-fleet-02-survey-pod.svg +1 -0
  362. package/dist/assets/fleet-02-fleet-02-survey-pod.thick.svg +1 -0
  363. package/dist/assets/fleet-02-fleet-02-survey-propellant-lines.painted.svg +1 -0
  364. package/dist/assets/fleet-02-fleet-02-survey-propellant-lines.svg +1 -0
  365. package/dist/assets/fleet-02-fleet-02-survey-propellant-lines.thick.svg +1 -0
  366. package/dist/assets/fleet-02-fleet-02-survey-radiator-port.painted.svg +1 -0
  367. package/dist/assets/fleet-02-fleet-02-survey-radiator-port.svg +1 -0
  368. package/dist/assets/fleet-02-fleet-02-survey-radiator-port.thick.svg +1 -0
  369. package/dist/assets/fleet-02-fleet-02-survey-radiator-starboard.painted.svg +1 -0
  370. package/dist/assets/fleet-02-fleet-02-survey-radiator-starboard.svg +1 -0
  371. package/dist/assets/fleet-02-fleet-02-survey-radiator-starboard.thick.svg +1 -0
  372. package/dist/assets/fleet-02-fleet-02-survey-radiators-stowed.painted.svg +1 -0
  373. package/dist/assets/fleet-02-fleet-02-survey-radiators-stowed.svg +1 -0
  374. package/dist/assets/fleet-02-fleet-02-survey-radiators-stowed.thick.svg +1 -0
  375. package/dist/assets/fleet-02-fleet-02-survey-reactor-inside.painted.svg +1 -0
  376. package/dist/assets/fleet-02-fleet-02-survey-reactor-inside.svg +1 -0
  377. package/dist/assets/fleet-02-fleet-02-survey-reactor-inside.thick.svg +1 -0
  378. package/dist/assets/fleet-02-fleet-02-survey-reactor.painted.svg +1 -0
  379. package/dist/assets/fleet-02-fleet-02-survey-reactor.svg +1 -0
  380. package/dist/assets/fleet-02-fleet-02-survey-reactor.thick.svg +1 -0
  381. package/dist/assets/fleet-02-fleet-02-survey-shadow-shield.painted.svg +1 -0
  382. package/dist/assets/fleet-02-fleet-02-survey-shadow-shield.svg +1 -0
  383. package/dist/assets/fleet-02-fleet-02-survey-shadow-shield.thick.svg +1 -0
  384. package/dist/assets/fleet-02-fleet-02-survey-shield.painted.svg +1 -0
  385. package/dist/assets/fleet-02-fleet-02-survey-shield.svg +1 -0
  386. package/dist/assets/fleet-02-fleet-02-survey-shield.thick.svg +1 -0
  387. package/dist/assets/fleet-02-fleet-02-survey-spine.painted.svg +1 -0
  388. package/dist/assets/fleet-02-fleet-02-survey-spine.svg +1 -0
  389. package/dist/assets/fleet-02-fleet-02-survey-spine.thick.svg +1 -0
  390. package/dist/assets/fleet-02-fleet-02-survey-tank-1.painted.svg +1 -0
  391. package/dist/assets/fleet-02-fleet-02-survey-tank-1.svg +1 -0
  392. package/dist/assets/fleet-02-fleet-02-survey-tank-1.thick.svg +1 -0
  393. package/dist/assets/fleet-02-fleet-02-survey-tank-2.painted.svg +1 -0
  394. package/dist/assets/fleet-02-fleet-02-survey-tank-2.svg +1 -0
  395. package/dist/assets/fleet-02-fleet-02-survey-tank-2.thick.svg +1 -0
  396. package/dist/assets/fleet-02-fleet-02-survey-tank-3.painted.svg +1 -0
  397. package/dist/assets/fleet-02-fleet-02-survey-tank-3.svg +1 -0
  398. package/dist/assets/fleet-02-fleet-02-survey-tank-3.thick.svg +1 -0
  399. package/dist/assets/fleet-02-fleet-02-survey-tank-4.painted.svg +1 -0
  400. package/dist/assets/fleet-02-fleet-02-survey-tank-4.svg +1 -0
  401. package/dist/assets/fleet-02-fleet-02-survey-tank-4.thick.svg +1 -0
  402. package/dist/assets/fleet-02-fleet-02-survey-tank-inside.painted.svg +1 -0
  403. package/dist/assets/fleet-02-fleet-02-survey-tank-inside.svg +1 -0
  404. package/dist/assets/fleet-02-fleet-02-survey-tank-inside.thick.svg +1 -0
  405. package/dist/assets/fleet-02-fleet-02-survey-tip-port.painted.svg +1 -0
  406. package/dist/assets/fleet-02-fleet-02-survey-tip-port.svg +1 -0
  407. package/dist/assets/fleet-02-fleet-02-survey-tip-port.thick.svg +1 -0
  408. package/dist/assets/fleet-02-fleet-02-survey-tip-starboard.painted.svg +1 -0
  409. package/dist/assets/fleet-02-fleet-02-survey-tip-starboard.svg +1 -0
  410. package/dist/assets/fleet-02-fleet-02-survey-tip-starboard.thick.svg +1 -0
  411. package/dist/assets/fleet-02-fleet-02-survey-verniers.painted.svg +1 -0
  412. package/dist/assets/fleet-02-fleet-02-survey-verniers.svg +1 -0
  413. package/dist/assets/fleet-02-fleet-02-survey-verniers.thick.svg +1 -0
  414. package/dist/assets/fleet-02-fleet-02-survey.painted.svg +1 -0
  415. package/dist/assets/fleet-02-fleet-02-survey.svg +1 -0
  416. package/dist/assets/fleet-02-fleet-02-survey.thick.svg +1 -0
  417. package/dist/assets/fleet-02-fleet-02-tank-1.painted.svg +1 -0
  418. package/dist/assets/fleet-02-fleet-02-tank-1.svg +1 -0
  419. package/dist/assets/fleet-02-fleet-02-tank-1.thick.svg +1 -0
  420. package/dist/assets/fleet-02-fleet-02-tank-2.painted.svg +1 -0
  421. package/dist/assets/fleet-02-fleet-02-tank-2.svg +1 -0
  422. package/dist/assets/fleet-02-fleet-02-tank-2.thick.svg +1 -0
  423. package/dist/assets/fleet-02-fleet-02-tank-3.painted.svg +1 -0
  424. package/dist/assets/fleet-02-fleet-02-tank-3.svg +1 -0
  425. package/dist/assets/fleet-02-fleet-02-tank-3.thick.svg +1 -0
  426. package/dist/assets/fleet-02-fleet-02-tank-4.painted.svg +1 -0
  427. package/dist/assets/fleet-02-fleet-02-tank-4.svg +1 -0
  428. package/dist/assets/fleet-02-fleet-02-tank-4.thick.svg +1 -0
  429. package/dist/assets/fleet-02-fleet-02-tank-inside.painted.svg +1 -0
  430. package/dist/assets/fleet-02-fleet-02-tank-inside.svg +1 -0
  431. package/dist/assets/fleet-02-fleet-02-tank-inside.thick.svg +1 -0
  432. package/dist/assets/fleet-02-fleet-02-tanker-apart.painted.svg +1 -0
  433. package/dist/assets/fleet-02-fleet-02-tanker-apart.svg +1 -0
  434. package/dist/assets/fleet-02-fleet-02-tanker-apart.thick.svg +1 -0
  435. package/dist/assets/fleet-02-fleet-02-tanker-attitude-thrusters.painted.svg +1 -0
  436. package/dist/assets/fleet-02-fleet-02-tanker-attitude-thrusters.svg +1 -0
  437. package/dist/assets/fleet-02-fleet-02-tanker-attitude-thrusters.thick.svg +1 -0
  438. package/dist/assets/fleet-02-fleet-02-tanker-cargo-1.painted.svg +1 -0
  439. package/dist/assets/fleet-02-fleet-02-tanker-cargo-1.svg +1 -0
  440. package/dist/assets/fleet-02-fleet-02-tanker-cargo-1.thick.svg +1 -0
  441. package/dist/assets/fleet-02-fleet-02-tanker-cargo-2.painted.svg +1 -0
  442. package/dist/assets/fleet-02-fleet-02-tanker-cargo-2.svg +1 -0
  443. package/dist/assets/fleet-02-fleet-02-tanker-cargo-2.thick.svg +1 -0
  444. package/dist/assets/fleet-02-fleet-02-tanker-cargo-3.painted.svg +1 -0
  445. package/dist/assets/fleet-02-fleet-02-tanker-cargo-3.svg +1 -0
  446. package/dist/assets/fleet-02-fleet-02-tanker-cargo-3.thick.svg +1 -0
  447. package/dist/assets/fleet-02-fleet-02-tanker-cargo-4.painted.svg +1 -0
  448. package/dist/assets/fleet-02-fleet-02-tanker-cargo-4.svg +1 -0
  449. package/dist/assets/fleet-02-fleet-02-tanker-cargo-4.thick.svg +1 -0
  450. package/dist/assets/fleet-02-fleet-02-tanker-cargo-inside.painted.svg +1 -0
  451. package/dist/assets/fleet-02-fleet-02-tanker-cargo-inside.svg +1 -0
  452. package/dist/assets/fleet-02-fleet-02-tanker-cargo-inside.thick.svg +1 -0
  453. package/dist/assets/fleet-02-fleet-02-tanker-command-bridge.painted.svg +1 -0
  454. package/dist/assets/fleet-02-fleet-02-tanker-command-bridge.svg +1 -0
  455. package/dist/assets/fleet-02-fleet-02-tanker-command-bridge.thick.svg +1 -0
  456. package/dist/assets/fleet-02-fleet-02-tanker-command-crew.painted.svg +1 -0
  457. package/dist/assets/fleet-02-fleet-02-tanker-command-crew.svg +1 -0
  458. package/dist/assets/fleet-02-fleet-02-tanker-command-crew.thick.svg +1 -0
  459. package/dist/assets/fleet-02-fleet-02-tanker-command-medbay.painted.svg +1 -0
  460. package/dist/assets/fleet-02-fleet-02-tanker-command-medbay.svg +1 -0
  461. package/dist/assets/fleet-02-fleet-02-tanker-command-medbay.thick.svg +1 -0
  462. package/dist/assets/fleet-02-fleet-02-tanker-command.painted.svg +1 -0
  463. package/dist/assets/fleet-02-fleet-02-tanker-command.svg +1 -0
  464. package/dist/assets/fleet-02-fleet-02-tanker-command.thick.svg +1 -0
  465. package/dist/assets/fleet-02-fleet-02-tanker-dock-hangar.painted.svg +1 -0
  466. package/dist/assets/fleet-02-fleet-02-tanker-dock-hangar.svg +1 -0
  467. package/dist/assets/fleet-02-fleet-02-tanker-dock-hangar.thick.svg +1 -0
  468. package/dist/assets/fleet-02-fleet-02-tanker-dock-works.painted.svg +1 -0
  469. package/dist/assets/fleet-02-fleet-02-tanker-dock-works.svg +1 -0
  470. package/dist/assets/fleet-02-fleet-02-tanker-dock-works.thick.svg +1 -0
  471. package/dist/assets/fleet-02-fleet-02-tanker-dock.painted.svg +1 -0
  472. package/dist/assets/fleet-02-fleet-02-tanker-dock.svg +1 -0
  473. package/dist/assets/fleet-02-fleet-02-tanker-dock.thick.svg +1 -0
  474. package/dist/assets/fleet-02-fleet-02-tanker-drive-engines.painted.svg +1 -0
  475. package/dist/assets/fleet-02-fleet-02-tanker-drive-engines.svg +1 -0
  476. package/dist/assets/fleet-02-fleet-02-tanker-drive-engines.thick.svg +1 -0
  477. package/dist/assets/fleet-02-fleet-02-tanker-drive.painted.svg +1 -0
  478. package/dist/assets/fleet-02-fleet-02-tanker-drive.svg +1 -0
  479. package/dist/assets/fleet-02-fleet-02-tanker-drive.thick.svg +1 -0
  480. package/dist/assets/fleet-02-fleet-02-tanker-farm-terrace-1.painted.svg +1 -0
  481. package/dist/assets/fleet-02-fleet-02-tanker-farm-terrace-1.svg +1 -0
  482. package/dist/assets/fleet-02-fleet-02-tanker-farm-terrace-1.thick.svg +1 -0
  483. package/dist/assets/fleet-02-fleet-02-tanker-farm-terrace-2.painted.svg +1 -0
  484. package/dist/assets/fleet-02-fleet-02-tanker-farm-terrace-2.svg +1 -0
  485. package/dist/assets/fleet-02-fleet-02-tanker-farm-terrace-2.thick.svg +1 -0
  486. package/dist/assets/fleet-02-fleet-02-tanker-farm-terrace-3.painted.svg +1 -0
  487. package/dist/assets/fleet-02-fleet-02-tanker-farm-terrace-3.svg +1 -0
  488. package/dist/assets/fleet-02-fleet-02-tanker-farm-terrace-3.thick.svg +1 -0
  489. package/dist/assets/fleet-02-fleet-02-tanker-farm.painted.svg +1 -0
  490. package/dist/assets/fleet-02-fleet-02-tanker-farm.svg +1 -0
  491. package/dist/assets/fleet-02-fleet-02-tanker-farm.thick.svg +1 -0
  492. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a-deck-1.painted.svg +1 -0
  493. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a-deck-1.svg +1 -0
  494. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a-deck-1.thick.svg +1 -0
  495. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a-deck-2.painted.svg +1 -0
  496. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a-deck-2.svg +1 -0
  497. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a-deck-2.thick.svg +1 -0
  498. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a-deck-3.painted.svg +1 -0
  499. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a-deck-3.svg +1 -0
  500. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a-deck-3.thick.svg +1 -0
  501. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a.painted.svg +1 -0
  502. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a.svg +1 -0
  503. package/dist/assets/fleet-02-fleet-02-tanker-habitat-a.thick.svg +1 -0
  504. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b-deck-1.painted.svg +1 -0
  505. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b-deck-1.svg +1 -0
  506. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b-deck-1.thick.svg +1 -0
  507. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b-deck-2.painted.svg +1 -0
  508. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b-deck-2.svg +1 -0
  509. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b-deck-2.thick.svg +1 -0
  510. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b-deck-3.painted.svg +1 -0
  511. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b-deck-3.svg +1 -0
  512. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b-deck-3.thick.svg +1 -0
  513. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b.painted.svg +1 -0
  514. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b.svg +1 -0
  515. package/dist/assets/fleet-02-fleet-02-tanker-habitat-b.thick.svg +1 -0
  516. package/dist/assets/fleet-02-fleet-02-tanker-header-tanks.painted.svg +1 -0
  517. package/dist/assets/fleet-02-fleet-02-tanker-header-tanks.svg +1 -0
  518. package/dist/assets/fleet-02-fleet-02-tanker-header-tanks.thick.svg +1 -0
  519. package/dist/assets/fleet-02-fleet-02-tanker-pod-ventral.painted.svg +1 -0
  520. package/dist/assets/fleet-02-fleet-02-tanker-pod-ventral.svg +1 -0
  521. package/dist/assets/fleet-02-fleet-02-tanker-pod-ventral.thick.svg +1 -0
  522. package/dist/assets/fleet-02-fleet-02-tanker-pod.painted.svg +1 -0
  523. package/dist/assets/fleet-02-fleet-02-tanker-pod.svg +1 -0
  524. package/dist/assets/fleet-02-fleet-02-tanker-pod.thick.svg +1 -0
  525. package/dist/assets/fleet-02-fleet-02-tanker-propellant-lines.painted.svg +1 -0
  526. package/dist/assets/fleet-02-fleet-02-tanker-propellant-lines.svg +1 -0
  527. package/dist/assets/fleet-02-fleet-02-tanker-propellant-lines.thick.svg +1 -0
  528. package/dist/assets/fleet-02-fleet-02-tanker-radiator-port.painted.svg +1 -0
  529. package/dist/assets/fleet-02-fleet-02-tanker-radiator-port.svg +1 -0
  530. package/dist/assets/fleet-02-fleet-02-tanker-radiator-port.thick.svg +1 -0
  531. package/dist/assets/fleet-02-fleet-02-tanker-radiator-starboard.painted.svg +1 -0
  532. package/dist/assets/fleet-02-fleet-02-tanker-radiator-starboard.svg +1 -0
  533. package/dist/assets/fleet-02-fleet-02-tanker-radiator-starboard.thick.svg +1 -0
  534. package/dist/assets/fleet-02-fleet-02-tanker-radiators-stowed.painted.svg +1 -0
  535. package/dist/assets/fleet-02-fleet-02-tanker-radiators-stowed.svg +1 -0
  536. package/dist/assets/fleet-02-fleet-02-tanker-radiators-stowed.thick.svg +1 -0
  537. package/dist/assets/fleet-02-fleet-02-tanker-reactor-inside.painted.svg +1 -0
  538. package/dist/assets/fleet-02-fleet-02-tanker-reactor-inside.svg +1 -0
  539. package/dist/assets/fleet-02-fleet-02-tanker-reactor-inside.thick.svg +1 -0
  540. package/dist/assets/fleet-02-fleet-02-tanker-reactor.painted.svg +1 -0
  541. package/dist/assets/fleet-02-fleet-02-tanker-reactor.svg +1 -0
  542. package/dist/assets/fleet-02-fleet-02-tanker-reactor.thick.svg +1 -0
  543. package/dist/assets/fleet-02-fleet-02-tanker-shadow-shield.painted.svg +1 -0
  544. package/dist/assets/fleet-02-fleet-02-tanker-shadow-shield.svg +1 -0
  545. package/dist/assets/fleet-02-fleet-02-tanker-shadow-shield.thick.svg +1 -0
  546. package/dist/assets/fleet-02-fleet-02-tanker-shield.painted.svg +1 -0
  547. package/dist/assets/fleet-02-fleet-02-tanker-shield.svg +1 -0
  548. package/dist/assets/fleet-02-fleet-02-tanker-shield.thick.svg +1 -0
  549. package/dist/assets/fleet-02-fleet-02-tanker-spine.painted.svg +1 -0
  550. package/dist/assets/fleet-02-fleet-02-tanker-spine.svg +1 -0
  551. package/dist/assets/fleet-02-fleet-02-tanker-spine.thick.svg +1 -0
  552. package/dist/assets/fleet-02-fleet-02-tanker-tank-1.painted.svg +1 -0
  553. package/dist/assets/fleet-02-fleet-02-tanker-tank-1.svg +1 -0
  554. package/dist/assets/fleet-02-fleet-02-tanker-tank-1.thick.svg +1 -0
  555. package/dist/assets/fleet-02-fleet-02-tanker-tank-2.painted.svg +1 -0
  556. package/dist/assets/fleet-02-fleet-02-tanker-tank-2.svg +1 -0
  557. package/dist/assets/fleet-02-fleet-02-tanker-tank-2.thick.svg +1 -0
  558. package/dist/assets/fleet-02-fleet-02-tanker-tank-3.painted.svg +1 -0
  559. package/dist/assets/fleet-02-fleet-02-tanker-tank-3.svg +1 -0
  560. package/dist/assets/fleet-02-fleet-02-tanker-tank-3.thick.svg +1 -0
  561. package/dist/assets/fleet-02-fleet-02-tanker-tank-4.painted.svg +1 -0
  562. package/dist/assets/fleet-02-fleet-02-tanker-tank-4.svg +1 -0
  563. package/dist/assets/fleet-02-fleet-02-tanker-tank-4.thick.svg +1 -0
  564. package/dist/assets/fleet-02-fleet-02-tanker-tank-inside.painted.svg +1 -0
  565. package/dist/assets/fleet-02-fleet-02-tanker-tank-inside.svg +1 -0
  566. package/dist/assets/fleet-02-fleet-02-tanker-tank-inside.thick.svg +1 -0
  567. package/dist/assets/fleet-02-fleet-02-tanker-tip-port.painted.svg +1 -0
  568. package/dist/assets/fleet-02-fleet-02-tanker-tip-port.svg +1 -0
  569. package/dist/assets/fleet-02-fleet-02-tanker-tip-port.thick.svg +1 -0
  570. package/dist/assets/fleet-02-fleet-02-tanker-tip-starboard.painted.svg +1 -0
  571. package/dist/assets/fleet-02-fleet-02-tanker-tip-starboard.svg +1 -0
  572. package/dist/assets/fleet-02-fleet-02-tanker-tip-starboard.thick.svg +1 -0
  573. package/dist/assets/fleet-02-fleet-02-tanker-verniers.painted.svg +1 -0
  574. package/dist/assets/fleet-02-fleet-02-tanker-verniers.svg +1 -0
  575. package/dist/assets/fleet-02-fleet-02-tanker-verniers.thick.svg +1 -0
  576. package/dist/assets/fleet-02-fleet-02-tanker.painted.svg +1 -0
  577. package/dist/assets/fleet-02-fleet-02-tanker.svg +1 -0
  578. package/dist/assets/fleet-02-fleet-02-tanker.thick.svg +1 -0
  579. package/dist/assets/fleet-02-fleet-02-tip-port.painted.svg +1 -0
  580. package/dist/assets/fleet-02-fleet-02-tip-port.svg +1 -0
  581. package/dist/assets/fleet-02-fleet-02-tip-port.thick.svg +1 -0
  582. package/dist/assets/fleet-02-fleet-02-tip-starboard.painted.svg +1 -0
  583. package/dist/assets/fleet-02-fleet-02-tip-starboard.svg +1 -0
  584. package/dist/assets/fleet-02-fleet-02-tip-starboard.thick.svg +1 -0
  585. package/dist/assets/fleet-02-fleet-02-verniers.painted.svg +1 -0
  586. package/dist/assets/fleet-02-fleet-02-verniers.svg +1 -0
  587. package/dist/assets/fleet-02-fleet-02-verniers.thick.svg +1 -0
  588. package/dist/assets/fleet-02-fleet-02.painted.svg +1 -0
  589. package/dist/assets/fleet-02-fleet-02.svg +1 -0
  590. package/dist/assets/fleet-02-fleet-02.thick.svg +1 -0
  591. package/dist/assets/fleet-cargo-cargo-bay-4.painted.svg +1 -0
  592. package/dist/assets/fleet-cargo-cargo-bay-4.svg +1 -0
  593. package/dist/assets/fleet-cargo-cargo-bay-4.thick.svg +1 -0
  594. package/dist/assets/fleet-cargo-container-12-cold-cutaway.painted.svg +1 -0
  595. package/dist/assets/fleet-cargo-container-12-cold-cutaway.svg +1 -0
  596. package/dist/assets/fleet-cargo-container-12-cold-cutaway.thick.svg +1 -0
  597. package/dist/assets/fleet-cargo-container-12-cold.painted.svg +1 -0
  598. package/dist/assets/fleet-cargo-container-12-cold.svg +1 -0
  599. package/dist/assets/fleet-cargo-container-12-cold.thick.svg +1 -0
  600. package/dist/assets/fleet-cargo-container-12-cutaway.painted.svg +1 -0
  601. package/dist/assets/fleet-cargo-container-12-cutaway.svg +1 -0
  602. package/dist/assets/fleet-cargo-container-12-cutaway.thick.svg +1 -0
  603. package/dist/assets/fleet-cargo-container-12.painted.svg +1 -0
  604. package/dist/assets/fleet-cargo-container-12.svg +1 -0
  605. package/dist/assets/fleet-cargo-container-12.thick.svg +1 -0
  606. package/dist/assets/fleet-decks-common-area-m-cutaway.painted.svg +1 -0
  607. package/dist/assets/fleet-decks-common-area-m-cutaway.svg +1 -0
  608. package/dist/assets/fleet-decks-common-area-m-cutaway.thick.svg +1 -0
  609. package/dist/assets/fleet-decks-common-area-m.painted.svg +1 -0
  610. package/dist/assets/fleet-decks-common-area-m.svg +1 -0
  611. package/dist/assets/fleet-decks-common-area-m.thick.svg +1 -0
  612. package/dist/assets/fleet-decks-dome-observation-m-cutaway.painted.svg +1 -0
  613. package/dist/assets/fleet-decks-dome-observation-m-cutaway.svg +1 -0
  614. package/dist/assets/fleet-decks-dome-observation-m-cutaway.thick.svg +1 -0
  615. package/dist/assets/fleet-decks-dome-observation-m.painted.svg +1 -0
  616. package/dist/assets/fleet-decks-dome-observation-m.svg +1 -0
  617. package/dist/assets/fleet-decks-dome-observation-m.thick.svg +1 -0
  618. package/dist/assets/fleet-decks-eva-lock-m-cutaway.painted.svg +1 -0
  619. package/dist/assets/fleet-decks-eva-lock-m-cutaway.svg +1 -0
  620. package/dist/assets/fleet-decks-eva-lock-m-cutaway.thick.svg +1 -0
  621. package/dist/assets/fleet-decks-eva-lock-m.painted.svg +1 -0
  622. package/dist/assets/fleet-decks-eva-lock-m.svg +1 -0
  623. package/dist/assets/fleet-decks-eva-lock-m.thick.svg +1 -0
  624. package/dist/assets/fleet-decks-farm-drum-cutaway.painted.svg +1 -0
  625. package/dist/assets/fleet-decks-farm-drum-cutaway.svg +1 -0
  626. package/dist/assets/fleet-decks-farm-drum-cutaway.thick.svg +1 -0
  627. package/dist/assets/fleet-decks-farm-drum.painted.svg +1 -0
  628. package/dist/assets/fleet-decks-farm-drum.svg +1 -0
  629. package/dist/assets/fleet-decks-farm-drum.thick.svg +1 -0
  630. package/dist/assets/fleet-decks-solarium-m-cutaway.painted.svg +1 -0
  631. package/dist/assets/fleet-decks-solarium-m-cutaway.svg +1 -0
  632. package/dist/assets/fleet-decks-solarium-m-cutaway.thick.svg +1 -0
  633. package/dist/assets/fleet-decks-solarium-m.painted.svg +1 -0
  634. package/dist/assets/fleet-decks-solarium-m.svg +1 -0
  635. package/dist/assets/fleet-decks-solarium-m.thick.svg +1 -0
  636. package/dist/assets/fleet-decks-store-drum-m-cutaway.painted.svg +1 -0
  637. package/dist/assets/fleet-decks-store-drum-m-cutaway.svg +1 -0
  638. package/dist/assets/fleet-decks-store-drum-m-cutaway.thick.svg +1 -0
  639. package/dist/assets/fleet-decks-store-drum-m.painted.svg +1 -0
  640. package/dist/assets/fleet-decks-store-drum-m.svg +1 -0
  641. package/dist/assets/fleet-decks-store-drum-m.thick.svg +1 -0
  642. package/dist/assets/fleet-engines-engine-fusion-1.painted.svg +1 -0
  643. package/dist/assets/fleet-engines-engine-fusion-1.svg +1 -0
  644. package/dist/assets/fleet-engines-engine-fusion-1.thick.svg +1 -0
  645. package/dist/assets/fleet-engines-engine-fusion-3.painted.svg +1 -0
  646. package/dist/assets/fleet-engines-engine-fusion-3.svg +1 -0
  647. package/dist/assets/fleet-engines-engine-fusion-3.thick.svg +1 -0
  648. package/dist/assets/fleet-engines-engine-fusion-4.painted.svg +1 -0
  649. package/dist/assets/fleet-engines-engine-fusion-4.svg +1 -0
  650. package/dist/assets/fleet-engines-engine-fusion-4.thick.svg +1 -0
  651. package/dist/assets/fleet-engines-engine-fusion-7.painted.svg +1 -0
  652. package/dist/assets/fleet-engines-engine-fusion-7.svg +1 -0
  653. package/dist/assets/fleet-engines-engine-fusion-7.thick.svg +1 -0
  654. package/dist/assets/fleet-engines-rcs-ring-m.painted.svg +1 -0
  655. package/dist/assets/fleet-engines-rcs-ring-m.svg +1 -0
  656. package/dist/assets/fleet-engines-rcs-ring-m.thick.svg +1 -0
  657. package/dist/assets/fleet-engines-thruster-pod-s.painted.svg +1 -0
  658. package/dist/assets/fleet-engines-thruster-pod-s.svg +1 -0
  659. package/dist/assets/fleet-engines-thruster-pod-s.thick.svg +1 -0
  660. package/dist/assets/fleet-habitats-habitat-drum-crew-cutaway.painted.svg +1 -0
  661. package/dist/assets/fleet-habitats-habitat-drum-crew-cutaway.svg +1 -0
  662. package/dist/assets/fleet-habitats-habitat-drum-crew-cutaway.thick.svg +1 -0
  663. package/dist/assets/fleet-habitats-habitat-drum-crew.painted.svg +1 -0
  664. package/dist/assets/fleet-habitats-habitat-drum-crew.svg +1 -0
  665. package/dist/assets/fleet-habitats-habitat-drum-crew.thick.svg +1 -0
  666. package/dist/assets/fleet-habitats-habitat-drum-large-cutaway.painted.svg +1 -0
  667. package/dist/assets/fleet-habitats-habitat-drum-large-cutaway.svg +1 -0
  668. package/dist/assets/fleet-habitats-habitat-drum-large-cutaway.thick.svg +1 -0
  669. package/dist/assets/fleet-habitats-habitat-drum-large.painted.svg +1 -0
  670. package/dist/assets/fleet-habitats-habitat-drum-large.svg +1 -0
  671. package/dist/assets/fleet-habitats-habitat-drum-large.thick.svg +1 -0
  672. package/dist/assets/fleet-habitats-habitat-ring-16-cutaway.painted.svg +1 -0
  673. package/dist/assets/fleet-habitats-habitat-ring-16-cutaway.svg +1 -0
  674. package/dist/assets/fleet-habitats-habitat-ring-16-cutaway.thick.svg +1 -0
  675. package/dist/assets/fleet-habitats-habitat-ring-16.painted.svg +1 -0
  676. package/dist/assets/fleet-habitats-habitat-ring-16.svg +1 -0
  677. package/dist/assets/fleet-habitats-habitat-ring-16.thick.svg +1 -0
  678. package/dist/assets/fleet-habitats-habitat-ring-30-cutaway.painted.svg +1 -0
  679. package/dist/assets/fleet-habitats-habitat-ring-30-cutaway.svg +1 -0
  680. package/dist/assets/fleet-habitats-habitat-ring-30-cutaway.thick.svg +1 -0
  681. package/dist/assets/fleet-habitats-habitat-ring-30.painted.svg +1 -0
  682. package/dist/assets/fleet-habitats-habitat-ring-30.svg +1 -0
  683. package/dist/assets/fleet-habitats-habitat-ring-30.thick.svg +1 -0
  684. package/dist/assets/fleet-insets-docking-port-apart.painted.svg +1 -0
  685. package/dist/assets/fleet-insets-docking-port-apart.svg +1 -0
  686. package/dist/assets/fleet-insets-docking-port-apart.thick.svg +1 -0
  687. package/dist/assets/fleet-insets-docking-port-part-1.painted.svg +1 -0
  688. package/dist/assets/fleet-insets-docking-port-part-1.svg +1 -0
  689. package/dist/assets/fleet-insets-docking-port-part-1.thick.svg +1 -0
  690. package/dist/assets/fleet-insets-docking-port-part-2.painted.svg +1 -0
  691. package/dist/assets/fleet-insets-docking-port-part-2.svg +1 -0
  692. package/dist/assets/fleet-insets-docking-port-part-2.thick.svg +1 -0
  693. package/dist/assets/fleet-insets-docking-port-part-3.painted.svg +1 -0
  694. package/dist/assets/fleet-insets-docking-port-part-3.svg +1 -0
  695. package/dist/assets/fleet-insets-docking-port-part-3.thick.svg +1 -0
  696. package/dist/assets/fleet-insets-docking-port-part-4.painted.svg +1 -0
  697. package/dist/assets/fleet-insets-docking-port-part-4.svg +1 -0
  698. package/dist/assets/fleet-insets-docking-port-part-4.thick.svg +1 -0
  699. package/dist/assets/fleet-insets-docking-port-part-5.painted.svg +1 -0
  700. package/dist/assets/fleet-insets-docking-port-part-5.svg +1 -0
  701. package/dist/assets/fleet-insets-docking-port-part-5.thick.svg +1 -0
  702. package/dist/assets/fleet-insets-docking-port.painted.svg +1 -0
  703. package/dist/assets/fleet-insets-docking-port.svg +1 -0
  704. package/dist/assets/fleet-insets-docking-port.thick.svg +1 -0
  705. package/dist/assets/fleet-insets-life-support-apart.painted.svg +1 -0
  706. package/dist/assets/fleet-insets-life-support-apart.svg +1 -0
  707. package/dist/assets/fleet-insets-life-support-apart.thick.svg +1 -0
  708. package/dist/assets/fleet-insets-life-support-part-1.painted.svg +1 -0
  709. package/dist/assets/fleet-insets-life-support-part-1.svg +1 -0
  710. package/dist/assets/fleet-insets-life-support-part-1.thick.svg +1 -0
  711. package/dist/assets/fleet-insets-life-support-part-2.painted.svg +1 -0
  712. package/dist/assets/fleet-insets-life-support-part-2.svg +1 -0
  713. package/dist/assets/fleet-insets-life-support-part-2.thick.svg +1 -0
  714. package/dist/assets/fleet-insets-life-support-part-3.painted.svg +1 -0
  715. package/dist/assets/fleet-insets-life-support-part-3.svg +1 -0
  716. package/dist/assets/fleet-insets-life-support-part-3.thick.svg +1 -0
  717. package/dist/assets/fleet-insets-life-support-part-4.painted.svg +1 -0
  718. package/dist/assets/fleet-insets-life-support-part-4.svg +1 -0
  719. package/dist/assets/fleet-insets-life-support-part-4.thick.svg +1 -0
  720. package/dist/assets/fleet-insets-life-support-part-5.painted.svg +1 -0
  721. package/dist/assets/fleet-insets-life-support-part-5.svg +1 -0
  722. package/dist/assets/fleet-insets-life-support-part-5.thick.svg +1 -0
  723. package/dist/assets/fleet-insets-life-support-part-6.painted.svg +1 -0
  724. package/dist/assets/fleet-insets-life-support-part-6.svg +1 -0
  725. package/dist/assets/fleet-insets-life-support-part-6.thick.svg +1 -0
  726. package/dist/assets/fleet-insets-life-support.painted.svg +1 -0
  727. package/dist/assets/fleet-insets-life-support.svg +1 -0
  728. package/dist/assets/fleet-insets-life-support.thick.svg +1 -0
  729. package/dist/assets/fleet-insets-nav-sensors-apart.painted.svg +1 -0
  730. package/dist/assets/fleet-insets-nav-sensors-apart.svg +1 -0
  731. package/dist/assets/fleet-insets-nav-sensors-apart.thick.svg +1 -0
  732. package/dist/assets/fleet-insets-nav-sensors-part-1.painted.svg +1 -0
  733. package/dist/assets/fleet-insets-nav-sensors-part-1.svg +1 -0
  734. package/dist/assets/fleet-insets-nav-sensors-part-1.thick.svg +1 -0
  735. package/dist/assets/fleet-insets-nav-sensors-part-2.painted.svg +1 -0
  736. package/dist/assets/fleet-insets-nav-sensors-part-2.svg +1 -0
  737. package/dist/assets/fleet-insets-nav-sensors-part-2.thick.svg +1 -0
  738. package/dist/assets/fleet-insets-nav-sensors-part-3.painted.svg +1 -0
  739. package/dist/assets/fleet-insets-nav-sensors-part-3.svg +1 -0
  740. package/dist/assets/fleet-insets-nav-sensors-part-3.thick.svg +1 -0
  741. package/dist/assets/fleet-insets-nav-sensors-part-4.painted.svg +1 -0
  742. package/dist/assets/fleet-insets-nav-sensors-part-4.svg +1 -0
  743. package/dist/assets/fleet-insets-nav-sensors-part-4.thick.svg +1 -0
  744. package/dist/assets/fleet-insets-nav-sensors-part-5.painted.svg +1 -0
  745. package/dist/assets/fleet-insets-nav-sensors-part-5.svg +1 -0
  746. package/dist/assets/fleet-insets-nav-sensors-part-5.thick.svg +1 -0
  747. package/dist/assets/fleet-insets-nav-sensors-part-6.painted.svg +1 -0
  748. package/dist/assets/fleet-insets-nav-sensors-part-6.svg +1 -0
  749. package/dist/assets/fleet-insets-nav-sensors-part-6.thick.svg +1 -0
  750. package/dist/assets/fleet-insets-nav-sensors.painted.svg +1 -0
  751. package/dist/assets/fleet-insets-nav-sensors.svg +1 -0
  752. package/dist/assets/fleet-insets-nav-sensors.thick.svg +1 -0
  753. package/dist/assets/fleet-insets-reactor-core-apart.painted.svg +1 -0
  754. package/dist/assets/fleet-insets-reactor-core-apart.svg +1 -0
  755. package/dist/assets/fleet-insets-reactor-core-apart.thick.svg +1 -0
  756. package/dist/assets/fleet-insets-reactor-core-part-1.painted.svg +1 -0
  757. package/dist/assets/fleet-insets-reactor-core-part-1.svg +1 -0
  758. package/dist/assets/fleet-insets-reactor-core-part-1.thick.svg +1 -0
  759. package/dist/assets/fleet-insets-reactor-core-part-2.painted.svg +1 -0
  760. package/dist/assets/fleet-insets-reactor-core-part-2.svg +1 -0
  761. package/dist/assets/fleet-insets-reactor-core-part-2.thick.svg +1 -0
  762. package/dist/assets/fleet-insets-reactor-core-part-3.painted.svg +1 -0
  763. package/dist/assets/fleet-insets-reactor-core-part-3.svg +1 -0
  764. package/dist/assets/fleet-insets-reactor-core-part-3.thick.svg +1 -0
  765. package/dist/assets/fleet-insets-reactor-core-part-4.painted.svg +1 -0
  766. package/dist/assets/fleet-insets-reactor-core-part-4.svg +1 -0
  767. package/dist/assets/fleet-insets-reactor-core-part-4.thick.svg +1 -0
  768. package/dist/assets/fleet-insets-reactor-core-part-5.painted.svg +1 -0
  769. package/dist/assets/fleet-insets-reactor-core-part-5.svg +1 -0
  770. package/dist/assets/fleet-insets-reactor-core-part-5.thick.svg +1 -0
  771. package/dist/assets/fleet-insets-reactor-core-part-6.painted.svg +1 -0
  772. package/dist/assets/fleet-insets-reactor-core-part-6.svg +1 -0
  773. package/dist/assets/fleet-insets-reactor-core-part-6.thick.svg +1 -0
  774. package/dist/assets/fleet-insets-reactor-core.painted.svg +1 -0
  775. package/dist/assets/fleet-insets-reactor-core.svg +1 -0
  776. package/dist/assets/fleet-insets-reactor-core.thick.svg +1 -0
  777. package/dist/assets/fleet-insets-ship-03-card-main.painted.svg +1 -0
  778. package/dist/assets/fleet-insets-ship-03-card-main.svg +1 -0
  779. package/dist/assets/fleet-insets-ship-03-card-main.thick.svg +1 -0
  780. package/dist/assets/fleet-insets-ship-03-card-vernier.painted.svg +1 -0
  781. package/dist/assets/fleet-insets-ship-03-card-vernier.svg +1 -0
  782. package/dist/assets/fleet-insets-ship-03-card-vernier.thick.svg +1 -0
  783. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-apart.painted.svg +1 -0
  784. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-apart.svg +1 -0
  785. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-apart.thick.svg +1 -0
  786. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-1.painted.svg +1 -0
  787. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-1.svg +1 -0
  788. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-1.thick.svg +1 -0
  789. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-2.painted.svg +1 -0
  790. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-2.svg +1 -0
  791. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-2.thick.svg +1 -0
  792. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-3.painted.svg +1 -0
  793. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-3.svg +1 -0
  794. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-3.thick.svg +1 -0
  795. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-4.painted.svg +1 -0
  796. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-4.svg +1 -0
  797. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-4.thick.svg +1 -0
  798. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-5.painted.svg +1 -0
  799. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-5.svg +1 -0
  800. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-5.thick.svg +1 -0
  801. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-6.painted.svg +1 -0
  802. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-6.svg +1 -0
  803. package/dist/assets/fleet-insets-ship-03-ship-03-citadel-ship-03-citadel-6.thick.svg +1 -0
  804. package/dist/assets/fleet-insets-ship-03-ship-03-citadel.painted.svg +1 -0
  805. package/dist/assets/fleet-insets-ship-03-ship-03-citadel.svg +1 -0
  806. package/dist/assets/fleet-insets-ship-03-ship-03-citadel.thick.svg +1 -0
  807. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-apart.painted.svg +1 -0
  808. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-apart.svg +1 -0
  809. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-apart.thick.svg +1 -0
  810. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-1.painted.svg +1 -0
  811. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-1.svg +1 -0
  812. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-1.thick.svg +1 -0
  813. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-2.painted.svg +1 -0
  814. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-2.svg +1 -0
  815. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-2.thick.svg +1 -0
  816. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-3.painted.svg +1 -0
  817. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-3.svg +1 -0
  818. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-3.thick.svg +1 -0
  819. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-4.painted.svg +1 -0
  820. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-4.svg +1 -0
  821. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-4.thick.svg +1 -0
  822. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-5.painted.svg +1 -0
  823. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-5.svg +1 -0
  824. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-5.thick.svg +1 -0
  825. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-6.painted.svg +1 -0
  826. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-6.svg +1 -0
  827. package/dist/assets/fleet-insets-ship-03-ship-03-hangars-ship-03-hangars-6.thick.svg +1 -0
  828. package/dist/assets/fleet-insets-ship-03-ship-03-hangars.painted.svg +1 -0
  829. package/dist/assets/fleet-insets-ship-03-ship-03-hangars.svg +1 -0
  830. package/dist/assets/fleet-insets-ship-03-ship-03-hangars.thick.svg +1 -0
  831. package/dist/assets/fleet-insets-ship-03-ship-03-medical-apart.painted.svg +1 -0
  832. package/dist/assets/fleet-insets-ship-03-ship-03-medical-apart.svg +1 -0
  833. package/dist/assets/fleet-insets-ship-03-ship-03-medical-apart.thick.svg +1 -0
  834. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-1.painted.svg +1 -0
  835. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-1.svg +1 -0
  836. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-1.thick.svg +1 -0
  837. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-2.painted.svg +1 -0
  838. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-2.svg +1 -0
  839. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-2.thick.svg +1 -0
  840. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-3.painted.svg +1 -0
  841. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-3.svg +1 -0
  842. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-3.thick.svg +1 -0
  843. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-4.painted.svg +1 -0
  844. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-4.svg +1 -0
  845. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-4.thick.svg +1 -0
  846. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-5.painted.svg +1 -0
  847. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-5.svg +1 -0
  848. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-5.thick.svg +1 -0
  849. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-6.painted.svg +1 -0
  850. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-6.svg +1 -0
  851. package/dist/assets/fleet-insets-ship-03-ship-03-medical-ship-03-medical-6.thick.svg +1 -0
  852. package/dist/assets/fleet-insets-ship-03-ship-03-medical.painted.svg +1 -0
  853. package/dist/assets/fleet-insets-ship-03-ship-03-medical.svg +1 -0
  854. package/dist/assets/fleet-insets-ship-03-ship-03-medical.thick.svg +1 -0
  855. package/dist/assets/fleet-labs-deck-nav-m-cutaway.painted.svg +1 -0
  856. package/dist/assets/fleet-labs-deck-nav-m-cutaway.svg +1 -0
  857. package/dist/assets/fleet-labs-deck-nav-m-cutaway.thick.svg +1 -0
  858. package/dist/assets/fleet-labs-deck-nav-m.painted.svg +1 -0
  859. package/dist/assets/fleet-labs-deck-nav-m.svg +1 -0
  860. package/dist/assets/fleet-labs-deck-nav-m.thick.svg +1 -0
  861. package/dist/assets/fleet-labs-lab-m-cutaway.painted.svg +1 -0
  862. package/dist/assets/fleet-labs-lab-m-cutaway.svg +1 -0
  863. package/dist/assets/fleet-labs-lab-m-cutaway.thick.svg +1 -0
  864. package/dist/assets/fleet-labs-lab-m.painted.svg +1 -0
  865. package/dist/assets/fleet-labs-lab-m.svg +1 -0
  866. package/dist/assets/fleet-labs-lab-m.thick.svg +1 -0
  867. package/dist/assets/fleet-labs-pod-medical-m-cutaway.painted.svg +1 -0
  868. package/dist/assets/fleet-labs-pod-medical-m-cutaway.svg +1 -0
  869. package/dist/assets/fleet-labs-pod-medical-m-cutaway.thick.svg +1 -0
  870. package/dist/assets/fleet-labs-pod-medical-m.painted.svg +1 -0
  871. package/dist/assets/fleet-labs-pod-medical-m.svg +1 -0
  872. package/dist/assets/fleet-labs-pod-medical-m.thick.svg +1 -0
  873. package/dist/assets/fleet-labs-pod-survey-m-cutaway.painted.svg +1 -0
  874. package/dist/assets/fleet-labs-pod-survey-m-cutaway.svg +1 -0
  875. package/dist/assets/fleet-labs-pod-survey-m-cutaway.thick.svg +1 -0
  876. package/dist/assets/fleet-labs-pod-survey-m.painted.svg +1 -0
  877. package/dist/assets/fleet-labs-pod-survey-m.svg +1 -0
  878. package/dist/assets/fleet-labs-pod-survey-m.thick.svg +1 -0
  879. package/dist/assets/fleet-samples-hauler-adapter-l-m-10.painted.svg +1 -0
  880. package/dist/assets/fleet-samples-hauler-adapter-l-m-10.svg +1 -0
  881. package/dist/assets/fleet-samples-hauler-adapter-l-m-10.thick.svg +1 -0
  882. package/dist/assets/fleet-samples-hauler-apart.painted.svg +1 -0
  883. package/dist/assets/fleet-samples-hauler-apart.svg +1 -0
  884. package/dist/assets/fleet-samples-hauler-apart.thick.svg +1 -0
  885. package/dist/assets/fleet-samples-hauler-cargo-bay-4-4.painted.svg +1 -0
  886. package/dist/assets/fleet-samples-hauler-cargo-bay-4-4.svg +1 -0
  887. package/dist/assets/fleet-samples-hauler-cargo-bay-4-4.thick.svg +1 -0
  888. package/dist/assets/fleet-samples-hauler-common-area-m-11.painted.svg +1 -0
  889. package/dist/assets/fleet-samples-hauler-common-area-m-11.svg +1 -0
  890. package/dist/assets/fleet-samples-hauler-common-area-m-11.thick.svg +1 -0
  891. package/dist/assets/fleet-samples-hauler-container-12-5.painted.svg +1 -0
  892. package/dist/assets/fleet-samples-hauler-container-12-5.svg +1 -0
  893. package/dist/assets/fleet-samples-hauler-container-12-5.thick.svg +1 -0
  894. package/dist/assets/fleet-samples-hauler-container-12-7.painted.svg +1 -0
  895. package/dist/assets/fleet-samples-hauler-container-12-7.svg +1 -0
  896. package/dist/assets/fleet-samples-hauler-container-12-7.thick.svg +1 -0
  897. package/dist/assets/fleet-samples-hauler-container-12-8.painted.svg +1 -0
  898. package/dist/assets/fleet-samples-hauler-container-12-8.svg +1 -0
  899. package/dist/assets/fleet-samples-hauler-container-12-8.thick.svg +1 -0
  900. package/dist/assets/fleet-samples-hauler-container-12-cold-6.painted.svg +1 -0
  901. package/dist/assets/fleet-samples-hauler-container-12-cold-6.svg +1 -0
  902. package/dist/assets/fleet-samples-hauler-container-12-cold-6.thick.svg +1 -0
  903. package/dist/assets/fleet-samples-hauler-deck-nav-m-16.painted.svg +1 -0
  904. package/dist/assets/fleet-samples-hauler-deck-nav-m-16.svg +1 -0
  905. package/dist/assets/fleet-samples-hauler-deck-nav-m-16.thick.svg +1 -0
  906. package/dist/assets/fleet-samples-hauler-engine-fusion-7-1.painted.svg +1 -0
  907. package/dist/assets/fleet-samples-hauler-engine-fusion-7-1.svg +1 -0
  908. package/dist/assets/fleet-samples-hauler-engine-fusion-7-1.thick.svg +1 -0
  909. package/dist/assets/fleet-samples-hauler-eva-lock-m-13.painted.svg +1 -0
  910. package/dist/assets/fleet-samples-hauler-eva-lock-m-13.svg +1 -0
  911. package/dist/assets/fleet-samples-hauler-eva-lock-m-13.thick.svg +1 -0
  912. package/dist/assets/fleet-samples-hauler-habitat-drum-large-9.painted.svg +1 -0
  913. package/dist/assets/fleet-samples-hauler-habitat-drum-large-9.svg +1 -0
  914. package/dist/assets/fleet-samples-hauler-habitat-drum-large-9.thick.svg +1 -0
  915. package/dist/assets/fleet-samples-hauler-habitat-ring-16-12.painted.svg +1 -0
  916. package/dist/assets/fleet-samples-hauler-habitat-ring-16-12.svg +1 -0
  917. package/dist/assets/fleet-samples-hauler-habitat-ring-16-12.thick.svg +1 -0
  918. package/dist/assets/fleet-samples-hauler-lab-m-15.painted.svg +1 -0
  919. package/dist/assets/fleet-samples-hauler-lab-m-15.svg +1 -0
  920. package/dist/assets/fleet-samples-hauler-lab-m-15.thick.svg +1 -0
  921. package/dist/assets/fleet-samples-hauler-mast-sensor-40-17.painted.svg +1 -0
  922. package/dist/assets/fleet-samples-hauler-mast-sensor-40-17.svg +1 -0
  923. package/dist/assets/fleet-samples-hauler-mast-sensor-40-17.thick.svg +1 -0
  924. package/dist/assets/fleet-samples-hauler-pod-survey-m-14.painted.svg +1 -0
  925. package/dist/assets/fleet-samples-hauler-pod-survey-m-14.svg +1 -0
  926. package/dist/assets/fleet-samples-hauler-pod-survey-m-14.thick.svg +1 -0
  927. package/dist/assets/fleet-samples-hauler-reactor-fusion-3.painted.svg +1 -0
  928. package/dist/assets/fleet-samples-hauler-reactor-fusion-3.svg +1 -0
  929. package/dist/assets/fleet-samples-hauler-reactor-fusion-3.thick.svg +1 -0
  930. package/dist/assets/fleet-samples-hauler-tank-cryo-24-2.painted.svg +1 -0
  931. package/dist/assets/fleet-samples-hauler-tank-cryo-24-2.svg +1 -0
  932. package/dist/assets/fleet-samples-hauler-tank-cryo-24-2.thick.svg +1 -0
  933. package/dist/assets/fleet-samples-hauler.painted.svg +1 -0
  934. package/dist/assets/fleet-samples-hauler.svg +1 -0
  935. package/dist/assets/fleet-samples-hauler.thick.svg +1 -0
  936. package/dist/assets/fleet-ship-03-miyamoto-apart.painted.svg +1 -0
  937. package/dist/assets/fleet-ship-03-miyamoto-apart.svg +1 -0
  938. package/dist/assets/fleet-ship-03-miyamoto-apart.thick.svg +1 -0
  939. package/dist/assets/fleet-ship-03-miyamoto-array-apart.painted.svg +1 -0
  940. package/dist/assets/fleet-ship-03-miyamoto-array-apart.svg +1 -0
  941. package/dist/assets/fleet-ship-03-miyamoto-array-apart.thick.svg +1 -0
  942. package/dist/assets/fleet-ship-03-miyamoto-array-array.painted.svg +1 -0
  943. package/dist/assets/fleet-ship-03-miyamoto-array-array.svg +1 -0
  944. package/dist/assets/fleet-ship-03-miyamoto-array-array.thick.svg +1 -0
  945. package/dist/assets/fleet-ship-03-miyamoto-array-bow.painted.svg +1 -0
  946. package/dist/assets/fleet-ship-03-miyamoto-array-bow.svg +1 -0
  947. package/dist/assets/fleet-ship-03-miyamoto-array-bow.thick.svg +1 -0
  948. package/dist/assets/fleet-ship-03-miyamoto-array-command.painted.svg +1 -0
  949. package/dist/assets/fleet-ship-03-miyamoto-array-command.svg +1 -0
  950. package/dist/assets/fleet-ship-03-miyamoto-array-command.thick.svg +1 -0
  951. package/dist/assets/fleet-ship-03-miyamoto-array-drive-collar.painted.svg +1 -0
  952. package/dist/assets/fleet-ship-03-miyamoto-array-drive-collar.svg +1 -0
  953. package/dist/assets/fleet-ship-03-miyamoto-array-drive-collar.thick.svg +1 -0
  954. package/dist/assets/fleet-ship-03-miyamoto-array-drive.painted.svg +1 -0
  955. package/dist/assets/fleet-ship-03-miyamoto-array-drive.svg +1 -0
  956. package/dist/assets/fleet-ship-03-miyamoto-array-drive.thick.svg +1 -0
  957. package/dist/assets/fleet-ship-03-miyamoto-array-engineering.painted.svg +1 -0
  958. package/dist/assets/fleet-ship-03-miyamoto-array-engineering.svg +1 -0
  959. package/dist/assets/fleet-ship-03-miyamoto-array-engineering.thick.svg +1 -0
  960. package/dist/assets/fleet-ship-03-miyamoto-array-fuel-aft.painted.svg +1 -0
  961. package/dist/assets/fleet-ship-03-miyamoto-array-fuel-aft.svg +1 -0
  962. package/dist/assets/fleet-ship-03-miyamoto-array-fuel-aft.thick.svg +1 -0
  963. package/dist/assets/fleet-ship-03-miyamoto-array-fuel-fore.painted.svg +1 -0
  964. package/dist/assets/fleet-ship-03-miyamoto-array-fuel-fore.svg +1 -0
  965. package/dist/assets/fleet-ship-03-miyamoto-array-fuel-fore.thick.svg +1 -0
  966. package/dist/assets/fleet-ship-03-miyamoto-array-habitat.painted.svg +1 -0
  967. package/dist/assets/fleet-ship-03-miyamoto-array-habitat.svg +1 -0
  968. package/dist/assets/fleet-ship-03-miyamoto-array-habitat.thick.svg +1 -0
  969. package/dist/assets/fleet-ship-03-miyamoto-array-hangar-port.painted.svg +1 -0
  970. package/dist/assets/fleet-ship-03-miyamoto-array-hangar-port.svg +1 -0
  971. package/dist/assets/fleet-ship-03-miyamoto-array-hangar-port.thick.svg +1 -0
  972. package/dist/assets/fleet-ship-03-miyamoto-array-hangar-starboard.painted.svg +1 -0
  973. package/dist/assets/fleet-ship-03-miyamoto-array-hangar-starboard.svg +1 -0
  974. package/dist/assets/fleet-ship-03-miyamoto-array-hangar-starboard.thick.svg +1 -0
  975. package/dist/assets/fleet-ship-03-miyamoto-array-pod.painted.svg +1 -0
  976. package/dist/assets/fleet-ship-03-miyamoto-array-pod.svg +1 -0
  977. package/dist/assets/fleet-ship-03-miyamoto-array-pod.thick.svg +1 -0
  978. package/dist/assets/fleet-ship-03-miyamoto-array-radiators-dorsal.painted.svg +1 -0
  979. package/dist/assets/fleet-ship-03-miyamoto-array-radiators-dorsal.svg +1 -0
  980. package/dist/assets/fleet-ship-03-miyamoto-array-radiators-dorsal.thick.svg +1 -0
  981. package/dist/assets/fleet-ship-03-miyamoto-array-radiators-ventral.painted.svg +1 -0
  982. package/dist/assets/fleet-ship-03-miyamoto-array-radiators-ventral.svg +1 -0
  983. package/dist/assets/fleet-ship-03-miyamoto-array-radiators-ventral.thick.svg +1 -0
  984. package/dist/assets/fleet-ship-03-miyamoto-array.painted.svg +1 -0
  985. package/dist/assets/fleet-ship-03-miyamoto-array.svg +1 -0
  986. package/dist/assets/fleet-ship-03-miyamoto-array.thick.svg +1 -0
  987. package/dist/assets/fleet-ship-03-miyamoto-bow.painted.svg +1 -0
  988. package/dist/assets/fleet-ship-03-miyamoto-bow.svg +1 -0
  989. package/dist/assets/fleet-ship-03-miyamoto-bow.thick.svg +1 -0
  990. package/dist/assets/fleet-ship-03-miyamoto-command.painted.svg +1 -0
  991. package/dist/assets/fleet-ship-03-miyamoto-command.svg +1 -0
  992. package/dist/assets/fleet-ship-03-miyamoto-command.thick.svg +1 -0
  993. package/dist/assets/fleet-ship-03-miyamoto-cutaway-apart.painted.svg +1 -0
  994. package/dist/assets/fleet-ship-03-miyamoto-cutaway-apart.svg +1 -0
  995. package/dist/assets/fleet-ship-03-miyamoto-cutaway-apart.thick.svg +1 -0
  996. package/dist/assets/fleet-ship-03-miyamoto-cutaway-array.painted.svg +1 -0
  997. package/dist/assets/fleet-ship-03-miyamoto-cutaway-array.svg +1 -0
  998. package/dist/assets/fleet-ship-03-miyamoto-cutaway-array.thick.svg +1 -0
  999. package/dist/assets/fleet-ship-03-miyamoto-cutaway-bow.painted.svg +1 -0
  1000. package/dist/assets/fleet-ship-03-miyamoto-cutaway-bow.svg +1 -0
  1001. package/dist/assets/fleet-ship-03-miyamoto-cutaway-bow.thick.svg +1 -0
  1002. package/dist/assets/fleet-ship-03-miyamoto-cutaway-command.painted.svg +1 -0
  1003. package/dist/assets/fleet-ship-03-miyamoto-cutaway-command.svg +1 -0
  1004. package/dist/assets/fleet-ship-03-miyamoto-cutaway-command.thick.svg +1 -0
  1005. package/dist/assets/fleet-ship-03-miyamoto-cutaway-drive-collar.painted.svg +1 -0
  1006. package/dist/assets/fleet-ship-03-miyamoto-cutaway-drive-collar.svg +1 -0
  1007. package/dist/assets/fleet-ship-03-miyamoto-cutaway-drive-collar.thick.svg +1 -0
  1008. package/dist/assets/fleet-ship-03-miyamoto-cutaway-drive.painted.svg +1 -0
  1009. package/dist/assets/fleet-ship-03-miyamoto-cutaway-drive.svg +1 -0
  1010. package/dist/assets/fleet-ship-03-miyamoto-cutaway-drive.thick.svg +1 -0
  1011. package/dist/assets/fleet-ship-03-miyamoto-cutaway-engineering.painted.svg +1 -0
  1012. package/dist/assets/fleet-ship-03-miyamoto-cutaway-engineering.svg +1 -0
  1013. package/dist/assets/fleet-ship-03-miyamoto-cutaway-engineering.thick.svg +1 -0
  1014. package/dist/assets/fleet-ship-03-miyamoto-cutaway-fuel-aft.painted.svg +1 -0
  1015. package/dist/assets/fleet-ship-03-miyamoto-cutaway-fuel-aft.svg +1 -0
  1016. package/dist/assets/fleet-ship-03-miyamoto-cutaway-fuel-aft.thick.svg +1 -0
  1017. package/dist/assets/fleet-ship-03-miyamoto-cutaway-fuel-fore.painted.svg +1 -0
  1018. package/dist/assets/fleet-ship-03-miyamoto-cutaway-fuel-fore.svg +1 -0
  1019. package/dist/assets/fleet-ship-03-miyamoto-cutaway-fuel-fore.thick.svg +1 -0
  1020. package/dist/assets/fleet-ship-03-miyamoto-cutaway-habitat.painted.svg +1 -0
  1021. package/dist/assets/fleet-ship-03-miyamoto-cutaway-habitat.svg +1 -0
  1022. package/dist/assets/fleet-ship-03-miyamoto-cutaway-habitat.thick.svg +1 -0
  1023. package/dist/assets/fleet-ship-03-miyamoto-cutaway-hangar-port.painted.svg +1 -0
  1024. package/dist/assets/fleet-ship-03-miyamoto-cutaway-hangar-port.svg +1 -0
  1025. package/dist/assets/fleet-ship-03-miyamoto-cutaway-hangar-port.thick.svg +1 -0
  1026. package/dist/assets/fleet-ship-03-miyamoto-cutaway-hangar-starboard.painted.svg +1 -0
  1027. package/dist/assets/fleet-ship-03-miyamoto-cutaway-hangar-starboard.svg +1 -0
  1028. package/dist/assets/fleet-ship-03-miyamoto-cutaway-hangar-starboard.thick.svg +1 -0
  1029. package/dist/assets/fleet-ship-03-miyamoto-cutaway-pod.painted.svg +1 -0
  1030. package/dist/assets/fleet-ship-03-miyamoto-cutaway-pod.svg +1 -0
  1031. package/dist/assets/fleet-ship-03-miyamoto-cutaway-pod.thick.svg +1 -0
  1032. package/dist/assets/fleet-ship-03-miyamoto-cutaway-radiators-dorsal.painted.svg +1 -0
  1033. package/dist/assets/fleet-ship-03-miyamoto-cutaway-radiators-dorsal.svg +1 -0
  1034. package/dist/assets/fleet-ship-03-miyamoto-cutaway-radiators-dorsal.thick.svg +1 -0
  1035. package/dist/assets/fleet-ship-03-miyamoto-cutaway-radiators-ventral.painted.svg +1 -0
  1036. package/dist/assets/fleet-ship-03-miyamoto-cutaway-radiators-ventral.svg +1 -0
  1037. package/dist/assets/fleet-ship-03-miyamoto-cutaway-radiators-ventral.thick.svg +1 -0
  1038. package/dist/assets/fleet-ship-03-miyamoto-cutaway.painted.svg +1 -0
  1039. package/dist/assets/fleet-ship-03-miyamoto-cutaway.svg +1 -0
  1040. package/dist/assets/fleet-ship-03-miyamoto-cutaway.thick.svg +1 -0
  1041. package/dist/assets/fleet-ship-03-miyamoto-deployed-apart.painted.svg +1 -0
  1042. package/dist/assets/fleet-ship-03-miyamoto-deployed-apart.svg +1 -0
  1043. package/dist/assets/fleet-ship-03-miyamoto-deployed-apart.thick.svg +1 -0
  1044. package/dist/assets/fleet-ship-03-miyamoto-deployed-array.painted.svg +1 -0
  1045. package/dist/assets/fleet-ship-03-miyamoto-deployed-array.svg +1 -0
  1046. package/dist/assets/fleet-ship-03-miyamoto-deployed-array.thick.svg +1 -0
  1047. package/dist/assets/fleet-ship-03-miyamoto-deployed-bow.painted.svg +1 -0
  1048. package/dist/assets/fleet-ship-03-miyamoto-deployed-bow.svg +1 -0
  1049. package/dist/assets/fleet-ship-03-miyamoto-deployed-bow.thick.svg +1 -0
  1050. package/dist/assets/fleet-ship-03-miyamoto-deployed-command.painted.svg +1 -0
  1051. package/dist/assets/fleet-ship-03-miyamoto-deployed-command.svg +1 -0
  1052. package/dist/assets/fleet-ship-03-miyamoto-deployed-command.thick.svg +1 -0
  1053. package/dist/assets/fleet-ship-03-miyamoto-deployed-drive-collar.painted.svg +1 -0
  1054. package/dist/assets/fleet-ship-03-miyamoto-deployed-drive-collar.svg +1 -0
  1055. package/dist/assets/fleet-ship-03-miyamoto-deployed-drive-collar.thick.svg +1 -0
  1056. package/dist/assets/fleet-ship-03-miyamoto-deployed-drive.painted.svg +1 -0
  1057. package/dist/assets/fleet-ship-03-miyamoto-deployed-drive.svg +1 -0
  1058. package/dist/assets/fleet-ship-03-miyamoto-deployed-drive.thick.svg +1 -0
  1059. package/dist/assets/fleet-ship-03-miyamoto-deployed-engineering.painted.svg +1 -0
  1060. package/dist/assets/fleet-ship-03-miyamoto-deployed-engineering.svg +1 -0
  1061. package/dist/assets/fleet-ship-03-miyamoto-deployed-engineering.thick.svg +1 -0
  1062. package/dist/assets/fleet-ship-03-miyamoto-deployed-fuel-aft.painted.svg +1 -0
  1063. package/dist/assets/fleet-ship-03-miyamoto-deployed-fuel-aft.svg +1 -0
  1064. package/dist/assets/fleet-ship-03-miyamoto-deployed-fuel-aft.thick.svg +1 -0
  1065. package/dist/assets/fleet-ship-03-miyamoto-deployed-fuel-fore.painted.svg +1 -0
  1066. package/dist/assets/fleet-ship-03-miyamoto-deployed-fuel-fore.svg +1 -0
  1067. package/dist/assets/fleet-ship-03-miyamoto-deployed-fuel-fore.thick.svg +1 -0
  1068. package/dist/assets/fleet-ship-03-miyamoto-deployed-habitat.painted.svg +1 -0
  1069. package/dist/assets/fleet-ship-03-miyamoto-deployed-habitat.svg +1 -0
  1070. package/dist/assets/fleet-ship-03-miyamoto-deployed-habitat.thick.svg +1 -0
  1071. package/dist/assets/fleet-ship-03-miyamoto-deployed-hangar-port.painted.svg +1 -0
  1072. package/dist/assets/fleet-ship-03-miyamoto-deployed-hangar-port.svg +1 -0
  1073. package/dist/assets/fleet-ship-03-miyamoto-deployed-hangar-port.thick.svg +1 -0
  1074. package/dist/assets/fleet-ship-03-miyamoto-deployed-hangar-starboard.painted.svg +1 -0
  1075. package/dist/assets/fleet-ship-03-miyamoto-deployed-hangar-starboard.svg +1 -0
  1076. package/dist/assets/fleet-ship-03-miyamoto-deployed-hangar-starboard.thick.svg +1 -0
  1077. package/dist/assets/fleet-ship-03-miyamoto-deployed-pod.painted.svg +1 -0
  1078. package/dist/assets/fleet-ship-03-miyamoto-deployed-pod.svg +1 -0
  1079. package/dist/assets/fleet-ship-03-miyamoto-deployed-pod.thick.svg +1 -0
  1080. package/dist/assets/fleet-ship-03-miyamoto-deployed-radiators-dorsal.painted.svg +1 -0
  1081. package/dist/assets/fleet-ship-03-miyamoto-deployed-radiators-dorsal.svg +1 -0
  1082. package/dist/assets/fleet-ship-03-miyamoto-deployed-radiators-dorsal.thick.svg +1 -0
  1083. package/dist/assets/fleet-ship-03-miyamoto-deployed-radiators-ventral.painted.svg +1 -0
  1084. package/dist/assets/fleet-ship-03-miyamoto-deployed-radiators-ventral.svg +1 -0
  1085. package/dist/assets/fleet-ship-03-miyamoto-deployed-radiators-ventral.thick.svg +1 -0
  1086. package/dist/assets/fleet-ship-03-miyamoto-deployed.painted.svg +1 -0
  1087. package/dist/assets/fleet-ship-03-miyamoto-deployed.svg +1 -0
  1088. package/dist/assets/fleet-ship-03-miyamoto-deployed.thick.svg +1 -0
  1089. package/dist/assets/fleet-ship-03-miyamoto-drive-collar.painted.svg +1 -0
  1090. package/dist/assets/fleet-ship-03-miyamoto-drive-collar.svg +1 -0
  1091. package/dist/assets/fleet-ship-03-miyamoto-drive-collar.thick.svg +1 -0
  1092. package/dist/assets/fleet-ship-03-miyamoto-drive.painted.svg +1 -0
  1093. package/dist/assets/fleet-ship-03-miyamoto-drive.svg +1 -0
  1094. package/dist/assets/fleet-ship-03-miyamoto-drive.thick.svg +1 -0
  1095. package/dist/assets/fleet-ship-03-miyamoto-engineering.painted.svg +1 -0
  1096. package/dist/assets/fleet-ship-03-miyamoto-engineering.svg +1 -0
  1097. package/dist/assets/fleet-ship-03-miyamoto-engineering.thick.svg +1 -0
  1098. package/dist/assets/fleet-ship-03-miyamoto-fuel-aft.painted.svg +1 -0
  1099. package/dist/assets/fleet-ship-03-miyamoto-fuel-aft.svg +1 -0
  1100. package/dist/assets/fleet-ship-03-miyamoto-fuel-aft.thick.svg +1 -0
  1101. package/dist/assets/fleet-ship-03-miyamoto-fuel-fore.painted.svg +1 -0
  1102. package/dist/assets/fleet-ship-03-miyamoto-fuel-fore.svg +1 -0
  1103. package/dist/assets/fleet-ship-03-miyamoto-fuel-fore.thick.svg +1 -0
  1104. package/dist/assets/fleet-ship-03-miyamoto-habitat.painted.svg +1 -0
  1105. package/dist/assets/fleet-ship-03-miyamoto-habitat.svg +1 -0
  1106. package/dist/assets/fleet-ship-03-miyamoto-habitat.thick.svg +1 -0
  1107. package/dist/assets/fleet-ship-03-miyamoto-hangar-port.painted.svg +1 -0
  1108. package/dist/assets/fleet-ship-03-miyamoto-hangar-port.svg +1 -0
  1109. package/dist/assets/fleet-ship-03-miyamoto-hangar-port.thick.svg +1 -0
  1110. package/dist/assets/fleet-ship-03-miyamoto-hangar-starboard.painted.svg +1 -0
  1111. package/dist/assets/fleet-ship-03-miyamoto-hangar-starboard.svg +1 -0
  1112. package/dist/assets/fleet-ship-03-miyamoto-hangar-starboard.thick.svg +1 -0
  1113. package/dist/assets/fleet-ship-03-miyamoto-no-collar-apart.painted.svg +1 -0
  1114. package/dist/assets/fleet-ship-03-miyamoto-no-collar-apart.svg +1 -0
  1115. package/dist/assets/fleet-ship-03-miyamoto-no-collar-apart.thick.svg +1 -0
  1116. package/dist/assets/fleet-ship-03-miyamoto-no-collar-array.painted.svg +1 -0
  1117. package/dist/assets/fleet-ship-03-miyamoto-no-collar-array.svg +1 -0
  1118. package/dist/assets/fleet-ship-03-miyamoto-no-collar-array.thick.svg +1 -0
  1119. package/dist/assets/fleet-ship-03-miyamoto-no-collar-bow.painted.svg +1 -0
  1120. package/dist/assets/fleet-ship-03-miyamoto-no-collar-bow.svg +1 -0
  1121. package/dist/assets/fleet-ship-03-miyamoto-no-collar-bow.thick.svg +1 -0
  1122. package/dist/assets/fleet-ship-03-miyamoto-no-collar-command.painted.svg +1 -0
  1123. package/dist/assets/fleet-ship-03-miyamoto-no-collar-command.svg +1 -0
  1124. package/dist/assets/fleet-ship-03-miyamoto-no-collar-command.thick.svg +1 -0
  1125. package/dist/assets/fleet-ship-03-miyamoto-no-collar-drive-collar.painted.svg +1 -0
  1126. package/dist/assets/fleet-ship-03-miyamoto-no-collar-drive-collar.svg +1 -0
  1127. package/dist/assets/fleet-ship-03-miyamoto-no-collar-drive-collar.thick.svg +1 -0
  1128. package/dist/assets/fleet-ship-03-miyamoto-no-collar-drive.painted.svg +1 -0
  1129. package/dist/assets/fleet-ship-03-miyamoto-no-collar-drive.svg +1 -0
  1130. package/dist/assets/fleet-ship-03-miyamoto-no-collar-drive.thick.svg +1 -0
  1131. package/dist/assets/fleet-ship-03-miyamoto-no-collar-engineering.painted.svg +1 -0
  1132. package/dist/assets/fleet-ship-03-miyamoto-no-collar-engineering.svg +1 -0
  1133. package/dist/assets/fleet-ship-03-miyamoto-no-collar-engineering.thick.svg +1 -0
  1134. package/dist/assets/fleet-ship-03-miyamoto-no-collar-fuel-aft.painted.svg +1 -0
  1135. package/dist/assets/fleet-ship-03-miyamoto-no-collar-fuel-aft.svg +1 -0
  1136. package/dist/assets/fleet-ship-03-miyamoto-no-collar-fuel-aft.thick.svg +1 -0
  1137. package/dist/assets/fleet-ship-03-miyamoto-no-collar-fuel-fore.painted.svg +1 -0
  1138. package/dist/assets/fleet-ship-03-miyamoto-no-collar-fuel-fore.svg +1 -0
  1139. package/dist/assets/fleet-ship-03-miyamoto-no-collar-fuel-fore.thick.svg +1 -0
  1140. package/dist/assets/fleet-ship-03-miyamoto-no-collar-habitat.painted.svg +1 -0
  1141. package/dist/assets/fleet-ship-03-miyamoto-no-collar-habitat.svg +1 -0
  1142. package/dist/assets/fleet-ship-03-miyamoto-no-collar-habitat.thick.svg +1 -0
  1143. package/dist/assets/fleet-ship-03-miyamoto-no-collar-hangar-port.painted.svg +1 -0
  1144. package/dist/assets/fleet-ship-03-miyamoto-no-collar-hangar-port.svg +1 -0
  1145. package/dist/assets/fleet-ship-03-miyamoto-no-collar-hangar-port.thick.svg +1 -0
  1146. package/dist/assets/fleet-ship-03-miyamoto-no-collar-hangar-starboard.painted.svg +1 -0
  1147. package/dist/assets/fleet-ship-03-miyamoto-no-collar-hangar-starboard.svg +1 -0
  1148. package/dist/assets/fleet-ship-03-miyamoto-no-collar-hangar-starboard.thick.svg +1 -0
  1149. package/dist/assets/fleet-ship-03-miyamoto-no-collar-pod.painted.svg +1 -0
  1150. package/dist/assets/fleet-ship-03-miyamoto-no-collar-pod.svg +1 -0
  1151. package/dist/assets/fleet-ship-03-miyamoto-no-collar-pod.thick.svg +1 -0
  1152. package/dist/assets/fleet-ship-03-miyamoto-no-collar-radiators-dorsal.painted.svg +1 -0
  1153. package/dist/assets/fleet-ship-03-miyamoto-no-collar-radiators-dorsal.svg +1 -0
  1154. package/dist/assets/fleet-ship-03-miyamoto-no-collar-radiators-dorsal.thick.svg +1 -0
  1155. package/dist/assets/fleet-ship-03-miyamoto-no-collar-radiators-ventral.painted.svg +1 -0
  1156. package/dist/assets/fleet-ship-03-miyamoto-no-collar-radiators-ventral.svg +1 -0
  1157. package/dist/assets/fleet-ship-03-miyamoto-no-collar-radiators-ventral.thick.svg +1 -0
  1158. package/dist/assets/fleet-ship-03-miyamoto-no-collar.painted.svg +1 -0
  1159. package/dist/assets/fleet-ship-03-miyamoto-no-collar.svg +1 -0
  1160. package/dist/assets/fleet-ship-03-miyamoto-no-collar.thick.svg +1 -0
  1161. package/dist/assets/fleet-ship-03-miyamoto-pod.painted.svg +1 -0
  1162. package/dist/assets/fleet-ship-03-miyamoto-pod.svg +1 -0
  1163. package/dist/assets/fleet-ship-03-miyamoto-pod.thick.svg +1 -0
  1164. package/dist/assets/fleet-ship-03-miyamoto-radiators-dorsal.painted.svg +1 -0
  1165. package/dist/assets/fleet-ship-03-miyamoto-radiators-dorsal.svg +1 -0
  1166. package/dist/assets/fleet-ship-03-miyamoto-radiators-dorsal.thick.svg +1 -0
  1167. package/dist/assets/fleet-ship-03-miyamoto-radiators-ventral.painted.svg +1 -0
  1168. package/dist/assets/fleet-ship-03-miyamoto-radiators-ventral.svg +1 -0
  1169. package/dist/assets/fleet-ship-03-miyamoto-radiators-ventral.thick.svg +1 -0
  1170. package/dist/assets/fleet-ship-03-miyamoto-relief-apart.painted.svg +1 -0
  1171. package/dist/assets/fleet-ship-03-miyamoto-relief-apart.svg +1 -0
  1172. package/dist/assets/fleet-ship-03-miyamoto-relief-apart.thick.svg +1 -0
  1173. package/dist/assets/fleet-ship-03-miyamoto-relief-array.painted.svg +1 -0
  1174. package/dist/assets/fleet-ship-03-miyamoto-relief-array.svg +1 -0
  1175. package/dist/assets/fleet-ship-03-miyamoto-relief-array.thick.svg +1 -0
  1176. package/dist/assets/fleet-ship-03-miyamoto-relief-bow.painted.svg +1 -0
  1177. package/dist/assets/fleet-ship-03-miyamoto-relief-bow.svg +1 -0
  1178. package/dist/assets/fleet-ship-03-miyamoto-relief-bow.thick.svg +1 -0
  1179. package/dist/assets/fleet-ship-03-miyamoto-relief-command.painted.svg +1 -0
  1180. package/dist/assets/fleet-ship-03-miyamoto-relief-command.svg +1 -0
  1181. package/dist/assets/fleet-ship-03-miyamoto-relief-command.thick.svg +1 -0
  1182. package/dist/assets/fleet-ship-03-miyamoto-relief-drive-collar.painted.svg +1 -0
  1183. package/dist/assets/fleet-ship-03-miyamoto-relief-drive-collar.svg +1 -0
  1184. package/dist/assets/fleet-ship-03-miyamoto-relief-drive-collar.thick.svg +1 -0
  1185. package/dist/assets/fleet-ship-03-miyamoto-relief-drive.painted.svg +1 -0
  1186. package/dist/assets/fleet-ship-03-miyamoto-relief-drive.svg +1 -0
  1187. package/dist/assets/fleet-ship-03-miyamoto-relief-drive.thick.svg +1 -0
  1188. package/dist/assets/fleet-ship-03-miyamoto-relief-engineering.painted.svg +1 -0
  1189. package/dist/assets/fleet-ship-03-miyamoto-relief-engineering.svg +1 -0
  1190. package/dist/assets/fleet-ship-03-miyamoto-relief-engineering.thick.svg +1 -0
  1191. package/dist/assets/fleet-ship-03-miyamoto-relief-fuel-aft.painted.svg +1 -0
  1192. package/dist/assets/fleet-ship-03-miyamoto-relief-fuel-aft.svg +1 -0
  1193. package/dist/assets/fleet-ship-03-miyamoto-relief-fuel-aft.thick.svg +1 -0
  1194. package/dist/assets/fleet-ship-03-miyamoto-relief-fuel-fore.painted.svg +1 -0
  1195. package/dist/assets/fleet-ship-03-miyamoto-relief-fuel-fore.svg +1 -0
  1196. package/dist/assets/fleet-ship-03-miyamoto-relief-fuel-fore.thick.svg +1 -0
  1197. package/dist/assets/fleet-ship-03-miyamoto-relief-habitat.painted.svg +1 -0
  1198. package/dist/assets/fleet-ship-03-miyamoto-relief-habitat.svg +1 -0
  1199. package/dist/assets/fleet-ship-03-miyamoto-relief-habitat.thick.svg +1 -0
  1200. package/dist/assets/fleet-ship-03-miyamoto-relief-hangar-port.painted.svg +1 -0
  1201. package/dist/assets/fleet-ship-03-miyamoto-relief-hangar-port.svg +1 -0
  1202. package/dist/assets/fleet-ship-03-miyamoto-relief-hangar-port.thick.svg +1 -0
  1203. package/dist/assets/fleet-ship-03-miyamoto-relief-hangar-starboard.painted.svg +1 -0
  1204. package/dist/assets/fleet-ship-03-miyamoto-relief-hangar-starboard.svg +1 -0
  1205. package/dist/assets/fleet-ship-03-miyamoto-relief-hangar-starboard.thick.svg +1 -0
  1206. package/dist/assets/fleet-ship-03-miyamoto-relief-pod.painted.svg +1 -0
  1207. package/dist/assets/fleet-ship-03-miyamoto-relief-pod.svg +1 -0
  1208. package/dist/assets/fleet-ship-03-miyamoto-relief-pod.thick.svg +1 -0
  1209. package/dist/assets/fleet-ship-03-miyamoto-relief-radiators-dorsal.painted.svg +1 -0
  1210. package/dist/assets/fleet-ship-03-miyamoto-relief-radiators-dorsal.svg +1 -0
  1211. package/dist/assets/fleet-ship-03-miyamoto-relief-radiators-dorsal.thick.svg +1 -0
  1212. package/dist/assets/fleet-ship-03-miyamoto-relief-radiators-ventral.painted.svg +1 -0
  1213. package/dist/assets/fleet-ship-03-miyamoto-relief-radiators-ventral.svg +1 -0
  1214. package/dist/assets/fleet-ship-03-miyamoto-relief-radiators-ventral.thick.svg +1 -0
  1215. package/dist/assets/fleet-ship-03-miyamoto-relief.painted.svg +1 -0
  1216. package/dist/assets/fleet-ship-03-miyamoto-relief.svg +1 -0
  1217. package/dist/assets/fleet-ship-03-miyamoto-relief.thick.svg +1 -0
  1218. package/dist/assets/fleet-ship-03-miyamoto.painted.svg +1 -0
  1219. package/dist/assets/fleet-ship-03-miyamoto.svg +1 -0
  1220. package/dist/assets/fleet-ship-03-miyamoto.thick.svg +1 -0
  1221. package/dist/assets/fleet-ship-ariake-ariake-apart.painted.svg +1 -0
  1222. package/dist/assets/fleet-ship-ariake-ariake-apart.svg +1 -0
  1223. package/dist/assets/fleet-ship-ariake-ariake-apart.thick.svg +1 -0
  1224. package/dist/assets/fleet-ship-ariake-ariake-bow.painted.svg +1 -0
  1225. package/dist/assets/fleet-ship-ariake-ariake-bow.svg +1 -0
  1226. package/dist/assets/fleet-ship-ariake-ariake-bow.thick.svg +1 -0
  1227. package/dist/assets/fleet-ship-ariake-ariake-command.painted.svg +1 -0
  1228. package/dist/assets/fleet-ship-ariake-ariake-command.svg +1 -0
  1229. package/dist/assets/fleet-ship-ariake-ariake-command.thick.svg +1 -0
  1230. package/dist/assets/fleet-ship-ariake-ariake-cutaway-apart.painted.svg +1 -0
  1231. package/dist/assets/fleet-ship-ariake-ariake-cutaway-apart.svg +1 -0
  1232. package/dist/assets/fleet-ship-ariake-ariake-cutaway-apart.thick.svg +1 -0
  1233. package/dist/assets/fleet-ship-ariake-ariake-cutaway-bow.painted.svg +1 -0
  1234. package/dist/assets/fleet-ship-ariake-ariake-cutaway-bow.svg +1 -0
  1235. package/dist/assets/fleet-ship-ariake-ariake-cutaway-bow.thick.svg +1 -0
  1236. package/dist/assets/fleet-ship-ariake-ariake-cutaway-command.painted.svg +1 -0
  1237. package/dist/assets/fleet-ship-ariake-ariake-cutaway-command.svg +1 -0
  1238. package/dist/assets/fleet-ship-ariake-ariake-cutaway-command.thick.svg +1 -0
  1239. package/dist/assets/fleet-ship-ariake-ariake-cutaway-drive-collar.painted.svg +1 -0
  1240. package/dist/assets/fleet-ship-ariake-ariake-cutaway-drive-collar.svg +1 -0
  1241. package/dist/assets/fleet-ship-ariake-ariake-cutaway-drive-collar.thick.svg +1 -0
  1242. package/dist/assets/fleet-ship-ariake-ariake-cutaway-drive.painted.svg +1 -0
  1243. package/dist/assets/fleet-ship-ariake-ariake-cutaway-drive.svg +1 -0
  1244. package/dist/assets/fleet-ship-ariake-ariake-cutaway-drive.thick.svg +1 -0
  1245. package/dist/assets/fleet-ship-ariake-ariake-cutaway-engineering.painted.svg +1 -0
  1246. package/dist/assets/fleet-ship-ariake-ariake-cutaway-engineering.svg +1 -0
  1247. package/dist/assets/fleet-ship-ariake-ariake-cutaway-engineering.thick.svg +1 -0
  1248. package/dist/assets/fleet-ship-ariake-ariake-cutaway-fuel-aft.painted.svg +1 -0
  1249. package/dist/assets/fleet-ship-ariake-ariake-cutaway-fuel-aft.svg +1 -0
  1250. package/dist/assets/fleet-ship-ariake-ariake-cutaway-fuel-aft.thick.svg +1 -0
  1251. package/dist/assets/fleet-ship-ariake-ariake-cutaway-fuel-fore.painted.svg +1 -0
  1252. package/dist/assets/fleet-ship-ariake-ariake-cutaway-fuel-fore.svg +1 -0
  1253. package/dist/assets/fleet-ship-ariake-ariake-cutaway-fuel-fore.thick.svg +1 -0
  1254. package/dist/assets/fleet-ship-ariake-ariake-cutaway-habitat.painted.svg +1 -0
  1255. package/dist/assets/fleet-ship-ariake-ariake-cutaway-habitat.svg +1 -0
  1256. package/dist/assets/fleet-ship-ariake-ariake-cutaway-habitat.thick.svg +1 -0
  1257. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-port-aft.painted.svg +1 -0
  1258. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-port-aft.svg +1 -0
  1259. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-port-aft.thick.svg +1 -0
  1260. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-port.painted.svg +1 -0
  1261. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-port.svg +1 -0
  1262. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-port.thick.svg +1 -0
  1263. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-starboard-fore.painted.svg +1 -0
  1264. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-starboard-fore.svg +1 -0
  1265. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-starboard-fore.thick.svg +1 -0
  1266. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-starboard.painted.svg +1 -0
  1267. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-starboard.svg +1 -0
  1268. package/dist/assets/fleet-ship-ariake-ariake-cutaway-hangar-starboard.thick.svg +1 -0
  1269. package/dist/assets/fleet-ship-ariake-ariake-cutaway-pod.painted.svg +1 -0
  1270. package/dist/assets/fleet-ship-ariake-ariake-cutaway-pod.svg +1 -0
  1271. package/dist/assets/fleet-ship-ariake-ariake-cutaway-pod.thick.svg +1 -0
  1272. package/dist/assets/fleet-ship-ariake-ariake-cutaway-radiators-dorsal.painted.svg +1 -0
  1273. package/dist/assets/fleet-ship-ariake-ariake-cutaway-radiators-dorsal.svg +1 -0
  1274. package/dist/assets/fleet-ship-ariake-ariake-cutaway-radiators-dorsal.thick.svg +1 -0
  1275. package/dist/assets/fleet-ship-ariake-ariake-cutaway-radiators-ventral.painted.svg +1 -0
  1276. package/dist/assets/fleet-ship-ariake-ariake-cutaway-radiators-ventral.svg +1 -0
  1277. package/dist/assets/fleet-ship-ariake-ariake-cutaway-radiators-ventral.thick.svg +1 -0
  1278. package/dist/assets/fleet-ship-ariake-ariake-cutaway.painted.svg +1 -0
  1279. package/dist/assets/fleet-ship-ariake-ariake-cutaway.svg +1 -0
  1280. package/dist/assets/fleet-ship-ariake-ariake-cutaway.thick.svg +1 -0
  1281. package/dist/assets/fleet-ship-ariake-ariake-drive-collar.painted.svg +1 -0
  1282. package/dist/assets/fleet-ship-ariake-ariake-drive-collar.svg +1 -0
  1283. package/dist/assets/fleet-ship-ariake-ariake-drive-collar.thick.svg +1 -0
  1284. package/dist/assets/fleet-ship-ariake-ariake-drive.painted.svg +1 -0
  1285. package/dist/assets/fleet-ship-ariake-ariake-drive.svg +1 -0
  1286. package/dist/assets/fleet-ship-ariake-ariake-drive.thick.svg +1 -0
  1287. package/dist/assets/fleet-ship-ariake-ariake-engineering.painted.svg +1 -0
  1288. package/dist/assets/fleet-ship-ariake-ariake-engineering.svg +1 -0
  1289. package/dist/assets/fleet-ship-ariake-ariake-engineering.thick.svg +1 -0
  1290. package/dist/assets/fleet-ship-ariake-ariake-fuel-aft.painted.svg +1 -0
  1291. package/dist/assets/fleet-ship-ariake-ariake-fuel-aft.svg +1 -0
  1292. package/dist/assets/fleet-ship-ariake-ariake-fuel-aft.thick.svg +1 -0
  1293. package/dist/assets/fleet-ship-ariake-ariake-fuel-fore.painted.svg +1 -0
  1294. package/dist/assets/fleet-ship-ariake-ariake-fuel-fore.svg +1 -0
  1295. package/dist/assets/fleet-ship-ariake-ariake-fuel-fore.thick.svg +1 -0
  1296. package/dist/assets/fleet-ship-ariake-ariake-habitat.painted.svg +1 -0
  1297. package/dist/assets/fleet-ship-ariake-ariake-habitat.svg +1 -0
  1298. package/dist/assets/fleet-ship-ariake-ariake-habitat.thick.svg +1 -0
  1299. package/dist/assets/fleet-ship-ariake-ariake-hangar-port-aft.painted.svg +1 -0
  1300. package/dist/assets/fleet-ship-ariake-ariake-hangar-port-aft.svg +1 -0
  1301. package/dist/assets/fleet-ship-ariake-ariake-hangar-port-aft.thick.svg +1 -0
  1302. package/dist/assets/fleet-ship-ariake-ariake-hangar-port.painted.svg +1 -0
  1303. package/dist/assets/fleet-ship-ariake-ariake-hangar-port.svg +1 -0
  1304. package/dist/assets/fleet-ship-ariake-ariake-hangar-port.thick.svg +1 -0
  1305. package/dist/assets/fleet-ship-ariake-ariake-hangar-starboard-fore.painted.svg +1 -0
  1306. package/dist/assets/fleet-ship-ariake-ariake-hangar-starboard-fore.svg +1 -0
  1307. package/dist/assets/fleet-ship-ariake-ariake-hangar-starboard-fore.thick.svg +1 -0
  1308. package/dist/assets/fleet-ship-ariake-ariake-hangar-starboard.painted.svg +1 -0
  1309. package/dist/assets/fleet-ship-ariake-ariake-hangar-starboard.svg +1 -0
  1310. package/dist/assets/fleet-ship-ariake-ariake-hangar-starboard.thick.svg +1 -0
  1311. package/dist/assets/fleet-ship-ariake-ariake-pod.painted.svg +1 -0
  1312. package/dist/assets/fleet-ship-ariake-ariake-pod.svg +1 -0
  1313. package/dist/assets/fleet-ship-ariake-ariake-pod.thick.svg +1 -0
  1314. package/dist/assets/fleet-ship-ariake-ariake-radiators-dorsal.painted.svg +1 -0
  1315. package/dist/assets/fleet-ship-ariake-ariake-radiators-dorsal.svg +1 -0
  1316. package/dist/assets/fleet-ship-ariake-ariake-radiators-dorsal.thick.svg +1 -0
  1317. package/dist/assets/fleet-ship-ariake-ariake-radiators-ventral.painted.svg +1 -0
  1318. package/dist/assets/fleet-ship-ariake-ariake-radiators-ventral.svg +1 -0
  1319. package/dist/assets/fleet-ship-ariake-ariake-radiators-ventral.thick.svg +1 -0
  1320. package/dist/assets/fleet-ship-ariake-ariake.painted.svg +1 -0
  1321. package/dist/assets/fleet-ship-ariake-ariake.svg +1 -0
  1322. package/dist/assets/fleet-ship-ariake-ariake.thick.svg +1 -0
  1323. package/dist/assets/fleet-structure-adapter-l-m.painted.svg +1 -0
  1324. package/dist/assets/fleet-structure-adapter-l-m.svg +1 -0
  1325. package/dist/assets/fleet-structure-adapter-l-m.thick.svg +1 -0
  1326. package/dist/assets/fleet-structure-adapter-m-l.painted.svg +1 -0
  1327. package/dist/assets/fleet-structure-adapter-m-l.svg +1 -0
  1328. package/dist/assets/fleet-structure-adapter-m-l.thick.svg +1 -0
  1329. package/dist/assets/fleet-structure-node-four.painted.svg +1 -0
  1330. package/dist/assets/fleet-structure-node-four.svg +1 -0
  1331. package/dist/assets/fleet-structure-node-four.thick.svg +1 -0
  1332. package/dist/assets/fleet-structure-node-two.painted.svg +1 -0
  1333. package/dist/assets/fleet-structure-node-two.svg +1 -0
  1334. package/dist/assets/fleet-structure-node-two.thick.svg +1 -0
  1335. package/dist/assets/fleet-structure-shield-forward.painted.svg +1 -0
  1336. package/dist/assets/fleet-structure-shield-forward.svg +1 -0
  1337. package/dist/assets/fleet-structure-shield-forward.thick.svg +1 -0
  1338. package/dist/assets/fleet-structure-truss-l-24.painted.svg +1 -0
  1339. package/dist/assets/fleet-structure-truss-l-24.svg +1 -0
  1340. package/dist/assets/fleet-structure-truss-l-24.thick.svg +1 -0
  1341. package/dist/assets/fleet-structure-truss-m-12.painted.svg +1 -0
  1342. package/dist/assets/fleet-structure-truss-m-12.svg +1 -0
  1343. package/dist/assets/fleet-structure-truss-m-12.thick.svg +1 -0
  1344. package/dist/assets/fleet-systems-comms-array-m-cutaway.painted.svg +1 -0
  1345. package/dist/assets/fleet-systems-comms-array-m-cutaway.svg +1 -0
  1346. package/dist/assets/fleet-systems-comms-array-m-cutaway.thick.svg +1 -0
  1347. package/dist/assets/fleet-systems-comms-array-m.painted.svg +1 -0
  1348. package/dist/assets/fleet-systems-comms-array-m.svg +1 -0
  1349. package/dist/assets/fleet-systems-comms-array-m.thick.svg +1 -0
  1350. package/dist/assets/fleet-systems-mast-sensor-40.painted.svg +1 -0
  1351. package/dist/assets/fleet-systems-mast-sensor-40.svg +1 -0
  1352. package/dist/assets/fleet-systems-mast-sensor-40.thick.svg +1 -0
  1353. package/dist/assets/fleet-systems-radiator-deployed.painted.svg +1 -0
  1354. package/dist/assets/fleet-systems-radiator-deployed.svg +1 -0
  1355. package/dist/assets/fleet-systems-radiator-deployed.thick.svg +1 -0
  1356. package/dist/assets/fleet-systems-radiator-stowed.painted.svg +1 -0
  1357. package/dist/assets/fleet-systems-radiator-stowed.svg +1 -0
  1358. package/dist/assets/fleet-systems-radiator-stowed.thick.svg +1 -0
  1359. package/dist/assets/fleet-systems-reactor-fusion-cutaway.painted.svg +1 -0
  1360. package/dist/assets/fleet-systems-reactor-fusion-cutaway.svg +1 -0
  1361. package/dist/assets/fleet-systems-reactor-fusion-cutaway.thick.svg +1 -0
  1362. package/dist/assets/fleet-systems-reactor-fusion.painted.svg +1 -0
  1363. package/dist/assets/fleet-systems-reactor-fusion.svg +1 -0
  1364. package/dist/assets/fleet-systems-reactor-fusion.thick.svg +1 -0
  1365. package/dist/assets/fleet-tanks-tank-cryo-12-cutaway.painted.svg +1 -0
  1366. package/dist/assets/fleet-tanks-tank-cryo-12-cutaway.svg +1 -0
  1367. package/dist/assets/fleet-tanks-tank-cryo-12-cutaway.thick.svg +1 -0
  1368. package/dist/assets/fleet-tanks-tank-cryo-12.painted.svg +1 -0
  1369. package/dist/assets/fleet-tanks-tank-cryo-12.svg +1 -0
  1370. package/dist/assets/fleet-tanks-tank-cryo-12.thick.svg +1 -0
  1371. package/dist/assets/fleet-tanks-tank-cryo-24-cutaway.painted.svg +1 -0
  1372. package/dist/assets/fleet-tanks-tank-cryo-24-cutaway.svg +1 -0
  1373. package/dist/assets/fleet-tanks-tank-cryo-24-cutaway.thick.svg +1 -0
  1374. package/dist/assets/fleet-tanks-tank-cryo-24.painted.svg +1 -0
  1375. package/dist/assets/fleet-tanks-tank-cryo-24.svg +1 -0
  1376. package/dist/assets/fleet-tanks-tank-cryo-24.thick.svg +1 -0
  1377. package/dist/assets/fleet-tanks-tank-header-9-cutaway.painted.svg +1 -0
  1378. package/dist/assets/fleet-tanks-tank-header-9-cutaway.svg +1 -0
  1379. package/dist/assets/fleet-tanks-tank-header-9-cutaway.thick.svg +1 -0
  1380. package/dist/assets/fleet-tanks-tank-header-9.painted.svg +1 -0
  1381. package/dist/assets/fleet-tanks-tank-header-9.svg +1 -0
  1382. package/dist/assets/fleet-tanks-tank-header-9.thick.svg +1 -0
  1383. package/dist/assets/fleet-tanks-tank-slim-18-cutaway.painted.svg +1 -0
  1384. package/dist/assets/fleet-tanks-tank-slim-18-cutaway.svg +1 -0
  1385. package/dist/assets/fleet-tanks-tank-slim-18-cutaway.thick.svg +1 -0
  1386. package/dist/assets/fleet-tanks-tank-slim-18.painted.svg +1 -0
  1387. package/dist/assets/fleet-tanks-tank-slim-18.svg +1 -0
  1388. package/dist/assets/fleet-tanks-tank-slim-18.thick.svg +1 -0
  1389. package/dist/assets/fleet-tanks-tank-spheres-4-cutaway.painted.svg +1 -0
  1390. package/dist/assets/fleet-tanks-tank-spheres-4-cutaway.svg +1 -0
  1391. package/dist/assets/fleet-tanks-tank-spheres-4-cutaway.thick.svg +1 -0
  1392. package/dist/assets/fleet-tanks-tank-spheres-4.painted.svg +1 -0
  1393. package/dist/assets/fleet-tanks-tank-spheres-4.svg +1 -0
  1394. package/dist/assets/fleet-tanks-tank-spheres-4.thick.svg +1 -0
  1395. package/dist/assets/parts/fleet-02-nozzle-main.glb +0 -0
  1396. package/dist/assets/parts/fleet-02-nozzle-main.painted.svg +1 -0
  1397. package/dist/assets/parts/fleet-02-nozzle-main.svg +1 -0
  1398. package/dist/assets/parts/fleet-02-nozzle-main.thick.svg +1 -0
  1399. package/dist/assets/parts/fleet-02-vernier-cluster.glb +0 -0
  1400. package/dist/assets/parts/fleet-02-vernier-cluster.painted.svg +1 -0
  1401. package/dist/assets/parts/fleet-02-vernier-cluster.svg +1 -0
  1402. package/dist/assets/parts/fleet-02-vernier-cluster.thick.svg +1 -0
  1403. package/dist/build/glb.js +3 -2
  1404. package/dist/build/index.d.ts +16 -1
  1405. package/dist/build/index.js +38 -9
  1406. package/dist/build/lineup.d.ts +9 -1
  1407. package/dist/build/lineup.js +80 -8
  1408. package/dist/builder.js +2 -1
  1409. package/dist/data/fleet.d.ts +27 -0
  1410. package/dist/data/fleet.js +96 -0
  1411. package/dist/data/makers.d.ts +2 -1
  1412. package/dist/data/makers.js +5 -1
  1413. package/dist/data/ship-03.d.ts +12 -0
  1414. package/dist/data/ship-03.js +103 -0
  1415. package/dist/data/ship02.d.ts +3 -0
  1416. package/dist/data/ship02.js +100 -0
  1417. package/dist/data/sources.d.ts +16 -0
  1418. package/dist/data/sources.js +2 -0
  1419. package/dist/data/types.d.ts +59 -1
  1420. package/dist/element/panel.d.ts +34 -0
  1421. package/dist/element/panel.js +144 -0
  1422. package/dist/element/scene.d.ts +45 -1
  1423. package/dist/element/scene.js +173 -2
  1424. package/dist/element.d.ts +22 -0
  1425. package/dist/element.js +112 -5
  1426. package/dist/embed.d.ts +2 -0
  1427. package/dist/embed.js +3 -2
  1428. package/dist/index.d.ts +14 -0
  1429. package/dist/index.js +7 -0
  1430. package/dist/model/detail.d.ts +10 -0
  1431. package/dist/model/detail.js +19 -0
  1432. package/dist/model/fleet/ancestors.d.ts +5 -0
  1433. package/dist/model/fleet/ancestors.js +47 -0
  1434. package/dist/model/fleet/collars.d.ts +76 -0
  1435. package/dist/model/fleet/collars.js +76 -0
  1436. package/dist/model/fleet/detail.d.ts +445 -0
  1437. package/dist/model/fleet/detail.js +1095 -0
  1438. package/dist/model/fleet/engines.d.ts +217 -0
  1439. package/dist/model/fleet/engines.js +207 -0
  1440. package/dist/model/fleet/glossary.d.ts +44 -0
  1441. package/dist/model/fleet/glossary.js +34 -0
  1442. package/dist/model/fleet/hull.d.ts +58 -0
  1443. package/dist/model/fleet/hull.js +174 -0
  1444. package/dist/model/fleet/insets.d.ts +51 -0
  1445. package/dist/model/fleet/insets.js +69 -0
  1446. package/dist/model/fleet/kit.d.ts +254 -0
  1447. package/dist/model/fleet/kit.js +345 -0
  1448. package/dist/model/fleet/layers.d.ts +84 -0
  1449. package/dist/model/fleet/layers.js +122 -0
  1450. package/dist/model/fleet/levels.d.ts +30 -0
  1451. package/dist/model/fleet/levels.js +41 -0
  1452. package/dist/model/fleet/modules.d.ts +76 -0
  1453. package/dist/model/fleet/modules.js +1223 -0
  1454. package/dist/model/fleet/palette.d.ts +66 -0
  1455. package/dist/model/fleet/palette.js +57 -0
  1456. package/dist/model/fleet/sections.d.ts +45 -0
  1457. package/dist/model/fleet/sections.js +234 -0
  1458. package/dist/model/fleet/sheet.d.ts +343 -0
  1459. package/dist/model/fleet/sheet.js +275 -0
  1460. package/dist/model/fleet/ship-02/adapter.d.ts +110 -0
  1461. package/dist/model/fleet/ship-02/adapter.js +453 -0
  1462. package/dist/model/fleet/ship-02/cargo.d.ts +6 -0
  1463. package/dist/model/fleet/ship-02/cargo.js +173 -0
  1464. package/dist/model/fleet/ship-02/command.d.ts +5 -0
  1465. package/dist/model/fleet/ship-02/command.js +99 -0
  1466. package/dist/model/fleet/ship-02/dims.d.ts +93 -0
  1467. package/dist/model/fleet/ship-02/dims.js +40 -0
  1468. package/dist/model/fleet/ship-02/dock.d.ts +3 -0
  1469. package/dist/model/fleet/ship-02/dock.js +102 -0
  1470. package/dist/model/fleet/ship-02/drive.d.ts +10 -0
  1471. package/dist/model/fleet/ship-02/drive.js +146 -0
  1472. package/dist/model/fleet/ship-02/farm.d.ts +3 -0
  1473. package/dist/model/fleet/ship-02/farm.js +91 -0
  1474. package/dist/model/fleet/ship-02/habitat.d.ts +4 -0
  1475. package/dist/model/fleet/ship-02/habitat.js +124 -0
  1476. package/dist/model/fleet/ship-02/headers.d.ts +7 -0
  1477. package/dist/model/fleet/ship-02/headers.js +34 -0
  1478. package/dist/model/fleet/ship-02/index.d.ts +65 -0
  1479. package/dist/model/fleet/ship-02/index.js +102 -0
  1480. package/dist/model/fleet/ship-02/journey.d.ts +59 -0
  1481. package/dist/model/fleet/ship-02/journey.js +59 -0
  1482. package/dist/model/fleet/ship-02/lines.d.ts +2 -0
  1483. package/dist/model/fleet/ship-02/lines.js +53 -0
  1484. package/dist/model/fleet/ship-02/pod.d.ts +17 -0
  1485. package/dist/model/fleet/ship-02/pod.js +119 -0
  1486. package/dist/model/fleet/ship-02/radiators.d.ts +5 -0
  1487. package/dist/model/fleet/ship-02/radiators.js +62 -0
  1488. package/dist/model/fleet/ship-02/reactor.d.ts +6 -0
  1489. package/dist/model/fleet/ship-02/reactor.js +133 -0
  1490. package/dist/model/fleet/ship-02/sections.d.ts +15 -0
  1491. package/dist/model/fleet/ship-02/sections.js +74 -0
  1492. package/dist/model/fleet/ship-02/shield.d.ts +2 -0
  1493. package/dist/model/fleet/ship-02/shield.js +72 -0
  1494. package/dist/model/fleet/ship-02/specs.d.ts +122 -0
  1495. package/dist/model/fleet/ship-02/specs.js +276 -0
  1496. package/dist/model/fleet/ship-02/spine.d.ts +2 -0
  1497. package/dist/model/fleet/ship-02/spine.js +64 -0
  1498. package/dist/model/fleet/ship-02/tanks.d.ts +5 -0
  1499. package/dist/model/fleet/ship-02/tanks.js +131 -0
  1500. package/dist/model/fleet/ship-02/tips.d.ts +3 -0
  1501. package/dist/model/fleet/ship-02/tips.js +18 -0
  1502. package/dist/model/fleet/ship-03/adapter.d.ts +41 -0
  1503. package/dist/model/fleet/ship-03/adapter.js +73 -0
  1504. package/dist/model/fleet/ship-03/ariake.d.ts +12 -0
  1505. package/dist/model/fleet/ship-03/ariake.js +62 -0
  1506. package/dist/model/fleet/ship-03/bow.d.ts +2 -0
  1507. package/dist/model/fleet/ship-03/bow.js +101 -0
  1508. package/dist/model/fleet/ship-03/command.d.ts +8 -0
  1509. package/dist/model/fleet/ship-03/command.js +231 -0
  1510. package/dist/model/fleet/ship-03/dims.d.ts +201 -0
  1511. package/dist/model/fleet/ship-03/dims.js +66 -0
  1512. package/dist/model/fleet/ship-03/drive.d.ts +11 -0
  1513. package/dist/model/fleet/ship-03/drive.js +266 -0
  1514. package/dist/model/fleet/ship-03/engineering.d.ts +5 -0
  1515. package/dist/model/fleet/ship-03/engineering.js +59 -0
  1516. package/dist/model/fleet/ship-03/faces.d.ts +78 -0
  1517. package/dist/model/fleet/ship-03/faces.js +218 -0
  1518. package/dist/model/fleet/ship-03/habitat.d.ts +19 -0
  1519. package/dist/model/fleet/ship-03/habitat.js +98 -0
  1520. package/dist/model/fleet/ship-03/hangar.d.ts +10 -0
  1521. package/dist/model/fleet/ship-03/hangar.js +278 -0
  1522. package/dist/model/fleet/ship-03/hex.d.ts +24 -0
  1523. package/dist/model/fleet/ship-03/hex.js +48 -0
  1524. package/dist/model/fleet/ship-03/hulls.d.ts +50 -0
  1525. package/dist/model/fleet/ship-03/hulls.js +140 -0
  1526. package/dist/model/fleet/ship-03/index.d.ts +37 -0
  1527. package/dist/model/fleet/ship-03/index.js +134 -0
  1528. package/dist/model/fleet/ship-03/insets.d.ts +18 -0
  1529. package/dist/model/fleet/ship-03/insets.js +55 -0
  1530. package/dist/model/fleet/ship-03/nose.d.ts +2 -0
  1531. package/dist/model/fleet/ship-03/nose.js +136 -0
  1532. package/dist/model/fleet/ship-03/pod.d.ts +3 -0
  1533. package/dist/model/fleet/ship-03/pod.js +133 -0
  1534. package/dist/model/fleet/ship-03/radiators.d.ts +3 -0
  1535. package/dist/model/fleet/ship-03/radiators.js +97 -0
  1536. package/dist/model/fleet/ship-03/shapes.d.ts +18 -0
  1537. package/dist/model/fleet/ship-03/shapes.js +51 -0
  1538. package/dist/model/fleet/ship-03/solar.d.ts +4 -0
  1539. package/dist/model/fleet/ship-03/solar.js +93 -0
  1540. package/dist/model/fleet/ship-03/specs.d.ts +231 -0
  1541. package/dist/model/fleet/ship-03/specs.js +297 -0
  1542. package/dist/model/fleet/ship-03/tanks.d.ts +5 -0
  1543. package/dist/model/fleet/ship-03/tanks.js +180 -0
  1544. package/dist/model/fleet/ship-03/variants.d.ts +4 -0
  1545. package/dist/model/fleet/ship-03/variants.js +25 -0
  1546. package/dist/model/fleet/sizes.d.ts +1 -0
  1547. package/dist/model/fleet/sizes.js +43 -0
  1548. package/dist/model/fleet/types.d.ts +149 -0
  1549. package/dist/model/fleet/types.js +1 -0
  1550. package/dist/model/materials.d.ts +276 -0
  1551. package/dist/model/materials.js +43 -0
  1552. package/dist/model/pieces.d.ts +23 -0
  1553. package/dist/model/pieces.js +198 -3
  1554. package/dist/model/registry.js +22 -2
  1555. package/dist/model/ship-03.d.ts +5 -0
  1556. package/dist/model/ship-03.js +39 -0
  1557. package/dist/model/ship02.d.ts +2 -0
  1558. package/dist/model/ship02.js +23 -0
  1559. package/dist/parts.d.ts +1 -1
  1560. package/dist/react.d.ts +4 -4
  1561. package/dist/rockets.js +41 -0
  1562. package/package.json +2 -2
@@ -0,0 +1,1223 @@
1
+ // The kit's modules: engine assemblies, thruster pods, fuel tanks, cargo containers and bays, habitat rings and drums, laboratories, sensor masts, reactors, radiator arrays, docking nodes, trusses, adapters and
2
+ // shields. Each is a function from a few numbers to pieces, so a ship picks sizes. Pure: no three.js and no DOM.
3
+ import { deg } from "../../framing.js";
4
+ import { COLLARS, collar } from "./collars.js";
5
+ import { annulus, antenna, beam, box, cableTray, channel, disc, foilBand, framedPanel, glazing, hatch, hazardBand, hoop, horn, iBeam, ladder, lamps, observationDome, panel, patch, pipeRing, pipeRun, place, porthole, post, radiator, ringOf, rng, rod, room, seams, separationJoint, stamp, stencil, strut, tileShield } from "./detail.js";
6
+ import { contextOf, CUT, decks, drum, some, straight } from "./hull.js";
7
+ import { ANCESTORS } from "./ancestors.js";
8
+ import { isCoarse } from "./levels.js";
9
+ import { SIZES } from "./sizes.js";
10
+ const define = (d) => ({
11
+ id: d.id,
12
+ name: d.name,
13
+ kind: d.kind,
14
+ note: d.note,
15
+ mass: d.mass,
16
+ propellant: d.propellant ?? 0,
17
+ length: d.length,
18
+ width: SIZES[d.id]?.[0] ?? d.width,
19
+ depth: SIZES[d.id]?.[1] ?? d.depth ?? d.width,
20
+ ...(d.top ? { top: d.top } : {}),
21
+ ...(d.bottom ? { bottom: d.bottom } : {}),
22
+ ports: d.ports ?? [],
23
+ inside: d.inside ?? false,
24
+ ancestor: ANCESTORS[d.id] ?? "",
25
+ ...(d.slot ? { slot: d.slot } : {}),
26
+ livery: d.livery,
27
+ pieces: (options = {}) => {
28
+ const built = d.build(contextOf(d.id, d.livery, { ...options, detail: options.detail ?? d.detail ?? 0.85 }, HULL_OF[d.kind]), options);
29
+ const joint = options.separation && d.bottom && options.level !== "coarse" ? separationJoint(COLLARS[d.bottom].outer / 2, 0, options.separation === true ? {} : options.separation) : [];
30
+ const all = options.cutaway && options.cutYaw ? place(built, { at: [0, 0, 0], yaw: options.cutYaw }) : built;
31
+ if (joint.length)
32
+ all.push(...joint);
33
+ return options.level === "coarse" ? all.filter(isCoarse) : all;
34
+ },
35
+ });
36
+ const TAU = 2 * Math.PI;
37
+ /** The hull layers each kind of module shows in its cutaway, unless the ship says otherwise. */
38
+ const HULL_OF = { engine: "transport", thruster: "explorer", tank: "tanker", cargo: "transport", habitat: "liner", lab: "explorer", sensor: "explorer", reactor: "transport", radiator: "transport", node: "transport", truss: "transport", adapter: "transport", shield: "command" };
39
+ /** The radius of the bell's wall at a fraction `t` of its length from the mouth (0) to the throat (1): a bell contour, flaring hard near the throat and nearly straight at the mouth. */
40
+ const bellRadius = (e, t) => e * (0.2 + 0.8 * Math.pow(1 - t, 0.55));
41
+ /**
42
+ * One regeneratively cooled magnetic nozzle, in the manner of Raptor and the RS-25: a bell contour with a fluted, tube-wall jacket over its upper two thirds and a dark radiation-cooled skirt below, coolant manifolds with
43
+ * feed lines, a throat ring, a combustion chamber wrapped in gold foil with an injector head and propellant ports, a turbopump on its own volute with its discharge and turbine lines, a gimbal bearing and two actuators with
44
+ * clevis ends, and the glowing field coils. Its mouth is at y = 0 and its injector at y = `length` + 1; the pipes are round with flanges and bends.
45
+ */
46
+ function nozzle(ctx, n, plateY) {
47
+ const [x, z] = n.at;
48
+ const at = [x, z];
49
+ const e = n.exit;
50
+ const l = n.length;
51
+ const fine = ctx.detail >= 0.7;
52
+ const mid = ctx.detail >= 0.55;
53
+ const out = [];
54
+ const segs = fine ? 40 : mid ? 32 : 20;
55
+ const stations = fine ? 14 : mid ? 11 : 7;
56
+ const t = Array.from({ length: stations }, (_, i) => i / (stations - 1));
57
+ const profile = t.map((f) => [bellRadius(e, f), l * f]);
58
+ const wallAt = (y) => bellRadius(e, Math.min(1, Math.max(0, y / l)));
59
+ // the bell: dark metal outside and a darker inside; the first station is the mouth, which is where the flame starts
60
+ out.push({ kind: "lathe", material: "bell", at, segs, under: true, outline: true, profile, rings: [0.001, l * 0.45, l * 0.82] });
61
+ out.push({ kind: "lathe", material: "bell-inside", at, segs, under: true, profile: [[e * 0.15, l - 0.1], ...t.slice().reverse().slice(1).map((f) => [bellRadius(e, f) * 0.985, l * f])] });
62
+ out.push({ kind: "lathe", material: "lamp-blue", at, segs: 10, only: "mesh", under: true, profile: [[0.001, l - 0.12], [e * 0.15, l - 0.12]] });
63
+ // the regeneratively cooled jacket: tube walls round the upper two thirds of the bell, fluted so each tube catches the light on its own
64
+ const j0 = 0.38;
65
+ const jacket = t.filter((f) => f >= j0).map((f) => [bellRadius(e, f) + 0.045, l * f]);
66
+ out.push({ kind: "lathe", material: "pipe-steel", at, segs: fine ? 80 : mid ? 64 : 40, only: "mesh", under: true, profile: jacket, flutes: fine ? 20 : mid ? 16 : 10, flute: Math.max(0.05, e * 0.045) });
67
+ // the lip of the mouth, a stiffening band, and the manifold rings where the coolant enters and leaves, with their bolts
68
+ out.push({ kind: "lathe", material: "hull-grey", at, segs, only: "mesh", under: true, profile: [[e * 1.0, 0], [e * 1.06, 0], [e * 1.06, 0.18], [e * 1.0, 0.18]] });
69
+ if (mid)
70
+ out.push({ kind: "lathe", material: "hull-grey-dark", at, segs, only: "mesh", under: true, profile: [[wallAt(l * 0.2) + 0.01, l * 0.2 - 0.1], [wallAt(l * 0.2) + 0.11, l * 0.2 - 0.07], [wallAt(l * 0.2) + 0.11, l * 0.2 + 0.07], [wallAt(l * 0.2) + 0.01, l * 0.2 + 0.1]] });
71
+ const inlet = l * j0;
72
+ const outlet = l * 0.9;
73
+ for (const [y, material] of [[inlet, "copper"], [outlet, "pipe-steel"]]) {
74
+ const r = wallAt(y) + 0.16 + e * 0.02;
75
+ out.push(hoop(material, r, y, Math.max(0.1, e * 0.07), segs, mid ? 6 : 5, { at, under: true }));
76
+ if (mid)
77
+ out.push({ kind: "lathe", material: "hull-grey-dark", at, segs, only: "mesh", under: true, profile: [[r + 0.02, y - e * 0.13], [r + 0.02, y + e * 0.13]] });
78
+ if (fine)
79
+ out.push(...ringOf(8, r, y).map((p) => rod("hull-grey", [x + p.at[0] * 0.98, y, z + p.at[2] * 0.98], [x + p.at[0] * 1.07, y, z + p.at[2] * 1.07], 0.06, 6)));
80
+ }
81
+ // the throat ring and the combustion chamber above it, in gold foil, with an injector dome and propellant ports
82
+ out.push({ kind: "lathe", material: "hull-grey-dark", at, segs: 24, only: "mesh", profile: [[e * 0.2, l], [e * 0.4, l + 0.1], [e * 0.4, l + 0.2]], welds: [l + 0.1] });
83
+ out.push(...foilBand("kapton", e * 0.425, l + 0.22, l + 0.78, 0, 2 * Math.PI, ctx.seed + at.join(","), fine ? Math.max(0.16, e * 0.1) : Math.max(0.3, e * 0.16), 0.025).map((p) => place([p], { at: [x, 0, z] })[0]));
84
+ out.push({ kind: "lathe", material: "hull-grey", at, segs: 24, only: "mesh", profile: [[e * 0.44, l + 0.78], [e * 0.44, l + 0.86], [e * 0.34, l + 0.95], [e * 0.2, l + 1.0]] });
85
+ if (mid)
86
+ out.push(hoop("coolant", e * 0.46, l + 0.82, 0.05, 20, 5, { at }));
87
+ const toward = (deg0, radius, y) => [x + radius * Math.sin(deg(deg0)), y, z + radius * Math.cos(deg(deg0))];
88
+ // the turbopump stands beside the chamber on the nozzle's outer side, with its volute, its inlet line to the plate, its discharge to the inlet manifold and a hot line from the chamber
89
+ const out0 = Math.atan2(x, z) * (180 / Math.PI);
90
+ const px = out0 + 25;
91
+ const pump = toward(px, e * 0.78, l * 0.76);
92
+ out.push(post("hull-grey-dark", [pump[0], pump[2]], e * 0.2, l * 0.76, e * 0.2, l + 0.7, 12), post("hull-grey", [pump[0], pump[2]], e * 0.26, l * 0.76 + 0.3, e * 0.26, l * 0.76 + 0.9, 12));
93
+ if (mid)
94
+ out.push(post("pipe-steel", [pump[0], pump[2]], e * 0.22, l * 0.76 + 0.08, e * 0.22, l * 0.76 + 0.3, 12), post("hull-grey-dark", [pump[0], pump[2]], e * 0.14, l * 0.76 + 0.9, e * 0.14, l + 0.92, 12), hoop("hull-grey", e * 0.3, l * 0.76 + 0.6, 0.05, 20, 5, { at: [pump[0], pump[2]] }), hoop("kapton", e * 0.205, l + 0.4, 0.04, 14, 4, { at: [pump[0], pump[2]] }));
95
+ if (mid) {
96
+ out.push(...pipeRun([toward(px, e * 0.84, l + 0.6), toward(px, e * 0.62, l + 0.6), toward(px + 6, e * 0.5, l + 0.6)], Math.max(0.08, e * 0.045), "pipe-steel", { ends: ["flange", "bulkhead"], band: "coolant", flangeEvery: 99, bracketEvery: 99 }));
97
+ out.push(...pipeRun([toward(px, e * 0.62, l * 0.76 + 0.45), toward(px - 25, e * 0.8, l * 0.76 + 0.45), toward(px - 25, e * 0.8, inlet)], Math.max(0.07, e * 0.04), "copper", { ends: ["flange", "flange"], flangeEvery: 99, bracketEvery: 99 }));
98
+ }
99
+ if (fine) {
100
+ out.push(...pipeRun([toward(px, e * 0.62, l + 0.5), toward(px - 70, e * 0.5, l + 0.5), toward(px - 70, e * 0.4, l + 0.2)], Math.max(0.06, e * 0.032), "hull-grey", { ends: ["cap", "flange"], flangeEvery: 99, bracketEvery: 99 }));
101
+ out.push(...pipeRun([toward(px + 70, e * 0.44, l + 0.7), toward(px + 70, e * 0.62, l + 0.7), toward(px + 120, e * 0.8, outlet)], Math.max(0.06, e * 0.032), "coolant", { ends: ["flange", "flange"], flangeEvery: 99, bracketEvery: 99 }));
102
+ }
103
+ // propellant ports: two big flanged inlets on the injector dome
104
+ for (const a of mid ? [px + 150, px - 150] : [px + 150])
105
+ out.push(...pipeRun([toward(a, e * 0.42, l + 0.5), toward(a, e * 0.7, l + 0.5)], Math.max(0.09, e * 0.05), "pipe-steel", { ends: ["flange", "cap"], flangeEvery: 99, bracketEvery: 99 }));
106
+ // the plate's feed lines
107
+ for (let k = 0; k < (fine ? 3 : 2); k++) {
108
+ const a = 40 + 120 * k + out0 * 0.3;
109
+ out.push(post("copper", [x + e * 0.34 * Math.sin(deg(a)), z + e * 0.34 * Math.cos(deg(a))], 0.07, l + 1.0, 0.07, plateY, 8), post("hull-grey-dark", [x + e * 0.34 * Math.sin(deg(a)), z + e * 0.34 * Math.cos(deg(a))], 0.11, plateY - 0.25, 0.11, plateY - 0.1, 10));
110
+ }
111
+ // the gimbal: a bearing ring and ball under the plate, and two actuators, each a cylinder with a piston and clevis ends
112
+ out.push(hoop("hull-grey-dark", e * 0.48, plateY - 0.12, 0.1, mid ? 24 : 16, mid ? 6 : 5, { at }), { kind: "lathe", material: "hull-grey-dark", at, segs: 16, only: "mesh", profile: [[e * 0.3, plateY - 0.05], [e * 0.34, plateY - 0.4]] });
113
+ for (const a of [30, 120]) {
114
+ const top = [x + e * 0.5 * Math.sin(deg(a)), plateY, z + e * 0.5 * Math.cos(deg(a))];
115
+ const low = [x + e * 0.62 * Math.sin(deg(a)), l * 0.62, z + e * 0.62 * Math.cos(deg(a))];
116
+ const mid = [top[0] + (low[0] - top[0]) * 0.58, top[1] + (low[1] - top[1]) * 0.58, top[2] + (low[2] - top[2]) * 0.58];
117
+ out.push(rod("hull-grey-dark", top, mid, Math.max(0.09, e * 0.05), 12), rod("pipe-steel", mid, low, Math.max(0.04, e * 0.022), 8), rod("hull-grey", [mid[0] + (top[0] - mid[0]) * 0.1, mid[1] + (top[1] - mid[1]) * 0.1, mid[2] + (top[2] - mid[2]) * 0.1], [mid[0] + (top[0] - mid[0]) * 0.04, mid[1] + (top[1] - mid[1]) * 0.04, mid[2] + (top[2] - mid[2]) * 0.04], Math.max(0.11, e * 0.06), 12), box("hull-grey-dark", [top[0], top[1] - 0.12, top[2]], 0.26, 0.16, 0.24, a), box("hull-grey-dark", [low[0], low[1] - 0.1, low[2]], 0.24, 0.16, 0.22, a));
118
+ }
119
+ // the field coils round the bell: they glow when the engines are lit
120
+ const coilYs = (fine ? [0.3, 0.55, 0.78] : [0.38, 0.7]).map((f) => l * f);
121
+ for (const y of coilYs)
122
+ out.push(hoop("coil-lit", wallAt(y) + 0.24 + e * 0.04, y, 0.075 * (e / 1.8 + 0.5), fine ? 28 : mid ? 20 : 14, fine ? 6 : 5, { at, under: true }));
123
+ // coolant tubes wound on the skirt's lower part
124
+ if (mid)
125
+ for (const f of fine ? [0.12, 0.3] : [0.22])
126
+ out.push(hoop("coolant", wallAt(l * f) + 0.1, l * f, 0.035, fine ? 24 : 12, 5, { at, under: true }));
127
+ return out;
128
+ }
129
+ /** The place of each nozzle of a cluster. */
130
+ function clusterAt(count) {
131
+ if (count === 1)
132
+ return [{ at: [0, 0], exitK: 1 }];
133
+ if (count === 3)
134
+ return ringAt(3, 0, 0.5);
135
+ if (count === 4)
136
+ return ringAt(4, 45, 0.47);
137
+ return [{ at: [0, 0], exitK: 0.305 }, ...ringAt(6, 0, 0.64)];
138
+ }
139
+ const ringAt = (n, start, k) => Array.from({ length: n }, (_, i) => ({ at: [k * 6 * Math.sin(deg(start + (360 * i) / n)), k * 6 * Math.cos(deg(start + (360 * i) / n))], exitK: 0.285 }));
140
+ function engineCluster(count, id, name, mass) {
141
+ const R = 5.9;
142
+ const exit = count === 1 ? 3.6 : count === 3 ? 2.5 : count === 4 ? 2.3 : 1.8;
143
+ const nl = count === 1 ? 7.5 : 5.6;
144
+ const plateY = nl + 1.0;
145
+ const length = plateY + 0.8 + 4.2;
146
+ return define({
147
+ id,
148
+ name,
149
+ kind: "engine",
150
+ note: `Fusion engine cluster: ${count} magnetic nozzle${count > 1 ? "s" : ""} under one thrust plate and thrust frame, ending in a heavy collar.`,
151
+ mass,
152
+ length,
153
+ width: 2 * (R + 1.1) + 2.2,
154
+ depth: 2 * (R + 1.1) + 2.2,
155
+ top: "L",
156
+ inside: false,
157
+ detail: count >= 7 ? 0.4 : count >= 4 ? 0.5 : count >= 3 ? 0.6 : 0.8,
158
+ livery: "industrial",
159
+ build: (ctx) => {
160
+ const out = [];
161
+ for (const c of clusterAt(count))
162
+ out.push(...nozzle(ctx, { at: c.at, exit, length: nl }, plateY));
163
+ // the thrust plate: a disc with a rim, bolts and sectors
164
+ out.push({ kind: "lathe", material: "hull-grey-dark", segs: 48, body: true, outline: true, profile: [[0.01, plateY], [R - 0.2, plateY], [R, plateY + 0.15], [R, plateY + 0.8], [0.01, plateY + 0.8]], welds: [plateY + 0.4] });
165
+ out.push(...stamp([box("hull-grey", [0, plateY - 0.25, R - 0.9], 1.6, 0.7, 0.3)], ringOf(some(ctx, 16), 0, 0)));
166
+ out.push(hoop("copper", R - 0.7, plateY - 0.02, 0.12, 32, 5), hoop("hull-grey", R * 0.55, plateY - 0.02, 0.1, 32, 5));
167
+ // the thrust frame above: a drum of plating on struts
168
+ const top = plateY + 0.8;
169
+ out.push(...drum(ctx, { R: 6, L: length - top, top: "L", panels: { wide: 2.2, tall: 1.4 }, hatches: 4, roundHatches: true, conduits: 5, trays: 3, vents: 6, ladders: 1, digits: "01", junk: 90, hazard: true, rings: [0.5] }).map((p) => place([p], { at: [0, top, 0] })[0]));
170
+ // struts from the plate to the frame: eight pairs, in an X, with a ring between
171
+ for (let k = 0; k < 8; k++) {
172
+ const a = deg(22.5 + 45 * k);
173
+ const lo = [(R - 0.1) * Math.sin(a), plateY + 0.8, (R - 0.1) * Math.cos(a)];
174
+ const hi = [(R + 0.55) * Math.sin(a + 0.16), plateY + 3.4, (R + 0.55) * Math.cos(a + 0.16)];
175
+ out.push(rod("hull-grey", lo, hi, 0.16, 6), rod("hull-grey", [lo[0] * 1.0, lo[1], lo[2] * 1.0], [(R + 0.55) * Math.sin(a - 0.16), plateY + 3.4, (R + 0.55) * Math.cos(a - 0.16)], 0.16, 6));
176
+ }
177
+ out.push(hoop("hull-grey-dark", R + 0.55, plateY + 3.4, 0.2, 32, 5));
178
+ // radiator wings: four
179
+ for (let k = 0; k < 4; k++)
180
+ out.push(...radiator({ r0: R + 0.1, az: deg(45 + 90 * k), y: plateY + 2.5, reach: 2.6, height: 2.6, seed: `${id}/${k}`, panels: 2 }));
181
+ out.push(...lamps(ringOf(8, R - 0.2, plateY + 0.95, 22.5).map((p) => ({ at: p.at, colour: "amber", size: 0.1 }))));
182
+ return out;
183
+ },
184
+ });
185
+ }
186
+ /** A small thruster pod: one nozzle with its bottle, fins and a collar on top, to stand on a port. */
187
+ const thrusterPod = define({
188
+ id: "thruster-pod-s",
189
+ name: "Fusion thruster pod",
190
+ kind: "thruster",
191
+ note: "A single magnetic nozzle on a compact reactor bottle with two radiator fins; stands on an S port for side thrust or braking.",
192
+ mass: 48,
193
+ length: 8.4,
194
+ width: 6.6,
195
+ top: "S",
196
+ livery: "industrial",
197
+ build: (ctx) => {
198
+ const out = [];
199
+ out.push(...nozzle(ctx, { at: [0, 0], exit: 1.2, length: 3.4 }, 4.4));
200
+ out.push(...drum(ctx, { R: 1.5, L: 4.0, top: "S", panels: { wide: 1.2, tall: 0.9 }, hatches: 2, conduits: 3, trays: 1, vents: 2, ladders: 0, digits: "3", junk: 18, rings: [0.5] }).map((p) => place([p], { at: [0, 4.4, 0] })[0]));
201
+ out.push({ kind: "lathe", material: "hull-grey-dark", segs: 28, outline: true, profile: [[1.5, 4.4], [1.5, 4.5], [0.1, 4.5]] });
202
+ for (const a of [0, 180])
203
+ out.push(...radiator({ r0: 1.45, az: deg(a + 90), y: 6.4, reach: 1.9, height: 2.0, seed: `pod/${a}`, panels: 2 }));
204
+ return out;
205
+ },
206
+ });
207
+ /** A ring of attitude thrusters: eight blocks round a short collar ring. */
208
+ const rcsRing = define({
209
+ id: "rcs-ring-m",
210
+ name: "Attitude thruster ring",
211
+ kind: "thruster",
212
+ note: "Eight cold-plasma thruster blocks round a stiff ring, with their propellant bottles; turns and trims a ship.",
213
+ mass: 22,
214
+ length: 2.8,
215
+ width: 8.6,
216
+ top: "M",
217
+ bottom: "M",
218
+ livery: "industrial",
219
+ build: (ctx) => {
220
+ const out = drum(ctx, { R: 3.0, L: 2.8, top: "M", bottom: "M", panels: { wide: 1.8, tall: 1.0 }, hatches: 2, conduits: 2, trays: 1, vents: 2, ladders: 0, digits: "5", junk: 16, hazard: false });
221
+ for (let k = 0; k < 8; k++) {
222
+ const a = (360 * k) / 8;
223
+ const x = 3.7 * Math.sin(deg(a));
224
+ const z = 3.7 * Math.cos(deg(a));
225
+ out.push(box("hull-grey-dark", [x, 0.5, z], 1.0, 1.0, 1.8, a));
226
+ out.push({ kind: "lathe", material: "bell", at: [x, z], segs: 12, profile: [[0.34, 0.5], [0.22, 1.1], [0.14, 1.6]], under: true });
227
+ out.push({ kind: "lathe", material: "bell", at: [x, z], segs: 12, profile: [[0.34, 2.3], [0.22, 1.9], [0.14, 1.5]] });
228
+ out.push(rod("hull-grey", [3.0 * Math.sin(deg(a)), 1.4, 3.0 * Math.cos(deg(a))], [x, 1.4, z], 0.12, 6));
229
+ out.push(rod("copper", [x, 0.5, z], [x, 2.3, z], 0.06, 6));
230
+ }
231
+ return out;
232
+ },
233
+ });
234
+ // ---------------------------------------------------------------------------------------------------------------------------------
235
+ // tanks
236
+ function tank(id, name, R, L, top, bottom, mass, propellant, note) {
237
+ return define({
238
+ id,
239
+ name,
240
+ kind: "tank",
241
+ note,
242
+ mass,
243
+ propellant,
244
+ length: L,
245
+ width: 2 * R + 2.2,
246
+ top,
247
+ bottom,
248
+ inside: true,
249
+ detail: 0.7,
250
+ livery: "industrial",
251
+ build: (ctx) => {
252
+ const out = drum(ctx, { R, L, top, bottom, panels: { wide: 3.0, tall: 2.2 }, hatches: 3, conduits: 5, trays: 3, vents: 4, ladders: 2, digits: "11", rings: [0.2, 0.4, 0.6, 0.8] });
253
+ // frost on the cold dome ends and a manifold with valves
254
+ const [y0, y1] = straight({ R, L, top, bottom });
255
+ out.push(...pipeRing("hull-grey", R + 0.15, (y0 + y1) / 2, 0.16));
256
+ for (let k = 0; k < some(ctx, 4); k++) {
257
+ const a = deg(20 + 90 * k);
258
+ const y = y0 + (y1 - y0) * (0.2 + 0.2 * k);
259
+ const f = patch(R + 0.1, a, y);
260
+ const out1 = [f.o[0] + f.w[0] * 0.9, y, f.o[2] + f.w[2] * 0.9];
261
+ const out2 = [out1[0] + f.u[0] * 1.6, y, out1[2] + f.u[2] * 1.6];
262
+ out.push(...pipeRun([f.o, out1, [out2[0] + f.u[0] * 0.6, y, out2[2] + f.u[2] * 0.6]], 0.14, "pipe-steel", { support: [-f.w[0], 0, -f.w[2]], band: k % 2 ? "coolant" : "copper", ends: ["bulkhead", k % 2 ? "valve" : "cap"], bracketEvery: 1.1 }));
263
+ }
264
+ if (ctx.cutaway) {
265
+ const level = y0 + (y1 - y0) * 0.68;
266
+ out.push({ kind: "lathe", material: "fuel", segs: 48, only: "mesh", profile: [[R - ctx.depth - 0.1, y0 + 0.2], [R - ctx.depth - 0.1, level]], arc: () => CUT });
267
+ out.push({ kind: "lathe", material: "fuel", segs: 48, only: "mesh", profile: [[0.01, level], [R - ctx.depth - 0.1, level]] });
268
+ out.push({ kind: "lathe", material: "frost", segs: 48, only: "mesh", profile: [[0.01, y0 + 0.2], [R - ctx.depth - 0.1, y0 + 0.2]] });
269
+ // baffles: rings with holes, and a feed column
270
+ for (let k = 1; k < 5; k++)
271
+ out.push(annulus("hull-grey", 1.6, R - ctx.depth - 0.05, y0 + ((y1 - y0) * k) / 5, y0 + ((y1 - y0) * k) / 5 + 0.14, 40, { only: "mesh" }));
272
+ out.push(post("hull-grey-dark", [0, 0], 1.0, y0, 1.0, y1, 20), post("copper", [0, 0], 0.5, y0 - 0.1, 0.5, y1 + 0.1, 12));
273
+ for (let k = 0; k < 6; k++)
274
+ out.push(rod("hull-grey", [1.0 * Math.sin(deg(k * 60)), y0 + 1, 1.0 * Math.cos(deg(k * 60))], [(R - ctx.depth - 0.1) * Math.sin(deg(k * 60)), y0 + 1.6, (R - ctx.depth - 0.1) * Math.cos(deg(k * 60))], 0.1, 6));
275
+ }
276
+ return out;
277
+ },
278
+ });
279
+ }
280
+ /** Four spherical tanks held in a frame, with their manifold: the kit's high-pressure store. */
281
+ const sphereFarm = define({
282
+ id: "tank-spheres-4",
283
+ name: "Sphere tank farm",
284
+ kind: "tank",
285
+ note: "Four spherical high-pressure tanks in a girder frame round a service core; stores reaction mass, helium and coolant.",
286
+ mass: 210,
287
+ propellant: 640,
288
+ length: 14.0,
289
+ width: 14.0,
290
+ top: "L",
291
+ bottom: "L",
292
+ ports: [],
293
+ inside: true,
294
+ livery: "industrial",
295
+ build: (ctx) => {
296
+ const R = 5.9;
297
+ const out = [];
298
+ out.push(...drum(ctx, { R: 1.9, L: 14, panels: { wide: 1.4, tall: 1.4 }, hatches: 2, conduits: 3, trays: 0, vents: 0, ladders: 1, digits: "12", junk: 16, hazard: false }).filter((p) => !(p.kind === "lathe" && p.body)));
299
+ out.push({ kind: "lathe", material: "hull-grey-dark", segs: 28, body: true, outline: true, profile: [[1.9, 0], [1.9, 14]], welds: [3.5, 7, 10.5] });
300
+ out.push(...collar("L", 0, -1), ...collar("L", 14, 1));
301
+ out.push({ kind: "lathe", material: "hull-grey-dark", segs: 56, body: true, outline: true, profile: [[R, 0.0], [R, 0.4], [1.9, 0.4]] });
302
+ out.push({ kind: "lathe", material: "hull-grey-dark", segs: 56, body: true, outline: true, profile: [[R, 13.6], [R, 14], [1.9, 13.6]] });
303
+ const sphere = (r, y, x, z, material) => ({
304
+ kind: "lathe",
305
+ material,
306
+ at: [x, z],
307
+ segs: 28,
308
+ body: true,
309
+ outline: true,
310
+ profile: Array.from({ length: 13 }, (_, i) => [Math.max(0.001, r * Math.sin((Math.PI * i) / 12)), y - r * Math.cos((Math.PI * i) / 12)]),
311
+ welds: [y],
312
+ rings: [y - r * 0.5, y + r * 0.5],
313
+ });
314
+ for (let k = 0; k < 4; k++) {
315
+ const a = deg(45 + 90 * k);
316
+ const x = 3.6 * Math.sin(a);
317
+ const z = 3.6 * Math.cos(a);
318
+ out.push(sphere(2.9, 7, x, z, k % 2 ? "hull-white-worn" : "hull-white"));
319
+ out.push({ kind: "lathe", material: "hull-grey-dark", at: [x, z], segs: 24, only: "mesh", profile: [[3.0, 6.9], [3.0, 7.1]] });
320
+ for (let g = 0; g < 4; g++) {
321
+ const b = a + deg(90 * g + 45);
322
+ out.push(rod("hull-grey", [x + 2.5 * Math.sin(b), 4.9, z + 2.5 * Math.cos(b)], [x + 2.2 * Math.sin(b), 0.4, z + 2.2 * Math.cos(b)], 0.12, 6), rod("hull-grey", [x + 2.5 * Math.sin(b), 9.1, z + 2.5 * Math.cos(b)], [x + 2.2 * Math.sin(b), 13.6, z + 2.2 * Math.cos(b)], 0.12, 6));
323
+ }
324
+ out.push(rod("copper", [x * 0.5, 7, z * 0.5], [x * 0.9, 7, z * 0.9], 0.13, 8), post("hull-grey", [x, z], 0.4, 9.8, 0.4, 10.6, 10), post("lamp-red", [x, z], 0.22, 10.6, 0.22, 10.9, 8));
325
+ }
326
+ for (const y of [3.4, 7, 10.6])
327
+ out.push(hoop("hull-grey", 3.6 * Math.SQRT2 + 0.6, y, 0.14, 32, 5));
328
+ out.push(...stencil("12", 1.95, 0.4, 7, 1.0, "black"));
329
+ return out;
330
+ },
331
+ });
332
+ // ---------------------------------------------------------------------------------------------------------------------------------
333
+ // cargo
334
+ /** A standard container: 6 by 6 metres across and `L` long, with an M collar at each end so it stands on a spine or a cradle. */
335
+ function container(id, name, L, cold, mass) {
336
+ const W = 6;
337
+ return define({
338
+ id,
339
+ name,
340
+ kind: "cargo",
341
+ note: cold ? "A refrigerated container: the standard 6 m box with a cooling unit and a cold-chain marking." : "The standard heavy cargo container: a corrugated 6 m box with corner castings, door locks and M collars at both ends.",
342
+ mass,
343
+ length: L,
344
+ width: W,
345
+ top: "M",
346
+ bottom: "M",
347
+ inside: true,
348
+ livery: "transport",
349
+ build: (ctx) => {
350
+ const random = rng(`${ctx.seed}/box`);
351
+ const out = [];
352
+ const h = W / 2;
353
+ // the box: the shell in dark steel, then corrugation and panels in the livery
354
+ out.push(box(ctx.livery.under, [0, 0.25, 0], W - 0.3, W - 0.3, L - 0.5));
355
+ const sides = [{ n: [1, 0, 0], t: [0, 0, 1] }, { n: [-1, 0, 0], t: [0, 0, -1] }, { n: [0, 0, 1], t: [-1, 0, 0] }, { n: [0, 0, -1], t: [1, 0, 0] }];
356
+ const open = ctx.cutaway;
357
+ for (const [si, s] of sides.entries()) {
358
+ if (open && si === 2)
359
+ continue;
360
+ const o = [s.n[0] * h, 0, s.n[2] * h];
361
+ const rows = Math.max(3, Math.round(L / 1.6));
362
+ const ribs = Math.max(8, Math.round(W / (0.5 / ctx.detail)));
363
+ for (let r = 0; r < rows; r++) {
364
+ const y0 = 0.45 + ((L - 0.9) * r) / rows;
365
+ const hgt = (L - 0.9) / rows - 0.06;
366
+ const mat = random() < 0.55 ? ctx.livery.main : random() < 0.5 ? ctx.livery.mainWorn : ctx.livery.block;
367
+ out.push(box(mat, [o[0] + s.n[0] * 0.04, y0, o[2] + s.n[2] * 0.04], Math.abs(s.t[0]) * (W - 1.0) + Math.abs(s.t[2]) * 0.06 + 0.0 * ribs, Math.abs(s.t[2]) * (W - 1.0) + Math.abs(s.t[0]) * 0.06, hgt));
368
+ }
369
+ // vertical corrugation ribs
370
+ for (let i = 0; i < ribs; i++) {
371
+ const k = ((i + 0.5) / ribs - 0.5) * (W - 1.2);
372
+ out.push(beam("hull-grey", [o[0] + s.n[0] * 0.09 + s.t[0] * k, 0.5, o[2] + s.n[2] * 0.09 + s.t[2] * k], [o[0] + s.n[0] * 0.09 + s.t[0] * k, L - 0.5, o[2] + s.n[2] * 0.09 + s.t[2] * k], 0.07 + Math.abs(s.n[0]) * 0.0, 0.07));
373
+ }
374
+ // markings: a warning chevron band and the box's number, our own
375
+ }
376
+ // corner castings and the frame's rails
377
+ for (const [sx, sz] of [[1, 1], [1, -1], [-1, 1], [-1, -1]]) {
378
+ for (const y of [0.25, L - 0.25])
379
+ out.push(box("hull-grey-dark", [sx * (h - 0.25), y - 0.25, sz * (h - 0.25)], 0.5, 0.5, 0.5));
380
+ out.push(beam("hull-grey-dark", [sx * (h - 0.1), 0.2, sz * (h - 0.1)], [sx * (h - 0.1), L - 0.2, sz * (h - 0.1)], 0.2, 0.2));
381
+ }
382
+ for (const y of [0.3, L - 0.3])
383
+ for (const [a, b] of [[-1, 1], [1, 1]])
384
+ out.push(beam("hull-grey-dark", [a * h * 0.99, y, -b * h * 0.99], [a * h * 0.99, y, b * h * 0.99], 0.14, 0.14), beam("hull-grey-dark", [-b * h * 0.99, y, a * h * 0.99], [b * h * 0.99, y, a * h * 0.99], 0.14, 0.14));
385
+ // door seam, lock rods and hinges on the front (+Z) face
386
+ const doorZ = h + 0.06;
387
+ for (const dx of [-1.8, -0.6, 0.6, 1.8])
388
+ out.push(rod("hull-grey", [dx, 0.7, doorZ + 0.04], [dx, L - 0.7, doorZ + 0.04], 0.04, 6), box("hull-grey-dark", [dx, 1.4, doorZ + 0.04], 0.2, 0.12, 0.3), box("hull-grey-dark", [dx, L - 1.7, doorZ + 0.04], 0.2, 0.12, 0.3));
389
+ out.push(beam("black", [0, 0.6, doorZ + 0.03], [0, L - 0.6, doorZ + 0.03], 0.05, 0.03));
390
+ for (let i = 0; i < some(ctx, 6); i++)
391
+ out.push(box(random() < 0.5 ? "hazard" : "lamp-amber", [(random() - 0.5) * 4.4, 0.8 + random() * (L - 2), h + 0.075], 0.34, 0.03, 0.34));
392
+ if (cold) {
393
+ // a cooling unit on the front face and louvres
394
+ out.push(box("hull-grey-dark", [0, L * 0.5, h + 0.12], 2.8, 0.6, 2.6), box("panel-dark", [0, L * 0.5 + 0.2, h + 0.44], 2.4, 0.04, 2.0), post("hull-grey", [0.0, h + 0.5], 0.7, L * 0.5 + 0.9, 0.7, L * 0.5 + 1.0, 14));
395
+ for (let i = 0; i < 6; i++)
396
+ out.push(box("hull-grey", [0, L * 0.5 - 0.9 + i * 0.3, h + 0.5], 2.2, 0.03, 0.05));
397
+ out.push(box("frost", [-2.0, L - 2.2, h + 0.1], 1.0, 0.06, 1.0));
398
+ }
399
+ if (open) {
400
+ // the inside: pallets of freight in racks
401
+ for (let k = 0; k < 4; k++)
402
+ for (let j = 0; j < 3; j++)
403
+ out.push(box(random() < 0.5 ? "hull-orange" : "hull-yellow", [-2.1 + k * 1.4, 0.5 + j * (L / 3.1), 0.0], 1.2, 2.4, L / 3.1 - 0.2 + 0.0), box("hull-grey", [-2.1 + k * 1.4, 0.4 + j * (L / 3.1), 0.0], 1.3, 2.5, 0.08));
404
+ }
405
+ out.push(...collar("M", 0, -1), ...collar("M", L, 1));
406
+ return out;
407
+ },
408
+ });
409
+ }
410
+ // ---------------------------------------------------------------------------------------------------------------------------------
411
+ // habitation
412
+ function habitatRing(id, name, major, mass) {
413
+ const tube = 2.7;
414
+ const hubR = 3.0;
415
+ const L = 16;
416
+ const yc = L / 2;
417
+ const reach = major + tube + 1.0;
418
+ return define({
419
+ id,
420
+ name,
421
+ kind: "habitat",
422
+ note: "A rotating habitat ring on a hub with six spokes, window bands, airlocks and a bearing ring; the hub is a standard M spine segment.",
423
+ mass,
424
+ length: L,
425
+ width: 2 * reach,
426
+ top: "M",
427
+ bottom: "M",
428
+ inside: true,
429
+ detail: 0.25,
430
+ livery: "science",
431
+ build: (ctx) => {
432
+ const random = rng(`${ctx.seed}/ring`);
433
+ const out = [];
434
+ out.push(...drum(ctx, { R: hubR, L, top: "M", bottom: "M", panels: { wide: 1.9, tall: 1.5 }, hatches: 3, roundHatches: true, conduits: 3, trays: 2, vents: 3, ladders: 1, digits: "09", junk: 40, rings: [0.2, 0.8] }));
435
+ // the bearing: a thick collar round the hub where the spokes join
436
+ out.push({ kind: "lathe", material: "hull-grey-dark", segs: 56, body: true, outline: true, profile: [[hubR + 0.05, yc - 1.6], [hubR + 0.9, yc - 1.3], [hubR + 0.9, yc + 1.3], [hubR + 0.05, yc + 1.6]], welds: [yc] });
437
+ out.push(hoop("copper", hubR + 0.95, yc - 0.5, 0.09, 32, 5), hoop("copper", hubR + 0.95, yc + 0.5, 0.09, 32, 5));
438
+ // the ring: a rounded-box tube
439
+ const rIn = major - tube;
440
+ const rOut = major + tube;
441
+ const hy = tube * 0.95;
442
+ const cut = ctx.cutaway;
443
+ const prof = cut
444
+ ? [[rIn, yc - 0.05], [rIn + 0.4, yc - hy], [rOut - 0.4, yc - hy], [rOut, yc - 0.05]]
445
+ : [[rIn + 0.4, yc - hy], [rOut - 0.4, yc - hy], [rOut, yc - hy + 0.4], [rOut, yc + hy - 0.4], [rOut - 0.4, yc + hy], [rIn + 0.4, yc + hy], [rIn, yc + hy - 0.4], [rIn, yc - hy + 0.4], [rIn + 0.4, yc - hy]];
446
+ out.push({ kind: "lathe", material: ctx.livery.under, segs: 72, body: true, outline: true, profile: prof, welds: [yc - hy + 0.4, yc + hy - 0.4] });
447
+ out.push(...pipeRing("copper", rOut, yc - hy + 0.5, 0.12, 96), ...pipeRing("copper", rOut, yc + hy - 0.5, 0.12, 96));
448
+ // the roof and the floor of the ring are plated too: radial seams and bands of fixings, so no broad face is bare, in the line looks as much as the painted one
449
+ if (!cut)
450
+ for (const sign of [1, -1]) {
451
+ const y = yc + sign * (hy + 0.015);
452
+ const r0 = rIn + 0.4;
453
+ const r1 = rOut - 0.4;
454
+ const around = (r) => Array.from({ length: 73 }, (_, k) => [r * Math.sin((TAU * k) / 72), y, r * Math.cos((TAU * k) / 72)]);
455
+ out.push({ kind: "lines", weight: "feature", paths: [0, 1, 2, 3, 4].map((k) => around(r0 + ((r1 - r0) * k) / 4)) });
456
+ out.push({ kind: "lines", weight: "weld", paths: Array.from({ length: 48 }, (_, k) => [[r0 * Math.sin((TAU * k) / 48), y, r0 * Math.cos((TAU * k) / 48)], [r1 * Math.sin((TAU * k) / 48), y, r1 * Math.cos((TAU * k) / 48)]]) });
457
+ out.push({ kind: "lines", weight: "weld", paths: Array.from({ length: 48 }, (_, k) => [[(r0 + (r1 - r0) * 0.25) * Math.sin((TAU * (k + 0.5)) / 48), y, (r0 + (r1 - r0) * 0.25) * Math.cos((TAU * (k + 0.5)) / 48)], [(r0 + (r1 - r0) * 0.5) * Math.sin((TAU * (k + 0.5)) / 48), y, (r0 + (r1 - r0) * 0.5) * Math.cos((TAU * (k + 0.5)) / 48)]]) });
458
+ }
459
+ // plating and a window band round the outside
460
+ const panelsTop = cut ? yc - 0.2 : yc + hy - 0.7;
461
+ out.push(...drum(ctx, { R: rOut, L: panelsTop - (yc - hy + 0.7), panels: { wide: 3.4, tall: 1.2 }, hatches: 0, conduits: 0, trays: 0, vents: 0, ladders: 0, digits: "09", junk: 0, hazard: false, rings: [] }).filter((p) => p.kind === "plate").map((p) => place([p], { at: [0, yc - hy + 0.7, 0] })[0]));
462
+ const windows = some(ctx, 72);
463
+ const winH = hy * 0.55;
464
+ for (let i = 0; i < windows; i++) {
465
+ const a = (TAU * (i + 0.5)) / windows;
466
+ const wide = (TAU * rOut) / windows - 0.35;
467
+ out.push(...glazing(rOut + 0.01, a, yc, wide, winH + 0.3, 0.1));
468
+ }
469
+ // airlocks on the outside, ladders, handrails
470
+ for (let k = 0; k < 6; k++)
471
+ out.push(...hatch({ r: rOut + 0.04, az: deg(30 + 60 * k + 12), y: yc - hy + 1.0, size: 1.4, round: true }));
472
+ for (let k = 0; k < 3; k++)
473
+ out.push(...cableTray(rOut + 0.05, deg(40 + 120 * k), yc - hy + 0.8, yc + hy - 0.8, 0.5, ctx.seed));
474
+ for (const k of [0, 120, 240])
475
+ out.push(...hazardBand(rOut, yc - hy + 0.35, yc - hy + 0.7, 6, [deg(k + 20), deg(k + 50)]), ...hazardBand(rOut, yc + hy - 0.7, yc + hy - 0.35, 6, [deg(k + 80), deg(k + 110)]));
476
+ out.push(...stencil("09", rOut + 0.05, deg(80), yc - hy + 0.6 + hy, 1.4, "black"));
477
+ // the spokes: six, each a pair of beams with conduits between and a lift car
478
+ for (let k = 0; k < 6; k++) {
479
+ const a = deg(60 * k + 15);
480
+ const s = [Math.sin(a), 0, Math.cos(a)];
481
+ const lo = [s[0] * (hubR + 0.9), yc, s[2] * (hubR + 0.9)];
482
+ const hi = [s[0] * (rIn + 0.2), yc, s[2] * (rIn + 0.2)];
483
+ const side = [s[2], 0, -s[0]];
484
+ for (const d of [-0.6, 0.6]) {
485
+ out.push(beam("hull-grey-dark", [lo[0] + side[0] * d, yc - 1.0, lo[2] + side[2] * d], [hi[0] + side[0] * d, yc - 1.0, hi[2] + side[2] * d], 0.3, 0.3), beam("hull-grey-dark", [lo[0] + side[0] * d, yc + 1.0, lo[2] + side[2] * d], [hi[0] + side[0] * d, yc + 1.0, hi[2] + side[2] * d], 0.3, 0.3));
486
+ // lattice between the beams
487
+ const n = 7;
488
+ for (let q = 0; q < n; q++) {
489
+ const t0 = q / n;
490
+ const t1 = (q + 1) / n;
491
+ const p0 = [lo[0] + (hi[0] - lo[0]) * t0 + side[0] * d, yc + (q % 2 ? 1.0 : -1.0), lo[2] + (hi[2] - lo[2]) * t0 + side[2] * d];
492
+ const p1 = [lo[0] + (hi[0] - lo[0]) * t1 + side[0] * d, yc + (q % 2 ? -1.0 : 1.0), lo[2] + (hi[2] - lo[2]) * t1 + side[2] * d];
493
+ out.push(rod("hull-grey", p0, p1, 0.07, 6));
494
+ }
495
+ }
496
+ out.push(rod("copper", [lo[0] + side[0] * 0.1, yc - 0.3, lo[2] + side[2] * 0.1], [hi[0] + side[0] * 0.1, yc - 0.3, hi[2] + side[2] * 0.1], 0.1, 6), rod("lamp-red", [lo[0] - side[0] * 0.1, yc + 0.3, lo[2] - side[2] * 0.1], [hi[0] - side[0] * 0.1, yc + 0.3, hi[2] - side[2] * 0.1], 0.07, 6));
497
+ // a lift car on the spoke
498
+ const t = 0.35 + random() * 0.3;
499
+ out.push(box("hull-yellow", [lo[0] + (hi[0] - lo[0]) * t - side[0] * 0.0, yc - 0.6, lo[2] + (hi[2] - lo[2]) * t], 1.1, 1.1, 1.2, (a * 180) / Math.PI));
500
+ }
501
+ if (cut) {
502
+ // inside the open ring: a floor, rooms, bunks, consoles
503
+ out.push({ kind: "lathe", material: "deck", segs: 96, only: "mesh", profile: [[rIn + 0.4, yc - hy + 0.9], [rOut - 0.4, yc - hy + 0.9]] });
504
+ out.push({ kind: "lathe", material: "hull-white", segs: 96, only: "mesh", profile: [[rIn + 0.45, yc - hy + 0.9], [rIn + 0.45, yc + 0.2]] });
505
+ out.push({ kind: "lathe", material: "hull-white", segs: 96, only: "mesh", profile: [[rOut - 0.5, yc - hy + 0.9], [rOut - 0.5, yc + 0.2]] });
506
+ const rooms = some(ctx, 36);
507
+ for (let i = 0; i < rooms; i++) {
508
+ const a = (TAU * i) / rooms;
509
+ const dir = [Math.sin(a), 0, Math.cos(a)];
510
+ const w = (TAU * major) / rooms;
511
+ out.push(box("hull-white", [dir[0] * major + dir[2] * 0, yc - hy + 0.9, dir[2] * major], 0.08, rOut - rIn - 1.1, 1.5, (a * 180) / Math.PI + 90));
512
+ const yaw = (a * 180) / Math.PI;
513
+ const kind = i % 4;
514
+ const at = [dir[0] * (major - 0.8), yc - hy + 0.9, dir[2] * (major - 0.8)];
515
+ if (kind === 0)
516
+ out.push(box("hull-blue", at, w * 0.6, 0.9, 0.5, yaw + 90), box("hull-blue", [at[0], at[1] + 0.8, at[2]], w * 0.6, 0.9, 0.5, yaw + 90));
517
+ else if (kind === 1)
518
+ out.push(box("panel-dark", at, w * 0.5, 0.7, 0.9, yaw + 90), box("lamp-blue", [at[0], at[1] + 0.9, at[2]], w * 0.4, 0.04, 0.4, yaw + 90));
519
+ else if (kind === 2)
520
+ out.push(box("plant", at, w * 0.7, 1.0, 0.6, yaw + 90), box("lamp-blue", [at[0], at[1] + 1.7, at[2]], w * 0.7, 0.3, 0.05, yaw + 90));
521
+ else
522
+ out.push(box("hull-grey", at, w * 0.5, 0.9, 0.9, yaw + 90), box("hull-yellow", [at[0] + dir[0] * 0.9, at[1], at[2] + dir[2] * 0.9], w * 0.3, 0.5, 0.5, yaw + 90));
523
+ }
524
+ }
525
+ return out;
526
+ },
527
+ });
528
+ }
529
+ /** A pressurised drum: crew or passenger quarters, or farms with glass bands. */
530
+ function habitatDrum(id, name, R, L, mass, farm) {
531
+ return define({
532
+ id,
533
+ name,
534
+ kind: "habitat",
535
+ note: farm ? "A hydroponic farm drum: glass bands over grow racks under blue lamps, water loops and an airlock, between two heavy collars." : "A crew and passenger drum: bunk decks, galley, medical bay and airlocks behind windowed plating, between two heavy collars.",
536
+ mass,
537
+ length: L,
538
+ width: 2 * R + 2.0,
539
+ top: R >= 6 ? "L" : "M",
540
+ bottom: R >= 6 ? "L" : "M",
541
+ inside: true,
542
+ detail: R >= 6 ? 0.5 : 0.75,
543
+ livery: farm ? "transport" : "science",
544
+ build: (ctx) => {
545
+ const top = R >= 6 ? "L" : "M";
546
+ const out = drum(ctx, { R, L, top, bottom: top, panels: { wide: 2.6, tall: 1.8 }, hatches: 5, roundHatches: true, conduits: 4, trays: 3, vents: 4, ladders: 2, digits: farm ? "14" : "15", rings: [0.25, 0.5, 0.75] });
547
+ const [y0, y1] = straight({ R, L, top, bottom: top });
548
+ const bands = Math.max(2, Math.floor((y1 - y0) / 3.6));
549
+ const open = ctx.cutaway;
550
+ const az = open ? CUT : [0, TAU];
551
+ for (let b = 0; b < bands; b++) {
552
+ const y = y0 + ((y1 - y0) * (b + 0.5)) / bands;
553
+ const n = some(ctx, Math.round((TAU * R) / 2.2));
554
+ for (let i = 0; i < n; i++) {
555
+ const a = az[0] + ((az[1] - az[0]) * (i + 0.5)) / n;
556
+ const wide = ((az[1] - az[0]) * R) / n - 0.3;
557
+ out.push(...glazing(R + 0.012, a, y, wide, farm ? 1.7 : 1.0, 0.08, farm ? "plant" : "window"));
558
+ }
559
+ }
560
+ if (open)
561
+ out.push(...decks(ctx, R, y0 + 0.1, y1 - 0.1, farm ? 3.6 : 3.2, farm ? "farm" : "bunks"));
562
+ return out;
563
+ },
564
+ });
565
+ }
566
+ /** A laboratory module: a drum with sensor windows, a sample airlock, a robot arm, instrument pods and a small dish. */
567
+ const lab = define({
568
+ id: "lab-m",
569
+ name: "Laboratory module",
570
+ kind: "lab",
571
+ note: "A survey laboratory: sample airlock, a robot arm on rails, instrument pods, spectrometer ports and a small dish, between two M collars.",
572
+ mass: 96,
573
+ length: 14.0,
574
+ width: 12.6,
575
+ top: "M",
576
+ bottom: "M",
577
+ inside: true,
578
+ livery: "science",
579
+ build: (ctx) => {
580
+ const R = 3.0;
581
+ const out = drum(ctx, { R, L: 14, top: "M", bottom: "M", panels: { wide: 1.8, tall: 1.4 }, hatches: 4, roundHatches: true, conduits: 3, trays: 2, vents: 4, ladders: 1, digits: "16", junk: 50, rings: [0.2, 0.5, 0.8] });
582
+ for (let k = 0; k < 3; k++) {
583
+ const a = deg(25 + 120 * k);
584
+ const y = 4 + 3.4 * k;
585
+ // an instrument pod: a box with a lens on a short arm
586
+ const p = [(R + 0.9) * Math.sin(a), y, (R + 0.9) * Math.cos(a)];
587
+ out.push(rod("hull-grey", [R * Math.sin(a), y, R * Math.cos(a)], p, 0.18, 8), box("hull-white", [p[0], y - 0.6, p[2]], 1.5, 1.5, 1.2, (a * 180) / Math.PI));
588
+ out.push(...horn("hull-grey-dark", [p[0], y, p[2]], [p[0] + Math.sin(a) * 1.2, y, p[2] + Math.cos(a) * 1.2], [0.5, 0.42, 0.32], 12), rod("glass", [p[0] + Math.sin(a) * 1.2, y, p[2] + Math.cos(a) * 1.2], [p[0] + Math.sin(a) * 1.3, y, p[2] + Math.cos(a) * 1.3], 0.3, 12));
589
+ }
590
+ // a robot arm on a rail up the hull
591
+ const rail = deg(-70);
592
+ out.push(rod("hull-grey-dark", [(R + 0.4) * Math.sin(rail), 2, (R + 0.4) * Math.cos(rail)], [(R + 0.4) * Math.sin(rail), 12, (R + 0.4) * Math.cos(rail)], 0.1, 6), box("hull-yellow", [(R + 0.7) * Math.sin(rail), 6, (R + 0.7) * Math.cos(rail)], 0.8, 0.8, 0.8));
593
+ const base = [(R + 1.1) * Math.sin(rail), 6.8, (R + 1.1) * Math.cos(rail)];
594
+ const elbow = [base[0] + 1.6 * Math.sin(rail + 0.5), 8.3, base[2] + 1.6 * Math.cos(rail + 0.5)];
595
+ const hand = [elbow[0] + 1.4 * Math.sin(rail + 0.9), 7.4, elbow[2] + 1.4 * Math.cos(rail + 0.9)];
596
+ out.push(rod("hull-yellow", base, elbow, 0.14, 8), rod("hull-yellow", elbow, hand, 0.11, 8), rod("hull-grey-dark", elbow, [elbow[0], elbow[1] + 0.3, elbow[2]], 0.2, 8), rod("hull-grey", hand, [hand[0] + 0.3, hand[1] - 0.3, hand[2]], 0.07, 6), rod("hull-grey", hand, [hand[0] - 0.3, hand[1] - 0.3, hand[2]], 0.07, 6));
597
+ if (ctx.cutaway)
598
+ out.push(...decks(ctx, R, 0.9, 13.1, 2.4, "bench"));
599
+ return out;
600
+ },
601
+ });
602
+ // ---------------------------------------------------------------------------------------------------------------------------------
603
+ // sensors, reactors, radiators, nodes, trusses, adapters, shields
604
+ /** A sensor mast: a lattice tower on an M collar with platforms, dishes, phased arrays, horns, an optics head and beacons. */
605
+ const sensorMast = define({
606
+ id: "mast-sensor-40",
607
+ name: "Sensor mast",
608
+ kind: "sensor",
609
+ note: "A 40 m lattice mast: three platforms with deep-space dishes, phased arrays, a long-baseline optics head, horns and beacons; stands on an M collar.",
610
+ mass: 38,
611
+ length: 40,
612
+ width: 16,
613
+ bottom: "M",
614
+ livery: "command",
615
+ build: (ctx) => {
616
+ const random = rng(`${ctx.seed}/mast`);
617
+ const out = [...collar("M", 0, -1)];
618
+ out.push(...drum(ctx, { R: 3, L: 4, bottom: "M", panels: { wide: 1.8, tall: 1.4 }, hatches: 2, conduits: 2, trays: 1, vents: 2, ladders: 0, digits: "20", junk: 24, hazard: true }).filter((p) => !(p.kind === "plate" && false)));
619
+ // four longerons, tapering, with braces
620
+ const levels = [4, 9, 14, 19, 24, 29, 34];
621
+ const half = (y) => 1.9 - ((y - 4) / 36) * 1.1;
622
+ for (let i = 0; i + 1 < levels.length; i++) {
623
+ const [ya, yb] = [levels[i], levels[i + 1]];
624
+ for (const [sx, sz] of [[1, 1], [1, -1], [-1, 1], [-1, -1]]) {
625
+ out.push(rod("hull-grey", [sx * half(ya), ya, sz * half(ya)], [sx * half(yb), yb, sz * half(yb)], 0.15, 6));
626
+ }
627
+ for (const [dx, dz] of [[1, 0], [-1, 0], [0, 1], [0, -1]]) {
628
+ const s = i % 2 ? 1 : -1;
629
+ const side = (y, k) => [dx !== 0 ? dx * half(y) : k * half(y), y, dz !== 0 ? dz * half(y) : k * half(y)];
630
+ out.push(rod("hull-grey-dark", side(ya, -s), side(yb, s), 0.08, 5));
631
+ out.push(rod("hull-grey-dark", side(ya, s), side(yb, -s), 0.08, 5));
632
+ }
633
+ out.push(...[[1, 1], [1, -1], [-1, 1], [-1, -1]].map(([sx, sz]) => rod("hull-grey-dark", [sx * half(yb), yb, sz * half(yb)], [-sx * half(yb), yb, sz * half(yb)], 0.07, 5)));
634
+ out.push(rod("hull-grey-dark", [half(yb), yb, half(yb)], [-half(yb), yb, -half(yb)], 0.06, 5), rod("hull-grey-dark", [-half(yb), yb, half(yb)], [half(yb), yb, -half(yb)], 0.06, 5));
635
+ }
636
+ // a cable tray and a ladder up one face
637
+ out.push(rod("copper", [half(4) + 0.15, 4, 0], [half(34) + 0.15, 34, 0], 0.08, 6), rod("lamp-blue", [half(4) + 0.3, 4, 0.2], [half(34) + 0.3, 34, 0.2], 0.05, 5));
638
+ for (let y = 5; y < 34; y += 0.6)
639
+ out.push(rod("hull-yellow", [-half(y) - 0.3, y, -0.3], [-half(y) - 0.3, y, 0.3], 0.025, 5));
640
+ out.push(rod("hull-yellow", [-half(4) - 0.3, 4, -0.3], [-half(34) - 0.3, 34, -0.3], 0.03, 5), rod("hull-yellow", [-half(4) - 0.3, 4, 0.3], [-half(34) - 0.3, 34, 0.3], 0.03, 5));
641
+ // platforms: 12-sided decks with rails, each carrying instruments
642
+ const platform = (y, w) => [
643
+ disc("hull-grey-dark", [0, 0], w, y, 0.18, 12),
644
+ hoop("hull-yellow", w, y + 1.0, 0.04, 24, 4),
645
+ ...Array.from({ length: 12 }, (_, k) => rod("hull-yellow", [w * Math.sin(deg(30 * k)), y + 0.18, w * Math.cos(deg(30 * k))], [w * Math.sin(deg(30 * k)), y + 1.0, w * Math.cos(deg(30 * k))], 0.03, 4)),
646
+ ];
647
+ out.push(...platform(14, 2.6), ...platform(24, 2.2), ...platform(34, 1.9));
648
+ // dishes: three, of different sizes, on the platforms, pointing out and up
649
+ out.push(...antenna("dish", [2.0, 14.2, 0.0], [0.8, 0.5, 0.2], 5.2, ctx.seed));
650
+ out.push(...antenna("dish", [-1.7, 24.2, -1.0], [-0.5, 0.6, -0.6], 4.2, ctx.seed));
651
+ out.push(...antenna("dish", [1.0, 34.2, 1.3], [0.4, 0.7, 0.6], 3.2, ctx.seed));
652
+ // phased arrays on the four faces
653
+ for (let k = 0; k < 4; k++) {
654
+ const a = deg(45 + 90 * k);
655
+ out.push(...antenna("phased", [2.1 * Math.sin(a), 19.5, 2.1 * Math.cos(a)], [Math.sin(a), 0.1, Math.cos(a)], 2.4, `${ctx.seed}/${k}`));
656
+ }
657
+ // horns and yagis and whips
658
+ out.push(...antenna("horn", [0, 36, 0.0], [0.3, 1, 0.1], 2.6), ...antenna("yagi", [-1.3, 29.2, 1.1], [-0.6, 0.5, 0.6], 3.6), ...antenna("yagi", [1.4, 29.2, -1.0], [0.6, 0.5, -0.6], 3.2));
659
+ for (let k = 0; k < 6; k++)
660
+ out.push(...antenna("whip", [1.2 * Math.sin(deg(60 * k)), 34.2, 1.2 * Math.cos(deg(60 * k))], [0, 1, 0], 2.0 + random() * 2.2));
661
+ // the optics head: a sphere on a gimbal fork on top
662
+ out.push({ kind: "lathe", material: "hull-white", segs: 28, body: true, outline: true, profile: Array.from({ length: 13 }, (_, i) => [Math.max(0.001, 1.5 * Math.sin((Math.PI * i) / 12)), 36.8 - 1.5 * Math.cos((Math.PI * i) / 12)]), rings: [36.8], welds: [37.8] });
663
+ out.push(rod("hull-grey-dark", [-1.9, 34.8, 0], [-1.9, 38.2, 0], 0.2, 8), rod("hull-grey-dark", [1.9, 34.8, 0], [1.9, 38.2, 0], 0.2, 8), rod("hull-grey-dark", [-1.9, 34.8, 0], [1.9, 34.8, 0], 0.2, 8));
664
+ out.push(...horn("hull-grey-dark", [0, 36.8, 1.2], [0, 36.8, 2.8], [1.0, 0.84, 0.66], 16), rod("glass", [0, 36.8, 2.8], [0, 36.8, 2.9], 0.64, 16));
665
+ out.push(post("lamp-red", [0, 0], 0.18, 38.4, 0.001, 40, 8));
666
+ out.push(...lamps([{ at: [1.9, 24.1, 1.9], colour: "red", size: 0.14 }, { at: [-1.9, 24.1, -1.9], colour: "red", size: 0.14 }, { at: [2.4, 14.1, -2.4], colour: "amber", size: 0.14 }]));
667
+ out.push(seams("feature", [levels.map((y) => [half(y), y, half(y)])]));
668
+ return out;
669
+ },
670
+ });
671
+ /** A reactor module: a shielded drum with a toroidal coil, coolant rings, a pump deck, and — opened — the plasma core. */
672
+ const reactor = define({
673
+ id: "reactor-fusion",
674
+ name: "Fusion reactor module",
675
+ kind: "reactor",
676
+ note: "A compact fusion reactor: shield drum, toroidal field coil, coolant loops and pumps, with an isolation collar at each end; opened, the plasma core shows.",
677
+ mass: 420,
678
+ length: 14,
679
+ width: 14,
680
+ top: "L",
681
+ bottom: "L",
682
+ inside: true,
683
+ detail: 0.6,
684
+ livery: "industrial",
685
+ build: (ctx) => {
686
+ const R = 6;
687
+ const out = drum(ctx, { R, L: 14, top: "L", bottom: "L", panels: { wide: 2.6, tall: 1.8 }, hatches: 4, roundHatches: true, conduits: 6, trays: 3, vents: 6, ladders: 1, digits: "30", rings: [0.35, 0.65] });
688
+ // heat exchangers: four finned canisters on the outside
689
+ for (let k = 0; k < 4; k++) {
690
+ const a = deg(45 + 90 * k + 90);
691
+ const x = (R + 1.3) * Math.sin(a);
692
+ const z = (R + 1.3) * Math.cos(a);
693
+ if (ctx.cutaway && Math.abs(Math.sin(a / 2 - 0.0)) < 0.5 && Math.cos(a) > 0.3)
694
+ continue;
695
+ out.push({ kind: "lathe", material: "hull-white-worn", at: [x, z], segs: 20, body: true, outline: true, profile: [[1.0, 2.0], [1.2, 2.3], [1.2, 11.7], [1.0, 12.0]], welds: [4, 8, 10] });
696
+ for (let f = 0; f < some(ctx, 9); f++)
697
+ out.push({ kind: "lathe", material: "hull-grey", at: [x, z], segs: 14, only: "mesh", profile: [[1.25, 2.6 + f * 0.95], [1.48, 2.6 + f * 0.95], [1.48, 2.72 + f * 0.95], [1.25, 2.72 + f * 0.95]] });
698
+ out.push(...pipeRun([[x, 12, z], [x, 12.8, z], [(R - 0.1) * Math.sin(a), 12.8, (R - 0.1) * Math.cos(a)]], 0.16, "coolant", { support: [0, -1, 0], sides: 10, flangeEvery: 99, bracketEvery: 99 }), ...pipeRun([[x, 2, z], [x, 1.2, z], [(R - 0.1) * Math.sin(a), 1.2, (R - 0.1) * Math.cos(a)]], 0.16, "coolant", { support: [0, 1, 0], sides: 10, flangeEvery: 99, bracketEvery: 99 }));
699
+ }
700
+ // a pump deck: boxes and valve wheels round the foot
701
+ out.push(hoop("coil", R + 0.18, 7.0, 0.2, 32, 5));
702
+ if (ctx.cutaway) {
703
+ // the torus coil, the plasma ring and the central column
704
+ out.push(hoop("coil", 3.0, 7, 1.0, 32, 5), hoop("core", 3.0, 7, 0.38, 32, 5), hoop("hull-grey", 3.0, 7, 1.12, 32, 5, { arc: () => [deg(-180), deg(-60)] }));
705
+ for (let k = 0; k < 18; k++)
706
+ out.push(hoop("copper", 3.0, 7, 1.13, 4, 4, { arc: () => [deg(k * 20), deg(k * 20 + 6)] }));
707
+ out.push(post("hull-grey-dark", [0, 0], 1.0, 1.6, 1.0, 12.4, 20), post("core", [0, 0], 0.4, 3.0, 0.4, 11, 12));
708
+ out.push({ kind: "lathe", material: "hull-white", segs: 56, only: "mesh", profile: [[R - ctx.depth - 0.1, 1.6], [R - ctx.depth - 0.1, 12.4]], arc: () => CUT });
709
+ for (let k = 0; k < 8; k++)
710
+ out.push(rod("hull-grey", [1.0 * Math.sin(deg(k * 45)), 5.0, 1.0 * Math.cos(deg(k * 45))], [3.0 * Math.sin(deg(k * 45)), 6.2, 3.0 * Math.cos(deg(k * 45))], 0.12, 6), rod("hull-grey", [1.0 * Math.sin(deg(k * 45)), 9.0, 1.0 * Math.cos(deg(k * 45))], [3.0 * Math.sin(deg(k * 45)), 7.8, 3.0 * Math.cos(deg(k * 45))], 0.12, 6));
711
+ for (let k = 0; k < 6; k++)
712
+ out.push(box("hull-grey-dark", [(R - 1.4) * Math.sin(deg(k * 20 - 50)), 1.5, (R - 1.4) * Math.cos(deg(k * 20 - 50))], 1.0, 1.0, 1.1, k * 20 - 50), post("lamp-amber", [(R - 1.4) * Math.sin(deg(k * 20 - 50)), (R - 1.4) * Math.cos(deg(k * 20 - 50))], 0.12, 2.6, 0.12, 2.8, 8));
713
+ }
714
+ return out;
715
+ },
716
+ });
717
+ /** A radiator array: a hub drum with six wings, each stowed against the hull or deployed. */
718
+ function radiatorArray(id, name, deployed, mass) {
719
+ const R = 3;
720
+ const L = 12;
721
+ const reach = 9;
722
+ return define({
723
+ id,
724
+ name,
725
+ kind: "radiator",
726
+ note: deployed ? "A hub with six radiator wings spread: hinged panels with copper coolant pipes, manifolds and boom struts." : "The same hub with its six wings folded flat against the hull in closed boxes, latched for burns.",
727
+ mass,
728
+ length: L,
729
+ width: deployed ? 2 * (R + reach) + 1 : 2 * (R + 1.5),
730
+ top: "M",
731
+ bottom: "M",
732
+ detail: deployed ? 0.6 : 0.85,
733
+ livery: "industrial",
734
+ build: (ctx) => {
735
+ const out = drum(ctx, { R, L, top: "M", bottom: "M", panels: { wide: 1.8, tall: 1.4 }, hatches: 2, conduits: 3, trays: 1, vents: 2, ladders: 0, digits: "40", rings: [0.5] });
736
+ for (let k = 0; k < 6; k++)
737
+ out.push(...radiator({ r0: R + 0.05, az: deg(30 + 60 * k), y: L / 2, reach: deployed ? reach : 3, height: deployed ? 9.5 : 8, seed: `${ctx.seed}/${k}`, stowed: !deployed, panels: deployed ? 4 : 3 }));
738
+ return out;
739
+ },
740
+ });
741
+ }
742
+ /** A docking node: a hub drum with ports looking up on a ring round it, so modules can stand parallel to the spine. */
743
+ function dockingNode(id, name, count, cls, mass) {
744
+ const ringR = count === 2 ? 5.5 : 6.2;
745
+ const L = 8;
746
+ const ports = Array.from({ length: count }, (_, i) => ({ id: `p${i + 1}`, collar: cls, at: [ringR * Math.sin(deg((360 * i) / count + 45)), L, ringR * Math.cos(deg((360 * i) / count + 45))] }));
747
+ return define({
748
+ id,
749
+ name,
750
+ kind: "node",
751
+ note: `A docking node: an L-collar hub with ${count} ${cls}-class ports on arms round it, each with its own pressure door, so ${count} modules stand parallel to the spine; a service lift and a gantry round the hub.`,
752
+ mass,
753
+ length: L,
754
+ width: 2 * (ringR + COLLARS[cls].outer / 2) + 1,
755
+ top: "L",
756
+ bottom: "L",
757
+ ports,
758
+ livery: "industrial",
759
+ build: (ctx) => {
760
+ const out = drum(ctx, { R: 6, L, top: "L", bottom: "L", panels: { wide: 2.4, tall: 1.6 }, hatches: 4, roundHatches: true, conduits: 4, trays: 2, vents: 4, ladders: 1, digits: "50", junk: 60, rings: [0.5] });
761
+ for (const p of ports) {
762
+ const a = Math.atan2(p.at[0], p.at[2]);
763
+ const rr = Math.hypot(p.at[0], p.at[2]);
764
+ // the arm: two beams from the hub out to a cradle, a cradle ring, the port's collar facing up, lamps
765
+ for (const d of [-0.9, 0.9])
766
+ out.push(beam("hull-grey-dark", [6 * Math.sin(a) + d * Math.cos(a), L - 1.5, 6 * Math.cos(a) - d * Math.sin(a)], [rr * Math.sin(a) + d * Math.cos(a), L - 1.5, rr * Math.cos(a) - d * Math.sin(a)], 0.5, 0.6), rod("hull-grey", [6 * Math.sin(a) + d * Math.cos(a), L - 0.3, 6 * Math.cos(a) - d * Math.sin(a)], [rr * Math.sin(a) + d * Math.cos(a), L - 1.5, rr * Math.cos(a) - d * Math.sin(a)], 0.14, 6));
767
+ out.push(...place([{ kind: "lathe", material: "hull-grey-dark", segs: 28, outline: true, profile: [[COLLARS[cls].outer / 2, -0.8], [COLLARS[cls].outer / 2, 0]] }, ...collar(cls, 0, 1)], { at: [p.at[0], L, p.at[2]] }));
768
+ out.push(...lamps([{ at: [p.at[0] + Math.sin(a) * COLLARS[cls].outer * 0.5, L - 0.5, p.at[2] + Math.cos(a) * COLLARS[cls].outer * 0.5], colour: "blue", size: 0.14 }]));
769
+ }
770
+ return out;
771
+ },
772
+ });
773
+ }
774
+ /** A truss: an open spine segment with four longerons, bays and a cable run, so long ships have a real skeleton between modules. */
775
+ function truss(id, name, L, cls, mass) {
776
+ const R = COLLARS[cls].outer / 2;
777
+ return define({
778
+ id,
779
+ name,
780
+ kind: "truss",
781
+ note: `An open truss segment ${L} m long: four longerons, braced bays, hoops and a cable run, with ${cls} collars at both ends.`,
782
+ mass,
783
+ length: L,
784
+ width: COLLARS[cls].outer + 1.4,
785
+ top: cls,
786
+ bottom: cls,
787
+ livery: "industrial",
788
+ build: () => {
789
+ const out = [...collar(cls, 0, -1), ...collar(cls, L, 1)];
790
+ const h = R * 0.72;
791
+ const bays = Math.max(3, Math.round(L / (R * 1.4)));
792
+ const dy = (L - 1.2) / bays;
793
+ const lm = (sx, sz, y) => [sx * h, y, sz * h];
794
+ for (const [sx, sz] of [[1, 1], [1, -1], [-1, 1], [-1, -1]])
795
+ out.push(...iBeam("hull-grey-dark", lm(sx, sz, 0.6), lm(sx, sz, L - 0.6), [sx, 0, sz], R * 0.16, R * 0.12));
796
+ for (let b = 0; b <= bays; b++) {
797
+ const y = 0.6 + b * dy;
798
+ out.push(hoop("hull-grey", h * Math.SQRT2, y, R * 0.04, 28, 5));
799
+ for (const [sx, sz, tx, tz] of [[1, 1, 1, -1], [1, -1, -1, -1], [-1, -1, -1, 1], [-1, 1, 1, 1]])
800
+ out.push(...channel("hull-grey", lm(sx, sz, y), lm(tx, tz, y), [0, 1, 0], R * 0.09, R * 0.06));
801
+ if (b < bays)
802
+ for (const [sx, sz, tx, tz] of [[1, 1, 1, -1], [1, -1, -1, -1], [-1, -1, -1, 1], [-1, 1, 1, 1]])
803
+ out.push(...strut("hull-grey", lm(sx, sz, y), lm(b % 2 ? sx : tx, b % 2 ? sz : tz, y + dy), R * 0.035, 10));
804
+ if (b < bays)
805
+ for (const [sx, sz] of [[1, 1], [-1, 1]])
806
+ out.push(rod("hull-grey-dark", lm(sx, sz, y), lm(-sx, sz, y + dy), R * 0.03, 4));
807
+ }
808
+ // central cable core and conduits
809
+ out.push(post("hull-grey-dark", [0, 0], R * 0.22, 0.6, R * 0.22, L - 0.6, 14, { body: true }));
810
+ for (let k = 0; k < 6; k++)
811
+ out.push(post(k % 2 ? "copper" : "lamp-red", [R * 0.3 * Math.sin(deg(60 * k)), R * 0.3 * Math.cos(deg(60 * k))], R * 0.04, 0.6, R * 0.04, L - 0.6, 6));
812
+ for (let b = 0; b < bays; b += 2)
813
+ out.push(box("hull-grey-dark", [R * 0.3, 0.6 + b * dy + dy * 0.4, 0], R * 0.4, R * 0.3, dy * 0.3), box("lamp-amber", [R * 0.5, 0.6 + b * dy + dy * 0.45, 0], R * 0.06, R * 0.06, R * 0.06));
814
+ return out;
815
+ },
816
+ });
817
+ }
818
+ /** An adapter: a cone from one collar class to the next, with a stiffening ring and bolt band. */
819
+ function adapter(id, from, to, mass) {
820
+ const R0 = COLLARS[from].outer / 2;
821
+ const R1 = COLLARS[to].outer / 2;
822
+ const L = Math.max(2.4, Math.abs(R0 - R1) * 1.1);
823
+ return define({
824
+ id,
825
+ name: `Adapter ${from} to ${to}`,
826
+ kind: "adapter",
827
+ note: `A conical adapter from a ${from} collar (${COLLARS[from].outer} m) at the bottom to a ${to} collar (${COLLARS[to].outer} m) at the top.`,
828
+ mass,
829
+ length: L,
830
+ width: Math.max(R0, R1) * 2 + 0.6,
831
+ top: to,
832
+ bottom: from,
833
+ livery: "industrial",
834
+ build: (ctx) => {
835
+ const out = [{ kind: "lathe", material: "hull-grey-dark", segs: 48, body: true, outline: true, profile: [[R0, 0.2], [R1, L - 0.2]], welds: [L * 0.5] }, ...collar(from, 0, -1), ...collar(to, L, 1)];
836
+ const random = rng(`${ctx.seed}/adapter`);
837
+ const rings = 3;
838
+ for (let k = 0; k < rings; k++) {
839
+ const t = (k + 1) / (rings + 1);
840
+ const r = R0 + (R1 - R0) * t;
841
+ out.push(hoop("hull-grey", r + 0.05, L * t, 0.08, 32, 5));
842
+ }
843
+ const ribs = 12;
844
+ for (let k = 0; k < ribs; k++) {
845
+ const a = (TAU * k) / ribs;
846
+ out.push(rod("hull-grey", [(R0 + 0.06) * Math.sin(a), 0.25, (R0 + 0.06) * Math.cos(a)], [(R1 + 0.06) * Math.sin(a), L - 0.25, (R1 + 0.06) * Math.cos(a)], 0.07, 5));
847
+ }
848
+ out.push(...pipeRing("copper", R0 + 0.1, 0.9, 0.1, 32), ...pipeRing("hull-grey", R1 + 0.1, L - 0.9, 0.1, 32), ...hazardBand(R0, 0.3, 0.7, 24), ...hazardBand(R1, L - 0.7, L - 0.3, 24));
849
+ for (let k = 0; k < 6; k++)
850
+ out.push(rod(k % 2 ? "copper" : "lamp-blue", [(R0 + 0.12) * Math.sin(deg(30 + 60 * k)), 0.9, (R0 + 0.12) * Math.cos(deg(30 + 60 * k))], [(R1 + 0.12) * Math.sin(deg(30 + 60 * k)), L - 0.9, (R1 + 0.12) * Math.cos(deg(30 + 60 * k))], 0.05, 5));
851
+ for (let k = 0; k < 4; k++)
852
+ out.push(...hatch({ r: R0 + (R1 - R0) * 0.5, az: deg(45 + 90 * k), y: L / 2, size: 0.9, round: k % 2 === 0 }).map((q) => q));
853
+ for (let k = 0; k < some(ctx, 8); k++) {
854
+ const a = random() * TAU;
855
+ const t = 0.25 + random() * 0.5;
856
+ const r = R0 + (R1 - R0) * t;
857
+ out.push(box("hull-grey", [r * Math.sin(a), L * t, r * Math.cos(a)], 0.5, 0.3, 0.3, (a * 180) / Math.PI), ...lamps([{ at: [(r + 0.1) * Math.sin(a), L * t + 0.1, (r + 0.1) * Math.cos(a)], colour: "amber", size: 0.08 }]));
858
+ }
859
+ return out;
860
+ },
861
+ });
862
+ }
863
+ /** A forward shield: a heavy dome of tile layers over a stiff skirt, with deflector rings and sensors, to take dust at near-light speed. */
864
+ const shield = define({
865
+ id: "shield-forward",
866
+ name: "Forward particle shield",
867
+ kind: "shield",
868
+ note: "A forward dust and radiation shield: three layers of ceramic tile on a stiff skirt, with deflector rings, a bumper lattice and sensor heads; fits on an L collar.",
869
+ mass: 640,
870
+ length: 11,
871
+ width: 13.4,
872
+ bottom: "L",
873
+ livery: "command",
874
+ build: (ctx) => {
875
+ const out = [...collar("L", 0, -1)];
876
+ out.push({ kind: "lathe", material: "hull-grey-dark", segs: 56, body: true, outline: true, profile: [[6, 0.2], [6.5, 1.1], [6.5, 3.2], [6.0, 4.0]], welds: [2.2] });
877
+ out.push(...tileShield([[6.0, 4.0], [5.6, 6.2], [4.4, 8.2], [2.8, 9.8], [0.9, 10.7], [0.001, 11.0]], ctx.seed, 56, 28));
878
+ for (const y of [4.0, 6.2, 8.2])
879
+ out.push(hoop("hull-grey", y === 4 ? 6.05 : y === 6.2 ? 5.65 : 4.45, y, 0.14, 32, 5));
880
+ // bumper lattice: standoff rods in front of the tile
881
+ for (let k = 0; k < 24; k++) {
882
+ const a = deg(15 * k);
883
+ out.push(rod("hull-grey", [5.9 * Math.sin(a), 4.1, 5.9 * Math.cos(a)], [5.9 * 0.9 * Math.sin(a), 6.4, 5.9 * 0.9 * Math.cos(a)], 0.05, 4), rod("hull-grey", [5.4 * Math.sin(a), 6.3, 5.4 * Math.cos(a)], [4.2 * Math.sin(a), 8.3, 4.2 * Math.cos(a)], 0.05, 4));
884
+ }
885
+ // skirt: panels, hatches, lamps, sensors
886
+ out.push(...drum(ctx, { R: 6.5, L: 3.4, panels: { wide: 2.0, tall: 1.2 }, hatches: 2, conduits: 3, trays: 0, vents: 3, ladders: 0, digits: "60", junk: 28, hazard: false, rings: [0.5] }).filter((p) => !(p.kind === "lathe" && (p.body || p.under === undefined && p.material === "hull-grey-dark")) && !(p.kind === "lathe" && p.material === "black" && false)).map((p) => place([p], { at: [0, 0.2, 0] })[0]));
887
+ for (let k = 0; k < 4; k++) {
888
+ const a = deg(45 + 90 * k);
889
+ out.push(...horn("hull-grey-dark", [5.2 * Math.sin(a), 7.0, 5.2 * Math.cos(a)], [5.6 * Math.sin(a), 8.0, 5.6 * Math.cos(a)], [0.35, 0.3, 0.25], 10), rod("glass", [5.6 * Math.sin(a), 8.0, 5.6 * Math.cos(a)], [5.7 * Math.sin(a), 8.1, 5.7 * Math.cos(a)], 0.22, 10));
890
+ }
891
+ out.push(...lamps(ringOf(12, 6.3, 3.3, 0).map((p) => ({ at: p.at, colour: "blue", size: 0.12 }))));
892
+ return out;
893
+ },
894
+ });
895
+ /** A pressurised bay on M collars, with a band of windows and a stencilled number, and decks inside when opened. */
896
+ function bay(o) {
897
+ return define({
898
+ id: o.id,
899
+ name: o.name,
900
+ kind: "habitat",
901
+ note: o.note,
902
+ mass: o.mass,
903
+ length: o.L,
904
+ width: 2 * o.R + 2.0,
905
+ top: "M",
906
+ bottom: "M",
907
+ inside: true,
908
+ ...(o.slot ? { slot: o.slot } : {}),
909
+ livery: o.livery,
910
+ build: (ctx) => {
911
+ const out = drum(ctx, { R: o.R, L: o.L, top: "M", bottom: "M", panels: { wide: 2.0, tall: 1.5 }, hatches: 4, roundHatches: true, conduits: 3, trays: 2, vents: 3, ladders: 1, digits: o.digits, rings: [0.25, 0.5, 0.75] });
912
+ const [y0, y1] = straight({ R: o.R, L: o.L, top: "M", bottom: "M" });
913
+ const az = ctx.cutaway ? CUT : [0, TAU];
914
+ if (o.glass !== "none") {
915
+ const bands = Math.max(1, Math.floor((y1 - y0) / 4));
916
+ for (let b = 0; b < bands; b++) {
917
+ const y = y0 + ((y1 - y0) * (b + 0.5)) / bands;
918
+ const n = some(ctx, Math.round((TAU * o.R) / 2.0));
919
+ for (let i = 0; i < n; i++) {
920
+ const a = az[0] + ((az[1] - az[0]) * (i + 0.5)) / n;
921
+ const wide = ((az[1] - az[0]) * o.R) / n - 0.3;
922
+ out.push(...glazing(o.R + 0.012, a, y, wide, 1.2, 0.08, o.glass === "glass" ? "window" : o.glass === "plant" ? "plant" : "window"));
923
+ }
924
+ }
925
+ }
926
+ out.push(...(o.extra?.(ctx, y0, y1) ?? []));
927
+ if (ctx.cutaway)
928
+ out.push(...decks(ctx, o.R, y0 + 0.1, y1 - 0.1, o.spacing ?? 3.2, o.furniture));
929
+ return out;
930
+ },
931
+ });
932
+ }
933
+ /** An array of dishes and phased panels on arms round a drum. */
934
+ const commsArray = define({
935
+ id: "comms-array-m",
936
+ name: "Communications array",
937
+ kind: "sensor",
938
+ note: "A comms drum: four deep-space dishes on arms, phased panels, horns and whips, with the transmitter deck inside; M collars.",
939
+ mass: 74,
940
+ length: 10,
941
+ width: 20,
942
+ top: "M",
943
+ bottom: "M",
944
+ inside: true,
945
+ livery: "command",
946
+ build: (ctx) => {
947
+ const R = 3;
948
+ const out = drum(ctx, { R, L: 10, top: "M", bottom: "M", panels: { wide: 1.8, tall: 1.4 }, hatches: 3, roundHatches: true, conduits: 3, trays: 2, vents: 3, ladders: 1, digits: "21", junk: 40, rings: [0.3, 0.7] });
949
+ for (let k = 0; k < 4; k++) {
950
+ const a = deg(45 + 90 * k);
951
+ const s = [Math.sin(a), 0, Math.cos(a)];
952
+ const root = [s[0] * R, 5, s[2] * R];
953
+ const hub = [s[0] * (R + 3.2), 6.6, s[2] * (R + 3.2)];
954
+ out.push(beam("hull-grey-dark", root, hub, 0.35, 0.35), rod("hull-grey", [s[0] * R, 3.4, s[2] * R], hub, 0.12, 6), ...antenna("dish", hub, [s[0] * 0.8, 0.6, s[2] * 0.8], 4.6, `${ctx.seed}/${k}`));
955
+ out.push(...antenna("phased", [s[0] * (R + 0.2), 8.8, s[2] * (R + 0.2)], [s[0], 0.15, s[2]], 1.8, `${ctx.seed}/p${k}`), ...antenna("whip", [s[0] * (R + 0.1), 8.6, s[2] * (R + 0.1)], [s[0] * 0.7, 0.7, s[2] * 0.7], 1.0 + k * 0.1));
956
+ }
957
+ out.push(...antenna("horn", [R + 0.1, 7.6, 0], [1, 0, 0], 1.4));
958
+ if (ctx.cutaway)
959
+ out.push(...decks(ctx, R, 0.9, 9.1, 2.8, "bridge"));
960
+ return out;
961
+ },
962
+ });
963
+ /** An EVA lock: a short drum with two big round hatches, a suit room, handrails, tether rings and floodlights. */
964
+ const evaLock = define({
965
+ id: "eva-lock-m",
966
+ name: "EVA lock",
967
+ kind: "habitat",
968
+ note: "The way out: two heavy round hatches, a suit room with racks, handrails and tether rings on the hull, floodlights; M collars.",
969
+ mass: 52,
970
+ length: 8,
971
+ width: 8,
972
+ top: "M",
973
+ bottom: "M",
974
+ inside: true,
975
+ livery: "science",
976
+ build: (ctx) => {
977
+ const R = 3;
978
+ const out = drum(ctx, { R, L: 8, top: "M", bottom: "M", panels: { wide: 1.6, tall: 1.3 }, hatches: 2, roundHatches: true, conduits: 2, trays: 1, vents: 2, ladders: 0, digits: "22", junk: 24, rings: [0.5] });
979
+ for (const a of [deg(-20), deg(20)])
980
+ out.push(...hatch({ r: R + 0.05, az: a, y: 4, size: 2.4, round: true }));
981
+ for (let k = 0; k < 6; k++)
982
+ out.push(rod("hull-yellow", [(R + 0.08) * Math.sin(deg(60 * k + 10)), 1.2, (R + 0.08) * Math.cos(deg(60 * k + 10))], [(R + 0.08) * Math.sin(deg(60 * k + 10)), 6.8, (R + 0.08) * Math.cos(deg(60 * k + 10))], 0.04, 5), hoop("hull-yellow", R + 0.45, 1.4 + k, 0.03, 12, 4, { arc: () => [deg(60 * k + 4), deg(60 * k + 16)] }));
983
+ for (let k = 0; k < 8; k++)
984
+ out.push(hoop("hull-grey-dark", R + 0.2, 1.2 + (k % 4) * 1.6, 0.07, 10, 4, { arc: () => [deg(90 * (k % 4) + 30), deg(90 * (k % 4) + 44)] }));
985
+ for (const a of [deg(-45), deg(45)])
986
+ out.push(rod("hull-grey", [(R + 0.1) * Math.sin(a), 6.2, (R + 0.1) * Math.cos(a)], [(R + 0.9) * Math.sin(a), 6.8, (R + 0.9) * Math.cos(a)], 0.08, 6), ...horn("hull-white", [(R + 0.9) * Math.sin(a), 6.8, (R + 0.9) * Math.cos(a)], [(R + 1.5) * Math.sin(a), 7.0, (R + 1.5) * Math.cos(a)], [0.3, 0.45], 10), ...lamps([{ at: [(R + 1.5) * Math.sin(a), 7.0, (R + 1.5) * Math.cos(a)], colour: "amber", size: 0.2 }]));
987
+ if (ctx.cutaway) {
988
+ out.push(...decks(ctx, R, 0.9, 7.1, 3.1, "bench"));
989
+ for (let k = 0; k < 6; k++)
990
+ out.push(box("hull-white", [(R - 1.7) * Math.sin(deg(-60 + 24 * k)), 1.0, (R - 1.7) * Math.cos(deg(-60 + 24 * k))], 0.7, 0.5, 2.0, -60 + 24 * k), box("hull-orange", [(R - 1.7) * Math.sin(deg(-60 + 24 * k)), 1.4, (R - 1.7) * Math.cos(deg(-60 + 24 * k))], 0.55, 0.4, 1.0, -60 + 24 * k));
991
+ }
992
+ return out;
993
+ },
994
+ });
995
+ /** The observation dome: a lounge drum crowned with an armoured glass dome and six shutter petals, a descendant of the ISS Cupola, with a ring of armoured portholes on its hull, some shuttered. */
996
+ const domeLounge = define({
997
+ id: "dome-observation-m",
998
+ name: "Observation dome",
999
+ kind: "habitat",
1000
+ note: "A crowning lounge: a drum with a ring of armoured portholes with burn shutters, and an armoured glass dome with six shutter petals, a descendant of the ISS Cupola; an M collar below and nothing above.",
1001
+ mass: 74,
1002
+ length: 12.2,
1003
+ width: 10,
1004
+ bottom: "M",
1005
+ inside: true,
1006
+ livery: "science",
1007
+ build: (ctx) => {
1008
+ const R = 4.4;
1009
+ const L = 9;
1010
+ const out = drum(ctx, { R, L, bottom: "M", panels: { wide: 1.8, tall: 1.4 }, hatches: 2, conduits: 2, trays: 1, vents: 2, ladders: 1, digits: "26", junk: 20, rings: [0.5], hazard: true });
1011
+ out.push({ kind: "lathe", material: "hull-grey-dark", segs: 56, body: true, outline: true, profile: [[R, L], [R * 0.74, L + 0.15], [R * 0.74, L + 0.3]] });
1012
+ out.push(...observationDome([0, L + 0.3, 0], R * 0.72, "open"));
1013
+ // armoured portholes round the hull in two rows, the lower row's shutters closed as for a burn
1014
+ for (let k = 0; k < some(ctx, 12); k++)
1015
+ out.push(...porthole(R + 0.05, deg(15 + 30 * k), 5.6, 0.42, k % 3 === 0 ? "closed" : "open"));
1016
+ for (let k = 0; k < some(ctx, 8); k++)
1017
+ out.push(...porthole(R + 0.05, deg(40 + 45 * k), 3.6, 0.36, k % 4 === 0 ? "closed" : "open"));
1018
+ if (ctx.cutaway) {
1019
+ out.push(...decks(ctx, R, 0.9, L - 0.2, 4.0, "bench"));
1020
+ out.push(...place(room("lounge", ctx.seed), { at: [0, L - 0.1, -1.0], yaw: 180 }));
1021
+ }
1022
+ return out;
1023
+ },
1024
+ });
1025
+ /** The solarium: a glazed garden hall between two plated ends, with mullions, hoops, armoured shutters, planters, trees, a pool, benches and rows of grow-lamps that glow when the engines are lit. */
1026
+ const solariumModule = define({
1027
+ id: "solarium-m",
1028
+ name: "Solarium",
1029
+ kind: "habitat",
1030
+ note: "A glazed garden hall for plants and people: a long glass drum between plated ends, mullioned and hooped, with armoured shutters that close against a burn, planters, trees, a pool and grow-lamps; M collars.",
1031
+ mass: 210,
1032
+ length: 20,
1033
+ width: 16,
1034
+ top: "M",
1035
+ bottom: "M",
1036
+ inside: true,
1037
+ livery: "science",
1038
+ build: (ctx) => {
1039
+ const R = 7.4;
1040
+ const y0 = 2.4;
1041
+ const y1 = 17.6;
1042
+ const out = [];
1043
+ const ends = (y, top) => drum(ctx, { R, L: 2.4, ...(top ? { top: "M" } : { bottom: "M" }), panels: { wide: 2.2, tall: 1.3 }, hatches: 2, conduits: 2, trays: 1, vents: 2, ladders: 0, digits: top ? "28" : "27", junk: 12, rings: [0.5], hazard: false }).map((p) => place([p], { at: [0, y, 0] })[0]);
1044
+ out.push(...ends(0, false), ...ends(17.6, true));
1045
+ out.push({ kind: "lathe", material: "hull-grey-dark", segs: 56, only: "mesh", profile: [[R, y0], [R * 0.2, y0]] }, { kind: "lathe", material: "hull-grey-dark", segs: 56, only: "mesh", profile: [[R, y1], [R * 0.2, y1]] });
1046
+ const arc = ctx.cutaway ? CUT : [0, TAU];
1047
+ out.push({ kind: "lathe", material: "glass-clear", segs: 72, body: true, outline: true, profile: [[R - 0.05, y0], [R - 0.05, y1]], arc: () => arc });
1048
+ const mullions = some(ctx, 36);
1049
+ for (let k = 0; k < mullions; k++) {
1050
+ const a = arc[0] + ((arc[1] - arc[0]) * (k + (ctx.cutaway ? 0.5 : 0))) / mullions;
1051
+ out.push(rod(k % 3 === 0 ? "pipe-steel" : "hull-grey", [R * Math.sin(a), y0, R * Math.cos(a)], [R * Math.sin(a), y1, R * Math.cos(a)], 0.09, 8));
1052
+ }
1053
+ for (const y of [y0 + 0.05, 5.8, 9.2, 12.6, y1 - 0.05])
1054
+ out.push(hoop("hull-grey", R + 0.02, y, 0.1, 72, 6, { arc: () => arc }));
1055
+ // armoured shutters: panels that fold along the mullions, stowed on most bays and closed on a few
1056
+ for (let k = 0; k < some(ctx, 12); k++) {
1057
+ const a = deg(15 + 30 * k) + (ctx.cutaway ? 0 : 0);
1058
+ const closed = k % 4 === 1;
1059
+ if (ctx.cutaway && (a < CUT[0] || a > CUT[1]))
1060
+ continue;
1061
+ for (const [ya, yb] of closed ? [[y0 + 0.2, 9.8], [9.8, y1 - 0.2]] : [[y1 - 1.6, y1 - 0.2]])
1062
+ out.push(...framedPanel("hull-grey", "hull-white-worn", R + 0.1, a, (ya + yb) / 2, 2.8, yb - ya - 0.1, 0.12, true));
1063
+ }
1064
+ // inside: the floor, planters, trees, a pool, benches and grow-lamps
1065
+ const random = rng(`${ctx.seed}/solarium`);
1066
+ out.push({ kind: "lathe", material: "deck", segs: 56, only: "mesh", profile: [[0.01, y0 + 0.06], [R - 0.3, y0 + 0.06]] });
1067
+ out.push({ kind: "lathe", material: "soil", segs: 40, only: "mesh", profile: [[0.01, y0 + 0.3], [R * 0.35, y0 + 0.3]] }, annulus("hull-grey", R * 0.35, R * 0.4, y0, y0 + 0.45, 40, { only: "mesh" }), { kind: "lathe", material: "water", segs: 24, only: "mesh", profile: [[0.01, y0 + 0.24], [R * 0.16, y0 + 0.24]] }, annulus("hull-white", R * 0.16, R * 0.2, y0, y0 + 0.4, 24, { only: "mesh" }));
1068
+ for (let k = 0; k < some(ctx, 14); k++) {
1069
+ const a = (TAU * (k + random() * 0.4)) / some(ctx, 14);
1070
+ const rr = R * (0.45 + random() * 0.45);
1071
+ const x = rr * Math.sin(a);
1072
+ const z = rr * Math.cos(a);
1073
+ const tall = 3.5 + random() * 6;
1074
+ out.push(post("wood", [x, z], 0.22, y0 + 0.06, 0.12, y0 + tall * 0.7, 8), ...horn("leaf", [x, y0 + tall * 0.45, z], [x, y0 + tall, z], [1.9 + random(), 2.2, 1.6, 0.9, 0.3], 10));
1075
+ }
1076
+ for (let k = 0; k < some(ctx, 10); k++) {
1077
+ const a = (TAU * (k + 0.5)) / some(ctx, 10);
1078
+ out.push(box("hull-grey", [(R - 1.1) * Math.sin(a), y0 + 0.06, (R - 1.1) * Math.cos(a)], 2.8, 1.1, 0.6, (a * 180) / Math.PI), box("soil", [(R - 1.1) * Math.sin(a), y0 + 0.66, (R - 1.1) * Math.cos(a)], 2.6, 0.9, 0.04), box("leaf", [(R - 1.1) * Math.sin(a), y0 + 0.7, (R - 1.1) * Math.cos(a)], 2.4, 0.8, 0.5, (a * 180) / Math.PI), box("wood", [(R * 0.6) * Math.sin(a + 0.15), y0 + 0.06, (R * 0.6) * Math.cos(a + 0.15)], 1.6, 0.4, 0.45, (a * 180) / Math.PI));
1079
+ }
1080
+ for (const rr of [R * 0.3, R * 0.55, R * 0.8])
1081
+ out.push(hoop("grow-lamp", rr, y1 - 1.0, 0.16, 48, 6), ...Array.from({ length: 6 }, (_, k) => rod("hull-grey", [rr * Math.sin((k * TAU) / 6), y1 - 1.0, rr * Math.cos((k * TAU) / 6)], [rr * Math.sin((k * TAU) / 6), y1, rr * Math.cos((k * TAU) / 6)], 0.04, 6)));
1082
+ out.push(post("pipe-steel", [0, 0], 0.5, y0, 0.5, y1, 14), ...ladder(0.5, 0, y0 + 0.4, y1 - 0.4, 0.5));
1083
+ return out;
1084
+ },
1085
+ });
1086
+ /** A mission pod: a pod-sized drum on M collars that swaps for another of its slot; `survey` carries sample drones and a sensor boom, `medical` a rescue bay and a winch. */
1087
+ function missionPod(kind) {
1088
+ const survey = kind === "survey";
1089
+ return define({
1090
+ id: `pod-${kind}-m`,
1091
+ name: survey ? "Mission pod, survey" : "Mission pod, medical and rescue",
1092
+ kind: "lab",
1093
+ note: survey ? "The swappable pod for survey work: six drone cradles, a sample hopper, a sensor boom and a spectrometer deck; M collars, the same size as the medical pod." : "The swappable pod for rescue and care: a stretcher bay, a decontamination lock, an outside winch and a surgery; M collars, the same size as the survey pod.",
1094
+ mass: 88,
1095
+ length: 10,
1096
+ width: 10.4,
1097
+ top: "M",
1098
+ bottom: "M",
1099
+ inside: true,
1100
+ slot: "mission-pod",
1101
+ livery: survey ? "science" : "transport",
1102
+ build: (ctx) => {
1103
+ const R = 3.2;
1104
+ const out = drum(ctx, { R, L: 10, top: "M", bottom: "M", panels: { wide: 1.8, tall: 1.4 }, hatches: 3, roundHatches: true, conduits: 3, trays: 2, vents: 3, ladders: 1, digits: survey ? "31" : "32", junk: 40, rings: [0.25, 0.5, 0.75] });
1105
+ if (survey) {
1106
+ for (let k = 0; k < 6; k++) {
1107
+ const a = deg(30 + 60 * k);
1108
+ const c = [(R + 0.9) * Math.sin(a), 3.2 + (k % 2) * 3, (R + 0.9) * Math.cos(a)];
1109
+ out.push(box("hull-grey-dark", [c[0], c[1] - 0.6, c[2]], 1.5, 1.5, 1.2, (a * 180) / Math.PI), rod("hull-white", [c[0], c[1] + 0.3, c[2]], [c[0] + Math.sin(a) * 0.6, c[1] + 0.3, c[2] + Math.cos(a) * 0.6], 0.35, 8), ...horn("hull-grey", [c[0], c[1] + 0.3, c[2]], [c[0] + Math.sin(a) * 0.9, c[1] + 0.3, c[2] + Math.cos(a) * 0.9], [0.25, 0.2], 8), rod("hull-yellow", [c[0] - Math.cos(a) * 0.7, c[1] - 0.6, c[2] + Math.sin(a) * 0.7], [c[0] + Math.cos(a) * 0.7, c[1] - 0.6, c[2] - Math.sin(a) * 0.7], 0.05, 5));
1110
+ }
1111
+ out.push(beam("hull-grey-dark", [R * 0.7, 5, 0.0], [R + 2.6, 5.4, 0], 0.22, 0.22), ...antenna("yagi", [R + 2.6, 5.4, 0], [1, 0.1, 0], 2.8, ctx.seed), ...horn("hull-grey-dark", [R + 2.6, 5.4, 0.0], [R + 3.4, 5.4, 0.0], [0.5, 0.35], 10));
1112
+ }
1113
+ else {
1114
+ for (const a of [deg(25), deg(155), deg(205), deg(335)])
1115
+ out.push(panel("lamp-red", R + 0.01, a, 5.5, 1.5, 0.45, 0.08), panel("lamp-red", R + 0.01, a, 5.5, 0.45, 1.5, 0.08), panel("hull-white", R + 0.005, a, 5.5, 2.2, 2.2, 0.05));
1116
+ const crane = [(R + 0.4) * Math.sin(deg(-40)), 8.6, (R + 0.4) * Math.cos(deg(-40))];
1117
+ out.push(box("hull-grey-dark", [crane[0], 7.4, crane[2]], 1.0, 1.0, 1.2), rod("hull-yellow", [crane[0], 8.6, crane[2]], [crane[0] - 1.8, 10.0, crane[2] + 1.8], 0.14, 8), rod("hull-grey", [crane[0] - 1.8, 10.0, crane[2] + 1.8], [crane[0] - 1.8, 7.4, crane[2] + 1.8], 0.03, 4), box("hull-orange", [crane[0] - 1.8, 6.8, crane[2] + 1.8], 0.8, 2.0, 0.5));
1118
+ }
1119
+ if (ctx.cutaway)
1120
+ out.push(...decks(ctx, R, 0.9, 9.1, 2.9, survey ? "bench" : "bunks"));
1121
+ return out;
1122
+ },
1123
+ });
1124
+ }
1125
+ // ---------------------------------------------------------------------------------------------------------------------------------
1126
+ // the catalogue
1127
+ const list = [
1128
+ engineCluster(1, "engine-fusion-1", "Fusion engine, single", 360),
1129
+ engineCluster(3, "engine-fusion-3", "Fusion engine cluster, 3", 780),
1130
+ engineCluster(4, "engine-fusion-4", "Fusion engine cluster, 4", 960),
1131
+ engineCluster(7, "engine-fusion-7", "Fusion engine cluster, 7", 1500),
1132
+ thrusterPod,
1133
+ rcsRing,
1134
+ tank("tank-cryo-12", "Cryogenic fuel tank, 12 m", 6, 12, "L", "L", 160, 2100, "A cryogenic propellant tank: plated drum with manifold, valves and baffles; opened, it shows the liquid level, baffles and feed column."),
1135
+ tank("tank-cryo-24", "Cryogenic fuel tank, 24 m", 6, 24, "L", "L", 290, 4300, "The long cryogenic tank: the same drum twice as long, for the heavy ships' fuel."),
1136
+ tank("tank-slim-18", "Slim fuel tank, 18 m", 2.7, 18, "M", "M", 70, 520, "A slim propellant tank on M collars, for strapping alongside the spine."),
1137
+ sphereFarm,
1138
+ container("container-12", "Heavy cargo container", 12, false, 38),
1139
+ container("container-12-cold", "Refrigerated container", 12, true, 44),
1140
+ define({
1141
+ id: "cargo-bay-4",
1142
+ name: "Cargo bay frame",
1143
+ kind: "cargo",
1144
+ note: "A girder cradle holding four containers parallel to the spine on M ports, with clamps, a gantry rail and a loading crane.",
1145
+ mass: 150,
1146
+ length: 15,
1147
+ width: 22,
1148
+ top: "L",
1149
+ bottom: "L",
1150
+ ports: [0, 1, 2, 3].map((i) => ({ id: `bay${i + 1}`, collar: "M", at: [7 * Math.sin(deg(45 + 90 * i)), 1.5, 7 * Math.cos(deg(45 + 90 * i))] })),
1151
+ livery: "transport",
1152
+ build: (ctx) => {
1153
+ const out = drum(ctx, { R: 6, L: 15, top: "L", bottom: "L", panels: { wide: 2.4, tall: 1.6 }, hatches: 4, roundHatches: true, conduits: 5, trays: 3, vents: 4, ladders: 2, digits: "70", junk: 60, rings: [0.1, 0.5, 0.9] });
1154
+ for (let i = 0; i < 4; i++) {
1155
+ const a = deg(45 + 90 * i);
1156
+ const cx = 7 * Math.sin(a);
1157
+ const cz = 7 * Math.cos(a);
1158
+ // a cradle: base plate, four clamp towers, struts to the hull
1159
+ out.push(box("hull-grey-dark", [cx, 0.8, cz], 6.8, 6.8, 0.7, (a * 180) / Math.PI));
1160
+ for (const [sx, sz] of [[1, 1], [1, -1], [-1, 1], [-1, -1]]) {
1161
+ const px = cx + (sx * 3.2 * Math.cos(a) + sz * 3.2 * Math.sin(a));
1162
+ const pz = cz + (-sx * 3.2 * Math.sin(a) + sz * 3.2 * Math.cos(a));
1163
+ out.push(box("hull-white-worn", [px, 1.5, pz], 0.6, 0.6, 1.4), box("hazard", [px, 2.5, pz], 0.62, 0.62, 0.18), box("hull-grey", [px, 2.9, pz], 0.8, 0.8, 0.3), rod("hull-grey", [px, 2.9, pz], [px * 0.98, 14, pz * 0.98], 0.07, 5));
1164
+ }
1165
+ out.push(beam("hull-grey-dark", [6 * Math.sin(a), 1.2, 6 * Math.cos(a)], [cx, 1.2, cz], 1.1, 0.5), beam("hull-grey-dark", [6 * Math.sin(a), 13.8, 6 * Math.cos(a)], [cx, 13.8, cz], 1.1, 0.5), beam("hull-grey-dark", [6 * Math.sin(a), 7.5, 6 * Math.cos(a)], [cx, 7.5, cz], 0.5, 0.5));
1166
+ out.push(hoop("hull-grey", 3.55, 14.0, 0.08, 20, 4, { at: [cx, cz] }));
1167
+ }
1168
+ out.push(hoop("hull-yellow", 11.6, 14.8, 0.1, 32, 5), ...Array.from({ length: 16 }, (_, k) => rod("hull-yellow", [11.6 * Math.sin(deg(22.5 * k)), 14.4, 11.6 * Math.cos(deg(22.5 * k))], [11.6 * Math.sin(deg(22.5 * k)), 14.8, 11.6 * Math.cos(deg(22.5 * k))], 0.05, 4)));
1169
+ return out;
1170
+ },
1171
+ }),
1172
+ habitatRing("habitat-ring-16", "Habitat ring, 16 m", 16, 520),
1173
+ habitatRing("habitat-ring-30", "Habitat ring, 30 m", 30, 1800),
1174
+ habitatDrum("habitat-drum-crew", "Crew habitat drum", 4.8, 18, 190, false),
1175
+ habitatDrum("habitat-drum-large", "Passenger habitat drum", 6, 24, 340, false),
1176
+ habitatDrum("farm-drum", "Farm drum", 6, 18, 260, true),
1177
+ lab,
1178
+ bay({ id: "deck-nav-m", name: "Navigation deck", note: "The bridge drum: a ring of big windows, helm, navigation and sensor consoles in tiers, and the chart table; M collars.", R: 4.6, L: 10, mass: 120, furniture: "bridge", digits: "23", glass: "glass", livery: "command", spacing: 3.1 }),
1179
+ bay({ id: "common-area-m", name: "Common area", note: "A shared hall: a galley, tables, a lounge, a gym and big windows, one deck high with a gallery; M collars.", R: 4.8, L: 12, mass: 130, furniture: "bench", digits: "24", glass: "glass", livery: "science", spacing: 3.6 }),
1180
+ bay({ id: "store-drum-m", name: "Stores drum", note: "Stores: racked crates of food, spares and water behind sealed hatches; M collars.", R: 4.4, L: 14, mass: 98, furniture: "cargo", digits: "25", glass: "none", livery: "transport", spacing: 3.4 }),
1181
+ commsArray,
1182
+ evaLock,
1183
+ domeLounge,
1184
+ solariumModule,
1185
+ tank("tank-header-9", "Header tank, 9 m", 3, 9, "M", "M", 24, 160, "A small reserve tank for each propellant, high on the spine so the feed lines run downhill: a header tank, with its own valves and level gauge."),
1186
+ missionPod("survey"),
1187
+ missionPod("medical"),
1188
+ sensorMast,
1189
+ reactor,
1190
+ radiatorArray("radiator-stowed", "Radiator array, stowed", false, 70),
1191
+ radiatorArray("radiator-deployed", "Radiator array, deployed", true, 70),
1192
+ dockingNode("node-two", "Docking node, 2 ports", 2, "M", 85),
1193
+ dockingNode("node-four", "Docking node, 4 ports", 4, "M", 120),
1194
+ truss("truss-m-12", "Truss segment, M, 12 m", 12, "M", 18),
1195
+ truss("truss-l-24", "Truss segment, L, 24 m", 24, "L", 64),
1196
+ adapter("adapter-m-l", "M", "L", 14),
1197
+ adapter("adapter-l-m", "L", "M", 14),
1198
+ shield,
1199
+ ];
1200
+ /**
1201
+ * Every module of the fleet kit, by id: name, mass and size in metres, collars, ports and how to draw it.
1202
+ *
1203
+ * @example
1204
+ * ```ts
1205
+ * import { KIT } from "@johnmorrisdotca/uchusen-rockets";
1206
+ *
1207
+ * console.log(Object.keys(KIT).length, KIT["engine-fusion-7"].mass);
1208
+ * ```
1209
+ */
1210
+ export const KIT = Object.fromEntries(list.map((m) => [m.id, m]));
1211
+ /**
1212
+ * The kit's builders, for a ship that needs a module of its own size: a 40 m container, an 80 m tank, a 165 m ring, a 24 m truss bay. Each takes the numbers a module is made from and gives a `KitModule` with the same collars,
1213
+ * detail and cutaway; the ship adds it to its list by putting it in its own table, or by `shipParts`.
1214
+ *
1215
+ * @example
1216
+ * ```ts
1217
+ * import { BUILDERS } from "@johnmorrisdotca/uchusen-rockets";
1218
+ *
1219
+ * const container40 = BUILDERS.container("my-container-40", "Container, 40 m", 40, false, 400);
1220
+ * console.log(container40.length, container40.pieces({ detail: 0.4 }).length > 100);
1221
+ * ```
1222
+ */
1223
+ export const BUILDERS = { container, tank, habitatRing, habitatDrum, truss, radiatorArray, engineCluster, adapter, dockingNode, bay, missionPod };