@elite-dangerous-almanac/core 0.1.8 → 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.
- package/PROVENANCE/i18n/SOURCES.md +2 -2
- package/PROVENANCE/ships/SOURCES.md +11 -9
- package/README.md +54 -40
- package/dist/astro/galaxy-grid.js +1 -1
- package/dist/astro/index.d.ts +1 -1
- package/dist/astro/index.js +1 -1
- package/dist/astro/naming-region-origins.d.ts +1 -1
- package/dist/astro/naming-region-origins.js +1 -1
- package/dist/astro/nebulae.d.ts +2 -2
- package/dist/astro/permit-locks.d.ts +2 -1
- package/dist/astro/permit-locks.js +1 -1
- package/dist/astro/procedural-system.d.ts +2 -1
- package/dist/astro/procedural-system.js +1 -1
- package/dist/astro/sector-name.d.ts +2 -1
- package/dist/astro/sector-name.js +1 -1
- package/dist/astro/system-address.d.ts +1 -1
- package/dist/astro/system-name.d.ts +14 -9
- package/dist/astro/system-name.js +1 -1
- package/dist/chunk-2W5MW376.js +1 -0
- package/dist/chunk-2W5MW376.js.map +1 -0
- package/dist/{chunk-VZZUNSDF.js → chunk-4KJ7CR74.js} +1 -1
- package/dist/{chunk-VZZUNSDF.js.map → chunk-4KJ7CR74.js.map} +1 -1
- package/dist/{chunk-6EUVIZAS.js → chunk-4QYTVSNR.js} +1 -1
- package/dist/{chunk-EKQCVCMK.js → chunk-5ZVYRX6Z.js} +1 -1
- package/dist/{chunk-EKQCVCMK.js.map → chunk-5ZVYRX6Z.js.map} +1 -1
- package/dist/chunk-6GJHUWMO.js +1 -0
- package/dist/chunk-6GJHUWMO.js.map +1 -0
- package/dist/chunk-6L56LWTT.js +1 -0
- package/dist/chunk-6L56LWTT.js.map +1 -0
- package/dist/{chunk-GQ5GX5TB.js → chunk-6O4NRRSB.js} +1 -1
- package/dist/chunk-6O4NRRSB.js.map +1 -0
- package/dist/{chunk-WNGQ3IAM.js → chunk-6UNAD74Z.js} +1 -1
- package/dist/{chunk-WNGQ3IAM.js.map → chunk-6UNAD74Z.js.map} +1 -1
- package/dist/{chunk-JPBMRJFC.js → chunk-77I24V6B.js} +1 -1
- package/dist/chunk-77I24V6B.js.map +1 -0
- package/dist/chunk-7ATBEOVC.js +1 -0
- package/dist/chunk-7ATBEOVC.js.map +1 -0
- package/dist/chunk-7TQ2X6Q3.js +1 -0
- package/dist/chunk-7TQ2X6Q3.js.map +1 -0
- package/dist/{chunk-6EPYVBAX.js → chunk-A6OINYNP.js} +1 -1
- package/dist/{chunk-Q3QCLNVG.js → chunk-AYAKU4YA.js} +1 -1
- package/dist/chunk-AYAKU4YA.js.map +1 -0
- package/dist/chunk-B7EYTZRK.js +1 -0
- package/dist/chunk-B7EYTZRK.js.map +1 -0
- package/dist/{chunk-EBAHNZ36.js → chunk-CIULJH3G.js} +1 -1
- package/dist/{chunk-EBAHNZ36.js.map → chunk-CIULJH3G.js.map} +1 -1
- package/dist/{chunk-SNADUQSJ.js → chunk-CJK2IBI2.js} +1 -1
- package/dist/{chunk-SNADUQSJ.js.map → chunk-CJK2IBI2.js.map} +1 -1
- package/dist/{chunk-DYPOL3CI.js → chunk-CJQ37JII.js} +1 -1
- package/dist/chunk-CJQ37JII.js.map +1 -0
- package/dist/chunk-D6YEHR5S.js +1 -0
- package/dist/chunk-D6YEHR5S.js.map +1 -0
- package/dist/{chunk-Z6XMXMVI.js → chunk-DBDCOHI4.js} +1 -1
- package/dist/chunk-DBDCOHI4.js.map +1 -0
- package/dist/{chunk-AFVYCQWL.js → chunk-DCB4COCL.js} +1 -1
- package/dist/{chunk-AFVYCQWL.js.map → chunk-DCB4COCL.js.map} +1 -1
- package/dist/{chunk-CJWFY6OX.js → chunk-DSMLYA2M.js} +1 -1
- package/dist/{chunk-CJWFY6OX.js.map → chunk-DSMLYA2M.js.map} +1 -1
- package/dist/{chunk-UXBCLFGU.js → chunk-DWRNXUAX.js} +1 -1
- package/dist/{chunk-UXBCLFGU.js.map → chunk-DWRNXUAX.js.map} +1 -1
- package/dist/chunk-EVW4Z4CB.js +1 -0
- package/dist/chunk-EVW4Z4CB.js.map +1 -0
- package/dist/{chunk-4S6WB7QR.js → chunk-FF2X4K5P.js} +1 -1
- package/dist/chunk-FF2X4K5P.js.map +1 -0
- package/dist/chunk-FYVPZBXN.js +1 -0
- package/dist/chunk-FYVPZBXN.js.map +1 -0
- package/dist/{chunk-QTZPA2FR.js → chunk-GLWPSVFV.js} +1 -1
- package/dist/chunk-GLWPSVFV.js.map +1 -0
- package/dist/chunk-GZYPQIO2.js +1 -0
- package/dist/chunk-GZYPQIO2.js.map +1 -0
- package/dist/chunk-H47K3UWG.js +1 -0
- package/dist/chunk-H47K3UWG.js.map +1 -0
- package/dist/chunk-JGOAQLYW.js +1 -0
- package/dist/chunk-JGOAQLYW.js.map +1 -0
- package/dist/{chunk-JWWYAMGD.js → chunk-MGRDB2BZ.js} +1 -1
- package/dist/{chunk-JWWYAMGD.js.map → chunk-MGRDB2BZ.js.map} +1 -1
- package/dist/{chunk-MKGJPVPS.js → chunk-MRTTQYT5.js} +1 -1
- package/dist/{chunk-MKGJPVPS.js.map → chunk-MRTTQYT5.js.map} +1 -1
- package/dist/chunk-MTJ4MS7W.js +1 -0
- package/dist/chunk-MTJ4MS7W.js.map +1 -0
- package/dist/chunk-NIURLW2F.js +1 -0
- package/dist/chunk-NIURLW2F.js.map +1 -0
- package/dist/chunk-OLKNYGGT.js +1 -0
- package/dist/chunk-OLKNYGGT.js.map +1 -0
- package/dist/chunk-OYFMHDYT.js +1 -0
- package/dist/chunk-OYFMHDYT.js.map +1 -0
- package/dist/chunk-OYR5HUQZ.js +1 -0
- package/dist/chunk-OYR5HUQZ.js.map +1 -0
- package/dist/chunk-PL75RTA2.js +1 -0
- package/dist/{chunk-2VPVZELZ.js.map → chunk-PL75RTA2.js.map} +1 -1
- package/dist/chunk-PY5L6WC5.js +1 -0
- package/dist/chunk-PY5L6WC5.js.map +1 -0
- package/dist/{chunk-W6EPHHTS.js → chunk-Q2L75GSI.js} +1 -1
- package/dist/chunk-Q2L75GSI.js.map +1 -0
- package/dist/chunk-QJ7GB6FF.js +1 -0
- package/dist/chunk-QJ7GB6FF.js.map +1 -0
- package/dist/chunk-QTAMQ6ME.js +1 -0
- package/dist/chunk-QTAMQ6ME.js.map +1 -0
- package/dist/{chunk-FMPRCYKY.js → chunk-RRYBSAPX.js} +1 -1
- package/dist/chunk-RRYBSAPX.js.map +1 -0
- package/dist/{chunk-J42ZXLBL.js → chunk-T62GO4AA.js} +1 -1
- package/dist/chunk-T62GO4AA.js.map +1 -0
- package/dist/{chunk-E3BRVGJJ.js → chunk-TBZJIQ5P.js} +1 -1
- package/dist/{chunk-E3BRVGJJ.js.map → chunk-TBZJIQ5P.js.map} +1 -1
- package/dist/chunk-V3AEUBHV.js +1 -0
- package/dist/chunk-V3AEUBHV.js.map +1 -0
- package/dist/chunk-VYDQHPY2.js +1 -0
- package/dist/chunk-VYDQHPY2.js.map +1 -0
- package/dist/chunk-XUHAPOM6.js +1 -0
- package/dist/chunk-XUHAPOM6.js.map +1 -0
- package/dist/chunk-Y6KJJMIM.js +1 -0
- package/dist/chunk-Y6KJJMIM.js.map +1 -0
- package/dist/chunk-YXPZ7QQB.js +1 -0
- package/dist/chunk-YXPZ7QQB.js.map +1 -0
- package/dist/{chunk-Y6UZWNP4.js → chunk-ZCEAPJDH.js} +1 -1
- package/dist/{chunk-Y6UZWNP4.js.map → chunk-ZCEAPJDH.js.map} +1 -1
- package/dist/commodities/commodities.d.ts +20 -10
- package/dist/commodities/commodities.js +1 -1
- package/dist/commodities/index.d.ts +15 -4
- package/dist/commodities/index.js +1 -1
- package/dist/equipment/index.js +1 -1
- package/dist/equipment/modification-costs.d.ts +2 -1
- package/dist/equipment/modification-costs.js.map +1 -1
- package/dist/equipment/modification-journal.js +1 -1
- package/dist/equipment/modifications.d.ts +2 -1
- package/dist/equipment/modifications.js +1 -1
- package/dist/equipment/suits.d.ts +6 -3
- package/dist/equipment/suits.js +1 -1
- package/dist/equipment/upgrade-costs.d.ts +8 -4
- package/dist/equipment/upgrade-costs.js +1 -1
- package/dist/equipment/upgrade-costs.js.map +1 -1
- package/dist/equipment/weapons.d.ts +13 -5
- package/dist/equipment/weapons.js +1 -1
- package/dist/i18n/blueprints.d.ts +6 -6
- package/dist/i18n/blueprints.js +1 -1
- package/dist/i18n/diagnostics.d.ts +1 -13
- package/dist/i18n/engineering-groups.d.ts +1 -0
- package/dist/i18n/engineering-groups.js +1 -1
- package/dist/i18n/experimental-effect-descriptions.d.ts +4 -3
- package/dist/i18n/experimental-effect-descriptions.js +1 -1
- package/dist/i18n/experimental-effects.d.ts +5 -4
- package/dist/i18n/experimental-effects.js +1 -1
- package/dist/i18n/index.d.ts +1 -13
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/pre-engineered.d.ts +7 -6
- package/dist/i18n/pre-engineered.js +1 -1
- package/dist/materials/index.d.ts +16 -4
- package/dist/materials/index.js +1 -1
- package/dist/materials/materials.d.ts +36 -19
- package/dist/materials/materials.js +1 -1
- package/dist/materials/micro-resources.d.ts +18 -7
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/armour.d.ts +20 -4
- package/dist/ships/armour.js +1 -1
- package/dist/ships/blueprint-costs.d.ts +20 -17
- package/dist/ships/blueprint-costs.js +1 -1
- package/dist/ships/blueprint-journal.d.ts +9 -8
- package/dist/ships/blueprint-journal.js +1 -1
- package/dist/ships/blueprints.d.ts +14 -12
- package/dist/ships/blueprints.js +1 -1
- package/dist/ships/build-metrics.d.ts +1061 -0
- package/dist/ships/build-metrics.js +1 -0
- package/dist/ships/build-metrics.js.map +1 -0
- package/dist/ships/distributor.d.ts +10 -3
- package/dist/ships/distributor.js +1 -1
- package/dist/ships/engineering-options.d.ts +8 -6
- package/dist/ships/engineering-options.js +1 -1
- package/dist/ships/engineering.d.ts +2 -16
- package/dist/ships/engineering.js +1 -1
- package/dist/ships/experimental-effect-costs.d.ts +5 -5
- package/dist/ships/experimental-effect-costs.js +1 -1
- package/dist/ships/experimental-effects.d.ts +9 -8
- package/dist/ships/experimental-effects.js +1 -1
- package/dist/ships/heat.d.ts +7 -2
- package/dist/ships/heat.js +1 -1
- package/dist/ships/index.d.ts +34 -22
- package/dist/ships/index.js +1 -1
- package/dist/ships/jump-range.d.ts +10 -3
- package/dist/ships/jump-range.js +1 -1
- package/dist/ships/loadout-calculations.d.ts +1 -1
- package/dist/ships/loadout-calculations.js +1 -1
- package/dist/ships/mobility-capacitor.d.ts +90 -0
- package/dist/ships/mobility-capacitor.js +1 -0
- package/dist/ships/mobility-capacitor.js.map +1 -0
- package/dist/ships/mobility.d.ts +29 -17
- package/dist/ships/mobility.js +1 -1
- package/dist/ships/power.d.ts +12 -5
- package/dist/ships/power.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +10 -8
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/pre-engineered.d.ts +6 -6
- package/dist/ships/pre-engineered.js +1 -1
- package/dist/ships/resistances.d.ts +2 -2
- package/dist/ships/resistances.js +1 -1
- package/dist/ships/shield-capacitor.d.ts +133 -0
- package/dist/ships/shield-capacitor.js +1 -0
- package/dist/ships/shield-capacitor.js.map +1 -0
- package/dist/ships/shield-recovery.d.ts +16 -2
- package/dist/ships/shield-recovery.js +1 -1
- package/dist/ships/shields.d.ts +86 -28
- package/dist/ships/shields.js +1 -1
- package/dist/ships/ship-loadout.d.ts +91 -797
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/ships.d.ts +7 -6
- package/dist/ships/ships.js +1 -1
- package/dist/ships/slef.d.ts +1 -1
- package/dist/ships/source-purchase.d.ts +2 -1
- package/dist/ships/source-purchase.js +1 -1
- package/dist/ships/weapons-capacitor.d.ts +10 -3
- package/dist/ships/weapons-capacitor.js +1 -1
- package/dist/ships/weapons.d.ts +22 -6
- package/dist/ships/weapons.js +1 -1
- package/dist/{system-address-DYsN1qOT.d.ts → system-address-cyJaeZIS.d.ts} +2 -1
- package/package.json +17 -2
- package/dist/chunk-2FHHMYDC.js +0 -1
- package/dist/chunk-2FHHMYDC.js.map +0 -1
- package/dist/chunk-2TW4ZBI3.js +0 -1
- package/dist/chunk-2TW4ZBI3.js.map +0 -1
- package/dist/chunk-2VPVZELZ.js +0 -1
- package/dist/chunk-3BM5BHI3.js +0 -1
- package/dist/chunk-3BM5BHI3.js.map +0 -1
- package/dist/chunk-4S6WB7QR.js.map +0 -1
- package/dist/chunk-6BO5JJNI.js +0 -1
- package/dist/chunk-6BO5JJNI.js.map +0 -1
- package/dist/chunk-CX7B67OI.js +0 -1
- package/dist/chunk-CX7B67OI.js.map +0 -1
- package/dist/chunk-DVL5RBKX.js +0 -1
- package/dist/chunk-DVL5RBKX.js.map +0 -1
- package/dist/chunk-DYPOL3CI.js.map +0 -1
- package/dist/chunk-FGXWVFN6.js +0 -1
- package/dist/chunk-FGXWVFN6.js.map +0 -1
- package/dist/chunk-FMPRCYKY.js.map +0 -1
- package/dist/chunk-G3265B27.js +0 -1
- package/dist/chunk-G3265B27.js.map +0 -1
- package/dist/chunk-GQ5GX5TB.js.map +0 -1
- package/dist/chunk-IOJXLDJN.js +0 -1
- package/dist/chunk-IOJXLDJN.js.map +0 -1
- package/dist/chunk-IYU4WLFM.js +0 -1
- package/dist/chunk-IYU4WLFM.js.map +0 -1
- package/dist/chunk-J42ZXLBL.js.map +0 -1
- package/dist/chunk-JPBMRJFC.js.map +0 -1
- package/dist/chunk-LJI7VXJD.js +0 -1
- package/dist/chunk-LJI7VXJD.js.map +0 -1
- package/dist/chunk-OCND33TO.js +0 -1
- package/dist/chunk-OCND33TO.js.map +0 -1
- package/dist/chunk-P2QOL63K.js +0 -1
- package/dist/chunk-P2QOL63K.js.map +0 -1
- package/dist/chunk-Q3QCLNVG.js.map +0 -1
- package/dist/chunk-QTZPA2FR.js.map +0 -1
- package/dist/chunk-RLUS76LZ.js +0 -1
- package/dist/chunk-RLUS76LZ.js.map +0 -1
- package/dist/chunk-TEOJCBSG.js +0 -1
- package/dist/chunk-TEOJCBSG.js.map +0 -1
- package/dist/chunk-TMMGS6TC.js +0 -1
- package/dist/chunk-TMMGS6TC.js.map +0 -1
- package/dist/chunk-W6EPHHTS.js.map +0 -1
- package/dist/chunk-Z6XMXMVI.js.map +0 -1
- package/dist/chunk-ZNCXENNB.js +0 -1
- package/dist/chunk-ZNCXENNB.js.map +0 -1
- /package/dist/{chunk-6EUVIZAS.js.map → chunk-4QYTVSNR.js.map} +0 -0
- /package/dist/{chunk-6EPYVBAX.js.map → chunk-A6OINYNP.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{BuildMetrics}from"../chunk-PY5L6WC5.js"; //# sourceMappingURL=build-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"O"}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* and WEP use the same non-linear allocation curve:
|
|
6
6
|
* `ratedRecharge * (pips / 4) ^ 1.1`.
|
|
7
7
|
*
|
|
8
|
-
* This module is data-free. {@link
|
|
9
|
-
* (`./
|
|
8
|
+
* This module is data-free. {@link BuildMetrics.distributorMetrics}
|
|
9
|
+
* (`./build-metrics`) resolves the powered distributor in a build for you.
|
|
10
10
|
*
|
|
11
11
|
* @remarks
|
|
12
12
|
* The SYS and WEP curves follow EDCD/Coriolis; the ENG curve is cross-checked
|
|
@@ -54,7 +54,14 @@ interface DistributorPips {
|
|
|
54
54
|
/** Pips assigned to WEP, in `[0, 4]`. */
|
|
55
55
|
readonly weapons: number;
|
|
56
56
|
}
|
|
57
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* All three capacitor figures for one power distributor and pip allocation.
|
|
59
|
+
*
|
|
60
|
+
* @remarks
|
|
61
|
+
* Frozen — nested records and lists included — so a result can be held, cached and
|
|
62
|
+
* shared without a defensive copy. Derive a changed figure with a spread rather than
|
|
63
|
+
* by assigning into one.
|
|
64
|
+
*/
|
|
58
65
|
interface DistributorMetrics {
|
|
59
66
|
/** SYS-capacitor capacity and recharge. */
|
|
60
67
|
readonly systems: DistributorCapacitorMetrics;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{distributorMetrics}from"../chunk-
|
|
1
|
+
export{distributorMetrics}from"../chunk-YXPZ7QQB.js"; //# sourceMappingURL=distributor.js.map
|
|
@@ -114,6 +114,7 @@ declare const ENGINEERING_OPTION_GROUPS: Readonly<Record<EngineeringGroupId, Eng
|
|
|
114
114
|
* Accelerator, which upstream denies every blueprint.
|
|
115
115
|
*
|
|
116
116
|
* @param symbol - A module symbol, e.g. `"Hpt_BeamLaser_Fixed_Small"`.
|
|
117
|
+
* Leading/trailing whitespace and case are ignored.
|
|
117
118
|
* @returns The group id, or `null` when the module is not in the catalogue.
|
|
118
119
|
*
|
|
119
120
|
* @throws {TypeError} If `symbol` is present and not a string. A nullish
|
|
@@ -156,7 +157,7 @@ declare function getEngineeringGroup(symbol: string): EngineeringGroupId | null;
|
|
|
156
157
|
* Guardian weapons as well as modules — every group here lists that id, and `BLUEPRINTS`
|
|
157
158
|
* keys the recipe under it alone.
|
|
158
159
|
*
|
|
159
|
-
* @param symbol - A module symbol.
|
|
160
|
+
* @param symbol - A module symbol. Leading/trailing whitespace and case are ignored.
|
|
160
161
|
* @returns Blueprint ids, sorted. Join to `BLUEPRINTS`.
|
|
161
162
|
*
|
|
162
163
|
* @throws {TypeError} If `symbol` is present and not a string. A nullish
|
|
@@ -188,7 +189,7 @@ declare function getBlueprintsForModule(symbol: string): readonly string[];
|
|
|
188
189
|
* and every Guardian group, weapons and modules alike. An ungrouped module answers empty
|
|
189
190
|
* too; {@link getEngineeringGroup} tells the two apart.
|
|
190
191
|
*
|
|
191
|
-
* @param symbol - A module symbol.
|
|
192
|
+
* @param symbol - A module symbol. Leading/trailing whitespace and case are ignored.
|
|
192
193
|
* @returns Experimental-effect ids. Join to `EXPERIMENTAL_EFFECTS`.
|
|
193
194
|
*
|
|
194
195
|
* @throws {TypeError} If `symbol` is present and not a string. A nullish
|
|
@@ -229,12 +230,13 @@ declare function getExperimentalsForModule(symbol: string): readonly string[];
|
|
|
229
230
|
* that is the exact answer rather
|
|
230
231
|
* than a miss: it has no experimental slot, on any of the nine groups that offer it.
|
|
231
232
|
*
|
|
232
|
-
* @param
|
|
233
|
+
* @param blueprintSymbol - A blueprint recipe's Frontier symbol, e.g. `"Weapon_Efficient"`.
|
|
234
|
+
* Leading/trailing whitespace and case are ignored.
|
|
233
235
|
* @returns Experimental-effect ids, sorted and de-duplicated; empty when no group names
|
|
234
236
|
* the blueprint, or when its groups take no experimental.
|
|
235
237
|
*
|
|
236
|
-
* @throws {TypeError} If `
|
|
237
|
-
* `
|
|
238
|
+
* @throws {TypeError} If `blueprintSymbol` is present and not a string. A nullish
|
|
239
|
+
* `blueprintSymbol` is a miss, answered the way an unrecognised one is.
|
|
238
240
|
* @example
|
|
239
241
|
* ```ts
|
|
240
242
|
* import { getExperimentalsForBlueprint } from '@elite-dangerous-almanac/core/ships/engineering-options';
|
|
@@ -243,6 +245,6 @@ declare function getExperimentalsForModule(symbol: string): readonly string[];
|
|
|
243
245
|
* // -> ['special_fsd_cooled', 'special_fsd_fuelcapacity', 'special_fsd_heavy', ...]
|
|
244
246
|
* ```
|
|
245
247
|
*/
|
|
246
|
-
declare function getExperimentalsForBlueprint(
|
|
248
|
+
declare function getExperimentalsForBlueprint(blueprintSymbol: string): readonly string[];
|
|
247
249
|
|
|
248
250
|
export { ENGINEERING_OPTION_GROUPS, type EngineeringGroupId, type EngineeringOptionGroup, getBlueprintsForModule, getEngineeringGroup, getExperimentalsForBlueprint, getExperimentalsForModule };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule}from"../chunk-
|
|
1
|
+
export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule}from"../chunk-GLWPSVFV.js"; //# sourceMappingURL=engineering-options.js.map
|
|
@@ -156,7 +156,7 @@ type BlueprintGrades = Readonly<Record<string, BlueprintGrade>>;
|
|
|
156
156
|
* One engineering blueprint — its in-game display name and its per-grade data.
|
|
157
157
|
*
|
|
158
158
|
* @remarks
|
|
159
|
-
* A blueprint is keyed in {@link BLUEPRINTS} by its Frontier
|
|
159
|
+
* A blueprint is keyed in {@link BLUEPRINTS} by its Frontier symbol; this is the record
|
|
160
160
|
* that key maps to. Each member of `grades` carries modifier `features` and an optional
|
|
161
161
|
* converted damage distribution (a blueprint need not define every grade `1`–`5`). A
|
|
162
162
|
* journal id shared by two recipes is resolved against the fitted module by
|
|
@@ -194,20 +194,6 @@ interface Blueprint {
|
|
|
194
194
|
* @throws {RangeError} If `quality` is not a finite number in `[0, 1]`.
|
|
195
195
|
*/
|
|
196
196
|
declare function computeModifiers(base: Readonly<Record<string, number>>, grade: BlueprintGrade | readonly BlueprintFeature[], quality?: number, experimental?: ExperimentalEffect | readonly ExperimentalContribution[]): EngineeringModifier[];
|
|
197
|
-
/**
|
|
198
|
-
* The number of engineering rolls to complete a single blueprint grade: grade `N` takes
|
|
199
|
-
* `N` rolls (grade 1 → 1 roll, grade 2 → 2 rolls, … grade 5 → 5 rolls). Each roll at a
|
|
200
|
-
* grade consumes that grade's cost, so the total to engineer a module *up to* a
|
|
201
|
-
* grade is the running sum of `rollsForGrade(g) ·` (grade `g`'s cost) for every
|
|
202
|
-
* grade `g` up to the target — what
|
|
203
|
-
* {@link ships/blueprint-costs!getBlueprintCost | getBlueprintCost} computes, for the
|
|
204
|
-
* materials and the Merc Coin alike.
|
|
205
|
-
*
|
|
206
|
-
* @param grade - The blueprint grade, `1`–`5`.
|
|
207
|
-
* @returns The rolls to complete that grade (equal to the grade number).
|
|
208
|
-
* @throws {RangeError} If `grade` is not an integer from 1 through 5.
|
|
209
|
-
*/
|
|
210
|
-
declare function rollsForGrade(grade: number): number;
|
|
211
197
|
/**
|
|
212
198
|
* Combine several material lists into one, summing the counts of any material that
|
|
213
199
|
* appears in more than one list (matched by `symbol`, case-insensitively). Use it to
|
|
@@ -231,4 +217,4 @@ declare function rollsForGrade(grade: number): number;
|
|
|
231
217
|
*/
|
|
232
218
|
declare function sumMaterials(...lists: readonly (readonly EngineeringMaterial[])[]): EngineeringMaterial[];
|
|
233
219
|
|
|
234
|
-
export { type Blueprint, type BlueprintFeature, type BlueprintGrade, type BlueprintGrades, type EngineeringMaterial, type ExperimentalContribution, type ExperimentalEffect, type ModifierMethod, computeModifiers,
|
|
220
|
+
export { type Blueprint, type BlueprintFeature, type BlueprintGrade, type BlueprintGrades, type EngineeringMaterial, type ExperimentalContribution, type ExperimentalEffect, type ModifierMethod, computeModifiers, sumMaterials };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{computeModifiers,
|
|
1
|
+
export{computeModifiers,sumMaterials}from"../chunk-CJQ37JII.js";//# sourceMappingURL=engineering.js.map
|
|
@@ -20,7 +20,7 @@ import './slots.js';
|
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
* Every experimental effect's one-application material list, keyed by Frontier
|
|
23
|
+
* Every experimental effect's one-application material list, keyed by Frontier symbol.
|
|
24
24
|
*
|
|
25
25
|
* @remarks
|
|
26
26
|
* Its ids exactly match `EXPERIMENTAL_EFFECTS` from `ships/experimental-effects`. The
|
|
@@ -44,11 +44,11 @@ declare const EXPERIMENTAL_EFFECT_COSTS: Readonly<Record<string, readonly Engine
|
|
|
44
44
|
* 25 blueprints whose {@link ships/blueprint-costs!getBlueprintCost | getBlueprintCost}
|
|
45
45
|
* reports a non-zero `mercCoins`.
|
|
46
46
|
*
|
|
47
|
-
* @param
|
|
47
|
+
* @param experimentalEffectSymbol - The effect id, e.g. `"special_fsd_heavy"`, matched
|
|
48
48
|
* case-insensitively after trimming surrounding whitespace.
|
|
49
49
|
* @returns The frozen material list, or `null` if the effect is unknown.
|
|
50
|
-
* @throws {TypeError} If `
|
|
51
|
-
* `
|
|
50
|
+
* @throws {TypeError} If `experimentalEffectSymbol` is present and not a string. A nullish
|
|
51
|
+
* `experimentalEffectSymbol` is a miss, answered the way an unrecognised one is.
|
|
52
52
|
* @example
|
|
53
53
|
* ```ts
|
|
54
54
|
* import { getExperimentalEffectCost } from '@elite-dangerous-almanac/core/ships/experimental-effect-costs';
|
|
@@ -57,6 +57,6 @@ declare const EXPERIMENTAL_EFFECT_COSTS: Readonly<Record<string, readonly Engine
|
|
|
57
57
|
* // -> [{ symbol: 'DisruptedWakeEchoes', ... }, ...]
|
|
58
58
|
* ```
|
|
59
59
|
*/
|
|
60
|
-
declare function getExperimentalEffectCost(
|
|
60
|
+
declare function getExperimentalEffectCost(experimentalEffectSymbol: string): readonly EngineeringMaterial[] | null;
|
|
61
61
|
|
|
62
62
|
export { EXPERIMENTAL_EFFECT_COSTS, getExperimentalEffectCost };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{EXPERIMENTAL_EFFECT_COSTS,getExperimentalEffectCost}from"../chunk-
|
|
1
|
+
export{EXPERIMENTAL_EFFECT_COSTS,getExperimentalEffectCost}from"../chunk-CJK2IBI2.js"; //# sourceMappingURL=experimental-effect-costs.js.map
|
|
@@ -7,7 +7,7 @@ import './slots.js';
|
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* The **experimental-effect mechanics catalogue** — each engineering special effect's
|
|
10
|
-
* stat modifiers and qualitative behavior, keyed by the effect's Frontier
|
|
10
|
+
* stat modifiers and qualitative behavior, keyed by the effect's Frontier symbol (as it
|
|
11
11
|
* appears in a journal `Loadout` event's `Engineering.ExperimentalEffect`).
|
|
12
12
|
*
|
|
13
13
|
* Its own module (and data file) so consumers who never engineer a build do not bundle
|
|
@@ -18,7 +18,7 @@ import './slots.js';
|
|
|
18
18
|
* `ships/experimental-effect-costs`, so applying an effect does not bundle what it costs —
|
|
19
19
|
* though `ShipLoadout` carries both, since it prices a build as well as engineering one.
|
|
20
20
|
*
|
|
21
|
-
* Keys are Frontier
|
|
21
|
+
* Keys are Frontier symbols — the exact strings a journal `Loadout` event carries in
|
|
22
22
|
* `Engineering.ExperimentalEffect` (e.g. `"special_fsd_heavy"`), not the in-game
|
|
23
23
|
* display names. Enumerate the available effects with `Object.keys(EXPERIMENTAL_EFFECTS)`.
|
|
24
24
|
*
|
|
@@ -29,7 +29,7 @@ import './slots.js';
|
|
|
29
29
|
*/
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
|
-
* Every experimental effect, keyed by Frontier
|
|
32
|
+
* Every experimental effect, keyed by Frontier symbol (e.g. `"special_fsd_heavy"`).
|
|
33
33
|
* Each carries its `modifiers` (stat contributions), optional damage conversion, and
|
|
34
34
|
* optional qualitative description.
|
|
35
35
|
*
|
|
@@ -43,13 +43,14 @@ import './slots.js';
|
|
|
43
43
|
*/
|
|
44
44
|
declare const EXPERIMENTAL_EFFECTS: Readonly<Record<string, ExperimentalEffect>>;
|
|
45
45
|
/**
|
|
46
|
-
* Look up an experimental effect by its Frontier
|
|
46
|
+
* Look up an experimental effect by its Frontier symbol, case-insensitively.
|
|
47
47
|
*
|
|
48
|
-
* @param
|
|
48
|
+
* @param experimentalEffectSymbol - The effect id, e.g. `"special_fsd_heavy"`. Leading/trailing
|
|
49
|
+
* whitespace and case are ignored.
|
|
49
50
|
* @returns The effect record — its display `name`, modifier contributions, optional
|
|
50
51
|
* `damageDistribution`, and optional qualitative description — or `null` if unknown.
|
|
51
|
-
* @throws {TypeError} If `
|
|
52
|
-
* `
|
|
52
|
+
* @throws {TypeError} If `experimentalEffectSymbol` is present and not a string. A nullish
|
|
53
|
+
* `experimentalEffectSymbol` is a miss, answered the way an unrecognised one is.
|
|
53
54
|
* @example
|
|
54
55
|
* ```ts
|
|
55
56
|
* import { getExperimentalEffect } from '@elite-dangerous-almanac/core/ships/experimental-effects';
|
|
@@ -59,6 +60,6 @@ declare const EXPERIMENTAL_EFFECTS: Readonly<Record<string, ExperimentalEffect>>
|
|
|
59
60
|
* effect?.modifiers; // -> [{ label: 'Integrity', ... }, ...]
|
|
60
61
|
* ```
|
|
61
62
|
*/
|
|
62
|
-
declare function getExperimentalEffect(
|
|
63
|
+
declare function getExperimentalEffect(experimentalEffectSymbol: string): ExperimentalEffect | null;
|
|
63
64
|
|
|
64
65
|
export { EXPERIMENTAL_EFFECTS, getExperimentalEffect };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"../chunk-
|
|
1
|
+
export{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"../chunk-77I24V6B.js"; //# sourceMappingURL=experimental-effects.js.map
|
package/dist/ships/heat.d.ts
CHANGED
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
* else: it is thermal inertia, not a budget.
|
|
22
22
|
*
|
|
23
23
|
* This module is data-free — hand {@link heatMetrics} a hull's two heat stats, the
|
|
24
|
-
* plant's efficiency and the build's draw. {@link
|
|
25
|
-
* `./
|
|
24
|
+
* plant's efficiency and the build's draw. {@link BuildMetrics.heatMetrics} (in
|
|
25
|
+
* `./build-metrics`) reads all of that off a build, post-engineering, for you.
|
|
26
26
|
*
|
|
27
27
|
* Two heat sources stand outside the scenarios reported here, both of them momentary
|
|
28
28
|
* rather than sustained, and they are not interchangeable with the figures above:
|
|
@@ -194,6 +194,11 @@ interface HeatState {
|
|
|
194
194
|
/**
|
|
195
195
|
* A build's heat: what the plant and the hull make of each other, and what the build
|
|
196
196
|
* runs at stowed, flying, jumping and firing.
|
|
197
|
+
*
|
|
198
|
+
* @remarks
|
|
199
|
+
* Frozen — nested records and lists included — so a result can be held, cached and
|
|
200
|
+
* shared without a defensive copy. Derive a changed figure with a spread rather than
|
|
201
|
+
* by assigning into one.
|
|
197
202
|
*/
|
|
198
203
|
interface HeatMetrics {
|
|
199
204
|
/** The fitted plant's heat efficiency, post-engineering. */
|
package/dist/ships/heat.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{OVERHEAT_HEAT_LEVEL,effectiveWeaponThermalLoad,equilibriumHeatLevel,heatLevelAtTime,heatMetrics,secondsToHeatLevel}from"../chunk-
|
|
1
|
+
export{OVERHEAT_HEAT_LEVEL,effectiveWeaponThermalLoad,equilibriumHeatLevel,heatLevelAtTime,heatMetrics,secondsToHeatLevel}from"../chunk-Q2L75GSI.js";//# sourceMappingURL=heat.js.map
|
package/dist/ships/index.d.ts
CHANGED
|
@@ -9,13 +9,15 @@
|
|
|
9
9
|
* export ({@link ShipLoadout.fromSlef}) or a journal `Loadout` event
|
|
10
10
|
* ({@link ShipLoadout.fromLoadout}), writes either back out
|
|
11
11
|
* ({@link ShipLoadout.toSlefString}, {@link ShipLoadout.toLoadoutEvent}), fits modules
|
|
12
|
-
* and applies engineering, and
|
|
13
|
-
*
|
|
14
|
-
* {@link ShipLoadout.
|
|
15
|
-
*
|
|
16
|
-
* ({@link
|
|
17
|
-
*
|
|
18
|
-
*
|
|
12
|
+
* and applies engineering, and carries the figures a capture stated (`unladenMass`,
|
|
13
|
+
* `rebuy`) — keeping what a capture said it *paid* apart from what the build is worth at
|
|
14
|
+
* retail ({@link ShipLoadout.sourcePurchase}). **{@link BuildMetrics} is the other
|
|
15
|
+
* half**: `BuildMetrics.of(build)` answers the questions apps actually ask
|
|
16
|
+
* ({@link BuildMetrics.maxJumpRange}, {@link BuildMetrics.powerBudget},
|
|
17
|
+
* {@link BuildMetrics.shieldMetrics}), so an editor need not import the calculations nor
|
|
18
|
+
* a viewer the editors. Together they are the batteries-included facade and pull in
|
|
19
|
+
* every catalogue; everything below is what they are built from, so drop to the pieces
|
|
20
|
+
* when you need one answer rather than a whole ship.
|
|
19
21
|
*
|
|
20
22
|
* The area has five layers:
|
|
21
23
|
*
|
|
@@ -45,8 +47,11 @@
|
|
|
45
47
|
* data-free module: {@link powerBudget}, {@link shieldMetrics} and
|
|
46
48
|
* {@link armourMetrics} (with {@link stackShieldResistance} /
|
|
47
49
|
* {@link stackArmourResistance} behind their resistances), {@link weaponMetrics},
|
|
48
|
-
* {@link
|
|
49
|
-
* {@link ammunitionCapacity} and {@link heatMetrics}.
|
|
50
|
+
* {@link mobilityMetrics}, {@link shieldRecovery}, {@link distributorMetrics},
|
|
51
|
+
* {@link ammunitionCapacity} and {@link heatMetrics}. A pip allocation is always a
|
|
52
|
+
* separate call over the bare figure, one entry point per capacitor:
|
|
53
|
+
* {@link shieldCapacitorMetrics} for SYS, {@link mobilityCapacitorMetrics} for ENG
|
|
54
|
+
* and {@link weaponsCapacitorMetrics} for WEP.
|
|
50
55
|
* - **Engineering** — {@link computeModifiers} applies the primitive legs of a
|
|
51
56
|
* {@link BLUEPRINTS} recipe and an {@link EXPERIMENTAL_EFFECTS} entry;
|
|
52
57
|
* {@link ShipLoadout.applyBlueprint} presents that result under Frontier's journal
|
|
@@ -57,16 +62,18 @@
|
|
|
57
62
|
* {@link ships/blueprint-costs!BLUEPRINT_COSTS | blueprint-costs} and
|
|
58
63
|
* {@link ships/experimental-effect-costs!EXPERIMENTAL_EFFECT_COSTS | experimental-effect-costs}
|
|
59
64
|
* subpaths, so a consumer can price one recipe without the mechanics — and the facade
|
|
60
|
-
* carries them, since {@link
|
|
65
|
+
* carries them, since {@link BuildMetrics.buildCost} prices a whole build. A blueprint
|
|
61
66
|
* cost carries both halves of what a climb takes: the materials and the Merc Coin 25 of
|
|
62
67
|
* the recipes charge beside them.
|
|
63
68
|
*
|
|
64
69
|
* The registries use two distinct Frontier identity spaces. `symbol` identifies an
|
|
65
70
|
* item — a hull, module, material, micro-resource or commodity — and is what item and
|
|
66
|
-
* journal `Item` lookups accept. Engineering catalogues
|
|
67
|
-
* a recipe,
|
|
68
|
-
* `
|
|
69
|
-
*
|
|
71
|
+
* journal `Item` lookups accept. Engineering catalogues carry ids of their own:
|
|
72
|
+
* `blueprintSymbol` names a recipe, a fixed variant's identity included, and
|
|
73
|
+
* `experimentalEffectSymbol` names an effect. Those two are what the journal writes in
|
|
74
|
+
* `Engineering.BlueprintName` and `Engineering.ExperimentalEffect` respectively; the few
|
|
75
|
+
* colliding blueprint aliases are resolved for their module by
|
|
76
|
+
* {@link resolveBlueprintForModule}.
|
|
70
77
|
* Pre-engineered variants are found from the base module's `symbol` with
|
|
71
78
|
* {@link getPreEngineeredVariants}.
|
|
72
79
|
*
|
|
@@ -89,17 +96,18 @@
|
|
|
89
96
|
* pulls in every catalogue.
|
|
90
97
|
*
|
|
91
98
|
* ```ts
|
|
99
|
+
* import { BuildMetrics } from '@elite-dangerous-almanac/core/ships/build-metrics';
|
|
92
100
|
* import { ShipLoadout } from '@elite-dangerous-almanac/core/ships/ship-loadout';
|
|
93
101
|
* import type { LoadoutEvent } from '@elite-dangerous-almanac/core/ships/slef';
|
|
94
102
|
*
|
|
95
103
|
* declare const event: LoadoutEvent;
|
|
96
104
|
*
|
|
97
105
|
* // Figures below are one build's — a Krait Phantom explorer.
|
|
98
|
-
* const
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
106
|
+
* const metrics = BuildMetrics.of(ShipLoadout.fromLoadout(event));
|
|
107
|
+
* metrics.maxJumpRange(); // -> 60.5478 (ly)
|
|
108
|
+
* metrics.powerBudget().withinBudget; // -> true
|
|
109
|
+
* metrics.shieldMetrics()?.strength; // -> 743.12 (MJ)
|
|
110
|
+
* metrics.weaponMetrics().total.damagePerSecond; // -> 34
|
|
103
111
|
* ```
|
|
104
112
|
*
|
|
105
113
|
* @example
|
|
@@ -122,7 +130,8 @@
|
|
|
122
130
|
* @example
|
|
123
131
|
* **The data-free layer.** Each calculation is its own module over plain constants, so
|
|
124
132
|
* it costs nothing but the function — no catalogue, no build. `./power`, `./shields`,
|
|
125
|
-
* `./armour`, `./weapons`, `./
|
|
133
|
+
* `./shield-capacitor`, `./armour`, `./weapons`, `./weapons-capacitor`, `./mobility`,
|
|
134
|
+
* `./mobility-capacitor`, `./ammunition` and `./resistances` are the same shape.
|
|
126
135
|
*
|
|
127
136
|
* ```ts
|
|
128
137
|
* import { singleJumpRange } from '@elite-dangerous-almanac/core/ships/jump-range';
|
|
@@ -146,14 +155,17 @@ export { FrameShiftDriveJumpStats, MassCurveStats, PowerDistributorStats, PowerG
|
|
|
146
155
|
export { OUTFITTING_FAMILIES, OutfittingFamilyId } from './module-families.js';
|
|
147
156
|
export { BlueprintModuleEngineering, EngineeringModifier, LoadoutEvent, LoadoutModule, ModuleEngineering, Slef, SlefConstraint, SlefDiagnostic, SlefDiagnosticCode, SlefEntry, SlefHeader, SlefInspection, SlefStringifyOptions, getLoadoutModifier, inspectSlef, parseSlef, stringifySlef, toSlef } from './slef.js';
|
|
148
157
|
export { FrameShiftDriveParams, TotalRangeDetails, frameShiftDriveMassFactor, fuelPerJump, singleJumpRange, totalRange } from './jump-range.js';
|
|
149
|
-
export { ApplyBlueprintOptions, AvailableBlueprint,
|
|
158
|
+
export { ApplyBlueprintOptions, AvailableBlueprint, EngineeringNormalizationCode, EngineeringNormalizationResult, EngineeringNormalizationUnchanged, EngineeringNormalizationUnsupported, EngineeringNormalized, ExperimentalEffectMutationCode, ExperimentalEffectMutationResult, ExperimentalEffectUnchanged, ExperimentalEffectUnsupported, ExperimentalEffectUpdated, FittedModule, FixedMountRepairResult, ImmovableReason, LoadoutEditError, LoadoutEditErrorCode, LoadoutExportOptions, LoadoutImportOutcome, LoadoutSlot, ShipLoadout, SlefExportOptions } from './ship-loadout.js';
|
|
159
|
+
export { BuildCost, BuildCredits, BuildMass, BuildMetrics, BuildWeaponMetrics, DistributorOptions, FittedWeaponMetrics, JumpOptions, JumpRangeSummary, MobilityCapacitorOptions, ShieldCapacitorOptions, ShieldRecoveryOptions, StandardLoad, StandardLoadInputs, WeaponsOptions } from './build-metrics.js';
|
|
150
160
|
export { CalculationIssue, CalculationIssueReason, CalculationResult, FuelCapacity, LoadoutCalculationModule, calculateCargoCapacity, calculateFuelCapacity, calculateUnladenMass } from './loadout-calculations.js';
|
|
151
161
|
export { LoadoutIssue, LoadoutIssueCode, LoadoutIssueParam, LoadoutIssueParams, LoadoutValidation, LoadoutValidationInput, ModuleFitConstraint, ValidationModule, validateLoadout } from './loadout-validation.js';
|
|
152
162
|
export { SourceModuleValue, SourcePurchaseRecord, getSourceModuleValue, sourcePurchaseFromLoadout, sumSourceModuleValues } from './source-purchase.js';
|
|
153
163
|
export { PowerBand, PowerBudget, PowerConsumer, PowerConsumerResult, powerBudget } from './power.js';
|
|
154
164
|
export { DamageResistanceParams, DamageResistances, DamageType, DamageTypeValues, effectiveHitPoints, mapDamageTypes, stackArmourResistance, stackShieldResistance, systemsResistance } from './resistances.js';
|
|
155
165
|
export { ShieldBoosterParams, ShieldGeneratorParams, ShieldInput, ShieldMetrics, shieldMassCurveMultiplier, shieldMetrics, shieldStrength } from './shields.js';
|
|
166
|
+
export { ShieldCapacitorInput, ShieldCapacitorMetrics, shieldCapacitorMetrics } from './shield-capacitor.js';
|
|
156
167
|
export { MobilityInput, MobilityMetrics, ThrusterCurveParams, ThrusterParams, mobilityMetrics, thrusterMassCurveMultiplier } from './mobility.js';
|
|
168
|
+
export { MobilityCapacitorInput, MobilityCapacitorMetrics, mobilityCapacitorMetrics } from './mobility-capacitor.js';
|
|
157
169
|
export { CellBankInput, CellBankMetrics, CellBankSummary, ShieldRecovery, ShieldRecoveryInput, cellBankSummary, shieldRecovery } from './shield-recovery.js';
|
|
158
170
|
export { ArmourInput, ArmourMetrics, BulkheadParams, HullReinforcementParams, ModuleReinforcementParams, armourMetrics } from './armour.js';
|
|
159
171
|
export { DamageSplit, WeaponMetrics, WeaponStats, WeaponTotals, armourPiercingFactor, combinedRateOfFire, damageFalloff, damagePerSecond, energyPerSecond, heatPerSecond, splitDamage, sumWeaponMetrics, sustainedDamagePerSecond, sustainedFireFactor, weaponMetrics } from './weapons.js';
|
|
@@ -162,7 +174,7 @@ export { WeaponsCapacitorInput, WeaponsCapacitorMetrics, weaponsCapacitorMetrics
|
|
|
162
174
|
export { AmmunitionCapacity, AmmunitionStats, ammunitionCapacity } from './ammunition.js';
|
|
163
175
|
export { HeatInput, HeatMetrics, HeatState, HeatWeapon, OVERHEAT_HEAT_LEVEL, effectiveWeaponThermalLoad, equilibriumHeatLevel, heatLevelAtTime, heatMetrics, secondsToHeatLevel } from './heat.js';
|
|
164
176
|
export { BuildSlot, BuildSlotBase, CoreBuildSlot, CoreSlotType, CoreSlots, HardpointBuildSlot, HardpointRestriction, HardpointSlotSpec, ModuleSlot, OptionalBuildSlot, OptionalRestriction, OptionalSlotSpec, ParsedSlot, SLOT_RESTRICTION_LABELS, ShipSlots, SimpleBuildSlot, SlotKind, SlotRestriction, enumerateSlots, parseSlotName } from './slots.js';
|
|
165
|
-
export { Blueprint, BlueprintFeature, BlueprintGrade, BlueprintGrades, EngineeringMaterial, ExperimentalContribution, ExperimentalEffect, ModifierMethod, computeModifiers,
|
|
177
|
+
export { Blueprint, BlueprintFeature, BlueprintGrade, BlueprintGrades, EngineeringMaterial, ExperimentalContribution, ExperimentalEffect, ModifierMethod, computeModifiers, sumMaterials } from './engineering.js';
|
|
166
178
|
export { BLUEPRINTS, getBlueprint, getBlueprintGrade } from './blueprints.js';
|
|
167
179
|
export { EXPERIMENTAL_EFFECTS, getExperimentalEffect } from './experimental-effects.js';
|
|
168
180
|
export { ENGINEERING_OPTION_GROUPS, EngineeringGroupId, EngineeringOptionGroup, getBlueprintsForModule, getEngineeringGroup, getExperimentalsForBlueprint, getExperimentalsForModule } from './engineering-options.js';
|
package/dist/ships/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{LoadoutEditError,ShipLoadout}from"../chunk-
|
|
1
|
+
export{LoadoutEditError,ShipLoadout}from"../chunk-OYFMHDYT.js";export{getSourceModuleValue,sourcePurchaseFromLoadout,sumSourceModuleValues}from"../chunk-NIURLW2F.js";export{SHIPS,getShipByName,getShipBySymbol,getShipSlots}from"../chunk-6UNAD74Z.js";export{validateLoadout}from"../chunk-B4ZSTOM4.js";export{SHIP_MODULE_LIMITS,calculateModuleLimits}from"../chunk-KPETDYQX.js";export{hasFrameShiftDriveJumpStats,hasMassCurveStats,hasPowerDistributorStats,hasPowerGenerationStats,hasShieldRegenerationStats,hasWeaponDamageStats}from"../chunk-JTQVWIGL.js";export{OUTFITTING_FAMILIES}from"../chunk-M6G3UDTX.js"; export{SHIP_GUNSIGHTS,getShipGunsight,projectGunsight}from"../chunk-DBGXZF7O.js";export{BuildMetrics}from"../chunk-PY5L6WC5.js";export{weaponsCapacitorMetrics}from"../chunk-RRYBSAPX.js";export{shieldCapacitorMetrics}from"../chunk-6L56LWTT.js";export{cellBankSummary,shieldRecovery}from"../chunk-4KJ7CR74.js"; export{getLoadoutModifier,inspectSlef,parseSlef,stringifySlef,toSlef}from"../chunk-OVUHQEH5.js";export{getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,unresolvedModifiers}from"../chunk-GZYPQIO2.js";export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics}from"../chunk-7TQ2X6Q3.js";export{PRE_ENGINEERED_MODULES,getPreEngineeredVariants,isPreEngineered}from"../chunk-PL75RTA2.js";export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength}from"../chunk-QTAMQ6ME.js";export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-PA5EITW5.js"; export{powerBudget}from"../chunk-D6YEHR5S.js";export{frameShiftDriveMassFactor,fuelPerJump,singleJumpRange,totalRange}from"../chunk-6O4NRRSB.js";export{calculateCargoCapacity,calculateFuelCapacity,calculateUnladenMass}from"../chunk-DCB4COCL.js";export{mobilityCapacitorMetrics}from"../chunk-XUHAPOM6.js";export{mobilityMetrics,thrusterMassCurveMultiplier}from"../chunk-Y6KJJMIM.js"; export{distributorMetrics}from"../chunk-YXPZ7QQB.js"; export{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"../chunk-77I24V6B.js";export{OVERHEAT_HEAT_LEVEL,effectiveWeaponThermalLoad,equilibriumHeatLevel,heatLevelAtTime,heatMetrics,secondsToHeatLevel}from"../chunk-Q2L75GSI.js";export{ammunitionCapacity}from"../chunk-AA3K5XUE.js";export{armourMetrics}from"../chunk-FYVPZBXN.js";export{effectiveHitPoints,mapDamageTypes,stackArmourResistance,stackShieldResistance,systemsResistance}from"../chunk-JGOAQLYW.js"; export{computeModifiers,sumMaterials}from"../chunk-CJQ37JII.js";export{resolveBlueprintForModule}from"../chunk-OLKNYGGT.js";export{ENGINEERING_OPTION_GROUPS,getBlueprintsForModule,getEngineeringGroup,getExperimentalsForBlueprint,getExperimentalsForModule}from"../chunk-GLWPSVFV.js";export{BLUEPRINTS,getBlueprint,getBlueprintGrade}from"../chunk-AYAKU4YA.js"; export{SLOT_RESTRICTION_LABELS,enumerateSlots,parseSlotName}from"../chunk-RAO35XDF.js"; //# sourceMappingURL=index.js.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* the ship-build maths.
|
|
4
4
|
*
|
|
5
5
|
* These are the pure functions; they take the drive's constants and the ship's
|
|
6
|
-
* mass and hand back light-years and tonnes. {@link
|
|
6
|
+
* mass and hand back light-years and tonnes. {@link BuildMetrics} (`./build-metrics`)
|
|
7
7
|
* is the convenient front end that pulls the constants out of a SLEF build for you.
|
|
8
8
|
*
|
|
9
9
|
* The model is the community-standard one used by EDSY and Coriolis, itself derived
|
|
@@ -43,7 +43,14 @@ interface FrameShiftDriveParams {
|
|
|
43
43
|
*/
|
|
44
44
|
readonly jumpBoost?: number;
|
|
45
45
|
}
|
|
46
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* A multi-jump tank-range result and the number of jumps that produce it.
|
|
48
|
+
*
|
|
49
|
+
* @remarks
|
|
50
|
+
* Frozen — nested records and lists included — so a result can be held, cached and
|
|
51
|
+
* shared without a defensive copy. Derive a changed figure with a spread rather than
|
|
52
|
+
* by assigning into one.
|
|
53
|
+
*/
|
|
47
54
|
interface TotalRangeDetails {
|
|
48
55
|
/** Sum of the successive jumps as the tank drains, in light-years. */
|
|
49
56
|
readonly range: number;
|
|
@@ -89,7 +96,7 @@ declare function frameShiftDriveMassFactor(mass: number, fuel: number, fsd: Pick
|
|
|
89
96
|
* drive cannot jump (`maxFuel` or `fuel` = 0).
|
|
90
97
|
* @remarks
|
|
91
98
|
* Lighter ships and larger `optMass` jump farther; carrying more fuel than one jump
|
|
92
|
-
* needs only weighs you down, which is why {@link
|
|
99
|
+
* needs only weighs you down, which is why {@link BuildMetrics.maxJumpRange} loads
|
|
93
100
|
* exactly one jump's worth.
|
|
94
101
|
* @throws {RangeError} If a quantity is negative or non-finite, or a required drive
|
|
95
102
|
* constant is not positive.
|
package/dist/ships/jump-range.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{frameShiftDriveMassFactor,fuelPerJump,singleJumpRange,totalRange}from"../chunk-
|
|
1
|
+
export{frameShiftDriveMassFactor,fuelPerJump,singleJumpRange,totalRange}from"../chunk-6O4NRRSB.js";//# sourceMappingURL=jump-range.js.map
|
|
@@ -21,7 +21,7 @@ type CalculationIssueReason = 'missing' | 'unresolved' | 'disabled' | 'shed' | '
|
|
|
21
21
|
/** An input or fitted-module state that prevented a complete build metric. */
|
|
22
22
|
interface CalculationIssue {
|
|
23
23
|
/** Calculation input that is missing or unavailable. */
|
|
24
|
-
readonly field: 'mass' | 'fuelCapacity' | 'frameShiftDrive' | 'powerCapacity' | 'powerDraw' | 'thrusters' | 'shieldGenerator';
|
|
24
|
+
readonly field: 'mass' | 'fuelCapacity' | 'frameShiftDrive' | 'powerCapacity' | 'powerDraw' | 'heatEfficiency' | 'thrusters' | 'shieldGenerator' | 'powerDistributor';
|
|
25
25
|
/** Machine-readable unavailable-state discriminator. */
|
|
26
26
|
readonly reason: CalculationIssueReason;
|
|
27
27
|
/** Slot containing the incomplete module, when the dependency belongs to a module. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{calculateCargoCapacity,calculateFuelCapacity,calculateUnladenMass}from"../chunk-
|
|
1
|
+
export{calculateCargoCapacity,calculateFuelCapacity,calculateUnladenMass}from"../chunk-DCB4COCL.js";//# sourceMappingURL=loadout-calculations.js.map
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { MobilityInput, ThrusterParams } from './mobility.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* **The ENG capacitor** — speed and handling at a chosen ENG-pip allocation.
|
|
5
|
+
*
|
|
6
|
+
* A hull publishes two endpoints for each of speed, pitch, roll and yaw: the figure at
|
|
7
|
+
* **no** ENG pips (`minimumSpeed`, `minPitch`, `minRoll`, `minYaw`) and the figure at
|
|
8
|
+
* **four** (`maximumSpeed`, `pitch`, `roll`, `yaw`). The allocation interpolates
|
|
9
|
+
* linearly between them, and the fitted thruster's mass curves are applied to the
|
|
10
|
+
* result:
|
|
11
|
+
*
|
|
12
|
+
* ```text
|
|
13
|
+
* speed = (minimumSpeed + (maximumSpeed − minimumSpeed) × pips / 4) × speedCurve(mass)
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Boost does **not** move with the pips, so it is not reported here — it is on
|
|
17
|
+
* {@link MobilityMetrics.boost}, along with the loaded mass and the two curve
|
|
18
|
+
* multipliers these figures share.
|
|
19
|
+
*
|
|
20
|
+
* This module is data-free. {@link BuildMetrics.mobilityCapacitorMetrics} (in
|
|
21
|
+
* `./build-metrics`) reads the hull, the loaded mass and the powered thrusters out of a
|
|
22
|
+
* build and calls {@link mobilityCapacitorMetrics} for you.
|
|
23
|
+
*
|
|
24
|
+
* @remarks
|
|
25
|
+
* Reference implementations: EDCD/Coriolis and EDSY; the algorithm is ported as fact,
|
|
26
|
+
* not code, and credit and licence terms are in
|
|
27
|
+
* [ATTRIBUTIONS.md](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/ATTRIBUTIONS.md).
|
|
28
|
+
*
|
|
29
|
+
* @packageDocumentation
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/** Everything {@link mobilityCapacitorMetrics} needs about one loaded ship. */
|
|
33
|
+
interface MobilityCapacitorInput extends MobilityInput {
|
|
34
|
+
/** Finite pips assigned to ENG, in `[0, 4]`. Fractional pips are accepted; defaults to `4`. */
|
|
35
|
+
readonly enginesPips?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Speed and rotation rates at one ENG-pip allocation.
|
|
39
|
+
*
|
|
40
|
+
* @remarks
|
|
41
|
+
* Frozen — nested records and lists included — so a result can be held, cached and
|
|
42
|
+
* shared without a defensive copy. Derive a changed figure with a spread rather than
|
|
43
|
+
* by assigning into one.
|
|
44
|
+
*/
|
|
45
|
+
interface MobilityCapacitorMetrics {
|
|
46
|
+
/** Pips assigned to ENG for this result, in `[0, 4]`. */
|
|
47
|
+
readonly enginesPips: number;
|
|
48
|
+
/** Top speed at this mass and allocation, in metres per second. */
|
|
49
|
+
readonly speed: number;
|
|
50
|
+
/** Pitch rate at this mass and allocation, in degrees per second. */
|
|
51
|
+
readonly pitch: number;
|
|
52
|
+
/** Roll rate at this mass and allocation, in degrees per second. */
|
|
53
|
+
readonly roll: number;
|
|
54
|
+
/** Yaw rate at this mass and allocation, in degrees per second. */
|
|
55
|
+
readonly yaw: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Calculate a loaded ship's speed and rotation rates at one ENG-pip allocation.
|
|
59
|
+
*
|
|
60
|
+
* @param input - The same hull figures, loaded mass and fitted thrusters
|
|
61
|
+
* {@link mobilityMetrics} takes, plus the allocation to model.
|
|
62
|
+
* @returns The {@link MobilityCapacitorMetrics}, or `null` without thrusters. A mass
|
|
63
|
+
* above the thrusters' maximum returns zero performance rather than a fabricated curve
|
|
64
|
+
* value. At four pips every figure equals its {@link MobilityMetrics} counterpart.
|
|
65
|
+
* @throws {RangeError} If `enginesPips` is outside `[0, 4]`, an input is not finite or
|
|
66
|
+
* is outside its documented range, or a thruster curve does not follow the ordering
|
|
67
|
+
* {@link ThrusterCurveParams} documents. The pips are checked before the hull figures,
|
|
68
|
+
* so a bad allocation is reported first.
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* import { mobilityCapacitorMetrics } from '@elite-dangerous-almanac/core/ships/mobility-capacitor';
|
|
72
|
+
*
|
|
73
|
+
* mobilityCapacitorMetrics({
|
|
74
|
+
* minimumSpeed: 100, maximumSpeed: 220, boost: 320,
|
|
75
|
+
* minPitch: 34, pitch: 42, minRoll: 110, roll: 110, minYaw: 16, yaw: 16,
|
|
76
|
+
* mass: 48,
|
|
77
|
+
* thrusters: {
|
|
78
|
+
* minMass: 24, optMass: 48, maxMass: 72,
|
|
79
|
+
* minMultiplier: 0.83, optMultiplier: 1, maxMultiplier: 1.03,
|
|
80
|
+
* },
|
|
81
|
+
* enginesPips: 2,
|
|
82
|
+
* })?.speed; // -> 160
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
declare function mobilityCapacitorMetrics(input: MobilityCapacitorInput & {
|
|
86
|
+
readonly thrusters: ThrusterParams;
|
|
87
|
+
}): MobilityCapacitorMetrics;
|
|
88
|
+
declare function mobilityCapacitorMetrics(input: MobilityCapacitorInput): MobilityCapacitorMetrics | null;
|
|
89
|
+
|
|
90
|
+
export { type MobilityCapacitorInput, type MobilityCapacitorMetrics, mobilityCapacitorMetrics };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{mobilityCapacitorMetrics}from"../chunk-XUHAPOM6.js"; //# sourceMappingURL=mobility-capacitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"O"}
|