@elite-dangerous-almanac/core 0.1.7 → 0.2.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 (274) hide show
  1. package/PROVENANCE/i18n/SOURCES.md +2 -2
  2. package/PROVENANCE/ships/SOURCES.md +29 -9
  3. package/README.md +54 -40
  4. package/dist/astro/galaxy-grid.js +1 -1
  5. package/dist/astro/index.d.ts +1 -1
  6. package/dist/astro/index.js +1 -1
  7. package/dist/astro/naming-region-origins.d.ts +1 -1
  8. package/dist/astro/naming-region-origins.js +1 -1
  9. package/dist/astro/nebulae.d.ts +2 -2
  10. package/dist/astro/permit-locks.d.ts +2 -1
  11. package/dist/astro/permit-locks.js +1 -1
  12. package/dist/astro/procedural-system.d.ts +2 -1
  13. package/dist/astro/procedural-system.js +1 -1
  14. package/dist/astro/sector-name.d.ts +2 -1
  15. package/dist/astro/sector-name.js +1 -1
  16. package/dist/astro/system-address.d.ts +1 -1
  17. package/dist/astro/system-name.d.ts +14 -9
  18. package/dist/astro/system-name.js +1 -1
  19. package/dist/chunk-2W5MW376.js +1 -0
  20. package/dist/chunk-2W5MW376.js.map +1 -0
  21. package/dist/{chunk-VZZUNSDF.js → chunk-4KJ7CR74.js} +1 -1
  22. package/dist/{chunk-VZZUNSDF.js.map → chunk-4KJ7CR74.js.map} +1 -1
  23. package/dist/{chunk-6EUVIZAS.js → chunk-4QYTVSNR.js} +1 -1
  24. package/dist/{chunk-EKQCVCMK.js → chunk-5ZVYRX6Z.js} +1 -1
  25. package/dist/{chunk-EKQCVCMK.js.map → chunk-5ZVYRX6Z.js.map} +1 -1
  26. package/dist/chunk-6GJHUWMO.js +1 -0
  27. package/dist/chunk-6GJHUWMO.js.map +1 -0
  28. package/dist/chunk-6L56LWTT.js +1 -0
  29. package/dist/chunk-6L56LWTT.js.map +1 -0
  30. package/dist/{chunk-GQ5GX5TB.js → chunk-6O4NRRSB.js} +1 -1
  31. package/dist/chunk-6O4NRRSB.js.map +1 -0
  32. package/dist/{chunk-WNGQ3IAM.js → chunk-6UNAD74Z.js} +1 -1
  33. package/dist/{chunk-WNGQ3IAM.js.map → chunk-6UNAD74Z.js.map} +1 -1
  34. package/dist/{chunk-JPBMRJFC.js → chunk-77I24V6B.js} +1 -1
  35. package/dist/chunk-77I24V6B.js.map +1 -0
  36. package/dist/chunk-7ATBEOVC.js +1 -0
  37. package/dist/chunk-7ATBEOVC.js.map +1 -0
  38. package/dist/chunk-7TQ2X6Q3.js +1 -0
  39. package/dist/chunk-7TQ2X6Q3.js.map +1 -0
  40. package/dist/{chunk-6EPYVBAX.js → chunk-A6OINYNP.js} +1 -1
  41. package/dist/{chunk-Q3QCLNVG.js → chunk-AYAKU4YA.js} +1 -1
  42. package/dist/chunk-AYAKU4YA.js.map +1 -0
  43. package/dist/chunk-B7EYTZRK.js +1 -0
  44. package/dist/chunk-B7EYTZRK.js.map +1 -0
  45. package/dist/{chunk-EBAHNZ36.js → chunk-CIULJH3G.js} +1 -1
  46. package/dist/{chunk-EBAHNZ36.js.map → chunk-CIULJH3G.js.map} +1 -1
  47. package/dist/{chunk-SNADUQSJ.js → chunk-CJK2IBI2.js} +1 -1
  48. package/dist/{chunk-SNADUQSJ.js.map → chunk-CJK2IBI2.js.map} +1 -1
  49. package/dist/{chunk-DYPOL3CI.js → chunk-CJQ37JII.js} +1 -1
  50. package/dist/chunk-CJQ37JII.js.map +1 -0
  51. package/dist/chunk-D6YEHR5S.js +1 -0
  52. package/dist/chunk-D6YEHR5S.js.map +1 -0
  53. package/dist/{chunk-Z6XMXMVI.js → chunk-DBDCOHI4.js} +1 -1
  54. package/dist/chunk-DBDCOHI4.js.map +1 -0
  55. package/dist/{chunk-AFVYCQWL.js → chunk-DCB4COCL.js} +1 -1
  56. package/dist/{chunk-AFVYCQWL.js.map → chunk-DCB4COCL.js.map} +1 -1
  57. package/dist/{chunk-CJWFY6OX.js → chunk-DSMLYA2M.js} +1 -1
  58. package/dist/{chunk-CJWFY6OX.js.map → chunk-DSMLYA2M.js.map} +1 -1
  59. package/dist/{chunk-UXBCLFGU.js → chunk-DWRNXUAX.js} +1 -1
  60. package/dist/{chunk-UXBCLFGU.js.map → chunk-DWRNXUAX.js.map} +1 -1
  61. package/dist/{chunk-UHSNB5SV.js → chunk-EVJ32UF3.js} +1 -1
  62. package/dist/{chunk-UHSNB5SV.js.map → chunk-EVJ32UF3.js.map} +1 -1
  63. package/dist/chunk-EVW4Z4CB.js +1 -0
  64. package/dist/chunk-EVW4Z4CB.js.map +1 -0
  65. package/dist/{chunk-4S6WB7QR.js → chunk-FF2X4K5P.js} +1 -1
  66. package/dist/chunk-FF2X4K5P.js.map +1 -0
  67. package/dist/chunk-FYVPZBXN.js +1 -0
  68. package/dist/chunk-FYVPZBXN.js.map +1 -0
  69. package/dist/{chunk-QTZPA2FR.js → chunk-GLWPSVFV.js} +1 -1
  70. package/dist/chunk-GLWPSVFV.js.map +1 -0
  71. package/dist/chunk-GZYPQIO2.js +1 -0
  72. package/dist/chunk-GZYPQIO2.js.map +1 -0
  73. package/dist/chunk-H47K3UWG.js +1 -0
  74. package/dist/chunk-H47K3UWG.js.map +1 -0
  75. package/dist/chunk-JGOAQLYW.js +1 -0
  76. package/dist/chunk-JGOAQLYW.js.map +1 -0
  77. package/dist/{chunk-JWWYAMGD.js → chunk-MGRDB2BZ.js} +1 -1
  78. package/dist/{chunk-JWWYAMGD.js.map → chunk-MGRDB2BZ.js.map} +1 -1
  79. package/dist/{chunk-MKGJPVPS.js → chunk-MRTTQYT5.js} +1 -1
  80. package/dist/{chunk-MKGJPVPS.js.map → chunk-MRTTQYT5.js.map} +1 -1
  81. package/dist/chunk-MTJ4MS7W.js +1 -0
  82. package/dist/chunk-MTJ4MS7W.js.map +1 -0
  83. package/dist/chunk-NIURLW2F.js +1 -0
  84. package/dist/chunk-NIURLW2F.js.map +1 -0
  85. package/dist/chunk-OLKNYGGT.js +1 -0
  86. package/dist/chunk-OLKNYGGT.js.map +1 -0
  87. package/dist/{chunk-UXFMVZAY.js → chunk-OVUHQEH5.js} +1 -1
  88. package/dist/{chunk-UXFMVZAY.js.map → chunk-OVUHQEH5.js.map} +1 -1
  89. package/dist/chunk-OYFMHDYT.js +1 -0
  90. package/dist/chunk-OYFMHDYT.js.map +1 -0
  91. package/dist/chunk-OYR5HUQZ.js +1 -0
  92. package/dist/chunk-OYR5HUQZ.js.map +1 -0
  93. package/dist/{chunk-LLHGSBPI.js → chunk-PA5EITW5.js} +1 -1
  94. package/dist/{chunk-LLHGSBPI.js.map → chunk-PA5EITW5.js.map} +1 -1
  95. package/dist/chunk-PL75RTA2.js +1 -0
  96. package/dist/{chunk-2VPVZELZ.js.map → chunk-PL75RTA2.js.map} +1 -1
  97. package/dist/chunk-PY5L6WC5.js +1 -0
  98. package/dist/chunk-PY5L6WC5.js.map +1 -0
  99. package/dist/{chunk-W6EPHHTS.js → chunk-Q2L75GSI.js} +1 -1
  100. package/dist/chunk-Q2L75GSI.js.map +1 -0
  101. package/dist/chunk-QJ7GB6FF.js +1 -0
  102. package/dist/chunk-QJ7GB6FF.js.map +1 -0
  103. package/dist/chunk-QTAMQ6ME.js +1 -0
  104. package/dist/chunk-QTAMQ6ME.js.map +1 -0
  105. package/dist/{chunk-VDVFJXX5.js → chunk-QY3L5BKN.js} +1 -1
  106. package/dist/{chunk-FMPRCYKY.js → chunk-RRYBSAPX.js} +1 -1
  107. package/dist/chunk-RRYBSAPX.js.map +1 -0
  108. package/dist/{chunk-J42ZXLBL.js → chunk-T62GO4AA.js} +1 -1
  109. package/dist/chunk-T62GO4AA.js.map +1 -0
  110. package/dist/{chunk-E3BRVGJJ.js → chunk-TBZJIQ5P.js} +1 -1
  111. package/dist/{chunk-E3BRVGJJ.js.map → chunk-TBZJIQ5P.js.map} +1 -1
  112. package/dist/chunk-V3AEUBHV.js +1 -0
  113. package/dist/chunk-V3AEUBHV.js.map +1 -0
  114. package/dist/chunk-VYDQHPY2.js +1 -0
  115. package/dist/chunk-VYDQHPY2.js.map +1 -0
  116. package/dist/chunk-XUHAPOM6.js +1 -0
  117. package/dist/chunk-XUHAPOM6.js.map +1 -0
  118. package/dist/chunk-Y6KJJMIM.js +1 -0
  119. package/dist/chunk-Y6KJJMIM.js.map +1 -0
  120. package/dist/chunk-YXPZ7QQB.js +1 -0
  121. package/dist/chunk-YXPZ7QQB.js.map +1 -0
  122. package/dist/{chunk-Y6UZWNP4.js → chunk-ZCEAPJDH.js} +1 -1
  123. package/dist/{chunk-Y6UZWNP4.js.map → chunk-ZCEAPJDH.js.map} +1 -1
  124. package/dist/commodities/commodities.d.ts +20 -10
  125. package/dist/commodities/commodities.js +1 -1
  126. package/dist/commodities/index.d.ts +15 -4
  127. package/dist/commodities/index.js +1 -1
  128. package/dist/equipment/index.js +1 -1
  129. package/dist/equipment/modification-costs.d.ts +2 -1
  130. package/dist/equipment/modification-costs.js.map +1 -1
  131. package/dist/equipment/modification-journal.js +1 -1
  132. package/dist/equipment/modifications.d.ts +2 -1
  133. package/dist/equipment/modifications.js +1 -1
  134. package/dist/equipment/suits.d.ts +6 -3
  135. package/dist/equipment/suits.js +1 -1
  136. package/dist/equipment/upgrade-costs.d.ts +8 -4
  137. package/dist/equipment/upgrade-costs.js +1 -1
  138. package/dist/equipment/upgrade-costs.js.map +1 -1
  139. package/dist/equipment/weapons.d.ts +13 -5
  140. package/dist/equipment/weapons.js +1 -1
  141. package/dist/i18n/blueprints.d.ts +6 -6
  142. package/dist/i18n/blueprints.js +1 -1
  143. package/dist/i18n/diagnostics.d.ts +1 -13
  144. package/dist/i18n/engineering-groups.d.ts +1 -0
  145. package/dist/i18n/engineering-groups.js +1 -1
  146. package/dist/i18n/experimental-effect-descriptions.d.ts +4 -3
  147. package/dist/i18n/experimental-effect-descriptions.js +1 -1
  148. package/dist/i18n/experimental-effects.d.ts +5 -4
  149. package/dist/i18n/experimental-effects.js +1 -1
  150. package/dist/i18n/index.d.ts +1 -13
  151. package/dist/i18n/index.js +1 -1
  152. package/dist/i18n/pre-engineered.d.ts +7 -6
  153. package/dist/i18n/pre-engineered.js +1 -1
  154. package/dist/materials/index.d.ts +16 -4
  155. package/dist/materials/index.js +1 -1
  156. package/dist/materials/materials.d.ts +36 -19
  157. package/dist/materials/materials.js +1 -1
  158. package/dist/materials/micro-resources.d.ts +18 -7
  159. package/dist/materials/micro-resources.js +1 -1
  160. package/dist/ships/armour.d.ts +20 -4
  161. package/dist/ships/armour.js +1 -1
  162. package/dist/ships/blueprint-costs.d.ts +20 -17
  163. package/dist/ships/blueprint-costs.js +1 -1
  164. package/dist/ships/blueprint-journal.d.ts +9 -8
  165. package/dist/ships/blueprint-journal.js +1 -1
  166. package/dist/ships/blueprints.d.ts +14 -12
  167. package/dist/ships/blueprints.js +1 -1
  168. package/dist/ships/build-metrics.d.ts +1061 -0
  169. package/dist/ships/build-metrics.js +1 -0
  170. package/dist/ships/build-metrics.js.map +1 -0
  171. package/dist/ships/distributor.d.ts +10 -3
  172. package/dist/ships/distributor.js +1 -1
  173. package/dist/ships/engineering-options.d.ts +8 -6
  174. package/dist/ships/engineering-options.js +1 -1
  175. package/dist/ships/engineering.d.ts +2 -16
  176. package/dist/ships/engineering.js +1 -1
  177. package/dist/ships/experimental-effect-costs.d.ts +5 -5
  178. package/dist/ships/experimental-effect-costs.js +1 -1
  179. package/dist/ships/experimental-effects.d.ts +9 -8
  180. package/dist/ships/experimental-effects.js +1 -1
  181. package/dist/ships/heat.d.ts +7 -2
  182. package/dist/ships/heat.js +1 -1
  183. package/dist/ships/index.d.ts +34 -22
  184. package/dist/ships/index.js +1 -1
  185. package/dist/ships/jump-range.d.ts +10 -3
  186. package/dist/ships/jump-range.js +1 -1
  187. package/dist/ships/loadout-calculations.d.ts +1 -1
  188. package/dist/ships/loadout-calculations.js +1 -1
  189. package/dist/ships/mobility-capacitor.d.ts +90 -0
  190. package/dist/ships/mobility-capacitor.js +1 -0
  191. package/dist/ships/mobility-capacitor.js.map +1 -0
  192. package/dist/ships/mobility.d.ts +41 -17
  193. package/dist/ships/mobility.js +1 -1
  194. package/dist/ships/modules-all.js +1 -1
  195. package/dist/ships/modules-core.js +1 -1
  196. package/dist/ships/modules.d.ts +27 -1
  197. package/dist/ships/modules.js +1 -1
  198. package/dist/ships/power.d.ts +12 -5
  199. package/dist/ships/power.js +1 -1
  200. package/dist/ships/pre-engineered-stats.d.ts +10 -8
  201. package/dist/ships/pre-engineered-stats.js +1 -1
  202. package/dist/ships/pre-engineered.d.ts +6 -6
  203. package/dist/ships/pre-engineered.js +1 -1
  204. package/dist/ships/resistances.d.ts +2 -2
  205. package/dist/ships/resistances.js +1 -1
  206. package/dist/ships/shield-capacitor.d.ts +133 -0
  207. package/dist/ships/shield-capacitor.js +1 -0
  208. package/dist/ships/shield-capacitor.js.map +1 -0
  209. package/dist/ships/shield-recovery.d.ts +16 -2
  210. package/dist/ships/shield-recovery.js +1 -1
  211. package/dist/ships/shields.d.ts +86 -28
  212. package/dist/ships/shields.js +1 -1
  213. package/dist/ships/ship-loadout.d.ts +100 -671
  214. package/dist/ships/ship-loadout.js +1 -1
  215. package/dist/ships/ships.d.ts +7 -6
  216. package/dist/ships/ships.js +1 -1
  217. package/dist/ships/slef.d.ts +11 -9
  218. package/dist/ships/slef.js +1 -1
  219. package/dist/ships/source-purchase.d.ts +2 -1
  220. package/dist/ships/source-purchase.js +1 -1
  221. package/dist/ships/weapons-capacitor.d.ts +10 -3
  222. package/dist/ships/weapons-capacitor.js +1 -1
  223. package/dist/ships/weapons.d.ts +22 -6
  224. package/dist/ships/weapons.js +1 -1
  225. package/dist/{system-address-DYsN1qOT.d.ts → system-address-cyJaeZIS.d.ts} +2 -1
  226. package/package.json +17 -2
  227. package/dist/chunk-24INI4U7.js +0 -1
  228. package/dist/chunk-24INI4U7.js.map +0 -1
  229. package/dist/chunk-2FHHMYDC.js +0 -1
  230. package/dist/chunk-2FHHMYDC.js.map +0 -1
  231. package/dist/chunk-2TW4ZBI3.js +0 -1
  232. package/dist/chunk-2TW4ZBI3.js.map +0 -1
  233. package/dist/chunk-2VPVZELZ.js +0 -1
  234. package/dist/chunk-4S6WB7QR.js.map +0 -1
  235. package/dist/chunk-DVL5RBKX.js +0 -1
  236. package/dist/chunk-DVL5RBKX.js.map +0 -1
  237. package/dist/chunk-DYPOL3CI.js.map +0 -1
  238. package/dist/chunk-EXVCRIDP.js +0 -1
  239. package/dist/chunk-EXVCRIDP.js.map +0 -1
  240. package/dist/chunk-FGXWVFN6.js +0 -1
  241. package/dist/chunk-FGXWVFN6.js.map +0 -1
  242. package/dist/chunk-FMPRCYKY.js.map +0 -1
  243. package/dist/chunk-G3265B27.js +0 -1
  244. package/dist/chunk-G3265B27.js.map +0 -1
  245. package/dist/chunk-GQ5GX5TB.js.map +0 -1
  246. package/dist/chunk-IOJXLDJN.js +0 -1
  247. package/dist/chunk-IOJXLDJN.js.map +0 -1
  248. package/dist/chunk-IYU4WLFM.js +0 -1
  249. package/dist/chunk-IYU4WLFM.js.map +0 -1
  250. package/dist/chunk-J42ZXLBL.js.map +0 -1
  251. package/dist/chunk-JPBMRJFC.js.map +0 -1
  252. package/dist/chunk-LJI7VXJD.js +0 -1
  253. package/dist/chunk-LJI7VXJD.js.map +0 -1
  254. package/dist/chunk-OCND33TO.js +0 -1
  255. package/dist/chunk-OCND33TO.js.map +0 -1
  256. package/dist/chunk-P2QOL63K.js +0 -1
  257. package/dist/chunk-P2QOL63K.js.map +0 -1
  258. package/dist/chunk-Q3QCLNVG.js.map +0 -1
  259. package/dist/chunk-QTZPA2FR.js.map +0 -1
  260. package/dist/chunk-RLUS76LZ.js +0 -1
  261. package/dist/chunk-RLUS76LZ.js.map +0 -1
  262. package/dist/chunk-TEOJCBSG.js +0 -1
  263. package/dist/chunk-TEOJCBSG.js.map +0 -1
  264. package/dist/chunk-TMMGS6TC.js +0 -1
  265. package/dist/chunk-TMMGS6TC.js.map +0 -1
  266. package/dist/chunk-W6EPHHTS.js.map +0 -1
  267. package/dist/chunk-Z6XMXMVI.js.map +0 -1
  268. package/dist/chunk-ZNCXENNB.js +0 -1
  269. package/dist/chunk-ZNCXENNB.js.map +0 -1
  270. package/dist/chunk-ZZT2PQZ5.js +0 -1
  271. package/dist/chunk-ZZT2PQZ5.js.map +0 -1
  272. /package/dist/{chunk-6EUVIZAS.js.map → chunk-4QYTVSNR.js.map} +0 -0
  273. /package/dist/{chunk-6EPYVBAX.js.map → chunk-A6OINYNP.js.map} +0 -0
  274. /package/dist/{chunk-VDVFJXX5.js.map → chunk-QY3L5BKN.js.map} +0 -0
