@elite-dangerous-almanac/core 0.1.8 → 0.2.1
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 +34 -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-37JIMWLK.js +1 -0
- package/dist/chunk-37JIMWLK.js.map +1 -0
- package/dist/chunk-4CBMQULR.js +1 -0
- package/dist/{chunk-4ZGUSHTP.js.map → chunk-4CBMQULR.js.map} +1 -1
- package/dist/{chunk-6EUVIZAS.js → chunk-4QYTVSNR.js} +1 -1
- package/dist/chunk-5VWACBTN.js +1 -0
- package/dist/chunk-5VWACBTN.js.map +1 -0
- 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-65FZECUX.js +1 -0
- package/dist/chunk-65FZECUX.js.map +1 -0
- package/dist/chunk-6BFQIYGZ.js +1 -0
- package/dist/chunk-6BFQIYGZ.js.map +1 -0
- package/dist/chunk-6GJHUWMO.js +1 -0
- package/dist/chunk-6GJHUWMO.js.map +1 -0
- package/dist/chunk-6HA2YIKW.js +1 -0
- package/dist/chunk-6HA2YIKW.js.map +1 -0
- package/dist/{chunk-7EE5VIHR.js → chunk-6HMIF2RJ.js} +1 -1
- package/dist/chunk-6S36AVA4.js +1 -0
- package/dist/chunk-6S36AVA4.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-6WTUY6ZX.js +1 -0
- package/dist/chunk-6WTUY6ZX.js.map +1 -0
- package/dist/{chunk-JPBMRJFC.js → chunk-77I24V6B.js} +1 -1
- package/dist/chunk-77I24V6B.js.map +1 -0
- package/dist/chunk-77TT4K53.js +1 -0
- package/dist/chunk-7ATBEOVC.js +1 -0
- package/dist/chunk-7ATBEOVC.js.map +1 -0
- package/dist/chunk-A4QKXXZD.js +1 -0
- package/dist/chunk-A4QKXXZD.js.map +1 -0
- package/dist/{chunk-6EPYVBAX.js → chunk-A6OINYNP.js} +1 -1
- package/dist/chunk-AAE4KZ2V.js +1 -0
- package/dist/chunk-AAE4KZ2V.js.map +1 -0
- package/dist/{chunk-Q5XOGATC.js → chunk-AIEC3LBT.js} +1 -1
- package/dist/{chunk-QY3L5BKN.js → chunk-APEG4ZER.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-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-F44QX47A.js +1 -0
- package/dist/chunk-F44QX47A.js.map +1 -0
- package/dist/{chunk-EVJ32UF3.js → chunk-FA5JVXVG.js} +1 -1
- package/dist/{chunk-EVJ32UF3.js.map → chunk-FA5JVXVG.js.map} +1 -1
- package/dist/{chunk-4S6WB7QR.js → chunk-FF2X4K5P.js} +1 -1
- package/dist/chunk-FF2X4K5P.js.map +1 -0
- package/dist/chunk-GGQMIQPC.js +1 -0
- package/dist/chunk-GGQMIQPC.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-EYGVDJ2I.js → chunk-GMTAFUAG.js} +1 -1
- package/dist/{chunk-Z43DN4PY.js → chunk-GTEHRZPN.js} +1 -1
- package/dist/{chunk-Z43DN4PY.js.map → chunk-GTEHRZPN.js.map} +1 -1
- package/dist/chunk-H47K3UWG.js +1 -0
- package/dist/chunk-H47K3UWG.js.map +1 -0
- package/dist/{chunk-PA5EITW5.js → chunk-HUYYGTRM.js} +1 -1
- package/dist/{chunk-PA5EITW5.js.map → chunk-HUYYGTRM.js.map} +1 -1
- package/dist/{chunk-HKXXFIRI.js → chunk-ITKZKREP.js} +1 -1
- package/dist/chunk-IWFQ4ZKF.js +1 -0
- package/dist/chunk-IWFQ4ZKF.js.map +1 -0
- package/dist/{chunk-Y6UZWNP4.js → chunk-J7BM5NGK.js} +1 -1
- package/dist/{chunk-Y6UZWNP4.js.map → chunk-J7BM5NGK.js.map} +1 -1
- package/dist/chunk-JET673E5.js +1 -0
- package/dist/chunk-JET673E5.js.map +1 -0
- package/dist/chunk-JMAXSXXQ.js +1 -0
- package/dist/chunk-JMAXSXXQ.js.map +1 -0
- package/dist/chunk-JO52LYO3.js +1 -0
- package/dist/chunk-M2TCZKRT.js +1 -0
- package/dist/chunk-M2TCZKRT.js.map +1 -0
- package/dist/chunk-M4FZRDAH.js +1 -0
- package/dist/chunk-M4FZRDAH.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-OJC6AUL7.js +1 -0
- package/dist/chunk-OJC6AUL7.js.map +1 -0
- package/dist/chunk-OLKNYGGT.js +1 -0
- package/dist/chunk-OLKNYGGT.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-Q5ALV3DI.js +1 -0
- package/dist/chunk-Q5ALV3DI.js.map +1 -0
- package/dist/{chunk-SQS7672E.js → chunk-Q6YDPREF.js} +1 -1
- package/dist/chunk-SG6YLUQ4.js +1 -0
- package/dist/chunk-SG6YLUQ4.js.map +1 -0
- package/dist/{chunk-OVUHQEH5.js → chunk-T4MKUKYS.js} +1 -1
- package/dist/{chunk-OVUHQEH5.js.map → chunk-T4MKUKYS.js.map} +1 -1
- 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-VEEBJFJ7.js +1 -0
- package/dist/chunk-VEEBJFJ7.js.map +1 -0
- package/dist/{chunk-L747RVPO.js → chunk-VQJXRPYI.js} +1 -1
- package/dist/{chunk-L747RVPO.js.map → chunk-VQJXRPYI.js.map} +1 -1
- package/dist/chunk-VTMCSCXV.js +1 -0
- package/dist/chunk-VTMCSCXV.js.map +1 -0
- package/dist/chunk-XQJERZUS.js +1 -0
- package/dist/chunk-XQJERZUS.js.map +1 -0
- package/dist/commodities/commodities-all.js +1 -1
- package/dist/commodities/commodities-rare.js +1 -1
- package/dist/commodities/commodities-standard.js +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-all.js +1 -1
- package/dist/materials/materials-encoded.js +1 -1
- package/dist/materials/materials-manufactured.js +1 -1
- package/dist/materials/materials-raw.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 +35 -23
- 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/loadout-validation.d.ts +111 -5
- package/dist/ships/loadout-validation.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/modules-all.js +1 -1
- package/dist/ships/modules-core.js +1 -1
- package/dist/ships/modules-internal.js +1 -1
- package/dist/ships/modules.d.ts +21 -1
- package/dist/ships/modules.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 +20 -13
- 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 +176 -815
- 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 +5 -2
- package/dist/ships/slef.js +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-4ZGUSHTP.js +0 -1
- package/dist/chunk-6BO5JJNI.js +0 -1
- package/dist/chunk-6BO5JJNI.js.map +0 -1
- package/dist/chunk-B4ZSTOM4.js +0 -1
- package/dist/chunk-B4ZSTOM4.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 +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 +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-JQG4C67D.js +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-V4C6FIE2.js +0 -1
- package/dist/chunk-VZZUNSDF.js +0 -1
- package/dist/chunk-VZZUNSDF.js.map +0 -1
- package/dist/chunk-W6EPHHTS.js +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-7EE5VIHR.js.map → chunk-6HMIF2RJ.js.map} +0 -0
- /package/dist/{chunk-JQG4C67D.js.map → chunk-77TT4K53.js.map} +0 -0
- /package/dist/{chunk-6EPYVBAX.js.map → chunk-A6OINYNP.js.map} +0 -0
- /package/dist/{chunk-Q5XOGATC.js.map → chunk-AIEC3LBT.js.map} +0 -0
- /package/dist/{chunk-QY3L5BKN.js.map → chunk-APEG4ZER.js.map} +0 -0
- /package/dist/{chunk-EYGVDJ2I.js.map → chunk-GMTAFUAG.js.map} +0 -0
- /package/dist/{chunk-HKXXFIRI.js.map → chunk-ITKZKREP.js.map} +0 -0
- /package/dist/{chunk-V4C6FIE2.js.map → chunk-JO52LYO3.js.map} +0 -0
- /package/dist/{chunk-SQS7672E.js.map → chunk-Q6YDPREF.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{BuildMetrics}from"../chunk-6S36AVA4.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-M2TCZKRT.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-6HA2YIKW.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
|
-
export { LoadoutIssue, LoadoutIssueCode, LoadoutIssueParam, LoadoutIssueParams, LoadoutValidation, LoadoutValidationInput, ModuleFitConstraint, ValidationModule, validateLoadout } from './loadout-validation.js';
|
|
161
|
+
export { LoadoutIssue, LoadoutIssueCode, LoadoutIssueParam, LoadoutIssueParams, LoadoutMass, LoadoutValidation, LoadoutValidationInput, ModuleFitConstraint, ThrusterLoad, 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-SG6YLUQ4.js";export{validateLoadout}from"../chunk-OJC6AUL7.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-6S36AVA4.js";export{weaponsCapacitorMetrics}from"../chunk-M4FZRDAH.js";export{shieldCapacitorMetrics}from"../chunk-XQJERZUS.js";export{cellBankSummary,shieldRecovery}from"../chunk-JMAXSXXQ.js"; export{getLoadoutModifier,inspectSlef,parseSlef,stringifySlef,toSlef}from"../chunk-T4MKUKYS.js";export{getSourceModuleValue,sourcePurchaseFromLoadout,sumSourceModuleValues}from"../chunk-NIURLW2F.js";export{getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,unresolvedModifiers}from"../chunk-JET673E5.js";export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics}from"../chunk-37JIMWLK.js";export{PRE_ENGINEERED_MODULES,getPreEngineeredVariants,isPreEngineered}from"../chunk-PL75RTA2.js";export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength}from"../chunk-5VWACBTN.js";export{SHIPS,getShipByName,getShipBySymbol,getShipSlots}from"../chunk-6UNAD74Z.js";export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-HUYYGTRM.js"; export{powerBudget}from"../chunk-GGQMIQPC.js";export{frameShiftDriveMassFactor,fuelPerJump,singleJumpRange,totalRange}from"../chunk-VTMCSCXV.js";export{calculateCargoCapacity,calculateFuelCapacity,calculateUnladenMass}from"../chunk-DCB4COCL.js";export{mobilityCapacitorMetrics}from"../chunk-VEEBJFJ7.js";export{mobilityMetrics,thrusterMassCurveMultiplier}from"../chunk-A4QKXXZD.js"; export{distributorMetrics}from"../chunk-M2TCZKRT.js"; export{EXPERIMENTAL_EFFECTS,getExperimentalEffect}from"../chunk-77I24V6B.js";export{OVERHEAT_HEAT_LEVEL,effectiveWeaponThermalLoad,equilibriumHeatLevel,heatLevelAtTime,heatMetrics,secondsToHeatLevel}from"../chunk-6HA2YIKW.js";export{ammunitionCapacity}from"../chunk-AA3K5XUE.js";export{armourMetrics}from"../chunk-Q5ALV3DI.js";export{effectiveHitPoints,mapDamageTypes,stackArmourResistance,stackShieldResistance,systemsResistance}from"../chunk-F44QX47A.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-VTMCSCXV.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
|
|
@@ -18,8 +18,27 @@ import './module-families.js';
|
|
|
18
18
|
* `ShipLoadout` reports neither: it is keyed by slot and `fromLoadout` throws a
|
|
19
19
|
* `TypeError` on a duplicate, and every build fills its fixed mounts from the hull
|
|
20
20
|
* defaults. Switch on them when you validate your own list; skip them for a build.
|
|
21
|
+
*
|
|
22
|
+
* `thrusterMassExceeded` is the one code that reads a figure rather than the structure,
|
|
23
|
+
* so it is reported only when the input states both a
|
|
24
|
+
* {@link LoadoutValidationInput.mass} and the fitted thrusters'
|
|
25
|
+
* {@link ValidationModule.thrusterMaxMass}. A build supplies both.
|
|
26
|
+
*/
|
|
27
|
+
type LoadoutIssueCode = 'duplicateSlot' | 'unknownSlot' | 'missingRequiredSlot' | 'incompatibleModule' | 'duplicateExclusiveModule' | 'moduleLimitExceeded' | 'thrusterMassExceeded';
|
|
28
|
+
/**
|
|
29
|
+
* A load a thruster rating is read against, lightest first.
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
* `dry` is the fit alone — hull plus modules, an empty tank and no cargo. `unladen`
|
|
33
|
+
* adds a full main tank, and is the figure the game and every outfitting tool call a
|
|
34
|
+
* ship's unladen mass; note that {@link ships!ShipLoadout.unladenMass} is the `dry`
|
|
35
|
+
* figure, because that is what a journal's `UnladenMass` states. `laden` adds a full
|
|
36
|
+
* hold on top.
|
|
37
|
+
*
|
|
38
|
+
* A ship cannot undock without fuel, so failing at `dry` or `unladen` is an error.
|
|
39
|
+
* Failing only at `laden` is a warning: the hold is the one load a pilot chooses.
|
|
21
40
|
*/
|
|
22
|
-
type
|
|
41
|
+
type ThrusterLoad = 'dry' | 'unladen' | 'laden';
|
|
23
42
|
/** Stable machine-readable constraint behind an `incompatibleModule` issue. */
|
|
24
43
|
type ModuleFitConstraint = 'immutableSlot' | 'armourRequired' | 'wrongHullArmour' | 'restrictedHull' | 'restrictedMount' | 'wrongCoreType' | 'hardpointRequired' | 'utilityRequired' | 'optionalInternalRequired' | 'coreModuleInOptionalSlot' | 'oversized' | 'unknownConstraint';
|
|
25
44
|
/**
|
|
@@ -34,8 +53,18 @@ type LoadoutIssueParams = Readonly<Record<string, LoadoutIssueParam>>;
|
|
|
34
53
|
interface LoadoutIssue {
|
|
35
54
|
/** Machine-readable reason. */
|
|
36
55
|
readonly code: LoadoutIssueCode;
|
|
37
|
-
/**
|
|
38
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Invalid input is an error; a missing required module makes the build incomplete;
|
|
58
|
+
* a warning is a build that flies, but not at every load it can carry.
|
|
59
|
+
*
|
|
60
|
+
* @remarks
|
|
61
|
+
* Only `error` clears {@link LoadoutValidation.valid}, and only `error` or
|
|
62
|
+
* `incomplete` clears {@link LoadoutValidation.complete}. A `warning` is a note
|
|
63
|
+
* against a legal, fully-mounted build, so it leaves both answers alone. Branch on
|
|
64
|
+
* {@link code} rather than on this: one severity covers findings that belong in
|
|
65
|
+
* different places on a panel.
|
|
66
|
+
*/
|
|
67
|
+
readonly severity: 'error' | 'incomplete' | 'warning';
|
|
39
68
|
/** Slot involved, in the build's own spelling when possible. */
|
|
40
69
|
readonly slot?: string;
|
|
41
70
|
/** Module symbol involved, when any. */
|
|
@@ -77,6 +106,18 @@ interface ValidationModule {
|
|
|
77
106
|
readonly limitGroup?: ModuleLimitGroup;
|
|
78
107
|
/** Per-ship count allowance increase this resolved module grants, when any. */
|
|
79
108
|
readonly limitIncrease?: ModuleLimitIncrease;
|
|
109
|
+
/**
|
|
110
|
+
* The mass this module can still move, in tonnes — a thruster's post-engineering
|
|
111
|
+
* `maxMass`, and the top of its mass curve.
|
|
112
|
+
*
|
|
113
|
+
* @remarks
|
|
114
|
+
* Present only on the fitted thrusters, and only where their record carries the
|
|
115
|
+
* figure. Above it the curve contributes nothing and the ship does not move, which
|
|
116
|
+
* is what {@link LoadoutValidationInput.mass} is weighed against. Leave it off every
|
|
117
|
+
* other module: a shield generator's curve has a `maxMass` of its own and is not a
|
|
118
|
+
* limit on the build's mass.
|
|
119
|
+
*/
|
|
120
|
+
readonly thrusterMaxMass?: number;
|
|
80
121
|
}
|
|
81
122
|
/** Input to {@link validateLoadout}. */
|
|
82
123
|
interface LoadoutValidationInput {
|
|
@@ -86,12 +127,57 @@ interface LoadoutValidationInput {
|
|
|
86
127
|
readonly slots: readonly BuildSlot[];
|
|
87
128
|
/** Fitted modules. Duplicate keys must be retained here so they can be diagnosed. */
|
|
88
129
|
readonly modules: readonly ValidationModule[];
|
|
130
|
+
/**
|
|
131
|
+
* What the assembled ship weighs, for the one rule that reads a figure: thrusters
|
|
132
|
+
* rated below the ship's mass cannot move it.
|
|
133
|
+
*
|
|
134
|
+
* Omit it to check structure alone.
|
|
135
|
+
*/
|
|
136
|
+
readonly mass?: LoadoutMass;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* What a build weighs at each load a thruster rating is read against, in tonnes.
|
|
140
|
+
*
|
|
141
|
+
* @remarks
|
|
142
|
+
* State as much as the build knows. {@link fuel} and {@link cargo} are *capacities*,
|
|
143
|
+
* not a chosen load: the rule weighs a full tank and a full hold, because those are the
|
|
144
|
+
* heaviest the build can become without being re-fitted. Leave one off and the loads
|
|
145
|
+
* above it simply go unchecked.
|
|
146
|
+
*/
|
|
147
|
+
interface LoadoutMass {
|
|
148
|
+
/**
|
|
149
|
+
* Hull plus every fitted module, an empty tank and no cargo — a build's
|
|
150
|
+
* {@link ships!ShipLoadout.unladenMass | unladenMass}.
|
|
151
|
+
*
|
|
152
|
+
* @remarks
|
|
153
|
+
* Despite that name this is the *dry* figure: a journal's `UnladenMass` excludes
|
|
154
|
+
* fuel, while the game's own "unladen mass" readout includes a full tank. The two
|
|
155
|
+
* are told apart here as {@link ThrusterLoad}'s `dry` and `unladen`.
|
|
156
|
+
*/
|
|
157
|
+
readonly dry: number;
|
|
158
|
+
/** Main-tank capacity. The reserve is not counted, as the flight model does not. */
|
|
159
|
+
readonly fuel?: number;
|
|
160
|
+
/** Cargo capacity, as fitted racks allow rather than as any hold currently holds. */
|
|
161
|
+
readonly cargo?: number;
|
|
89
162
|
}
|
|
90
163
|
/**
|
|
91
164
|
* Validate a resolved fitted build without importing any catalogue.
|
|
92
165
|
*
|
|
93
|
-
* @param input - Hull layout and resolved module classifications
|
|
166
|
+
* @param input - Hull layout and resolved module classifications, and optionally what
|
|
167
|
+
* the assembled ship weighs.
|
|
94
168
|
* @returns Structural validity, operational completeness, and diagnostics.
|
|
169
|
+
* @remarks
|
|
170
|
+
* Every rule but one reads the structure alone. The exception is
|
|
171
|
+
* `thrusterMassExceeded`: state {@link LoadoutValidationInput.mass} and the fitted
|
|
172
|
+
* thrusters' {@link ValidationModule.thrusterMaxMass}, and a ship too heavy for its own
|
|
173
|
+
* thrusters is reported, because above that rating the thruster curve contributes
|
|
174
|
+
* nothing and the ship does not move at all.
|
|
175
|
+
*
|
|
176
|
+
* The rating is weighed against each {@link ThrusterLoad} the input can state, and the
|
|
177
|
+
* lightest load that is already too heavy is the one reported. A ship that cannot move
|
|
178
|
+
* `dry` or `unladen` is an error — it cannot leave a pad, where the tank is always
|
|
179
|
+
* full. One that only fails `laden` is a warning, and leaves the build both valid and
|
|
180
|
+
* complete: the hold is the one load a pilot chooses.
|
|
95
181
|
* @example
|
|
96
182
|
* ```ts
|
|
97
183
|
* import { validateLoadout } from '@elite-dangerous-almanac/core/ships/loadout-validation';
|
|
@@ -99,9 +185,29 @@ interface LoadoutValidationInput {
|
|
|
99
185
|
* const result = validateLoadout({ shipSymbol: 'CustomHull', slots: [], modules: [] });
|
|
100
186
|
* result.valid; // -> true: no impossible fit was claimed
|
|
101
187
|
* result.complete; // -> true: the supplied layout has no required mounts
|
|
188
|
+
*
|
|
189
|
+
* const overloaded = validateLoadout({
|
|
190
|
+
* shipSymbol: 'CustomHull',
|
|
191
|
+
* slots: [],
|
|
192
|
+
* mass: { dry: 60.6, fuel: 25 },
|
|
193
|
+
* modules: [
|
|
194
|
+
* {
|
|
195
|
+
* slot: 'MainEngines',
|
|
196
|
+
* symbol: 'Int_Engine_Size2_Class1',
|
|
197
|
+
* requiresKnownSlot: false,
|
|
198
|
+
* fitError: null,
|
|
199
|
+
* thrusterMaxMass: 72,
|
|
200
|
+
* },
|
|
201
|
+
* ],
|
|
202
|
+
* });
|
|
203
|
+
* overloaded.valid; // -> false
|
|
204
|
+
* overloaded.issues[0]?.code; // -> 'thrusterMassExceeded'
|
|
205
|
+
* overloaded.issues[0]?.params?.load; // -> 'unladen': it is the full tank that sinks it
|
|
102
206
|
* ```
|
|
103
207
|
* @throws {TypeError} If `input.slots` is not an array.
|
|
208
|
+
* @throws {RangeError} If a figure in `input.mass`, or a module's `thrusterMaxMass`, is
|
|
209
|
+
* present and is not a finite number of zero or more.
|
|
104
210
|
*/
|
|
105
211
|
declare function validateLoadout(input: LoadoutValidationInput): LoadoutValidation;
|
|
106
212
|
|
|
107
|
-
export { type LoadoutIssue, type LoadoutIssueCode, type LoadoutIssueParam, type LoadoutIssueParams, type LoadoutValidation, type LoadoutValidationInput, type ModuleFitConstraint, type ValidationModule, validateLoadout };
|
|
213
|
+
export { type LoadoutIssue, type LoadoutIssueCode, type LoadoutIssueParam, type LoadoutIssueParams, type LoadoutMass, type LoadoutValidation, type LoadoutValidationInput, type ModuleFitConstraint, type ThrusterLoad, type ValidationModule, validateLoadout };
|