@@ -1 +1 @@
1
- export{LoadoutEditError,ShipLoadout}from"../chunk-EXVCRIDP.js"; //# sourceMappingURL=ship-loadout.js.map
1
+ export{LoadoutEditError,ShipLoadout}from"../chunk-OYFMHDYT.js"; //# sourceMappingURL=ship-loadout.js.map
@@ -136,8 +136,8 @@ interface Ship {
136
136
  readonly optional: readonly OptionalSlotSpec[];
137
137
  }
138
138
  /**
139
- * Every player-flyable ship hull, in Frontier's shipyard order (roughly the order
140
- * the registry order, beginning with Sidewinder).
139
+ * Every player-flyable ship hull, in Frontier's shipyard order roughly the order the
140
+ * hulls were introduced, beginning with the Sidewinder.
141
141
  *
142
142
  * @example
143
143
  * ```ts
@@ -192,10 +192,11 @@ declare function getShipByName(name: string): Ship | null;
192
192
  * A hull's slot layout as a self-contained {@link ShipSlots}, ready to feed
193
193
  * {@link enumerateSlots}.
194
194
  *
195
- * @param symbol - The internal identifier, e.g. `"Anaconda"` (case-insensitive).
196
- * @returns The hull's slot layout, or `null` if no hull with that symbol is carried
197
- * or its catalogue record has no slot data. This is a projection of the slot-bearing
198
- * fields already on {@link Ship}.
195
+ * @param symbol - The internal identifier, e.g. `"Anaconda"`. Leading/trailing
196
+ * whitespace and case are ignored.
197
+ * @returns The hull's slot layout, or `null` if no hull with that symbol is carried.
198
+ * This is a projection of the slot-bearing fields already on {@link Ship}, all four of
199
+ * which every carried hull has, so a symbol that resolves always has a layout.
199
200
  * @remarks
200
201
  * This is the **read-only** layout, for your own outfitting UI (feed it to
201
202
  * `enumerateSlots`). To assemble and edit an actual build — fit modules, engineer
@@ -1 +1 @@
1
- export{SHIPS,getShipByName,getShipBySymbol,getShipSlots}from"../chunk-WNGQ3IAM.js"; //# sourceMappingURL=ships.js.map
1
+ export{SHIPS,getShipByName,getShipBySymbol,getShipSlots}from"../chunk-6UNAD74Z.js"; //# sourceMappingURL=ships.js.map
@@ -91,9 +91,10 @@ interface BlueprintModuleEngineering {
91
91
  * so an export from another app may name the blueprint and its roll without spelling
92
92
  * out the resulting stats. Treat a missing array as "not stated", not as "nothing was
93
93
  * changed". A craftable recipe can be reconstructed with
94
- * {@link ShipLoadout.applyBlueprint}; resolve a fixed identity through the
95
- * pre-engineered catalogue and fit it with
96
- * {@link ShipLoadout.setPreEngineeredVariant}.
94
+ * {@link ShipLoadout.applyBlueprint}, or rolled where it stands with
95
+ * {@link ShipLoadout.completeEngineeringGrade}, which spells out a stated identity
96
+ * at quality `1`; resolve a fixed identity through the pre-engineered catalogue and
97
+ * fit it with {@link ShipLoadout.setPreEngineeredVariant}.
97
98
  */
98
99
  readonly Modifiers?: readonly EngineeringModifier[];
99
100
  }
@@ -149,13 +150,14 @@ interface LoadoutModule {
149
150
  * Only `Ship` and `Modules` are strictly required by SLEF; every other field is
150
151
  * optional. Masses are in tonnes, ranges in light-years, values in credits.
151
152
  *
152
- * `timestamp`, `ShipID`, `HullHealth` and `Hot` are deliberately outside the durable
153
- * loadout shape. They describe the capture or the ship instance/state rather than its
154
- * fit, so {@link ShipLoadout.fromLoadout} drops them and subsequent loadout/SLEF exports
155
- * never write them. A tolerant parse still accepts an input object carrying those keys.
153
+ * `event`, `timestamp`, `ShipID`, `HullHealth` and `Hot` are deliberately outside the
154
+ * durable loadout shape. They name the journal line, or describe the capture or the ship
155
+ * instance/state, rather than its fit, so {@link ShipLoadout.fromLoadout} drops them and
156
+ * subsequent loadout/SLEF exports never write them. A tolerant parse still accepts an
157
+ * input object carrying those keys.
156
158
  */
157
159
  interface LoadoutEvent {
158
- /** Always `"Loadout"`. */
160
+ /** `"Loadout"` when a journal line supplied it. Accepted on input, never written. */
159
161
  readonly event?: string;
160
162
  /** The hull's internal id, e.g. `"explorer_nx"` (lower-cased). */
161
163
  readonly Ship: string;
@@ -314,7 +316,7 @@ declare function stringifySlef(slef: Slef, options?: SlefStringifyOptions): stri
314
316
  *
315
317
  * @param module - The fitted module.
316
318
  * @param label - The stat's journal name, e.g. `"FSDOptimalMass"`. Matched
317
- * case-insensitively.
319
+ * case-insensitively after trimming surrounding whitespace.
318
320
  * @returns The modifier's numeric `Value`, or `null` if the module is not
319
321
  * engineered, states no modifiers at all, carries no such modifier, or the modifier is
320
322
  * non-numeric.
@@ -1 +1 @@
1
- export{getLoadoutModifier,inspectSlef,parseSlef,stringifySlef,toSlef}from"../chunk-UXFMVZAY.js"; //# sourceMappingURL=slef.js.map
1
+ export{getLoadoutModifier,inspectSlef,parseSlef,stringifySlef,toSlef}from"../chunk-OVUHQEH5.js"; //# sourceMappingURL=slef.js.map
@@ -90,7 +90,8 @@ declare function sourcePurchaseFromLoadout(event: LoadoutEvent): SourcePurchaseR
90
90
  *
91
91
  * @param record - Purchase snapshot to query.
92
92
  * @param slotKey - Slot key such as `"PowerPlant"`. An exact spelling wins; otherwise
93
- * matching is case-insensitive so journal and lower-cased SLEF keys interoperate.
93
+ * matching folds case and ignores surrounding whitespace, as every identifier lookup in
94
+ * the library does, so journal and lower-cased SLEF keys interoperate.
94
95
  * @returns The frozen entry, or `null` when the source priced no module in that slot.
95
96
  * `null` never means the module was free.
96
97
  * @throws {TypeError} If `slotKey` is present and not a string. A nullish `slotKey` is a
@@ -1 +1 @@
1
- export{getSourceModuleValue,sourcePurchaseFromLoadout,sumSourceModuleValues}from"../chunk-IYU4WLFM.js"; //# sourceMappingURL=source-purchase.js.map
1
+ export{getSourceModuleValue,sourcePurchaseFromLoadout,sumSourceModuleValues}from"../chunk-NIURLW2F.js"; //# sourceMappingURL=source-purchase.js.map
@@ -6,8 +6,8 @@
6
6
  * `ratedRecharge * (weaponsPips / 4) ^ 1.1`. Endurance compares that rate with
7
7
  * the weapons' sustained draw, so magazine reloads are already folded in.
8
8
  *
9
- * This module is data-free. {@link ShipLoadout.weaponsCapacitorMetrics}
10
- * (`./ship-loadout`) resolves the powered distributor and weapons for you.
9
+ * This module is data-free. {@link BuildMetrics.weaponsCapacitorMetrics}
10
+ * (`./build-metrics`) resolves the powered distributor and weapons for you.
11
11
  *
12
12
  * @remarks
13
13
  * Reference implementation: EDCD/Coriolis, `src/app/shipyard/Calculations.js`
@@ -29,7 +29,14 @@ interface WeaponsCapacitorInput {
29
29
  /** Pips assigned to WEP, in `[0, 4]`. Fractional pips are accepted; defaults to `4`. */
30
30
  readonly weaponsPips?: number;
31
31
  }
32
- /** Recharge, drain and endurance of one weapons capacitor. */
32
+ /**
33
+ * Recharge, drain and endurance of one weapons capacitor.
34
+ *
35
+ * @remarks
36
+ * Frozen — nested records and lists included — so a result can be held, cached and
37
+ * shared without a defensive copy. Derive a changed figure with a spread rather than
38
+ * by assigning into one.
39
+ */
33
40
  interface WeaponsCapacitorMetrics {
34
41
  /** Pips assigned to WEP for this result, in `[0, 4]`. */
35
42
  readonly weaponsPips: number;
@@ -1 +1 @@
1
- export{weaponsCapacitorMetrics}from"../chunk-FMPRCYKY.js"; //# sourceMappingURL=weapons-capacitor.js.map
1
+ export{weaponsCapacitorMetrics}from"../chunk-RRYBSAPX.js"; //# sourceMappingURL=weapons-capacitor.js.map
@@ -23,7 +23,7 @@ import './slots.js';
23
23
  * above collapse to the raw stats.
24
24
  *
25
25
  * This module is data-free — hand it a weapon's stats (a catalogue record satisfies
26
- * {@link WeaponStats} as-is). {@link ShipLoadout.weaponMetrics} (in `./ship-loadout`)
26
+ * {@link WeaponStats} as-is). {@link BuildMetrics.weaponMetrics} (in `./build-metrics`)
27
27
  * reads a build's hardpoints, applies their engineering, and totals them for you.
28
28
  *
29
29
  * @remarks
@@ -124,6 +124,11 @@ interface WeaponStats {
124
124
  /**
125
125
  * Damage split across the established, unclassified and anti-xeno types, in the same
126
126
  * unit as the figure it splits (for example, damage per second when splitting DPS).
127
+ *
128
+ * @remarks
129
+ * Frozen — nested records and lists included — so a result can be held, cached and
130
+ * shared without a defensive copy. Derive a changed figure with a spread rather than
131
+ * by assigning into one.
127
132
  */
128
133
  interface DamageSplit {
129
134
  /** Kinetic share. */
@@ -142,7 +147,14 @@ interface DamageSplit {
142
147
  */
143
148
  readonly antiXeno: number;
144
149
  }
145
- /** What one weapon does per second, sustained and unsustained. */
150
+ /**
151
+ * What one weapon does per second, sustained and unsustained.
152
+ *
153
+ * @remarks
154
+ * Frozen — nested records and lists included — so a result can be held, cached and
155
+ * shared without a defensive copy. Derive a changed figure with a spread rather than
156
+ * by assigning into one.
157
+ */
146
158
  interface WeaponMetrics {
147
159
  /** Damage of one shot — `damage × roundsPerShot`. */
148
160
  readonly damagePerShot: number;
@@ -173,7 +185,7 @@ interface WeaponMetrics {
173
185
  * {@link damagePerSecond} split by damage type.
174
186
  *
175
187
  * @remarks
176
- * Uses the split supplied in {@link WeaponStats}. {@link ShipLoadout.weaponMetrics}
188
+ * Uses the split supplied in {@link WeaponStats}. {@link BuildMetrics.weaponMetrics}
177
189
  * resolves damage-converting experimental effects, Plasma Conversion blueprints and
178
190
  * a journal's own damage-type modifiers before calling this calculation, so fitted
179
191
  * conversions report their resulting split.
@@ -192,6 +204,10 @@ interface WeaponMetrics {
192
204
  * therefore do not appear here: adding a beam laser's cadence to a multi-cannon's does
193
205
  * not describe either weapon or the build. Use the individual {@link WeaponMetrics}
194
206
  * when those figures matter.
207
+ *
208
+ * Frozen — nested records and lists included — so a result can be held, cached and
209
+ * shared without a defensive copy. Derive a changed figure with a spread rather than
210
+ * by assigning into one.
195
211
  */
196
212
  interface WeaponTotals {
197
213
  /** Damage per second while firing, summed across the weapons. */
@@ -379,12 +395,12 @@ declare function weaponMetrics(weapon: WeaponStats): WeaponMetrics;
379
395
  * @returns The additive {@link WeaponTotals}. An empty list returns zeroes.
380
396
  * @example
381
397
  * ```ts
382
- * import type { ShipLoadout } from '@elite-dangerous-almanac/core/ships/ship-loadout';
398
+ * import type { BuildMetrics } from '@elite-dangerous-almanac/core/ships/build-metrics';
383
399
  * import { sumWeaponMetrics } from '@elite-dangerous-almanac/core/ships/weapons';
384
400
  *
385
- * declare const build: ShipLoadout;
401
+ * declare const metrics: BuildMetrics;
386
402
  *
387
- * sumWeaponMetrics(build.weaponMetrics().weapons.map((w) => w.metrics)).damagePerSecond;
403
+ * sumWeaponMetrics(metrics.weaponMetrics().weapons.map((w) => w.metrics)).damagePerSecond;
388
404
  * ```
389
405
  */
390
406
  declare function sumWeaponMetrics(metrics: readonly WeaponMetrics[]): WeaponTotals;
@@ -1 +1 @@
1
- export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics}from"../chunk-LJI7VXJD.js";//# sourceMappingURL=weapons.js.map
1
+ export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics}from"../chunk-7TQ2X6Q3.js";//# sourceMappingURL=weapons.js.map
@@ -78,7 +78,8 @@ declare function getHandAuthoredRegionOrigin(name: string): NamingRegionOrigin |
78
78
  * procedural sector and its origin synthesised from the sector grid. Returns
79
79
  * `null` only when the name is neither catalogued nor a valid procedural sector.
80
80
  *
81
- * @param name - A region (sector) name in any casing.
81
+ * @param name - A region (sector) name in any casing, with optional surrounding
82
+ * whitespace.
82
83
  * @returns The region origin, or `null` if the name cannot be resolved.
83
84
  * @throws {TypeError} If `name` is present and not a string. A nullish
84
85
  * `name` is a miss, answered the way an unrecognised one is.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elite-dangerous-almanac/core",
3
- "version": "0.1.7",
3
+ "version": "0.2.0",
4
4
  "description": "Elite Dangerous static data and calculations: astronomy, ships and outfitting, personal equipment and engineering, materials, and market commodities.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -305,6 +305,10 @@
305
305
  "types": "./dist/ships/blueprint-journal.d.ts",
306
306
  "import": "./dist/ships/blueprint-journal.js"
307
307
  },
308
+ "./ships/build-metrics": {
309
+ "types": "./dist/ships/build-metrics.d.ts",
310
+ "import": "./dist/ships/build-metrics.js"
311
+ },
308
312
  "./ships/blueprints": {
309
313
  "types": "./dist/ships/blueprints.d.ts",
310
314
  "import": "./dist/ships/blueprints.js"
@@ -357,6 +361,10 @@
357
361
  "types": "./dist/ships/mobility.d.ts",
358
362
  "import": "./dist/ships/mobility.js"
359
363
  },
364
+ "./ships/mobility-capacitor": {
365
+ "types": "./dist/ships/mobility-capacitor.d.ts",
366
+ "import": "./dist/ships/mobility-capacitor.js"
367
+ },
360
368
  "./ships/module-capabilities": {
361
369
  "types": "./dist/ships/module-capabilities.d.ts",
362
370
  "import": "./dist/ships/module-capabilities.js"
@@ -413,6 +421,10 @@
413
421
  "types": "./dist/ships/shield-recovery.d.ts",
414
422
  "import": "./dist/ships/shield-recovery.js"
415
423
  },
424
+ "./ships/shield-capacitor": {
425
+ "types": "./dist/ships/shield-capacitor.d.ts",
426
+ "import": "./dist/ships/shield-capacitor.js"
427
+ },
416
428
  "./ships/shields": {
417
429
  "types": "./dist/ships/shields.d.ts",
418
430
  "import": "./dist/ships/shields.js"
@@ -458,17 +470,20 @@
458
470
  "scripts": {
459
471
  "audit": "pnpm audit --audit-level=low",
460
472
  "build": "node scripts/copy-notices.mjs && node scripts/copy-assets.mjs && tsup && node scripts/prune-sourcemap-sources.mjs && node scripts/prune-barrel-imports.mjs && node scripts/attach-barrel-docs.mjs",
461
- "check": "pnpm run check:fixtures && pnpm run lint && pnpm run format:check && pnpm run typecheck && pnpm run check:examples && pnpm test",
473
+ "check": "pnpm run check:fixtures && pnpm run check:i18n-coverage && pnpm run lint && pnpm run format:check && pnpm run typecheck && pnpm run check:examples && pnpm run check:sizes && pnpm test",
462
474
  "check:fixtures": "node ../scripts/fixtures/generate-schema-and-types.mjs --check",
475
+ "check:i18n-coverage": "node scripts/i18n-coverage.mjs --check",
463
476
  "format": "prettier --write . ../README.md ../CONTRIBUTING.md ../SECURITY.md ../schemas/**/*.{json,md} ../scripts/**/*.mjs ../.github/*.{md,yml} ../.github/workflows/*.yml ../.github/ISSUE_TEMPLATE/*.yml",
464
477
  "format:check": "prettier --check . ../README.md ../CONTRIBUTING.md ../SECURITY.md ../schemas/**/*.{json,md} ../scripts/**/*.mjs ../.github/*.{md,yml} ../.github/workflows/*.yml ../.github/ISSUE_TEMPLATE/*.yml",
465
478
  "generate:fixtures": "node ../scripts/fixtures/generate-schema-and-types.mjs",
479
+ "generate:i18n-coverage": "node scripts/i18n-coverage.mjs",
466
480
  "lint": "eslint .",
467
481
  "prepublishOnly": "pnpm run check && pnpm run build && pnpm run test:package",
468
482
  "test": "node --experimental-test-coverage --test-coverage-include=\"src/internal/**/*.ts\" --test-coverage-include=\"src/astro/**/*.ts\" --test-coverage-include=\"src/materials/**/*.ts\" --test-coverage-include=\"src/equipment/**/*.ts\" --test-coverage-include=\"src/i18n/**/*.ts\" --test-coverage-include=\"src/ships/**/*.ts\" --test-coverage-include=\"src/commodities/**/*.ts\" --test-coverage-exclude=\"src/**/*.test.ts\" --test-coverage-lines=80 --test-coverage-branches=80 --test-coverage-functions=80 --import tsx --import ./scripts/register-jsonc.mjs --test \"src/**/*.test.ts\"",
469
483
  "typecheck": "tsc --noEmit",
470
484
  "docs": "typedoc && node scripts/build-wiki-sidebar.mjs && node scripts/postprocess-wiki.mjs",
471
485
  "check:examples": "node --test scripts/example-claims.test.mjs scripts/example-runtime.test.mjs && node scripts/check-examples.mjs",
486
+ "check:sizes": "pnpm run build && node scripts/check-sizes.mjs",
472
487
  "test:package": "node --test package.test.mjs"
473
488
  },
474
489
  "devDependencies": {
@@ -1 +0,0 @@
1
- var requireFiniteNonNegative=(scope,name,value)=>{if(!Number.isFinite(value)||value<0){throw new RangeError(`${scope}: ${name} must be a finite non-negative number`)}};var requireFiniteRange=(scope,name,value,minimum,maximum)=>{if(!Number.isFinite(value)||value<minimum||value>maximum){throw new RangeError(`${scope}: ${name} must be a finite number from ${minimum} to ${maximum}`)}};var validateCurve=(scope,curve)=>{for(const field of["minMass","optMass","maxMass"]){requireFiniteNonNegative(scope,field,curve[field])}const allMassesEqual=curve.minMass===curve.optMass&&curve.optMass===curve.maxMass;if(!allMassesEqual&&!(curve.minMass<curve.optMass&&curve.optMass<curve.maxMass)){throw new RangeError(`${scope}: masses must be strictly ordered minMass < optMass < maxMass, or all equal`)}for(const field of["minMultiplier","optMultiplier","maxMultiplier"]){requireFiniteNonNegative(scope,field,curve[field])}const allMultipliersEqual=curve.minMultiplier===curve.optMultiplier&&curve.optMultiplier===curve.maxMultiplier;const strictlyOrderedMultipliers=curve.minMultiplier<curve.optMultiplier&&curve.optMultiplier<curve.maxMultiplier;if(!allMultipliersEqual&&!strictlyOrderedMultipliers){throw new RangeError(`${scope}: multipliers must be strictly ordered minMultiplier < optMultiplier < maxMultiplier, or all equal`)}if(allMassesEqual&&!allMultipliersEqual){throw new RangeError(`${scope}: an all-equal mass curve must have equal multipliers`)}};var curveMultiplier=(scope,mass,thrusters)=>{requireFiniteNonNegative(scope,"mass",mass);validateCurve(`${scope}: thrusters`,thrusters);if(mass>thrusters.maxMass)return 0;const span=thrusters.maxMass-thrusters.minMass;if(span<=0||thrusters.maxMultiplier===thrusters.minMultiplier){return thrusters.optMultiplier}const normalised=Math.max(0,Math.min(1,(thrusters.maxMass-mass)/span));const optNormalised=Math.min(1,(thrusters.maxMass-thrusters.optMass)/span);const exponent=Math.log((thrusters.optMultiplier-thrusters.minMultiplier)/(thrusters.maxMultiplier-thrusters.minMultiplier))/Math.log(optNormalised);if(!Number.isFinite(exponent)){throw new RangeError(`${scope}: curve values do not produce a finite exponent`)}return thrusters.minMultiplier+Math.pow(normalised,exponent)*(thrusters.maxMultiplier-thrusters.minMultiplier)};function thrusterMassCurveMultiplier(mass,thrusters){return curveMultiplier("thrusterMassCurveMultiplier",mass,thrusters)}function mobilityMetrics(input){const pips=input.enginesPips??4;requireFiniteRange("mobilityMetrics","enginesPips",pips,0,4);for(const field of["minimumSpeed","maximumSpeed","boost","pitch","roll","yaw","mass"]){requireFiniteNonNegative("mobilityMetrics",field,input[field])}if(input.minimumSpeed>input.maximumSpeed){throw new RangeError("mobilityMetrics: minimumSpeed must not exceed maximumSpeed")}for(const[minimum,maximum]of[["minPitch","pitch"],["minRoll","roll"],["minYaw","yaw"]]){requireFiniteRange("mobilityMetrics",minimum,input[minimum],0,input[maximum])}if(!input.thrusters)return null;validateCurve("mobilityMetrics: thrusters",input.thrusters);const massCurveMultiplier=curveMultiplier("mobilityMetrics: speed curve",input.mass,input.thrusters.speedCurve??input.thrusters);const rotationMassCurveMultiplier=curveMultiplier("mobilityMetrics: rotation curve",input.mass,input.thrusters.rotationCurve??input.thrusters);const pipMultiplier=pips/4;const speedAtPips=input.minimumSpeed+(input.maximumSpeed-input.minimumSpeed)*pipMultiplier;const handlingAtPips=(maximum,minimum)=>minimum+(maximum-minimum)*pipMultiplier;return{speed:speedAtPips*massCurveMultiplier,boost:input.boost*massCurveMultiplier,pitch:handlingAtPips(input.pitch,input.minPitch)*rotationMassCurveMultiplier,roll:handlingAtPips(input.roll,input.minRoll)*rotationMassCurveMultiplier,yaw:handlingAtPips(input.yaw,input.minYaw)*rotationMassCurveMultiplier,massCurveMultiplier:massCurveMultiplier,rotationMassCurveMultiplier:rotationMassCurveMultiplier}}export{mobilityMetrics,thrusterMassCurveMultiplier};//# sourceMappingURL=chunk-24INI4U7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ships/mobility.ts"],"names":["requireFiniteNonNegative","scope","name","value","Number","isFinite","RangeError","requireFiniteRange","minimum","maximum","validateCurve","curve","field","allMassesEqual","minMass","optMass","maxMass","allMultipliersEqual","minMultiplier","optMultiplier","maxMultiplier","strictlyOrderedMultipliers","curveMultiplier","mass","thrusters","span","normalised","Math","max","min","optNormalised","exponent","log","pow","thrusterMassCurveMultiplier","mobilityMetrics","input","pips","enginesPips","minimumSpeed","maximumSpeed","massCurveMultiplier","speedCurve","rotationMassCurveMultiplier","rotationCurve","pipMultiplier","speedAtPips","handlingAtPips","speed","boost","pitch","minPitch","roll","minRoll","yaw","minYaw"],"mappings":"AAwFA,IAAMA,yBAA2B,CAACC,MAAeC,KAAcC,SAC3D,IAAKC,OAAOC,SAASF,QAAUA,MAAQ,EAAG,CACtC,MAAM,IAAIG,WAAW,GAAGL,UAAUC,4CACtC,GAGJ,IAAMK,mBAAqB,CACvBN,MACAC,KACAC,MACAK,QACAC,WAEA,IAAKL,OAAOC,SAASF,QAAUA,MAAQK,SAAWL,MAAQM,QAAS,CAC/D,MAAM,IAAIH,WACN,GAAGL,UAAUC,qCAAqCM,cAAcC,UAExE,GAGJ,IAAMC,cAAgB,CAACT,MAAeU,SAClC,IAAA,MAAWC,QAAS,CAAC,UAAW,UAAW,WAAqB,CAC5DZ,yBAAyBC,MAAOW,MAAOD,MAAMC,OACjD,CACA,MAAMC,eAAiBF,MAAMG,UAAYH,MAAMI,SAAWJ,MAAMI,UAAYJ,MAAMK,QAClF,IAAKH,kBAAoBF,MAAMG,QAAUH,MAAMI,SAAWJ,MAAMI,QAAUJ,MAAMK,SAAU,CACtF,MAAM,IAAIV,WACN,GAAGL,mFAEX,CACA,IAAA,MAAWW,QAAS,CAAC,gBAAiB,gBAAiB,iBAA2B,CAC9EZ,yBAAyBC,MAAOW,MAAOD,MAAMC,OACjD,CACA,MAAMK,oBACFN,MAAMO,gBAAkBP,MAAMQ,eAAiBR,MAAMQ,gBAAkBR,MAAMS,cACjF,MAAMC,2BACFV,MAAMO,cAAgBP,MAAMQ,eAAiBR,MAAMQ,cAAgBR,MAAMS,cAC7E,IAAKH,sBAAwBI,2BAA4B,CACrD,MAAM,IAAIf,WACN,GAAGL,0GAEX,CACA,GAAIY,iBAAmBI,oBAAqB,CACxC,MAAM,IAAIX,WAAW,GAAGL,6DAC5B,GAGJ,IAAMqB,gBAAkB,CAACrB,MAAesB,KAAcC,aAClDxB,yBAAyBC,MAAO,OAAQsB,MACxCb,cAAc,GAAGT,mBAAoBuB,WACrC,GAAID,KAAOC,UAAUR,QAAS,OAAO,EACrC,MAAMS,KAAOD,UAAUR,QAAUQ,UAAUV,QAC3C,GAAIW,MAAQ,GAAKD,UAAUJ,gBAAkBI,UAAUN,cAAe,CAClE,OAAOM,UAAUL,aACrB,CACA,MAAMO,WAAaC,KAAKC,IAAI,EAAGD,KAAKE,IAAI,GAAIL,UAAUR,QAAUO,MAAQE,OACxE,MAAMK,cAAgBH,KAAKE,IAAI,GAAIL,UAAUR,QAAUQ,UAAUT,SAAWU,MAC5E,MAAMM,SACFJ,KAAKK,KACAR,UAAUL,cAAgBK,UAAUN,gBAChCM,UAAUJ,cAAgBI,UAAUN,gBACzCS,KAAKK,IAAIF,eACjB,IAAK1B,OAAOC,SAAS0B,UAAW,CAC5B,MAAM,IAAIzB,WAAW,GAAGL,uDAC5B,CACA,OACIuB,UAAUN,cACVS,KAAKM,IAAIP,WAAYK,WAAaP,UAAUJ,cAAgBI,UAAUN,gBAuBvE,SAASgB,4BAA4BX,KAAcC,WACtD,OAAOF,gBAAgB,8BAA+BC,KAAMC,UAChE,CAoCO,SAASW,gBAAgBC,OAC5B,MAAMC,KAAOD,MAAME,aAAe,EAClC/B,mBAAmB,kBAAmB,cAAe8B,KAAM,EAAG,GAC9D,IAAA,MAAWzB,QAAS,CAChB,eACA,eACA,QACA,QACA,OACA,MACA,QACQ,CACRZ,yBAAyB,kBAAmBY,MAAOwB,MAAMxB,OAC7D,CACA,GAAIwB,MAAMG,aAAeH,MAAMI,aAAc,CACzC,MAAM,IAAIlC,WAAW,6DACzB,CACA,IAAA,MAAYE,QAASC,UAAY,CAC7B,CAAC,WAAY,SACb,CAAC,UAAW,QACZ,CAAC,SAAU,QACH,CACRF,mBAAmB,kBAAmBC,QAAS4B,MAAM5B,SAAU,EAAG4B,MAAM3B,SAC5E,CACA,IAAK2B,MAAMZ,UAAW,OAAO,KAC7Bd,cAAc,6BAA8B0B,MAAMZ,WAClD,MAAMiB,oBAAsBnB,gBACxB,+BACAc,MAAMb,KACNa,MAAMZ,UAAUkB,YAAcN,MAAMZ,WAExC,MAAMmB,4BAA8BrB,gBAChC,kCACAc,MAAMb,KACNa,MAAMZ,UAAUoB,eAAiBR,MAAMZ,WAE3C,MAAMqB,cAAgBR,KAAO,EAC7B,MAAMS,YACFV,MAAMG,cAAgBH,MAAMI,aAAeJ,MAAMG,cAAgBM,cACrE,MAAME,eAAiB,CAACtC,QAAiBD,UACrCA,SAAWC,QAAUD,SAAWqC,cACpC,MAAO,CACHG,MAAOF,YAAcL,oBACrBQ,MAAOb,MAAMa,MAAQR,oBACrBS,MAAOH,eAAeX,MAAMc,MAAOd,MAAMe,UAAYR,4BACrDS,KAAML,eAAeX,MAAMgB,KAAMhB,MAAMiB,SAAWV,4BAClDW,IAAKP,eAAeX,MAAMkB,IAAKlB,MAAMmB,QAAUZ,4BAC/CF,wCACAE,wDAER,QAAAR,gBAAAD"}
@@ -1 +0,0 @@
1
- import{systemsResistance,mapDamageTypes,effectiveHitPoints,stackShieldResistance}from"./chunk-ZNCXENNB.js";function shieldMassCurveMultiplier(hullMass,generator){const{minMass:minMass,optMass:optMass,maxMass:maxMass,minMultiplier:minMultiplier,optMultiplier:optMultiplier,maxMultiplier:maxMultiplier}=generator;if(minMass===void 0||optMass===void 0||maxMass===void 0||minMultiplier===void 0||optMultiplier===void 0||maxMultiplier===void 0){return 0}if(hullMass>maxMass)return 0;const span=maxMass-minMass;if(span<=0||maxMultiplier===minMultiplier)return optMultiplier;const normalised=Math.max(0,Math.min(1,(maxMass-hullMass)/span));const optNormalised=Math.min(1,(maxMass-optMass)/span);const exponent=Math.log((optMultiplier-minMultiplier)/(maxMultiplier-minMultiplier))/Math.log(optNormalised);if(!Number.isFinite(exponent))return optMultiplier;return minMultiplier+Math.pow(normalised,exponent)*(maxMultiplier-minMultiplier)}function shieldStrength(hullMass,baseShieldStrength,generator,boostMultiplier=1){return baseShieldStrength*shieldMassCurveMultiplier(hullMass,generator)*boostMultiplier}var boosterResistances=(boosters,type)=>boosters.map(booster=>booster[`${type}Resistance`]??0);function shieldMetrics(input){const boosters=input.boosters??[];const reinforcement=input.reinforcement??0;const pips=input.systemsPips??0;const sysResistance=systemsResistance(pips);const generator=input.generator??null;if(!generator){const none=mapDamageTypes(()=>0);return{strength:0,generator:0,boosters:0,reinforcement:0,massCurveMultiplier:0,boostMultiplier:1,resistances:none,effectiveHitPoints:effectiveHitPoints(0,none),systemsResistance:sysResistance}}const massCurveMultiplier=shieldMassCurveMultiplier(input.hullMass,generator);const boostMultiplier=1+boosters.reduce((sum,booster)=>sum+(booster.shieldBoost??0),0);const generatorStrength=input.baseShieldStrength*massCurveMultiplier;const boostersStrength=generatorStrength*(boostMultiplier-1);const strength=generatorStrength+boostersStrength+reinforcement;const withPips=resistance=>1-(1-resistance)*(1-sysResistance);const resistances=mapDamageTypes(type=>withPips(stackShieldResistance(generator[`${type}Resistance`]??0,boosterResistances(boosters,type))));return{strength:strength,generator:generatorStrength,boosters:boostersStrength,reinforcement:reinforcement,massCurveMultiplier:massCurveMultiplier,boostMultiplier:boostMultiplier,resistances:resistances,effectiveHitPoints:effectiveHitPoints(strength,resistances),systemsResistance:sysResistance}}export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength};//# sourceMappingURL=chunk-2FHHMYDC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ships/shields.ts"],"names":["systemsResistance","mapDamageTypes","effectiveHitPoints","stackShieldResistance","shieldMassCurveMultiplier","hullMass","generator","minMass","optMass","maxMass","minMultiplier","optMultiplier","maxMultiplier","span","normalised","Math","max","min","optNormalised","exponent","log","Number","isFinite","pow","shieldStrength","baseShieldStrength","boostMultiplier","boosterResistances","boosters","type","map","booster","shieldMetrics","input","reinforcement","pips","systemsPips","sysResistance","none","strength","massCurveMultiplier","resistances","reduce","sum","shieldBoost","generatorStrength","boostersStrength","withPips","resistance"],"mappings":"O,oGA0LO,SAASI,0BACZC,SACAC,WAEA,MAAMC,QAAEA,QAAAC,QAASA,QAAAC,QAASA,QAAAC,cAASA,cAAAC,cAAeA,cAAAC,cAAeA,eAAkBN,UACnF,GACIC,eAAY,GACZC,eAAY,GACZC,eAAY,GACZC,qBAAkB,GAClBC,qBAAkB,GAClBC,qBAAkB,EACpB,CAGE,OAAO,CACX,CAEA,GAAIP,SAAWI,QAAS,OAAO,EAC/B,MAAMI,KAAOJ,QAAUF,QACvB,GAAIM,MAAQ,GAAKD,gBAAkBF,cAAe,OAAOC,cACzD,MAAMG,WAAaC,KAAKC,IAAI,EAAGD,KAAKE,IAAI,GAAIR,QAAUJ,UAAYQ,OAClE,MAAMK,cAAgBH,KAAKE,IAAI,GAAIR,QAAUD,SAAWK,MACxD,MAAMM,SACFJ,KAAKK,KAAKT,cAAgBD,gBAAkBE,cAAgBF,gBAC5DK,KAAKK,IAAIF,eACb,IAAKG,OAAOC,SAASH,UAAW,OAAOR,cACvC,OAAOD,cAAgBK,KAAKQ,IAAIT,WAAYK,WAAaP,cAAgBF,cAC7E,CAYO,SAASc,eACZnB,SACAoB,mBACAnB,UACAoB,gBAAkB,GAElB,OAAOD,mBAAqBrB,0BAA0BC,SAAUC,WAAaoB,eACjF,CAGA,IAAMC,mBAAqB,CAACC,SAA0CC,OAClED,SAASE,IAAKC,SAAYA,QAAQ,GAAGF,mBAAqB,GAmCvD,SAASG,cAAcC,OAC1B,MAAML,SAAWK,MAAML,UAAY,GACnC,MAAMM,cAAgBD,MAAMC,eAAiB,EAC7C,MAAMC,KAAOF,MAAMG,aAAe,EAClC,MAAMC,cAAgBrC,kBAAkBmC,MACxC,MAAM7B,UAAY2B,MAAM3B,WAAa,KAErC,IAAKA,UAAW,CACZ,MAAMgC,KAAOrC,eAAe,IAAM,GAClC,MAAO,CACHsC,SAAU,EACVjC,UAAW,EACXsB,SAAU,EACVM,cAAe,EACfM,oBAAqB,EACrBd,gBAAiB,EACjBe,YAAaH,KACbpC,mBAAoBA,mBAAmB,EAAGoC,MAC1CtC,kBAAmBqC,cAE3B,CAEA,MAAMG,oBAAsBpC,0BAA0B6B,MAAM5B,SAAUC,WACtE,MAAMoB,gBACF,EAAIE,SAASc,OAAO,CAACC,IAAKZ,UAAYY,KAAOZ,QAAQa,aAAe,GAAI,GAC5E,MAAMC,kBAAoBZ,MAAMR,mBAAqBe,oBACrD,MAAMM,iBAAmBD,mBAAqBnB,gBAAkB,GAChE,MAAMa,SAAWM,kBAAoBC,iBAAmBZ,cAGxD,MAAMa,SAAYC,YAA+B,GAAK,EAAIA,aAAe,EAAIX,eAC7E,MAAMI,YAAiCxC,eAAgB4B,MACnDkB,SACI5C,sBACIG,UAAU,GAAGuB,mBAAqB,EAClCF,mBAAmBC,SAAUC,SAKzC,MAAO,CACHU,kBACAjC,UAAWuC,kBACXjB,SAAUkB,iBACVZ,4BACAM,wCACAd,gCACAe,wBACAvC,mBAAoBA,mBAAmBqC,SAAUE,aACjDzC,kBAAmBqC,cAE3B,QAAAjC,0BAAA4B,cAAAR"}
@@ -1 +0,0 @@
1
- import{getBlueprintsForModule}from"./chunk-QTZPA2FR.js";import{normalizeKey}from"./chunk-BKWLI44T.js";import{requireStringIfPresent,requireString}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var blueprint_journal_names_default={MC_Overcharged:"Weapon_Overcharged",Scanner_LongRange:"Sensor_LongRange",Scanner_WideAngle:"Sensor_WideAngle"};var BLUEPRINT_JOURNAL_NAMES=deepFreeze(blueprint_journal_names_default);function resolveBlueprintForModule(symbol,fdname){requireStringIfPresent(symbol,"resolveBlueprintForModule: symbol");const wanted=normalizeKey(requireString(fdname,"resolveBlueprintForModule: fdname"),"resolveBlueprintForModule: fdname");const offered=getBlueprintsForModule(symbol);if(offered.some(id=>id.toLowerCase()===wanted))return fdname;for(const id of offered){const journalName=BLUEPRINT_JOURNAL_NAMES[id];if(journalName!==void 0&&journalName.toLowerCase()===wanted)return id}return fdname}export{resolveBlueprintForModule};//# sourceMappingURL=chunk-2TW4ZBI3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ships/internal/blueprint-journal-names.ts","../src/ships/blueprint-journal.ts"],"names":["getBlueprintsForModule","normalizeKey","requireStringIfPresent","requireString","deepFreeze","blueprint_journal_names_default","BLUEPRINT_JOURNAL_NAMES","resolveBlueprintForModule","symbol","fdname","wanted","offered","some","id","toLowerCase","journalName"],"mappings":"O,qWAKO,IAAMM,wBAA4DF,WACrEC,iCCuEG,SAASE,0BAA0BC,OAAgBC,QACtDP,uBAAuBM,OAAQ,qCAI/B,MAAME,OAAST,aACXE,cAAcM,OAAQ,qCACtB,qCAEJ,MAAME,QAAUX,uBAAuBQ,QAGvC,GAAIG,QAAQC,KAAMC,IAAOA,GAAGC,gBAAkBJ,QAAS,OAAOD,OAC9D,IAAA,MAAWI,MAAMF,QAAS,CACtB,MAAMI,YAAcT,wBAAwBO,IAC5C,GAAIE,mBAAgB,GAAaA,YAAYD,gBAAkBJ,OAAQ,OAAOG,EAClF,CACA,OAAOJ,MACX,QAAAF"}
@@ -1 +0,0 @@
1
- import{filterByKey}from"./chunk-BKWLI44T.js";import{requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var pre_engineered_default=[{symbol:"Hpt_Mining_AbrBlstr_Fixed_Small",name:"Far-Reaching Abrasion Blaster",blueprint:"AbrasionBlaster_FarReaching",grade:1,acquisition:"mercenary",mercCoinCost:400},{symbol:"Hpt_CausticMissile_Fixed_Medium",name:"High-Yield Enzyme Missile Rack",blueprint:"EnzymeMissileRack_HighYield",grade:1,acquisition:"mercenary",mercCoinCost:850},{symbol:"Hpt_Slugshot_Gimbal_Small",name:"Double Screaming Fragment Cannon",blueprint:"FragmentCannonSmall_DoubleScreaming",grade:1,acquisition:"mercenary",mercCoinCost:800},{symbol:"Hpt_Slugshot_Gimbal_Large",name:"Double Screaming Fragment Cannon",blueprint:"FragmentCannonLarge_DoubleScreaming",grade:1,acquisition:"mercenary",mercCoinCost:950},{symbol:"Hpt_MiningLaser_Fixed_Small",name:"Long Range Mining Laser",blueprint:"MiningLaser_LongRange",grade:1,acquisition:"mercenary",mercCoinCost:450},{symbol:"Hpt_MultiCannon_Fixed_Medium",name:"Rapid Phase Multi-Cannon",blueprint:"MultiCannon_Rapid",grade:1,acquisition:"mercenary",mercCoinCost:850},{symbol:"Hpt_Railgun_Fixed_Medium",name:"Enduring Feedback Rail Gun",blueprint:"RailGun_LongShot",grade:1,acquisition:"mercenary",mercCoinCost:950},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Drag Seeker Missile Rack",blueprint:"SeekerMissileRack_Drag",grade:1,acquisition:"mercenary",mercCoinCost:800},{symbol:"Hpt_BasicMissileRack_Fixed_Large",name:"Drag Seeker Missile Rack",blueprint:"SeekerMissileRack_Drag",grade:1,acquisition:"mercenary",mercCoinCost:900},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Lightweight Thermal Seeker Missile Rack",blueprint:"SeekerMissileRack_LightWeightThermal",grade:1,acquisition:"mercenary",mercCoinCost:800},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Lockdown Seeker Missile Rack",blueprint:"SeekerMissileRackMedium_Lockdown",grade:1,acquisition:"mercenary",mercCoinCost:800},{symbol:"Hpt_BasicMissileRack_Fixed_Large",name:"Lockdown Seeker Missile Rack",blueprint:"SeekerMissileRackLarge_Lockdown",grade:1,acquisition:"mercenary",mercCoinCost:900},{symbol:"Int_CargoRack_Size5_Class1",name:"Extended Cargo Rack",blueprint:"CargoRackS5C1_Extended",grade:1,acquisition:"mercenary",mercCoinCost:550},{symbol:"Int_CargoRack_Size6_Class1",name:"Extended Cargo Rack",blueprint:"CargoRackS6C1_Extended",grade:1,acquisition:"mercenary",mercCoinCost:550},{symbol:"Int_DetailedSurfaceScanner_Tiny",name:"Long Range Detailed Surface Scanner",blueprint:"DetailedSurfaceScanner_LongRange",grade:1,acquisition:"mercenary",mercCoinCost:350},{symbol:"Int_ModuleReinforcement_Size5_Class2",name:"Heavy Duty Module Reinforcement Package",blueprint:"ModuleReinforcement_HeavyDuty",grade:1,acquisition:"mercenary",mercCoinCost:450},{symbol:"Int_PowerDistributor_Size3_Class2",name:"Support Focused Power Distributor",blueprint:"PowerDistributorS3C2_SupportFocused",grade:1,acquisition:"mercenary",mercCoinCost:300},{symbol:"Int_PowerDistributor_Size3_Class5",name:"Support Focused Power Distributor",blueprint:"PowerDistributorS3C5_SupportFocused",grade:1,acquisition:"mercenary",mercCoinCost:350},{symbol:"Int_PowerDistributor_Size4_Class2",name:"Support Focused Power Distributor",blueprint:"PowerDistributorS4C2_SupportFocused",grade:1,acquisition:"mercenary",mercCoinCost:400},{symbol:"Int_PowerDistributor_Size4_Class5",name:"Support Focused Power Distributor",blueprint:"PowerDistributorS4C5_SupportFocused",grade:1,acquisition:"mercenary",mercCoinCost:450},{symbol:"Int_PowerDistributor_Size5_Class5",name:"Balanced Power Distributor",blueprint:"PowerDistributor_Balanced",grade:1,acquisition:"mercenary",mercCoinCost:500},{symbol:"Int_PowerDistributor_Size6_Class5",name:"Support Focused Power Distributor",blueprint:"PowerDistributorS6C5_SupportFocused",grade:1,acquisition:"mercenary",mercCoinCost:550},{symbol:"Hpt_Mining_AbrBlstr_Fixed_Small",name:"Abrasion Blaster",blueprint:"Weapon_LongRange",grade:5,acquisition:"communityGoal",modifiers:[{label:"DistributorDraw",method:"multiplicative",value:-.5},{label:"FalloffRange",method:"multiplicative",value:4},{label:"Integrity",method:"multiplicative",value:-.5},{label:"MaximumRange",method:"multiplicative",value:4},{label:"PowerDraw",method:"multiplicative",value:-.5},{label:"ThermalLoad",method:"multiplicative",value:-.5}]},{symbol:"Hpt_CausticMissile_Fixed_Medium",name:"Enzyme Missile Rack",blueprint:"Weapon_HighCapacity",grade:5,acquisition:"communityGoal",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:.75},{label:"AmmoMaximum",method:"multiplicative",value:.25},{label:"Damage",method:"multiplicative",value:.5},{label:"Mass",method:"multiplicative",value:.6},{label:"PowerDraw",method:"multiplicative",value:.2}]},{symbol:"Hpt_Slugshot_Gimbal_Small",name:"Fragment Cannon",blueprint:"Weapon_DoubleShot",grade:5,acquisition:"communityGoal",experimental:"special_screening_shell",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1.6667},{label:"AmmoMaximum",method:"multiplicative",value:.67776},{label:"BurstInterval",method:"multiplicative",value:-.06},{label:"BurstSize",method:"overwrite",value:2},{label:"Mass",method:"multiplicative",value:.6},{label:"MaximumRange",method:"multiplicative",value:-.1},{label:"PowerDraw",method:"multiplicative",value:.2}]},{symbol:"Hpt_Slugshot_Gimbal_Large",name:"Fragment Cannon",blueprint:"Weapon_DoubleShot",grade:5,acquisition:"communityGoal",experimental:"special_screening_shell",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1.6667},{label:"AmmoMaximum",method:"multiplicative",value:.67776},{label:"BurstInterval",method:"multiplicative",value:-.06},{label:"BurstSize",method:"overwrite",value:2},{label:"Mass",method:"multiplicative",value:.6},{label:"MaximumRange",method:"multiplicative",value:-.1},{label:"PowerDraw",method:"multiplicative",value:.2}]},{symbol:"Hpt_Guardian_ShardCannon_Fixed_Medium",name:"Guardian Shard Cannon",blueprint:"Weapon_LongRange",grade:5,acquisition:"communityGoal",engineeringLocked:true,modifiers:[{label:"ArmourPenetration",method:"multiplicative",value:1.02},{label:"DistributorDraw",method:"multiplicative",value:5.05},{label:"Jitter",method:"additive",value:-3.5},{label:"Mass",method:"multiplicative",value:.5},{label:"MaximumRange",method:"multiplicative",value:4},{label:"PowerDraw",method:"multiplicative",value:1.3},{label:"ShotSpeed",method:"overwrite",value:1258.89},{label:"ThermalLoad",method:"multiplicative",value:15.5}]},{symbol:"Hpt_MultiCannon_Fixed_Medium",name:"Multi-Cannon",blueprint:"Weapon_RapidFire",grade:1,acquisition:"communityGoal",experimental:"special_phasing_sequence",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:3},{label:"AmmoMaximum",method:"overwrite",value:6400},{label:"BurstInterval",method:"overwrite",value:.1},{label:"FalloffRange",method:"multiplicative",value:-.1},{label:"Jitter",method:"additive",value:3},{label:"MaximumRange",method:"multiplicative",value:-.5},{label:"RoundsPerShot",method:"additive",value:2}]},{symbol:"Hpt_Railgun_Fixed_Medium",name:"Rail Gun",blueprint:"Weapon_HighCapacity",grade:5,acquisition:"communityGoal",experimental:"special_feedback_cascade_cooled",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"BurstInterval",method:"multiplicative",value:-.61145},{label:"FalloffRange",method:"multiplicative",value:5},{label:"Mass",method:"multiplicative",value:.9},{label:"MaximumRange",method:"multiplicative",value:1},{label:"PowerDraw",method:"multiplicative",value:.65},{label:"ReloadTime",method:"multiplicative",value:.25}]},{symbol:"Hpt_Railgun_Fixed_Medium_Burst",name:"Imperial Hammer Rail Gun",blueprint:"Weapon_HighCapacity",grade:5,acquisition:"communityGoal",experimental:"special_super_penetrator",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"BurstInterval",method:"multiplicative",value:-.2635},{label:"Damage",method:"multiplicative",value:-.2},{label:"Mass",method:"multiplicative",value:.7},{label:"PowerDraw",method:"multiplicative",value:.25}]},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Seeker Missile Rack",blueprint:"Weapon_HighCapacity",grade:1,acquisition:"communityGoal",experimental:"special_drag_munitions",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:2},{label:"AmmoMaximum",method:"multiplicative",value:2},{label:"BurstInterval",method:"multiplicative",value:-.2},{label:"DistributorDraw",method:"overwrite",value:.34},{label:"Mass",method:"multiplicative",value:1.5},{label:"PowerDraw",method:"multiplicative",value:.25}]},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Seeker Missile Rack",blueprint:"Weapon_HighCapacity",grade:5,acquisition:"communityGoal",experimental:"special_fsd_interrupt",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"ArmourPenetration",method:"multiplicative",value:.4},{label:"BurstInterval",method:"multiplicative",value:-.1},{label:"Damage",method:"multiplicative",value:.35},{label:"Integrity",method:"multiplicative",value:1},{label:"Mass",method:"multiplicative",value:1.2},{label:"PowerDraw",method:"multiplicative",value:.3},{label:"ThermalLoad",method:"multiplicative",value:-.1}]},{symbol:"Hpt_BasicMissileRack_Fixed_Large",name:"Seeker Missile Rack",blueprint:"Weapon_HighCapacity",grade:5,acquisition:"communityGoal",experimental:"special_fsd_interrupt",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"ArmourPenetration",method:"multiplicative",value:.4},{label:"BurstInterval",method:"multiplicative",value:-.1},{label:"Damage",method:"multiplicative",value:.35},{label:"Integrity",method:"multiplicative",value:1},{label:"Mass",method:"multiplicative",value:1.2},{label:"PowerDraw",method:"multiplicative",value:.3},{label:"ThermalLoad",method:"multiplicative",value:-.1}]},{symbol:"Hpt_ElectronicCountermeasure_Tiny",name:"Electronic Countermeasure",blueprint:"Misc_LightWeight",grade:5,acquisition:"communityGoal",modifiers:[{label:"Integrity",method:"multiplicative",value:1},{label:"Mass",method:"multiplicative",value:-.85},{label:"PowerDraw",method:"multiplicative",value:1}]},{symbol:"Hpt_CrimeScanner_Size0_Class5",name:"Kill Warrant Scanner",blueprint:"Sensor_FastScan",grade:5,acquisition:"communityGoal",modifiers:[{label:"Integrity",method:"multiplicative",value:-.5},{label:"MaxAngle",method:"multiplicative",value:-.3},{label:"PowerDraw",method:"multiplicative",value:.5},{label:"ScannerRange",method:"multiplicative",value:.65},{label:"ScannerTimeToScan",method:"multiplicative",value:-.8}]},{symbol:"Hpt_CrimeScanner_Size0_Class3",name:"Kill Warrant Scanner",blueprint:"Sensor_FastScan",grade:5,acquisition:"communityGoal",modifiers:[{label:"Integrity",method:"multiplicative",value:-.5},{label:"MaxAngle",method:"multiplicative",value:-.3},{label:"PowerDraw",method:"multiplicative",value:.5},{label:"ScannerRange",method:"multiplicative",value:.65},{label:"ScannerTimeToScan",method:"multiplicative",value:-.8}]},{symbol:"Hpt_PlasmaPointDefence_Turret_Tiny",name:"Point Defence",blueprint:"Misc_LightWeight",grade:5,acquisition:"communityGoal",modifiers:[{label:"Integrity",method:"multiplicative",value:-.5},{label:"Mass",method:"multiplicative",value:-.85},{label:"MaximumRange",method:"multiplicative",value:1},{label:"ThermalLoad",method:"multiplicative",value:.05}]},{symbol:"Int_PowerDistributor_Size3_Class5",name:"Power Distributor",blueprint:"PowerDistributor_PrioritySystems",grade:5,acquisition:"communityGoal",modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.45},{label:"EnginesRecharge",method:"multiplicative",value:.4},{label:"SystemsCapacity",method:"multiplicative",value:.45},{label:"SystemsRecharge",method:"multiplicative",value:.4},{label:"WeaponsCapacity",method:"multiplicative",value:-.25},{label:"WeaponsRecharge",method:"multiplicative",value:-.2}]},{symbol:"Int_PowerDistributor_Size3_Class2",name:"Power Distributor",blueprint:"PowerDistributor_PrioritySystems",grade:5,acquisition:"communityGoal",modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.45},{label:"EnginesRecharge",method:"multiplicative",value:.4},{label:"SystemsCapacity",method:"multiplicative",value:.45},{label:"SystemsRecharge",method:"multiplicative",value:.4},{label:"WeaponsCapacity",method:"multiplicative",value:-.25},{label:"WeaponsRecharge",method:"multiplicative",value:-.2}]},{symbol:"Int_PowerDistributor_Size4_Class5",name:"Power Distributor",blueprint:"PowerDistributor_PrioritySystems",grade:5,acquisition:"communityGoal",modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.45},{label:"EnginesRecharge",method:"multiplicative",value:.4},{label:"SystemsCapacity",method:"multiplicative",value:.45},{label:"SystemsRecharge",method:"multiplicative",value:.4},{label:"WeaponsCapacity",method:"multiplicative",value:-.25},{label:"WeaponsRecharge",method:"multiplicative",value:-.2}]},{symbol:"Int_PowerDistributor_Size4_Class2",name:"Power Distributor",blueprint:"PowerDistributor_PrioritySystems",grade:5,acquisition:"communityGoal",modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.45},{label:"EnginesRecharge",method:"multiplicative",value:.4},{label:"SystemsCapacity",method:"multiplicative",value:.45},{label:"SystemsRecharge",method:"multiplicative",value:.4},{label:"WeaponsCapacity",method:"multiplicative",value:-.25},{label:"WeaponsRecharge",method:"multiplicative",value:-.2}]},{symbol:"Int_PowerDistributor_Size6_Class5",name:"Power Distributor",blueprint:"PowerDistributor_PrioritySystems",grade:5,acquisition:"communityGoal",modifiers:[{label:"EnginesCapacity",method:"multiplicative",value:.45},{label:"EnginesRecharge",method:"multiplicative",value:.4},{label:"SystemsCapacity",method:"multiplicative",value:.45},{label:"SystemsRecharge",method:"multiplicative",value:.4},{label:"WeaponsCapacity",method:"multiplicative",value:-.25},{label:"WeaponsRecharge",method:"multiplicative",value:-.2}]},{symbol:"Int_Powerplant_Size3_Class5",name:"Power Plant",blueprint:"PowerPlant_Armoured",grade:5,acquisition:"communityGoal",modifiers:[{label:"HeatEfficiency",method:"multiplicative",value:.13},{label:"Integrity",method:"multiplicative",value:.95},{label:"Mass",method:"multiplicative",value:.2},{label:"PowerCapacity",method:"multiplicative",value:.52}]},{symbol:"Int_Powerplant_Size3_Class5",name:"Power Plant",blueprint:"PowerPlant_Boosted",grade:5,acquisition:"communityGoal",modifiers:[{label:"HeatEfficiency",method:"multiplicative",value:.35},{label:"Integrity",method:"multiplicative",value:-.3},{label:"PowerCapacity",method:"multiplicative",value:.6}]},{symbol:"Int_Powerplant_Size4_Class5",name:"Power Plant",blueprint:"PowerPlant_Boosted",grade:5,acquisition:"communityGoal",modifiers:[{label:"HeatEfficiency",method:"multiplicative",value:.35},{label:"Integrity",method:"multiplicative",value:-.3},{label:"PowerCapacity",method:"multiplicative",value:.6}]},{symbol:"Int_Powerplant_Size5_Class5",name:"Power Plant",blueprint:"PowerPlant_Boosted",grade:5,acquisition:"communityGoal",modifiers:[{label:"HeatEfficiency",method:"multiplicative",value:.35},{label:"Integrity",method:"overwrite",value:74},{label:"PowerCapacity",method:"multiplicative",value:.6}]},{symbol:"Int_Hyperdrive_Size3_Class5",name:"Frame Shift Drive",blueprint:"FSD_LongRange",grade:5,acquisition:"communityGoal",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Size4_Class5",name:"Frame Shift Drive",blueprint:"FSD_LongRange",grade:5,acquisition:"communityGoal",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Size6_Class5",name:"Frame Shift Drive",blueprint:"FSD_LongRange",grade:5,acquisition:"communityGoal",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_CargoRack_Size5_Class1",name:"Cargo Rack",blueprint:"CargoRack_IncreasedCapacity",grade:5,acquisition:"communityGoal",modifiers:[{label:"CargoCapacity",method:"multiplicative",value:.34375}]},{symbol:"Int_CargoRack_Size6_Class1",name:"Cargo Rack",blueprint:"CargoRack_IncreasedCapacity",grade:5,acquisition:"communityGoal",modifiers:[{label:"CargoCapacity",method:"multiplicative",value:.34375}]},{symbol:"Int_ShieldGenerator_Size3_Class5",name:"Shield Generator",blueprint:"ShieldGenerator_Kinetic",grade:5,acquisition:"communityGoal",modifiers:[{label:"Integrity",method:"multiplicative",value:.2},{label:"KineticResistance",method:"additive",value:.18},{label:"PowerDraw",method:"multiplicative",value:.4},{label:"ThermicResistance",method:"additive",value:.42}]},{symbol:"Hpt_ATDumbfireMissile_Fixed_Medium",name:"AX Missile Rack",blueprint:"Weapon_HighCapacity",grade:5,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"BurstInterval",method:"multiplicative",value:-.3},{label:"Damage",method:"multiplicative",value:-.03},{label:"DistributorDraw",method:"multiplicative",value:-.2},{label:"Jitter",method:"additive",value:.5},{label:"Mass",method:"multiplicative",value:.7},{label:"PowerDraw",method:"multiplicative",value:.2},{label:"ReloadTime",method:"multiplicative",value:-.45}]},{symbol:"Hpt_ATDumbfireMissile_Fixed_Large",name:"AX Missile Rack",blueprint:"Weapon_HighCapacity",grade:5,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"BurstInterval",method:"multiplicative",value:-.3},{label:"Damage",method:"multiplicative",value:-.03},{label:"DistributorDraw",method:"multiplicative",value:-.2},{label:"Jitter",method:"additive",value:.5},{label:"Mass",method:"multiplicative",value:.7},{label:"PowerDraw",method:"multiplicative",value:.2},{label:"ReloadTime",method:"multiplicative",value:-.45}]},{symbol:"Hpt_ATMultiCannon_Gimbal_Medium",name:"Enhanced AX Multi-Cannon",blueprint:"Weapon_Overcharged",grade:5,acquisition:"techBroker",experimental:"special_auto_loader",engineeringLocked:true,modifiers:[{label:"Damage",method:"multiplicative",value:.1},{label:"PowerDraw",method:"multiplicative",value:.75},{label:"ThermalLoad",method:"multiplicative",value:3}]},{symbol:"Hpt_ATMultiCannon_Gimbal_Large",name:"Enhanced AX Multi-Cannon",blueprint:"Weapon_Overcharged",grade:5,acquisition:"techBroker",experimental:"special_auto_loader",engineeringLocked:true,modifiers:[{label:"Damage",method:"multiplicative",value:.1},{label:"PowerDraw",method:"multiplicative",value:.75},{label:"ThermalLoad",method:"multiplicative",value:3}]},{symbol:"Hpt_Guardian_GaussCannon_Fixed_Small",name:"Guardian Gauss Cannon",blueprint:"Weapon_RapidFire",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:3},{label:"AmmoMaximum",method:"multiplicative",value:4},{label:"BurstInterval",method:"multiplicative",value:-.38237},{label:"BurstRateOfFire",method:"overwrite",value:10},{label:"BurstSize",method:"overwrite",value:4},{label:"Damage",method:"multiplicative",value:-.75214},{label:"DistributorDraw",method:"multiplicative",value:-.75},{label:"FalloffRange",method:"multiplicative",value:-.2},{label:"ThermalLoad",method:"multiplicative",value:-.75}]},{symbol:"Hpt_Guardian_GaussCannon_Fixed_Medium",name:"Guardian Gauss Cannon",blueprint:"Weapon_RapidFire",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:3},{label:"AmmoMaximum",method:"multiplicative",value:4},{label:"BurstInterval",method:"multiplicative",value:-.38237},{label:"BurstRateOfFire",method:"overwrite",value:10},{label:"BurstSize",method:"overwrite",value:4},{label:"Damage",method:"multiplicative",value:-.75214},{label:"DistributorDraw",method:"multiplicative",value:-.75},{label:"FalloffRange",method:"multiplicative",value:-.2},{label:"ThermalLoad",method:"multiplicative",value:-.75}]},{symbol:"Hpt_Guardian_PlasmaLauncher_Fixed_Small",name:"Guardian Plasma Charger",blueprint:"Weapon_Overcharged",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"overwrite",value:20},{label:"ArmourPenetration",method:"multiplicative",value:.375},{label:"Damage",method:"multiplicative",value:.66},{label:"PowerDraw",method:"multiplicative",value:.3239},{label:"ShotSpeed",method:"multiplicative",value:4},{label:"ThermalLoad",method:"multiplicative",value:.5}]},{symbol:"Hpt_Guardian_PlasmaLauncher_Fixed_Medium",name:"Guardian Plasma Charger",blueprint:"Weapon_Overcharged",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"AmmoClipSize",method:"overwrite",value:20},{label:"ArmourPenetration",method:"multiplicative",value:.375},{label:"Damage",method:"multiplicative",value:.66},{label:"PowerDraw",method:"multiplicative",value:.3239},{label:"ShotSpeed",method:"multiplicative",value:4},{label:"ThermalLoad",method:"multiplicative",value:.5}]},{symbol:"Hpt_Guardian_ShardCannon_Fixed_Small",name:"Guardian Shard Cannon",blueprint:"Weapon_LongRange",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"ArmourPenetration",method:"multiplicative",value:1.02},{label:"DistributorDraw",method:"multiplicative",value:4.2769},{label:"FalloffRange",method:"overwrite",value:1500},{label:"Jitter",method:"additive",value:-3.5},{label:"Mass",method:"multiplicative",value:.5},{label:"MaximumRange",method:"overwrite",value:3e3},{label:"PowerDraw",method:"multiplicative",value:1.3},{label:"ShotSpeed",method:"overwrite",value:3568.6},{label:"ThermalLoad",method:"multiplicative",value:15.5}]},{symbol:"Hpt_Guardian_ShardCannon_Fixed_Medium",name:"Guardian Shard Cannon",blueprint:"Weapon_LongRange",grade:1,acquisition:"techBroker",engineeringLocked:true,modifiers:[{label:"ArmourPenetration",method:"multiplicative",value:1.02},{label:"DistributorDraw",method:"overwrite",value:3.43},{label:"FalloffRange",method:"overwrite",value:1500},{label:"Jitter",method:"additive",value:-3.5},{label:"Mass",method:"multiplicative",value:.5},{label:"MaximumRange",method:"overwrite",value:3e3},{label:"PowerDraw",method:"multiplicative",value:1.3},{label:"ShotSpeed",method:"overwrite",value:6299.209},{label:"ThermalLoad",method:"multiplicative",value:15.5}]},{symbol:"Hpt_MiningLaser_Fixed_Small",name:"Mining Laser",blueprint:"Weapon_LongRange",grade:5,acquisition:"techBroker",experimental:"special_incendiary_rounds",modifiers:[{label:"Damage",method:"multiplicative",value:-.05},{label:"DistributorDraw",method:"multiplicative",value:-.5},{label:"FalloffRange",method:"multiplicative",value:7.3333},{label:"Integrity",method:"multiplicative",value:-.5},{label:"MaximumRange",method:"multiplicative",value:4},{label:"PowerDraw",method:"multiplicative",value:-.5},{label:"ThermalLoad",method:"multiplicative",value:-.83}]},{symbol:"Hpt_BasicMissileRack_Fixed_Medium",name:"Seeker Missile Rack",blueprint:"Weapon_HighCapacity",grade:5,acquisition:"techBroker",experimental:"special_thermal_cascade",modifiers:[{label:"AmmoClipSize",method:"multiplicative",value:1},{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"BurstInterval",method:"multiplicative",value:-.1},{label:"DistributorDraw",method:"multiplicative",value:-.4},{label:"Integrity",method:"multiplicative",value:-.6},{label:"Mass",method:"multiplicative",value:-.9},{label:"PowerDraw",method:"multiplicative",value:-.2}]},{symbol:"Hpt_HeatSinkLauncher_Turret_Tiny",name:"Heat Sink Launcher",blueprint:"Misc_HeatSinkCapacity",grade:1,acquisition:"techBroker",modifiers:[{label:"AmmoMaximum",method:"multiplicative",value:1},{label:"ReloadTime",method:"multiplicative",value:.75}]},{symbol:"Int_Hyperdrive_Size5_Class5",name:"Frame Shift Drive",blueprint:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size2_Class5",name:"Frame Shift Drive (SCO)",blueprint:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size3_Class5",name:"Frame Shift Drive (SCO)",blueprint:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size4_Class5",name:"Frame Shift Drive (SCO)",blueprint:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size5_Class5",name:"Frame Shift Drive (SCO)",blueprint:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size6_Class5",name:"Frame Shift Drive (SCO)",blueprint:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_Hyperdrive_Overcharge_Size7_Class5",name:"Frame Shift Drive (SCO)",blueprint:"FSD_LongRange",grade:5,acquisition:"techBroker",modifiers:[{label:"BootTime",method:"multiplicative",value:-.8},{label:"FSDHeatRate",method:"multiplicative",value:.2},{label:"FSDOptimalMass",method:"multiplicative",value:.7},{label:"Integrity",method:"multiplicative",value:-.3},{label:"Mass",method:"multiplicative",value:.3},{label:"PowerDraw",method:"multiplicative",value:.15}]},{symbol:"Int_DetailedSurfaceScanner_Tiny",name:"Detailed Surface Scanner",blueprint:"Sensor_Expanded",grade:5,acquisition:"techBroker",modifiers:[{label:"DSS_PatchRadius",method:"multiplicative",value:1}]},{symbol:"Hpt_FlakMortar_Turret_Medium",name:"Festive Green Remote Release Flak Launcher",blueprint:"Decorative_Green",grade:5,acquisition:"eventReward",modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]},{symbol:"Hpt_FlakMortar_Turret_Medium",name:"Festive Red Remote Release Flak Launcher",blueprint:"Decorative_Red",grade:5,acquisition:"eventReward",modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]},{symbol:"Hpt_FlakMortar_Turret_Medium",name:"Festive Yellow Remote Release Flak Launcher",blueprint:"Decorative_Yellow",grade:5,acquisition:"eventReward",modifiers:[{label:"Damage",method:"multiplicative",value:-.99}]}];var PRE_ENGINEERED_MODULES=deepFreeze(pre_engineered_default);function getPreEngineeredVariants(symbol){return filterByKey(PRE_ENGINEERED_MODULES,"symbol",symbol,"getPreEngineeredVariants: symbol")}function isPreEngineered(symbol){requireStringIfPresent(symbol,"isPreEngineered: symbol");return getPreEngineeredVariants(symbol).length>0}export{PRE_ENGINEERED_MODULES,getPreEngineeredVariants,isPreEngineered};//# sourceMappingURL=chunk-2VPVZELZ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/i18n/experimental-effect-descriptions.ts"],"names":["getLocalizedName","createLocalizedNameIndex","experimental_effect_descriptions_default","DESCRIPTIONS","getExperimentalEffectDescription","fdname","locale"],"mappings":"O,muEASA,IAAMG,4BAAAF,yBAAwDC,0CAkBvD,SAASE,iCAAiCC,OAAgBC,QAC7D,OAAON,iBACHG,aACAE,OACAC,OACA,mCACA,SAER,QAAAF"}
@@ -1 +0,0 @@
1
- import{normalizeKey}from"./chunk-BKWLI44T.js";import{describeValue,requireStringIfPresent}from"./chunk-PKWVG2JY.js";var PREFIXES=["Th","Eo","Oo","Eu","Tr","Sly","Dry","Ou","Tz","Phl","Ae","Sch","Hyp","Syst","Ai","Kyl","Phr","Eae","Ph","Fl","Ao","Scr","Shr","Fly","Pl","Fr","Au","Pry","Pr","Hyph","Py","Chr","Phyl","Tyr","Bl","Cry","Gl","Br","Gr","By","Aae","Myc","Gyr","Ly","Myl","Lych","Myn","Ch","Myr","Cl","Rh","Wh","Pyr","Cr","Syn","Str","Syr","Cy","Wr","Hy","My","Sty","Sc","Sph","Spl","A","Sh","B","C","D","Sk","Io","Dr","E","Sl","F","Sm","G","H","I","Sp","J","Sq","K","L","Pyth","M","St","N","O","Ny","Lyr","P","Sw","Thr","Lys","Q","R","S","T","Ea","U","V","W","Schr","X","Ee","Y","Z","Ei","Oe"];var INFIXES1=["o","ai","a","oi","ea","ie","u","e","ee","oo","ue","i","oa","au","ae","oe"];var INFIXES2=["ll","ss","b","c","d","f","dg","g","ng","h","j","k","l","m","n","mb","p","q","gn","th","r","s","t","ch","tch","v","w","wh","ck","x","y","z","ph","sh","ct","wr"];var SUFFIXES1=["oe","io","oea","oi","aa","ua","eia","ae","ooe","oo","a","ue","ai","e","iae","oae","ou","uae","i","ao","au","o","eae","u","aea","ia","ie","eou","aei","ea","uia","oa","aae","eau","ee"];var SUFFIXES2=["b","scs","wsy","c","d","vsky","f","sms","dst","g","rb","h","nts","ch","rd","rld","k","lls","ck","rgh","l","rg","m","n","hm","p","hn","rk","q","rl","r","rm","s","cs","wyg","rn","ct","t","hs","rbs","rp","tts","v","wn","ms","w","rr","mt","x","rs","cy","y","rt","z","ws","lch","my","ry","nks","nd","sc","ng","sh","nk","sk","nn","ds","sm","sp","ns","nt","dy","ss","st","rrs","xt","nz","sy","xy","rsch","rphs","sts","sys","sty","th","tl","tls","rds","nch","rns","ts","wls","rnt","tt","rdy","rst","pps","tz","tch","sks","ppy","ff","sps","kh","sky","ph","lts","wnst","rth","ths","fs","pp","ft","ks","pr","ps","pt","fy","rts","ky","rshch","mly","py","bb","nds","wry","zz","nns","ld","lf","gh","lks","sly","lk","ll","rph","ln","bs","rsts","gs","ls","vvy","lt","rks","qs","rps","gy","wns","lz","nth","phs"];var C2_PREFIX_SUFFIX2=new Set(["Eo","Oo","Eu","Ou","Ae","Ai","Eae","Ao","Au","Aae"].map(s=>s.toLowerCase()));var C1_PREFIX_INFIX2=new Set(["Eo","Oo","Eu","Ou","Ae","Ai","Eae","Ao","Au","Aae","A","Io","E","I","O","Ea","U","Ee","Ei","Oe"].map(s=>s.toLowerCase()));var PREFIX_RUN_LENGTHS=/* @__PURE__ */new Map([["eu",31],["sly",4],["tz",1],["phl",13],["ae",12],["hyp",25],["kyl",30],["phr",10],["eae",4],["ao",5],["scr",24],["shr",11],["fly",20],["pry",3],["hyph",14],["py",12],["phyl",8],["tyr",25],["cry",5],["aae",5],["myc",2],["gyr",10],["myl",12],["lych",3],["myn",10],["myr",4],["rh",15],["wr",31],["sty",4],["spl",16],["sk",27],["sq",7],["pyth",1],["lyr",10],["sw",24],["thr",32],["lys",10],["schr",3],["z",34]]);var INFIX_RUN_LENGTHS=/* @__PURE__ */new Map([["oi",88],["ue",147],["oa",57],["au",119],["ae",12],["oe",39],["dg",31],["tch",20],["wr",31]]);var PREFIX_DEFAULT_RUN_LENGTH=35;function buildOffsets(items,runLengths,defaultLen){const offsets=/* @__PURE__ */new Map;let cnt=0;for(const item of items){const key=item.toLowerCase();const len=runLengths.get(key)??defaultLen;if(!runLengths.has(key))runLengths.set(key,len);offsets.set(key,cnt);cnt+=len}return{offsets:offsets,total:cnt}}var prefixTable=buildOffsets(PREFIXES,PREFIX_RUN_LENGTHS,PREFIX_DEFAULT_RUN_LENGTH);var prefixOffsets=prefixTable.offsets;var prefixTotalRunLength=prefixTable.total;var infix1Table=buildOffsets(INFIXES1,INFIX_RUN_LENGTHS,SUFFIXES2.length);var infix2Table=buildOffsets(INFIXES2,INFIX_RUN_LENGTHS,SUFFIXES1.length);var infixOffsets=new Map([...infix1Table.offsets,...infix2Table.offsets]);var infix1TotalRunLength=infix1Table.total;var infix2TotalRunLength=infix2Table.total;var prefixRunLength=key=>PREFIX_RUN_LENGTHS.get(key)??PREFIX_DEFAULT_RUN_LENGTH;var infixRunLength=key=>INFIX_RUN_LENGTHS.get(key)??PREFIX_DEFAULT_RUN_LENGTH;function emptyFragment(value){return{value:value,isPrefix:false,isC1VowelPrefix:false,isC2VowelPrefix:false,isInfix:false,isVowelInfix:false,isSuffix:false,isVowelSuffix:false,suffixIndex:0}}var FRAGMENTS=(()=>{const frags=/* @__PURE__ */new Map;const get=v=>{const key=v.toLowerCase();let f=frags.get(key);if(!f){f=emptyFragment(key);frags.set(key,f)}return f};for(const p of PREFIXES){const f=get(p);const key=p.toLowerCase();f.isPrefix=true;f.isC1VowelPrefix=C1_PREFIX_INFIX2.has(key);f.isC2VowelPrefix=C2_PREFIX_SUFFIX2.has(key)}for(const p of INFIXES1){const f=get(p);f.isInfix=true;f.isVowelInfix=true}for(const p of INFIXES2){const f=get(p);f.isInfix=true;f.isVowelInfix=false}for(let i=0;i<SUFFIXES1.length;i++){const f=get(SUFFIXES1[i]);f.isSuffix=true;f.isVowelSuffix=true;f.suffixIndex=i}for(let i=0;i<SUFFIXES2.length;i++){const f=get(SUFFIXES2[i]);f.isSuffix=true;f.isVowelSuffix=false;f.suffixIndex=i}return[...frags.values()].sort((a,b)=>b.value.length-a.value.length||a.value.localeCompare(b.value))})();function isC1Sector(offset){let key=offset>>>0;key=key+(key<<12)>>>0;key^=key>>>22;key=key+(key<<4)>>>0;key^=key>>>9;key=key+(key<<10)>>>0;key^=key>>>2;key=key+(key<<7)>>>0;key^=key>>>12;return(key&1)===0}function c1Name(offset){const frags=[];const prefixCnt=Math.floor(offset/prefixTotalRunLength);let curOffset=offset%prefixTotalRunLength;let prefix="";for(const p of PREFIXES){if((prefixOffsets.get(p.toLowerCase())??0)<=curOffset)prefix=p}const prefixLower=prefix.toLowerCase();frags.push(prefix);curOffset-=prefixOffsets.get(prefixLower)??0;const infix1IsConsonant=C1_PREFIX_INFIX2.has(prefixLower);const infix1Total=infix1IsConsonant?infix2TotalRunLength:infix1TotalRunLength;const infix1Table2=infix1IsConsonant?INFIXES2:INFIXES1;const scaled=prefixCnt*prefixRunLength(prefixLower)+curOffset;const infix1Cnt=Math.floor(scaled/infix1Total);curOffset=scaled%infix1Total;let infix1="";for(const p of infix1Table2){const key=p.toLowerCase();if((infixOffsets.get(key)??0)<=curOffset)infix1=key}frags.push(infix1);curOffset-=infixOffsets.get(infix1)??0;let suffixes=infix1IsConsonant?SUFFIXES1:SUFFIXES2;let nextIdx=infixRunLength(infix1)*infix1Cnt+curOffset;if(nextIdx>=suffixes.length){const infix2IsConsonant=!infix1IsConsonant;const infix2Total=infix2IsConsonant?infix2TotalRunLength:infix1TotalRunLength;const infix2Cnt=Math.floor(nextIdx/infix2Total);curOffset=nextIdx%infix2Total;const infix2Table2=infix2IsConsonant?INFIXES2:INFIXES1;let infix2="";for(const p of infix2Table2){const key=p.toLowerCase();if((infixOffsets.get(key)??0)<=curOffset)infix2=key}frags.push(infix2);curOffset-=infixOffsets.get(infix2)??0;suffixes=infix2IsConsonant?SUFFIXES1:SUFFIXES2;nextIdx=infixRunLength(infix2)*infix2Cnt+curOffset}if(nextIdx>=suffixes.length)return null;frags.push(suffixes[nextIdx].toLowerCase());return frags.join("")}function c2Name(offset){const[idx0,idx1]=deinterleave2(offset);let p1="";for(const p of PREFIXES){if((prefixOffsets.get(p.toLowerCase())??0)<=idx0)p1=p}let p2="";for(const p of PREFIXES){if((prefixOffsets.get(p.toLowerCase())??0)<=idx1)p2=p}const p1Lower=p1.toLowerCase();const p2Lower=p2.toLowerCase();const s1s=C2_PREFIX_SUFFIX2.has(p1Lower)?SUFFIXES2:SUFFIXES1;const s2s=C2_PREFIX_SUFFIX2.has(p2Lower)?SUFFIXES2:SUFFIXES1;const s1=s1s[idx0-(prefixOffsets.get(p1Lower)??0)];const s2=s2s[idx1-(prefixOffsets.get(p2Lower)??0)];return`${p1}${s1.toLowerCase()} ${p2}${s2.toLowerCase()}`}function sectorNameFromGridPosition(position){for(const v of[position.sectorX,position.sectorY,position.sectorZ]){if(!Number.isInteger(v)||v<0||v>127){throw new RangeError(`Sector grid position out of range (expected integer 0–127): ${describeValue(position)}`)}}const offset=(position.sectorZ<<14)+(position.sectorY<<7)+position.sectorX;const name=isC1Sector(offset)?c1Name(offset):c2Name(offset);if(name===null){throw new RangeError(`Sector grid position has no procedural name: ${describeValue(position)}`)}return name}function splitFragmentCandidates(normalizedName){const candidates=[];const visit=(remaining,out)=>{if(remaining.length===0){candidates.push([...out]);return}if(out.length>=4)return;const spaceStart=remaining.startsWith(" ");const current=remaining.trimStart();if(current.length===0)return;for(const match of FRAGMENTS){if(!current.startsWith(match.value))continue;const frag={...match};if(spaceStart){frag.isSuffix=false;frag.isInfix=false}else if(out.length>0&&frag.isInfix&&frag.isVowelInfix!==out[out.length-1].isVowelInfix){frag.isPrefix=false}visit(current.substring(frag.value.length),[...out,frag])}};visit(normalizedName,[]);return candidates}function c1ProcessInfix(frag,offset){const runLen=infixRunLength(frag.value);const rem=offset%runLen;let out=Math.floor(offset/runLen);out*=frag.isVowelInfix?infix1TotalRunLength:infix2TotalRunLength;out+=rem;out+=infixOffsets.get(frag.value)??0;return out}function c1ProcessPrefix(frag,offset){const runLen=prefixRunLength(frag.value);const rem=offset%runLen;let out=Math.floor(offset/runLen);out*=prefixTotalRunLength;out+=rem;out+=prefixOffsets.get(frag.value)??0;return out}function coordsFromOffset(offset){return{sectorX:offset&127,sectorY:offset>>7&127,sectorZ:offset>>14&127}}function c2SectorGridPosition(f){if(f[0].isC2VowelPrefix===f[1].isVowelSuffix||f[2].isC2VowelPrefix===f[3].isVowelSuffix){return null}const idx0=(prefixOffsets.get(f[0].value)??0)+f[1].suffixIndex;const idx1=(prefixOffsets.get(f[2].value)??0)+f[3].suffixIndex;return coordsFromOffset(interleave2(idx0,idx1))}function c1SectorGridPosition3(f){if(f[0].isC1VowelPrefix===f[1].isVowelInfix||f[1].isVowelInfix===f[2].isVowelSuffix){return null}let offset=f[2].suffixIndex;offset=c1ProcessInfix(f[1],offset);offset=c1ProcessPrefix(f[0],offset);return coordsFromOffset(offset)}function c1SectorGridPosition4(f){if(f[0].isC1VowelPrefix===f[1].isVowelInfix||f[1].isVowelInfix===f[2].isVowelInfix||f[2].isVowelInfix===f[3].isVowelSuffix){return null}let offset=f[3].suffixIndex;offset=c1ProcessInfix(f[2],offset);offset=c1ProcessInfix(f[1],offset);offset=c1ProcessPrefix(f[0],offset);return coordsFromOffset(offset)}function sectorGridPositionFromName(name){if(name==null)return null;const normalized=normalizeKey(name,"sectorGridPositionFromName: name");const candidates=splitFragmentCandidates(normalized);const normalizedName=normalized.replace(/\s+/g," ");for(const f of candidates){let coords=null;if(f.length===4&&f[0].isPrefix&&f[1].isSuffix&&f[2].isPrefix&&f[3].isSuffix){coords=c2SectorGridPosition(f)}else if(f.length===3&&f[0].isPrefix&&f[1].isInfix&&f[2].isSuffix){coords=c1SectorGridPosition3(f)}else if(f.length===4&&f[0].isPrefix&&f[1].isInfix&&f[2].isInfix&&f[3].isSuffix){coords=c1SectorGridPosition4(f)}if(!coords)continue;try{const canonicalName=sectorNameFromGridPosition(coords);if(canonicalName.toLowerCase()===normalizedName)return coords}catch(error){if(!(error instanceof RangeError))throw error}}return null}function canonicalizeSectorName(name){requireStringIfPresent(name,"canonicalizeSectorName: name");const position=sectorGridPositionFromName(name);return position?sectorNameFromGridPosition(position):null}function interleave2(v1,v2){let x=BigInt(v1)|BigInt(v2)<<32n;x=(x|x<<8n)&0x00ff00ff00ff00ffn;x=(x|x<<4n)&0x0f0f0f0f0f0f0f0fn;x=(x|x<<2n)&0x3333333333333333n;x=(x|x<<1n)&0x5555555555555555n;return Number((x|x>>31n)&0xffffffffn)}function deinterleave2(val){const v=BigInt(val);let x=v&0x55555555n|(v&0xaaaaaaaan)<<31n;x=(x|x>>1n)&0x3333333333333333n;x=(x|x>>2n)&0x0f0f0f0f0f0f0f0fn;x=(x|x>>4n)&0x00ff00ff00ff00ffn;x=(x|x>>8n)&0x0000ffff0000ffffn;return[Number(x&0xffffn),Number(x>>32n&0xffffn)]}export{canonicalizeSectorName,sectorGridPositionFromName,sectorNameFromGridPosition};//# sourceMappingURL=chunk-DVL5RBKX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/astro/sector-name.ts"],"names":["normalizeKey","describeValue","requireStringIfPresent","PREFIXES","INFIXES1","INFIXES2","SUFFIXES1","SUFFIXES2","C2_PREFIX_SUFFIX2","Set","map","s","toLowerCase","C1_PREFIX_INFIX2","PREFIX_RUN_LENGTHS","Map","INFIX_RUN_LENGTHS","PREFIX_DEFAULT_RUN_LENGTH","buildOffsets","items","runLengths","defaultLen","offsets","cnt","item","key","len","get","has","set","total","prefixTable","prefixOffsets","prefixTotalRunLength","infix1Table","length","infix2Table","infixOffsets","infix1TotalRunLength","infix2TotalRunLength","prefixRunLength","infixRunLength","emptyFragment","value","isPrefix","isC1VowelPrefix","isC2VowelPrefix","isInfix","isVowelInfix","isSuffix","isVowelSuffix","suffixIndex","FRAGMENTS","frags","v","f","p","i","values","sort","a","b","localeCompare","isC1Sector","offset","c1Name","prefixCnt","Math","floor","curOffset","prefix","prefixLower","push","infix1IsConsonant","infix1Total","scaled","infix1Cnt","infix1","suffixes","nextIdx","infix2IsConsonant","infix2Total","infix2Cnt","infix2","join","c2Name","idx0","idx1","deinterleave2","p1","p2","p1Lower","p2Lower","s1s","s2s","s1","s2","sectorNameFromGridPosition","position","sectorX","sectorY","sectorZ","Number","isInteger","RangeError","name","splitFragmentCandidates","normalizedName","candidates","visit","remaining","out","spaceStart","startsWith","current","trimStart","match","frag","substring","c1ProcessInfix","runLen","rem","c1ProcessPrefix","coordsFromOffset","c2SectorGridPosition","interleave2","c1SectorGridPosition3","c1SectorGridPosition4","sectorGridPositionFromName","normalized","replace","coords","canonicalName","error","canonicalizeSectorName","v1","v2","x","BigInt","val"],"mappings":"O,6GAoDA,IAAMG,SAA8B,CAChC,KACA,KACA,KACA,KACA,KACA,MACA,MACA,KACA,KACA,MACA,KACA,MACA,MACA,OACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,MACA,KACA,OACA,KACA,MACA,OACA,MACA,KACA,MACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,OACA,MACA,KACA,MACA,KACA,KACA,KACA,MACA,KACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,MACA,IACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,IACA,KACA,IACA,KACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,OACA,IACA,KACA,IACA,IACA,KACA,MACA,IACA,KACA,MACA,MACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,OACA,IACA,KACA,IACA,IACA,KACA,MAGJ,IAAMC,SAA8B,CAChC,IACA,KACA,IACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAGJ,IAAMC,SAA8B,CAChC,KACA,KACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,MACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,MAGJ,IAAMC,UAA+B,CACjC,KACA,KACA,MACA,KACA,KACA,KACA,MACA,KACA,MACA,KACA,IACA,KACA,KACA,IACA,MACA,MACA,KACA,MACA,IACA,KACA,KACA,IACA,MACA,IACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,MACA,MACA,MAGJ,IAAMC,UAA+B,CACjC,IACA,MACA,MACA,IACA,IACA,OACA,IACA,MACA,MACA,IACA,KACA,IACA,MACA,KACA,KACA,MACA,IACA,MACA,KACA,MACA,IACA,KACA,IACA,IACA,KACA,IACA,KACA,KACA,IACA,KACA,IACA,KACA,IACA,KACA,MACA,KACA,KACA,IACA,KACA,MACA,KACA,MACA,IACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,IACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,OACA,OACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,MACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,MACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,KACA,MACA,OACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,QACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,KACA,MACA,MACA,KACA,KACA,MACA,KACA,KACA,OACA,KACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,MACA,KACA,MACA,OAIJ,IAAMC,kBAAoB,IAAIC,IAC1B,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,OAAOC,IAAKC,GAAMA,EAAEC,gBAIhF,IAAMC,iBAAmB,IAAIJ,IACzB,CACI,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,MACA,IACA,KACA,IACA,IACA,IACA,KACA,IACA,KACA,KACA,MACFC,IAAKC,GAAMA,EAAEC,gBAInB,IAAME,kCAAA,IAAyBC,IAAoB,CAC/C,CAAC,KAAM,IACP,CAAC,MAAO,GACR,CAAC,KAAM,GACP,CAAC,MAAO,IACR,CAAC,KAAM,IACP,CAAC,MAAO,IACR,CAAC,MAAO,IACR,CAAC,MAAO,IACR,CAAC,MAAO,GACR,CAAC,KAAM,GACP,CAAC,MAAO,IACR,CAAC,MAAO,IACR,CAAC,MAAO,IACR,CAAC,MAAO,GACR,CAAC,OAAQ,IACT,CAAC,KAAM,IACP,CAAC,OAAQ,GACT,CAAC,MAA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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ships/internal/module-stat-labels.ts","../src/ships/internal/engineering-precision.ts","../src/ships/engineering.ts"],"names":["percent","STAT_LABELS","label","field","scale","multiplierBase","capabilityValue","defaultBase","damageType","BY_LABEL","entries","Map","entry","forLabel","get","push","set","LABELS_BY_FIELD","labels","fieldLabels","baseStats","stats","base","value","damageDistribution","isWeapon","damage","fieldForLabel","length","carried","find","damageTypeForLabel","labelsForDamageType","type","filter","map","scaleForLabel","multiplierBaseForLabel","capabilityValueForLabel","labelsForField","PRECISE_VALUE","Symbol","withPreciseModifierValue","modifier","Object","defineProperty","preciseModifierValue","Value","round6","n","rounded","Math","round","is","FLOAT32_SCALED_BASE_LABELS","Set","computeModifiers","grade","quality","experimental","Number","isFinite","RangeError","f","fround","roll","byLabel","add","method","stated","list","features","feature","rolledValue","min","max","experimentalModifiers","modifiers","e","clipIsOverwritten","contributions","Label","ValueStr","baseValue","overwrite","c","original","float32JournalValue","has","baseless","some","factor","every","snapToStatedWhole","OriginalValue","resolved","resolveFalloffFromRange","roundClipToWholeBursts","clip","m","burst","ceil","whole","abs","falloff","range","rollsForGrade","isInteger","sumMaterials","lists","totals","material","key","symbol","toLowerCase","previous","name","count","values"],"mappings":"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"}