@elite-dangerous-almanac/core 0.2.7 → 0.2.9
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/astro/SOURCES.md +13 -12
- package/PROVENANCE/commodities/SOURCES.md +50 -6
- package/PROVENANCE/equipment/SOURCES.md +229 -29
- package/PROVENANCE/i18n/SOURCES.md +328 -73
- package/PROVENANCE/ships/SOURCES.md +352 -216
- package/README.md +30 -7
- package/THIRD_PARTY_NOTICES.md +12 -1
- package/dist/astro/body-rings.d.ts +2 -2
- package/dist/astro/codex-region-lookup.d.ts +1 -1
- package/dist/astro/codex-region-lookup.js +1 -1
- package/dist/astro/hand-authored-regions.d.ts +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-all.d.ts +4 -6
- package/dist/astro/nebulae-all.js +1 -1
- package/dist/astro/nebulae-all.js.map +1 -1
- package/dist/astro/nebulae-planetary.d.ts +4 -5
- package/dist/astro/nebulae-planetary.js +1 -1
- package/dist/astro/nebulae-procgen.d.ts +3 -3
- package/dist/astro/nebulae-real.d.ts +3 -3
- package/dist/astro/nebulae.d.ts +8 -8
- package/dist/astro/permit-locked-regions.d.ts +2 -2
- package/dist/astro/permit-locked-systems.d.ts +1 -1
- package/dist/astro/permit-locks.d.ts +2 -2
- package/dist/astro/procedural-system.d.ts +3 -3
- package/dist/astro/procedural-system.js +1 -1
- package/dist/astro/system-address.d.ts +1 -1
- package/dist/astro/system-address.js +1 -1
- package/dist/astro/system-name.js +1 -1
- package/dist/{chunk-XSLPWM5N.js → chunk-2J6NNI3Y.js} +1 -1
- package/dist/{chunk-DWRNXUAX.js → chunk-2KIZN3BY.js} +1 -1
- package/dist/{chunk-J7BM5NGK.js → chunk-2TY42PTF.js} +1 -1
- package/dist/{chunk-MVBVXK3G.js → chunk-3GNYPM6J.js} +1 -1
- package/dist/{chunk-MVBVXK3G.js.map → chunk-3GNYPM6J.js.map} +1 -1
- package/dist/{chunk-773VO2GK.js → chunk-4T3TTYUT.js} +1 -1
- package/dist/{chunk-773VO2GK.js.map → chunk-4T3TTYUT.js.map} +1 -1
- package/dist/chunk-7C7NJWCF.js +1 -0
- package/dist/chunk-7C7NJWCF.js.map +1 -0
- package/dist/{chunk-FMA36V6A.js → chunk-7Y5EK2VO.js} +1 -1
- package/dist/{chunk-FMA36V6A.js.map → chunk-7Y5EK2VO.js.map} +1 -1
- package/dist/chunk-AC3U7LRK.js +1 -0
- package/dist/{chunk-MGRDB2BZ.js.map → chunk-AC3U7LRK.js.map} +1 -1
- package/dist/{chunk-BJU27V6C.js → chunk-AUBV6S7V.js} +1 -1
- package/dist/{chunk-BJU27V6C.js.map → chunk-AUBV6S7V.js.map} +1 -1
- package/dist/{chunk-DI5RXSJR.js → chunk-BVLBS2QY.js} +1 -1
- package/dist/{chunk-DI5RXSJR.js.map → chunk-BVLBS2QY.js.map} +1 -1
- package/dist/chunk-C3YZ5KTA.js +1 -0
- package/dist/chunk-C3YZ5KTA.js.map +1 -0
- package/dist/{chunk-6UNAD74Z.js → chunk-C4FUV6GF.js} +1 -1
- package/dist/{chunk-6UNAD74Z.js.map → chunk-C4FUV6GF.js.map} +1 -1
- package/dist/chunk-CEF7SMB2.js +1 -0
- package/dist/chunk-CEF7SMB2.js.map +1 -0
- package/dist/chunk-E2HDF6PJ.js +1 -0
- package/dist/chunk-E2HDF6PJ.js.map +1 -0
- package/dist/{chunk-OFZGNWBT.js → chunk-ETREYN5U.js} +1 -1
- package/dist/{chunk-OFZGNWBT.js.map → chunk-ETREYN5U.js.map} +1 -1
- package/dist/{chunk-KBCA4GEZ.js → chunk-FP2TQJZP.js} +1 -1
- package/dist/{chunk-F7VWRDSL.js → chunk-G7WARJ3X.js} +1 -1
- package/dist/chunk-G7WARJ3X.js.map +1 -0
- package/dist/{chunk-Z4OUB4SJ.js → chunk-GLTCCDN5.js} +1 -1
- package/dist/{chunk-Z4OUB4SJ.js.map → chunk-GLTCCDN5.js.map} +1 -1
- package/dist/chunk-GVNTKCVF.js +1 -0
- package/dist/chunk-GVNTKCVF.js.map +1 -0
- package/dist/{chunk-Q6YDPREF.js → chunk-GZLD7RTK.js} +1 -1
- package/dist/{chunk-Q6YDPREF.js.map → chunk-GZLD7RTK.js.map} +1 -1
- package/dist/chunk-HIJR7DOC.js +1 -0
- package/dist/chunk-HIJR7DOC.js.map +1 -0
- package/dist/{chunk-ETWMPMZP.js → chunk-K5JK3XQB.js} +1 -1
- package/dist/{chunk-GRIK3EDH.js → chunk-KY7KSPU6.js} +1 -1
- package/dist/{chunk-GRIK3EDH.js.map → chunk-KY7KSPU6.js.map} +1 -1
- package/dist/{chunk-EHFHRQEP.js → chunk-M4STXLXO.js} +1 -1
- package/dist/{chunk-EHFHRQEP.js.map → chunk-M4STXLXO.js.map} +1 -1
- package/dist/{chunk-NZXSIHAW.js → chunk-OSMBAFRW.js} +1 -1
- package/dist/{chunk-NZXSIHAW.js.map → chunk-OSMBAFRW.js.map} +1 -1
- package/dist/chunk-PIU24HRN.js +1 -0
- package/dist/chunk-PIU24HRN.js.map +1 -0
- package/dist/{chunk-ELT3FEA4.js → chunk-PKKBYBL4.js} +1 -1
- package/dist/{chunk-ELT3FEA4.js.map → chunk-PKKBYBL4.js.map} +1 -1
- package/dist/{chunk-6HMIF2RJ.js → chunk-Q647OXON.js} +1 -1
- package/dist/{chunk-6HMIF2RJ.js.map → chunk-Q647OXON.js.map} +1 -1
- package/dist/{chunk-BMQM4JBL.js → chunk-QPT2WJYN.js} +1 -1
- package/dist/{chunk-BMQM4JBL.js.map → chunk-QPT2WJYN.js.map} +1 -1
- package/dist/{chunk-A6OINYNP.js → chunk-R2AEZYX7.js} +1 -1
- package/dist/chunk-RA4YJBU5.js +1 -0
- package/dist/chunk-RA4YJBU5.js.map +1 -0
- package/dist/{chunk-MRLUWHGI.js → chunk-RJ3ZLQRB.js} +1 -1
- package/dist/{chunk-MRLUWHGI.js.map → chunk-RJ3ZLQRB.js.map} +1 -1
- package/dist/chunk-SFEQXUIA.js +1 -0
- package/dist/chunk-SIL356HB.js +1 -0
- package/dist/chunk-SIL356HB.js.map +1 -0
- package/dist/chunk-SS7HVNP5.js +1 -0
- package/dist/chunk-SS7HVNP5.js.map +1 -0
- package/dist/chunk-TRGHPX2O.js +1 -0
- package/dist/chunk-TRGHPX2O.js.map +1 -0
- package/dist/{chunk-GMTAFUAG.js → chunk-TYRH73MO.js} +1 -1
- package/dist/{chunk-GMTAFUAG.js.map → chunk-TYRH73MO.js.map} +1 -1
- package/dist/{chunk-7TVFV3VO.js → chunk-U3IRMXMR.js} +1 -1
- package/dist/{chunk-A7IVMYNF.js → chunk-U73MBQ45.js} +1 -1
- package/dist/{chunk-A7IVMYNF.js.map → chunk-U73MBQ45.js.map} +1 -1
- package/dist/{chunk-IZIIGK3W.js → chunk-UE22QU7A.js} +1 -1
- package/dist/{chunk-IZIIGK3W.js.map → chunk-UE22QU7A.js.map} +1 -1
- package/dist/{chunk-DBDCOHI4.js → chunk-UI5RROGI.js} +1 -1
- package/dist/{chunk-DBDCOHI4.js.map → chunk-UI5RROGI.js.map} +1 -1
- package/dist/chunk-URRPEUIK.js +1 -0
- package/dist/{chunk-QJECDMQQ.js.map → chunk-URRPEUIK.js.map} +1 -1
- package/dist/chunk-UTWZZOSA.js +1 -0
- package/dist/chunk-UTWZZOSA.js.map +1 -0
- package/dist/{chunk-ZEN5K3GE.js → chunk-UVX7RCMP.js} +1 -1
- package/dist/{chunk-ZEN5K3GE.js.map → chunk-UVX7RCMP.js.map} +1 -1
- package/dist/{chunk-7ATBEOVC.js → chunk-WG4DPXJI.js} +1 -1
- package/dist/{chunk-XFDMCPDW.js → chunk-WZIBBJHA.js} +1 -1
- package/dist/{chunk-XFDMCPDW.js.map → chunk-WZIBBJHA.js.map} +1 -1
- package/dist/{chunk-7S7ZTZZY.js → chunk-X3MXPE7G.js} +1 -1
- package/dist/{chunk-7S7ZTZZY.js.map → chunk-X3MXPE7G.js.map} +1 -1
- package/dist/{chunk-SD6GNFDX.js → chunk-YBE5M27G.js} +1 -1
- package/dist/{chunk-SD6GNFDX.js.map → chunk-YBE5M27G.js.map} +1 -1
- package/dist/chunk-ZBUTGTZ3.js +1 -0
- package/dist/chunk-ZBUTGTZ3.js.map +1 -0
- package/dist/commodities/commodities-all.d.ts +2 -2
- package/dist/commodities/commodities-all.js +1 -1
- package/dist/commodities/commodities-rare.d.ts +3 -4
- package/dist/commodities/commodities-rare.js +1 -1
- package/dist/commodities/commodities-standard.d.ts +7 -7
- package/dist/commodities/commodities-standard.js +1 -1
- package/dist/commodities/commodities.d.ts +12 -12
- package/dist/commodities/commodities.js +1 -1
- package/dist/commodities/index.js +1 -1
- package/dist/equipment/engineering.d.ts +58 -1
- package/dist/equipment/engineering.js +1 -1
- package/dist/equipment/index.d.ts +14 -3
- package/dist/equipment/index.js +1 -1
- package/dist/equipment/modification-journal.js +1 -1
- package/dist/equipment/modifications.d.ts +43 -11
- package/dist/equipment/modifications.js +1 -1
- package/dist/equipment/suits.d.ts +2 -115
- package/dist/equipment/suits.js +1 -1
- package/dist/equipment/tools.d.ts +102 -0
- package/dist/equipment/tools.js +1 -0
- package/dist/equipment/tools.js.map +1 -0
- package/dist/equipment/upgrade-costs.d.ts +2 -3
- package/dist/equipment/upgrade-costs.js +1 -1
- package/dist/equipment/weapons.d.ts +2 -121
- package/dist/equipment/weapons.js +1 -1
- package/dist/i18n/blueprints.d.ts +2 -3
- package/dist/i18n/blueprints.js +1 -1
- package/dist/i18n/commodities.d.ts +36 -0
- package/dist/i18n/commodities.js +1 -0
- package/dist/i18n/commodities.js.map +1 -0
- package/dist/i18n/experimental-effect-descriptions.d.ts +5 -6
- package/dist/i18n/experimental-effect-descriptions.js +1 -1
- package/dist/i18n/experimental-effects.d.ts +2 -3
- package/dist/i18n/experimental-effects.js +1 -1
- package/dist/i18n/index.d.ts +87 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/materials.d.ts +2 -4
- package/dist/i18n/materials.js +1 -1
- package/dist/i18n/micro-resources.d.ts +2 -4
- package/dist/i18n/micro-resources.js +1 -1
- package/dist/i18n/module-families.d.ts +3 -5
- package/dist/i18n/module-families.js +1 -1
- package/dist/i18n/modules.d.ts +3 -6
- package/dist/i18n/modules.js +1 -1
- package/dist/i18n/personal-modifications.d.ts +66 -0
- package/dist/i18n/personal-modifications.js +1 -0
- package/dist/i18n/personal-modifications.js.map +1 -0
- package/dist/i18n/personal-tools.d.ts +33 -0
- package/dist/i18n/personal-tools.js +1 -0
- package/dist/i18n/personal-tools.js.map +1 -0
- package/dist/i18n/personal-weapons.d.ts +32 -0
- package/dist/i18n/personal-weapons.js +1 -0
- package/dist/i18n/personal-weapons.js.map +1 -0
- package/dist/i18n/pre-engineered.d.ts +1 -1
- package/dist/i18n/slots.d.ts +2 -2
- package/dist/i18n/suits.d.ts +89 -0
- package/dist/i18n/suits.js +1 -0
- package/dist/i18n/suits.js.map +1 -0
- package/dist/materials/index.d.ts +4 -3
- package/dist/materials/index.js +1 -1
- package/dist/materials/materials-all.d.ts +2 -2
- package/dist/materials/materials-all.js +1 -1
- package/dist/materials/materials-raw.d.ts +3 -4
- package/dist/materials/materials-raw.js +1 -1
- package/dist/materials/materials.d.ts +18 -15
- package/dist/materials/materials.js +1 -1
- package/dist/materials/micro-resources-all.d.ts +2 -2
- package/dist/materials/micro-resources-all.js +1 -1
- package/dist/materials/micro-resources-component.d.ts +2 -2
- package/dist/materials/micro-resources-consumable.d.ts +2 -2
- package/dist/materials/micro-resources-data.d.ts +2 -2
- package/dist/materials/micro-resources-item.d.ts +2 -2
- package/dist/materials/micro-resources.d.ts +17 -14
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/ammunition.d.ts +4 -4
- package/dist/ships/blueprint-costs.d.ts +13 -13
- package/dist/ships/blueprint-costs.js +1 -1
- package/dist/ships/blueprint-journal.d.ts +3 -3
- package/dist/ships/blueprint-journal.js +1 -1
- package/dist/ships/blueprints.d.ts +3 -3
- package/dist/ships/build-metrics.d.ts +2 -1
- package/dist/ships/build-metrics.js +1 -1
- package/dist/ships/default-loadouts.d.ts +2 -3
- package/dist/ships/default-loadouts.js +1 -1
- package/dist/ships/engineering-options.d.ts +29 -32
- package/dist/ships/engineering-options.js +1 -1
- package/dist/ships/engineering.d.ts +1 -2
- package/dist/ships/engineering.js +1 -1
- package/dist/ships/experimental-effect-costs.d.ts +1 -1
- package/dist/ships/gunsights.d.ts +3 -3
- package/dist/ships/heat.d.ts +1 -1
- package/dist/ships/index.d.ts +4 -5
- package/dist/ships/index.js +1 -1
- package/dist/ships/loadout-validation.d.ts +8 -3
- package/dist/ships/loadout-validation.js +1 -1
- package/dist/ships/module-families.d.ts +1 -1
- package/dist/ships/modules-all.d.ts +2 -3
- package/dist/ships/modules-all.js +1 -1
- package/dist/ships/modules-core.d.ts +3 -3
- package/dist/ships/modules-hardpoint.d.ts +4 -5
- package/dist/ships/modules-hardpoint.js +1 -1
- package/dist/ships/modules-internal.d.ts +19 -9
- package/dist/ships/modules-internal.js +1 -1
- package/dist/ships/modules-utility.d.ts +3 -4
- package/dist/ships/modules-utility.js +1 -1
- package/dist/ships/modules.d.ts +31 -25
- package/dist/ships/modules.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +1 -1
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/pre-engineered.d.ts +9 -10
- package/dist/ships/pre-engineered.js +1 -1
- package/dist/ships/ship-loadout.d.ts +13 -7
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/ships.d.ts +1 -2
- package/dist/ships/ships.js +1 -1
- package/dist/ships/slots.d.ts +5 -5
- package/dist/suits-B37rAORs.d.ts +414 -0
- package/dist/{system-address-cyJaeZIS.d.ts → system-address-DmzXRD48.d.ts} +6 -4
- package/package.json +25 -1
- package/dist/chunk-4U7KYQGK.js +0 -1
- package/dist/chunk-4U7KYQGK.js.map +0 -1
- package/dist/chunk-6GJHUWMO.js +0 -1
- package/dist/chunk-6GJHUWMO.js.map +0 -1
- package/dist/chunk-77TT4K53.js +0 -1
- package/dist/chunk-B7EYTZRK.js +0 -1
- package/dist/chunk-B7EYTZRK.js.map +0 -1
- package/dist/chunk-C5HG4GJI.js +0 -1
- package/dist/chunk-C5HG4GJI.js.map +0 -1
- package/dist/chunk-F7VWRDSL.js.map +0 -1
- package/dist/chunk-KLC5XT6F.js +0 -1
- package/dist/chunk-KLC5XT6F.js.map +0 -1
- package/dist/chunk-MGRDB2BZ.js +0 -1
- package/dist/chunk-QJECDMQQ.js +0 -1
- package/dist/chunk-TSEDU73T.js +0 -1
- package/dist/chunk-TSEDU73T.js.map +0 -1
- package/dist/chunk-XRGECU7S.js +0 -1
- package/dist/chunk-XRGECU7S.js.map +0 -1
- /package/dist/{chunk-XSLPWM5N.js.map → chunk-2J6NNI3Y.js.map} +0 -0
- /package/dist/{chunk-DWRNXUAX.js.map → chunk-2KIZN3BY.js.map} +0 -0
- /package/dist/{chunk-J7BM5NGK.js.map → chunk-2TY42PTF.js.map} +0 -0
- /package/dist/{chunk-KBCA4GEZ.js.map → chunk-FP2TQJZP.js.map} +0 -0
- /package/dist/{chunk-ETWMPMZP.js.map → chunk-K5JK3XQB.js.map} +0 -0
- /package/dist/{chunk-A6OINYNP.js.map → chunk-R2AEZYX7.js.map} +0 -0
- /package/dist/{chunk-77TT4K53.js.map → chunk-SFEQXUIA.js.map} +0 -0
- /package/dist/{chunk-7TVFV3VO.js.map → chunk-U3IRMXMR.js.map} +0 -0
- /package/dist/{chunk-7ATBEOVC.js.map → chunk-WG4DPXJI.js.map} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Commodity } from './commodities.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* The catalogue of **rare** market commodities — the
|
|
5
|
-
*
|
|
4
|
+
* The catalogue of **rare** market commodities — the location-specific luxury goods,
|
|
5
|
+
* each produced at a single station and worth more the further it is carried.
|
|
6
6
|
*
|
|
7
7
|
* Every record here is a rare commodity (`rare: true`); the standard market goods
|
|
8
8
|
* live in `./commodities-standard`. Search it with the query functions in
|
|
@@ -14,7 +14,7 @@ import { Commodity } from './commodities.js';
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Every rare commodity, in Frontier's registry order.
|
|
18
18
|
*
|
|
19
19
|
* @remarks
|
|
20
20
|
* Every record has `rare: true`. The array and its records are frozen. A rare's
|
|
@@ -25,7 +25,6 @@ import { Commodity } from './commodities.js';
|
|
|
25
25
|
* ```ts
|
|
26
26
|
* import { RARE_COMMODITIES } from '@elite-dangerous-almanac/core/commodities/commodities-rare';
|
|
27
27
|
*
|
|
28
|
-
* RARE_COMMODITIES.length; // -> 142
|
|
29
28
|
* RARE_COMMODITIES.find((c) => c.symbol === 'LavianBrandy')?.name; // -> 'Lavian Brandy'
|
|
30
29
|
* ```
|
|
31
30
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{RARE_COMMODITIES}from"../chunk-
|
|
1
|
+
export{RARE_COMMODITIES}from"../chunk-TYRH73MO.js"; //# sourceMappingURL=commodities-rare.js.map
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { Commodity } from './commodities.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* The catalogue of **standard** market commodities — the
|
|
5
|
-
*
|
|
4
|
+
* The catalogue of **standard** market commodities — the goods traded at station
|
|
5
|
+
* commodity markets, across every market group.
|
|
6
6
|
*
|
|
7
7
|
* Every record here is a standard commodity (`rare: false`); the rare goods live in
|
|
8
8
|
* `./commodities-rare`. Search it with the query functions in `./commodities`.
|
|
9
9
|
*
|
|
10
|
-
* Data from EDCD FDevIDs (`commodity.csv`),
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* Data from EDCD FDevIDs (`commodity.csv`), from a player-journal observation with an
|
|
11
|
+
* in-game category check, and from two readings of the running game's own commodity
|
|
12
|
+
* registry, whose difference is a batch of mineral and chemical goods the FDevIDs
|
|
13
|
+
* snapshot does not carry; see
|
|
13
14
|
* [`data/commodities/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/commodities/SOURCES.md).
|
|
14
15
|
*
|
|
15
16
|
* @packageDocumentation
|
|
16
17
|
*/
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
|
-
*
|
|
20
|
+
* Every standard commodity, in Frontier's registry order.
|
|
20
21
|
*
|
|
21
22
|
* @remarks
|
|
22
23
|
* Every record has `rare: false`. The array and its records are frozen.
|
|
@@ -25,7 +26,6 @@ import { Commodity } from './commodities.js';
|
|
|
25
26
|
* ```ts
|
|
26
27
|
* import { COMMODITIES } from '@elite-dangerous-almanac/core/commodities/commodities-standard';
|
|
27
28
|
*
|
|
28
|
-
* COMMODITIES.length; // -> 257
|
|
29
29
|
* COMMODITIES.find((c) => c.symbol === 'Gold')?.category; // -> 'Metals'
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{COMMODITIES}from"../chunk-
|
|
1
|
+
export{COMMODITIES}from"../chunk-Q647OXON.js"; //# sourceMappingURL=commodities-standard.js.map
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* Market-commodity types and lookups.
|
|
3
3
|
*
|
|
4
4
|
* Elite Dangerous trades goods at station commodity markets. Frontier splits them
|
|
5
|
-
* into two registries: the
|
|
6
|
-
*
|
|
5
|
+
* into two registries: the **standard** commodities on every market, and the
|
|
6
|
+
* **rare** commodities each produced at a single station. This module holds the
|
|
7
7
|
* {@link Commodity} record shape and the functions that find one
|
|
8
8
|
* ({@link getCommodityBySymbol}, {@link getCommodityByName},
|
|
9
9
|
* {@link commoditiesInCategory}).
|
|
10
10
|
*
|
|
11
|
-
* **Every lookup searches
|
|
11
|
+
* **Every lookup searches every commodity by default** — standard and rare — so
|
|
12
12
|
* you do not have to know which registry a good belongs to before you can find it:
|
|
13
13
|
*
|
|
14
14
|
* ```ts
|
|
@@ -18,20 +18,20 @@
|
|
|
18
18
|
* The two **by-key** lookups take an optional second argument to **narrow** the search
|
|
19
19
|
* to a subset — one registry's catalogue, or any array you have filtered yourself:
|
|
20
20
|
*
|
|
21
|
-
* | Module | Export |
|
|
21
|
+
* | Module | Export | Holds |
|
|
22
22
|
* | --- | --- | --- |
|
|
23
|
-
* | `./commodities-standard` | `COMMODITIES` |
|
|
24
|
-
* | `./commodities-rare` | `RARE_COMMODITIES` |
|
|
25
|
-
* | `./commodities-all` | `ALL_COMMODITIES` |
|
|
23
|
+
* | `./commodities-standard` | `COMMODITIES` | standard only |
|
|
24
|
+
* | `./commodities-rare` | `RARE_COMMODITIES` | rares only |
|
|
25
|
+
* | `./commodities-all` | `ALL_COMMODITIES` | both (the default) |
|
|
26
26
|
*
|
|
27
27
|
* It narrows *results*, not bundle size: importing a lookup pulls both catalogues,
|
|
28
|
-
* since that is what it falls back to — ~30 KiB minified for
|
|
28
|
+
* since that is what it falls back to — ~30 KiB minified for the pair. Every record
|
|
29
29
|
* carries a {@link Commodity.rare} flag, so a subset is one `.filter()` away.
|
|
30
30
|
*
|
|
31
31
|
* **Only `ALL_COMMODITIES` itself is indexed.** A by-key lookup answers from an O(1)
|
|
32
32
|
* index when the catalogue you pass *is* `ALL_COMMODITIES` — the same object, not a
|
|
33
33
|
* copy — and scans linearly otherwise, including for `[...ALL_COMMODITIES]`, which
|
|
34
|
-
* holds the same
|
|
34
|
+
* holds the same records. Omitting the argument always takes the indexed path, so
|
|
35
35
|
* pass one only when you mean to exclude the other registry.
|
|
36
36
|
*
|
|
37
37
|
* {@link commoditiesInCategory} takes no catalogue: it returns an array, so narrowing
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
* These are Frontier's own category strings (spelled with spaces where the game
|
|
54
54
|
* spells them so, e.g. `"Consumer Items"`). Both standard and rare commodities draw
|
|
55
55
|
* from the same set; the rare registry uses only a subset of these groups.
|
|
56
|
-
* `"NonMarketable"` is Frontier's group for goods that are not freely traded
|
|
57
|
-
*
|
|
56
|
+
* `"NonMarketable"` is Frontier's group for goods that are not freely traded, such as
|
|
57
|
+
* Limpets.
|
|
58
58
|
*/
|
|
59
59
|
type CommodityCategory = 'Chemicals' | 'Consumer Items' | 'Foods' | 'Industrial Materials' | 'Legal Drugs' | 'Machinery' | 'Medicines' | 'Metals' | 'Minerals' | 'NonMarketable' | 'Salvage' | 'Slavery' | 'Technology' | 'Textiles' | 'Waste' | 'Weapons';
|
|
60
60
|
/**
|
|
@@ -95,7 +95,7 @@ interface Commodity {
|
|
|
95
95
|
*
|
|
96
96
|
* @param symbol - The internal symbol, e.g. `"Platinum"`, or the lower-cased form the
|
|
97
97
|
* market/journal reports (`"platinum"`). Leading/trailing whitespace is ignored.
|
|
98
|
-
* @param commodities - Optional subset to search instead of
|
|
98
|
+
* @param commodities - Optional subset to search instead of every commodity —
|
|
99
99
|
* `COMMODITIES` (standard only), `RARE_COMMODITIES`, or any array you have filtered
|
|
100
100
|
* yourself. Omit it unless you specifically want to exclude the other registry: the
|
|
101
101
|
* indexed O(1) path is taken only when the argument is omitted or is `ALL_COMMODITIES`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{commoditiesInCategory,getCommodityByName,getCommodityBySymbol}from"../chunk-
|
|
1
|
+
export{commoditiesInCategory,getCommodityByName,getCommodityBySymbol}from"../chunk-2TY42PTF.js"; //# sourceMappingURL=commodities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{commoditiesInCategory,getCommodityByName,getCommodityBySymbol}from"../chunk-
|
|
1
|
+
export{commoditiesInCategory,getCommodityByName,getCommodityBySymbol}from"../chunk-2TY42PTF.js";export{ALL_COMMODITIES}from"../chunk-SFEQXUIA.js";export{RARE_COMMODITIES}from"../chunk-TYRH73MO.js";export{COMMODITIES}from"../chunk-Q647OXON.js"; //# sourceMappingURL=index.js.map
|
|
@@ -25,5 +25,62 @@ interface PersonalEngineeringIngredient {
|
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
27
|
declare function sumPersonalEngineeringIngredients(...recipes: readonly (readonly PersonalEngineeringIngredient[])[]): PersonalEngineeringIngredient[];
|
|
28
|
+
/**
|
|
29
|
+
* One stat multiplier an engineer-applied modification puts on a suit, a handheld
|
|
30
|
+
* weapon or a suit tool.
|
|
31
|
+
*
|
|
32
|
+
* @remarks
|
|
33
|
+
* A personal modification is applied in one step: it has no grade and no quality roll,
|
|
34
|
+
* so a modifier is a single factor rather than the `[min, max]` band a ship blueprint
|
|
35
|
+
* feature carries. `1` is the no-op value and is never stored — a recipe lists only the
|
|
36
|
+
* stats it actually moves.
|
|
37
|
+
*/
|
|
38
|
+
interface PersonalModifier {
|
|
39
|
+
/**
|
|
40
|
+
* The stat the factor multiplies, named as the equipment catalogues name it —
|
|
41
|
+
* `"magazineSize"`, `"effectiveRange"`, `"batteryCapacity"`, `"goodsCapacity"`.
|
|
42
|
+
*
|
|
43
|
+
* @remarks
|
|
44
|
+
* Some stats the game shows on foot have no catalogue field, because the panel
|
|
45
|
+
* shows no base for them. They are named for what they are: `"meleeDamage"`,
|
|
46
|
+
* `"sprintDuration"`, and the pressurised and unpressurised firing audible ranges.
|
|
47
|
+
*
|
|
48
|
+
* `"toolEnergyDrain"` names no field either, but its bases are catalogued: it is a
|
|
49
|
+
* tool's `powerUsage` and the Energylink's `overloadPowerUsage` in
|
|
50
|
+
* `equipment/tools`. The Energylink's `dischargeRate` carries its own name because
|
|
51
|
+
* the game leaves it alone, so hand `applyPersonalModifiers` the base the factor
|
|
52
|
+
* applies to.
|
|
53
|
+
*/
|
|
54
|
+
readonly stat: string;
|
|
55
|
+
/** The factor the stat is multiplied by, e.g. `1.5` for a 50% increase. */
|
|
56
|
+
readonly multiplier: number;
|
|
57
|
+
/** Whether the game rounds the result up to a whole number, as it does a magazine. */
|
|
58
|
+
readonly roundUp?: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Apply every modifier for one stat to its base value.
|
|
62
|
+
*
|
|
63
|
+
* A **resistance** is the exception, exactly as it is for ship engineering: the factor
|
|
64
|
+
* multiplies the *damage taken*, so a resistance compounds on `1 − r`. Damage Resistance
|
|
65
|
+
* is `×0.9` on damage taken, which turns a `0.5` resistance into `0.55` rather than
|
|
66
|
+
* `0.45`. Any stat whose name ends in `Resistance` is treated this way.
|
|
67
|
+
*
|
|
68
|
+
* @param stat - Stat to apply, e.g. `"magazineSize"`. Modifiers naming another stat are
|
|
69
|
+
* skipped, so a whole suit's or weapon's modifier list can be passed for each stat.
|
|
70
|
+
* @param base - The catalogue value before engineering.
|
|
71
|
+
* @param modifiers - Modifiers to fold in, in order.
|
|
72
|
+
* @returns The modified value, rounded to six decimals to keep binary floating-point
|
|
73
|
+
* noise out of a displayed stat.
|
|
74
|
+
* @throws {TypeError} If `stat` is not a string or `base` is not a finite number.
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* import { applyPersonalModifiers } from '@elite-dangerous-almanac/core/equipment/engineering';
|
|
78
|
+
* import { getPersonalModification } from '@elite-dangerous-almanac/core/equipment/modifications';
|
|
79
|
+
*
|
|
80
|
+
* const clipSize = getPersonalModification('weapon_clipsize')?.modifiers ?? [];
|
|
81
|
+
* applyPersonalModifiers('magazineSize', 45, clipSize); // -> 68
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
declare function applyPersonalModifiers(stat: string, base: number, modifiers: readonly PersonalModifier[]): number;
|
|
28
85
|
|
|
29
|
-
export { type PersonalEngineeringIngredient, sumPersonalEngineeringIngredients };
|
|
86
|
+
export { type PersonalEngineeringIngredient, type PersonalModifier, applyPersonalModifiers, sumPersonalEngineeringIngredients };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{sumPersonalEngineeringIngredients}from"../chunk-
|
|
1
|
+
export{applyPersonalModifiers,sumPersonalEngineeringIngredients}from"../chunk-SIL356HB.js"; //# sourceMappingURL=engineering.js.map
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Elite Dangerous personal equipment: Odyssey suits, handheld weapons, suit tools,
|
|
3
|
+
* Pioneer Supplies grade progression and engineer-applied modifications.
|
|
4
|
+
*
|
|
5
|
+
* Material shopping lists are deliberately leaf-only: import grade-upgrade costs from
|
|
6
|
+
* `equipment/upgrade-costs` and modification costs from
|
|
7
|
+
* `equipment/modification-costs`. Keeping them off this barrel lets identity and stat
|
|
8
|
+
* lookups avoid bundling recipe ingredients.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
export { E as EquipmentGrade, P as PERSONAL_WEAPONS, a as PersonalDamageType, b as PersonalFireMode, c as PersonalMount, d as PersonalMountKey, e as PersonalWeapon, f as PersonalWeaponClass, g as PersonalWeaponEngineeringType, h as PersonalWeaponGrade, i as PersonalWeaponMetrics, j as PersonalWeaponSlot, R as ReloadTime, S as SUITS, k as ScopeMagnification, l as Suit, m as SuitGrade, W as WeaponUpgradeGroup, n as getPersonalWeaponByName, o as getPersonalWeaponBySymbol, p as getPersonalWeaponGrade, q as getSuitByFamily, r as getSuitByName, s as getSuitBySymbol, t as getSuitGrade, u as personalWeaponMetrics } from '../suits-B37rAORs.js';
|
|
13
|
+
export { PERSONAL_TOOLS, PersonalTool, getPersonalToolById } from './tools.js';
|
|
14
|
+
export { PersonalEngineeringIngredient, PersonalModifier, applyPersonalModifiers, sumPersonalEngineeringIngredients } from './engineering.js';
|
|
4
15
|
export { PERSONAL_MODIFICATIONS, PersonalModification, PersonalModificationTarget, getPersonalModification } from './modifications.js';
|
|
5
16
|
export { resolvePersonalModificationForWeapon } from './modification-journal.js';
|
package/dist/equipment/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{resolvePersonalModificationForWeapon}from"../chunk-
|
|
1
|
+
export{resolvePersonalModificationForWeapon}from"../chunk-R2AEZYX7.js";export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-AC3U7LRK.js";export{PERSONAL_TOOLS,getPersonalToolById}from"../chunk-CEF7SMB2.js";export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade}from"../chunk-UTWZZOSA.js";export{PERSONAL_WEAPONS,getPersonalWeaponByName,getPersonalWeaponBySymbol,getPersonalWeaponGrade,personalWeaponMetrics}from"../chunk-PIU24HRN.js"; export{applyPersonalModifiers,sumPersonalEngineeringIngredients}from"../chunk-SIL356HB.js"; //# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{resolvePersonalModificationForWeapon}from"../chunk-
|
|
1
|
+
export{resolvePersonalModificationForWeapon}from"../chunk-R2AEZYX7.js"; //# sourceMappingURL=modification-journal.js.map
|
|
@@ -1,18 +1,27 @@
|
|
|
1
|
+
import { PersonalModifier } from './engineering.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Engineer-applied modification recipes for Odyssey suits and handheld weapons.
|
|
3
5
|
*
|
|
4
6
|
* The catalogue is keyed by recipe symbol, following the same pattern as ship
|
|
5
7
|
* blueprints and experimental effects. Most keys are the exact symbol written by a
|
|
6
|
-
* journal loadout. Greater Range, Headshot Damage and
|
|
7
|
-
* technology-specific recipes; use `equipment/modification-journal`
|
|
8
|
-
* journal symbols against a weapon.
|
|
8
|
+
* journal loadout. Greater Range, Headshot Damage and Improved Hip Fire Accuracy
|
|
9
|
+
* each have three technology-specific recipes; use `equipment/modification-journal`
|
|
10
|
+
* to resolve those journal symbols against a weapon.
|
|
9
11
|
*
|
|
10
12
|
* Material shopping lists live separately in `equipment/modification-costs`, so reading
|
|
11
13
|
* names and engineer availability does not bundle every recipe ingredient.
|
|
12
14
|
*
|
|
13
15
|
* @packageDocumentation
|
|
14
16
|
*/
|
|
15
|
-
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Equipment kind a personal modification can be installed on.
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* A suit tool is not one of them. The one recipe that changes a tool, Reduced Tool
|
|
23
|
+
* Battery Consumption, is installed on the suit and carries `"suit"`.
|
|
24
|
+
*/
|
|
16
25
|
type PersonalModificationTarget = 'suit' | 'weapon';
|
|
17
26
|
/** One permanent personal-equipment engineering recipe. */
|
|
18
27
|
interface PersonalModification {
|
|
@@ -22,21 +31,44 @@ interface PersonalModification {
|
|
|
22
31
|
readonly target: PersonalModificationTarget;
|
|
23
32
|
/** English names of the on-foot engineers who offer the modification. */
|
|
24
33
|
readonly engineers: readonly string[];
|
|
34
|
+
/**
|
|
35
|
+
* The stat multipliers the modification applies, in the order the game applies
|
|
36
|
+
* them. Fold one onto a base value with `applyPersonalModifiers` from
|
|
37
|
+
* `equipment/engineering`.
|
|
38
|
+
*
|
|
39
|
+
* A modifier names a stat of whatever it modifies, which is usually the equipment
|
|
40
|
+
* the recipe is installed on. Two suit modifications move something else, and a
|
|
41
|
+
* consumer has to know about both: Extra Ammo Capacity multiplies a *weapon's*
|
|
42
|
+
* `reserveAmmo`, and Reduced Tool Battery Consumption halves a *tool's*
|
|
43
|
+
* `powerUsage` and the Energylink's `overloadPowerUsage` under the name
|
|
44
|
+
* `toolEnergyDrain`.
|
|
45
|
+
*
|
|
46
|
+
* @remarks
|
|
47
|
+
* **Empty** where the recipe changes nothing this catalogue names. Night Vision,
|
|
48
|
+
* Scope, Reload Speed, Stowed reloading and Combat Movement Speed have no numeric
|
|
49
|
+
* magnitude at all — Scope swaps the sight, and each weapon's two magnifications
|
|
50
|
+
* are on its own `scopeMagnification`; Reload Speed shortens the reload, and each
|
|
51
|
+
* weapon's two reload times are on its own `reloadTime`. Faster Handling, Improved
|
|
52
|
+
* Hip Fire Accuracy, Stability and Improved Jump Assist do change stats, ones the
|
|
53
|
+
* personal stats panel does not put a number on; see
|
|
54
|
+
* [`data/equipment/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/equipment/SOURCES.md).
|
|
55
|
+
*/
|
|
56
|
+
readonly modifiers: readonly PersonalModifier[];
|
|
25
57
|
}
|
|
26
58
|
/**
|
|
27
|
-
*
|
|
59
|
+
* Every suit and weapon engineering recipe, keyed by recipe symbol.
|
|
28
60
|
*
|
|
29
61
|
* @remarks
|
|
30
|
-
*
|
|
31
|
-
* Accuracy each have separate Kinetic, Laser and Plasma recipes
|
|
32
|
-
* costs differ. Their keys end in `_kinetic`, `_laser` or
|
|
33
|
-
* that suffix, so resolve its value with
|
|
34
|
-
* `equipment/modification-journal`.
|
|
62
|
+
* A recipe symbol is finer-grained than a display name: Greater Range, Headshot Damage
|
|
63
|
+
* and Improved Hip Fire Accuracy each have separate Kinetic, Laser and Plasma recipes
|
|
64
|
+
* because their material costs differ. Their keys end in `_kinetic`, `_laser` or
|
|
65
|
+
* `_plasma`; the journal omits that suffix, so resolve its value with
|
|
66
|
+
* `resolvePersonalModificationForWeapon` from `equipment/modification-journal`.
|
|
35
67
|
*
|
|
36
68
|
* @example
|
|
37
69
|
* ```ts
|
|
38
70
|
* import { PERSONAL_MODIFICATIONS } from '@elite-dangerous-almanac/core/equipment/modifications';
|
|
39
|
-
* PERSONAL_MODIFICATIONS['
|
|
71
|
+
* PERSONAL_MODIFICATIONS['suit_increasedo2capacity']?.modifiers[0]?.multiplier; // -> 5
|
|
40
72
|
* ```
|
|
41
73
|
*/
|
|
42
74
|
declare const PERSONAL_MODIFICATIONS: Readonly<Record<string, PersonalModification>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-
|
|
1
|
+
export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-AC3U7LRK.js"; //# sourceMappingURL=modifications.js.map
|
|
@@ -1,115 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @packageDocumentation
|
|
5
|
-
*/
|
|
6
|
-
/** A Pioneer Supplies equipment grade, from the stock grade 1 through grade 5. */
|
|
7
|
-
type EquipmentGrade = 1 | 2 | 3 | 4 | 5;
|
|
8
|
-
/** The stats of one suit at one equipment grade. */
|
|
9
|
-
interface SuitGrade {
|
|
10
|
-
/** Frontier item symbol for this exact suit and grade. */
|
|
11
|
-
readonly symbol: string;
|
|
12
|
-
/** Permanent engineering-modification slots available, from `0` through `4`. */
|
|
13
|
-
readonly modificationSlots: number;
|
|
14
|
-
/** Base shield strength in shield points. */
|
|
15
|
-
readonly shieldStrength: number;
|
|
16
|
-
/** Shield points regenerated per second. */
|
|
17
|
-
readonly shieldRegeneration: number;
|
|
18
|
-
/** Kinetic damage resistance as a fraction; negative values increase damage. */
|
|
19
|
-
readonly kineticResistance: number;
|
|
20
|
-
/** Thermal damage resistance as a fraction. */
|
|
21
|
-
readonly thermalResistance: number;
|
|
22
|
-
/** Plasma damage resistance as a fraction; negative values increase damage. */
|
|
23
|
-
readonly plasmaResistance: number;
|
|
24
|
-
/** Explosive damage resistance as a fraction. */
|
|
25
|
-
readonly explosiveResistance: number;
|
|
26
|
-
}
|
|
27
|
-
/** One personal suit model sold by Pioneer Supplies. */
|
|
28
|
-
interface Suit {
|
|
29
|
-
/** Suit family without a grade suffix, e.g. `"utilitysuit"`. */
|
|
30
|
-
readonly family: string;
|
|
31
|
-
/** English display name, e.g. `"Maverick Suit"`. */
|
|
32
|
-
readonly name: string;
|
|
33
|
-
/** Number of primary-weapon slots. */
|
|
34
|
-
readonly primarySlots: number;
|
|
35
|
-
/** Number of secondary-weapon slots. */
|
|
36
|
-
readonly secondarySlots: number;
|
|
37
|
-
/** Available grade records, keyed by `"1"` through `"5"`. */
|
|
38
|
-
readonly grades: Readonly<Partial<Record<`${EquipmentGrade}`, SuitGrade>>>;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* All four personal suits, including the non-upgradeable Flight Suit.
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* ```ts
|
|
45
|
-
* import { SUITS } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
46
|
-
* SUITS.length; // -> 4
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
declare const SUITS: readonly Suit[];
|
|
50
|
-
/**
|
|
51
|
-
* Look up a suit model by its grade-independent family, case-insensitively.
|
|
52
|
-
*
|
|
53
|
-
* @param family - Family such as `"utilitysuit"`, matched case-insensitively after
|
|
54
|
-
* trimming surrounding whitespace.
|
|
55
|
-
* @returns The frozen suit record, or `null` when unknown.
|
|
56
|
-
* @throws {TypeError} If `family` is present and not a string. A nullish family is a
|
|
57
|
-
* miss, answered like an unrecognised one.
|
|
58
|
-
* @example
|
|
59
|
-
* ```ts
|
|
60
|
-
* import { getSuitByFamily } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
61
|
-
* getSuitByFamily('utilitysuit')?.name; // -> 'Maverick Suit'
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
declare function getSuitByFamily(family: string): Suit | null;
|
|
65
|
-
/**
|
|
66
|
-
* Look up a suit by its display name, case-insensitively.
|
|
67
|
-
*
|
|
68
|
-
* @param name - Display name such as `"Maverick Suit"`, matched case-insensitively
|
|
69
|
-
* after trimming surrounding whitespace.
|
|
70
|
-
* @returns The frozen suit record, or `null` when unknown.
|
|
71
|
-
* @throws {TypeError} If `name` is present and not a string. A nullish name is a miss,
|
|
72
|
-
* answered like an unrecognised one.
|
|
73
|
-
* @example
|
|
74
|
-
* ```ts
|
|
75
|
-
* import { getSuitByName } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
76
|
-
* getSuitByName('Maverick Suit')?.family; // -> 'utilitysuit'
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
declare function getSuitByName(name: string): Suit | null;
|
|
80
|
-
/**
|
|
81
|
-
* Resolve the grade-specific Frontier item symbol reported by journal suit events.
|
|
82
|
-
*
|
|
83
|
-
* @param symbol - Item symbol such as `"utilitysuit_class3"`, matched
|
|
84
|
-
* case-insensitively after trimming surrounding whitespace.
|
|
85
|
-
* @returns The owning suit and its numeric grade, or `null` when unknown.
|
|
86
|
-
* @throws {TypeError} If `symbol` is present and not a string. A nullish symbol is a
|
|
87
|
-
* miss, answered like an unrecognised one.
|
|
88
|
-
* @example
|
|
89
|
-
* ```ts
|
|
90
|
-
* import { getSuitBySymbol } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
91
|
-
* getSuitBySymbol('utilitysuit_class3')?.grade; // -> 3
|
|
92
|
-
* ```
|
|
93
|
-
*/
|
|
94
|
-
declare function getSuitBySymbol(symbol: string): Readonly<{
|
|
95
|
-
suit: Suit;
|
|
96
|
-
grade: EquipmentGrade;
|
|
97
|
-
}> | null;
|
|
98
|
-
/**
|
|
99
|
-
* Read a suit's stats at one grade.
|
|
100
|
-
*
|
|
101
|
-
* @param suit - A catalogue suit record.
|
|
102
|
-
* @param grade - Integer grade `1`–`5`.
|
|
103
|
-
* @returns The frozen grade record, or `null` when that suit has no such grade.
|
|
104
|
-
* @throws {RangeError} If `grade` is not an integer from 1 through 5.
|
|
105
|
-
* @example
|
|
106
|
-
* ```ts
|
|
107
|
-
* import { getSuitByFamily, getSuitGrade } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
108
|
-
* const suit = getSuitByFamily('utilitysuit');
|
|
109
|
-
* if (!suit) throw new Error('Maverick Suit is missing');
|
|
110
|
-
* getSuitGrade(suit, 5)?.modificationSlots; // -> 4
|
|
111
|
-
* ```
|
|
112
|
-
*/
|
|
113
|
-
declare function getSuitGrade(suit: Suit, grade: number): SuitGrade | null;
|
|
114
|
-
|
|
115
|
-
export { type EquipmentGrade, SUITS, type Suit, type SuitGrade, getSuitByFamily, getSuitByName, getSuitBySymbol, getSuitGrade };
|
|
1
|
+
export { E as EquipmentGrade, c as PersonalMount, d as PersonalMountKey, S as SUITS, l as Suit, m as SuitGrade, q as getSuitByFamily, r as getSuitByName, s as getSuitBySymbol, t as getSuitGrade } from '../suits-B37rAORs.js';
|
|
2
|
+
import './engineering.js';
|
package/dist/equipment/suits.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade}from"../chunk-
|
|
1
|
+
export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade}from"../chunk-UTWZZOSA.js"; //# sourceMappingURL=suits.js.map
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Odyssey suit tools: the Energylink, Profile Analyser, Arc Cutter and Genetic Sampler,
|
|
3
|
+
* the suits that carry each one, and their battery and timing stats.
|
|
4
|
+
*
|
|
5
|
+
* @packageDocumentation
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* One tool a Commander carries on foot.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* A stat a tool does not have is absent rather than zero: only the Energylink
|
|
12
|
+
* discharges and overloads, and only the Profile Analyser scans and clones.
|
|
13
|
+
*
|
|
14
|
+
* Every power figure is in the same unit as {@link Suit.batteryCapacity}, so a suit's
|
|
15
|
+
* battery divided by a tool's per-second drain is the seconds of use it holds.
|
|
16
|
+
*/
|
|
17
|
+
interface PersonalTool {
|
|
18
|
+
/**
|
|
19
|
+
* This library's own id, e.g. `"arc-cutter"`.
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* Frontier publishes no item symbol for a tool: a journal `SuitLoadout` names the
|
|
23
|
+
* suit and its weapon mounts only. The id is therefore a library key, and joins to
|
|
24
|
+
* no journal field.
|
|
25
|
+
*/
|
|
26
|
+
readonly id: string;
|
|
27
|
+
/**
|
|
28
|
+
* English display name, e.g. `"Arc Cutter"`.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* This is the canonical English. `getPersonalToolName` in `i18n/personal-tools`
|
|
32
|
+
* takes the same `id` and answers in all six stored locales.
|
|
33
|
+
*/
|
|
34
|
+
readonly name: string;
|
|
35
|
+
/** Families of the suits that carry the tool, as {@link Suit.family} spells them. */
|
|
36
|
+
readonly suitFamilies: readonly string[];
|
|
37
|
+
/** Energylink: battery charge delivered to a target, in MW per second. */
|
|
38
|
+
readonly rechargeRate?: number;
|
|
39
|
+
/** Energylink: battery charge drawn from a target, in MW per second. */
|
|
40
|
+
readonly dischargeRate?: number;
|
|
41
|
+
/** Energylink: seconds one discharge lasts. */
|
|
42
|
+
readonly dischargeDuration?: number;
|
|
43
|
+
/**
|
|
44
|
+
* Energylink: battery charge one overload costs, in MW. The Reduced Tool Battery
|
|
45
|
+
* Consumption factor, named `toolEnergyDrain`, applies to this.
|
|
46
|
+
*/
|
|
47
|
+
readonly overloadPowerUsage?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Battery charge the tool draws while it works, in MW per second. The Reduced Tool
|
|
50
|
+
* Battery Consumption factor, named `toolEnergyDrain`, applies to this.
|
|
51
|
+
*/
|
|
52
|
+
readonly powerUsage?: number;
|
|
53
|
+
/** Profile Analyser: seconds one profile scan takes. */
|
|
54
|
+
readonly scanDuration?: number;
|
|
55
|
+
/** Profile Analyser: seconds one profile clone takes. */
|
|
56
|
+
readonly cloneDuration?: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Every suit tool, in catalogue order.
|
|
60
|
+
*
|
|
61
|
+
* @remarks
|
|
62
|
+
* The Reduced Tool Battery Consumption suit modification halves the `toolEnergyDrain`
|
|
63
|
+
* stat, which is this catalogue's `powerUsage` and the Energylink's
|
|
64
|
+
* `overloadPowerUsage`. It leaves `dischargeRate` alone, which is why the two carry
|
|
65
|
+
* separate names: pass the base a factor applies to, and the discharge rate can never
|
|
66
|
+
* pick one up.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { PERSONAL_TOOLS } from '@elite-dangerous-almanac/core/equipment/tools';
|
|
71
|
+
* PERSONAL_TOOLS[0]?.name; // -> 'Energylink'
|
|
72
|
+
* ```
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* import { applyPersonalModifiers } from '@elite-dangerous-almanac/core/equipment/engineering';
|
|
76
|
+
* import { getPersonalModification } from '@elite-dangerous-almanac/core/equipment/modifications';
|
|
77
|
+
* import { getPersonalToolById } from '@elite-dangerous-almanac/core/equipment/tools';
|
|
78
|
+
*
|
|
79
|
+
* const recipe = getPersonalModification('suit_reducedtoolbatteryconsumption');
|
|
80
|
+
* const cutter = getPersonalToolById('arc-cutter');
|
|
81
|
+
* applyPersonalModifiers('toolEnergyDrain', cutter?.powerUsage ?? 0, recipe?.modifiers ?? []);
|
|
82
|
+
* // -> 0.075
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
declare const PERSONAL_TOOLS: readonly PersonalTool[];
|
|
86
|
+
/**
|
|
87
|
+
* Look up a suit tool by its library id, case-insensitively.
|
|
88
|
+
*
|
|
89
|
+
* @param id - Library id such as `"energylink"`, matched case-insensitively after
|
|
90
|
+
* trimming surrounding whitespace.
|
|
91
|
+
* @returns The frozen tool record, or `null` when unknown.
|
|
92
|
+
* @throws {TypeError} If `id` is present and not a string. A nullish id is a miss,
|
|
93
|
+
* answered like an unrecognised one.
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* import { getPersonalToolById } from '@elite-dangerous-almanac/core/equipment/tools';
|
|
97
|
+
* getPersonalToolById('arc-cutter')?.suitFamilies; // -> ['utilitysuit']
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
declare function getPersonalToolById(id: string): PersonalTool | null;
|
|
101
|
+
|
|
102
|
+
export { PERSONAL_TOOLS, type PersonalTool, getPersonalToolById };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{PERSONAL_TOOLS,getPersonalToolById}from"../chunk-CEF7SMB2.js"; //# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"O"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { WeaponUpgradeGroup } from '
|
|
1
|
+
import { W as WeaponUpgradeGroup } from '../suits-B37rAORs.js';
|
|
2
2
|
import { PersonalEngineeringIngredient } from './engineering.js';
|
|
3
|
-
import './suits.js';
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* Material costs for Pioneer Supplies suit and handheld-weapon grade upgrades.
|
|
@@ -40,7 +39,7 @@ type PersonalUpgradeGradeCosts = Readonly<Record<'2' | '3' | '4' | '5', readonly
|
|
|
40
39
|
* } from '@elite-dangerous-almanac/core/equipment/upgrade-costs';
|
|
41
40
|
*
|
|
42
41
|
* const costs: PersonalUpgradeCosts = PERSONAL_UPGRADE_COSTS;
|
|
43
|
-
*
|
|
42
|
+
* costs.suits['utilitysuit']?.['2']?.[0]?.symbol; // -> 'suitschematic'
|
|
44
43
|
* ```
|
|
45
44
|
*/
|
|
46
45
|
interface PersonalUpgradeCosts {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getSuitByFamily}from"../chunk-
|
|
1
|
+
import{getSuitByFamily}from"../chunk-UTWZZOSA.js";import{getPersonalWeaponBySymbol}from"../chunk-PIU24HRN.js"; import{sumPersonalEngineeringIngredients}from"../chunk-SIL356HB.js"; import{deepFreeze}from"../chunk-DURKO7JU.js";var upgrade_costs_default={suits:{utilitysuit:{2:[{symbol:"suitschematic",count:1},{symbol:"healthmonitor",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"carbonfibreplating",count:2},{symbol:"graphene",count:2}],3:[{symbol:"suitschematic",count:2},{symbol:"healthmonitor",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"carbonfibreplating",count:5},{symbol:"graphene",count:5}],4:[{symbol:"suitschematic",count:4},{symbol:"healthmonitor",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"carbonfibreplating",count:9},{symbol:"graphene",count:9}],5:[{symbol:"suitschematic",count:5},{symbol:"healthmonitor",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"carbonfibreplating",count:12},{symbol:"graphene",count:12}]},tacticalsuit:{2:[{symbol:"suitschematic",count:1},{symbol:"healthmonitor",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"titaniumplating",count:2},{symbol:"graphene",count:2}],3:[{symbol:"suitschematic",count:2},{symbol:"healthmonitor",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"titaniumplating",count:5},{symbol:"graphene",count:5}],4:[{symbol:"suitschematic",count:4},{symbol:"healthmonitor",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"titaniumplating",count:9},{symbol:"graphene",count:9}],5:[{symbol:"suitschematic",count:5},{symbol:"healthmonitor",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"titaniumplating",count:12},{symbol:"graphene",count:12}]},explorationsuit:{2:[{symbol:"suitschematic",count:1},{symbol:"healthmonitor",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"aerogel",count:2},{symbol:"graphene",count:2}],3:[{symbol:"suitschematic",count:2},{symbol:"healthmonitor",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"aerogel",count:5},{symbol:"graphene",count:5}],4:[{symbol:"suitschematic",count:4},{symbol:"healthmonitor",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"aerogel",count:9},{symbol:"graphene",count:9}],5:[{symbol:"suitschematic",count:5},{symbol:"healthmonitor",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"aerogel",count:12},{symbol:"graphene",count:12}]}},weaponGroups:{takada:{2:[{symbol:"weaponschematic",count:1},{symbol:"ionisedgas",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"microelectrode",count:2},{symbol:"opticalfibre",count:2}],3:[{symbol:"weaponschematic",count:2},{symbol:"ionisedgas",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"microelectrode",count:5},{symbol:"opticalfibre",count:5}],4:[{symbol:"weaponschematic",count:4},{symbol:"ionisedgas",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"microelectrode",count:9},{symbol:"opticalfibre",count:9}],5:[{symbol:"weaponschematic",count:5},{symbol:"ionisedgas",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"microelectrode",count:12},{symbol:"opticalfibre",count:12}]},manticore:{2:[{symbol:"weaponschematic",count:1},{symbol:"ionisedgas",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"microelectrode",count:2},{symbol:"chemicalsuperbase",count:2}],3:[{symbol:"weaponschematic",count:2},{symbol:"ionisedgas",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"microelectrode",count:5},{symbol:"chemicalsuperbase",count:5}],4:[{symbol:"weaponschematic",count:4},{symbol:"ionisedgas",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"microelectrode",count:9},{symbol:"chemicalsuperbase",count:9}],5:[{symbol:"weaponschematic",count:5},{symbol:"ionisedgas",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"microelectrode",count:12},{symbol:"chemicalsuperbase",count:12}]},karma:{2:[{symbol:"weaponschematic",count:1},{symbol:"compressionliquefiedgas",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"weaponcomponent",count:2},{symbol:"tungstencarbide",count:2}],3:[{symbol:"weaponschematic",count:2},{symbol:"compressionliquefiedgas",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"weaponcomponent",count:5},{symbol:"tungstencarbide",count:5}],4:[{symbol:"weaponschematic",count:4},{symbol:"compressionliquefiedgas",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"weaponcomponent",count:9},{symbol:"tungstencarbide",count:9}],5:[{symbol:"weaponschematic",count:5},{symbol:"compressionliquefiedgas",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"weaponcomponent",count:12},{symbol:"tungstencarbide",count:12}]}}};var PERSONAL_UPGRADE_COSTS=deepFreeze(upgrade_costs_default);function getSuitUpgradeStepCost(family,targetGrade){assertTargetGrade(targetGrade,"getSuitUpgradeStepCost");const costs=getSuitUpgradeCosts(family);return costs?.[String(targetGrade)]??null}function getSuitUpgradeCost(family,targetGrade,currentGrade=1){assertGrade(targetGrade,"getSuitUpgradeCost: targetGrade");assertGrade(currentGrade,"getSuitUpgradeCost: currentGrade");const costs=getSuitUpgradeCosts(family);if(!costs)return null;return totalCosts(costs,targetGrade,currentGrade)}function getPersonalWeaponUpgradeStepCost(symbol,targetGrade){assertTargetGrade(targetGrade,"getPersonalWeaponUpgradeStepCost");const weapon=getPersonalWeaponBySymbol(symbol);if(!weapon)return null;return PERSONAL_UPGRADE_COSTS.weaponGroups[weapon.upgradeGroup][String(targetGrade)]??null}function getPersonalWeaponUpgradeCost(symbol,targetGrade,currentGrade=1){assertGrade(targetGrade,"getPersonalWeaponUpgradeCost: targetGrade");assertGrade(currentGrade,"getPersonalWeaponUpgradeCost: currentGrade");const weapon=getPersonalWeaponBySymbol(symbol);if(!weapon)return null;return totalCosts(PERSONAL_UPGRADE_COSTS.weaponGroups[weapon.upgradeGroup],targetGrade,currentGrade)}function totalCosts(costs,targetGrade,currentGrade){const steps=[];for(let grade=currentGrade+1;grade<=targetGrade;grade++){steps.push(costs[String(grade)])}return sumPersonalEngineeringIngredients(...steps)}function getSuitUpgradeCosts(family){const suit=getSuitByFamily(family);if(!suit||!Object.hasOwn(PERSONAL_UPGRADE_COSTS.suits,suit.family))return null;return PERSONAL_UPGRADE_COSTS.suits[suit.family]}function assertTargetGrade(grade,functionName){if(!Number.isInteger(grade)||grade<2||grade>5){throw new RangeError(`${functionName}: targetGrade must be an integer in [2, 5]`)}}function assertGrade(grade,label){if(!Number.isInteger(grade)||grade<1||grade>5){throw new RangeError(`${label} must be an integer in [1, 5]`)}}export{PERSONAL_UPGRADE_COSTS,getPersonalWeaponUpgradeCost,getPersonalWeaponUpgradeStepCost,getSuitUpgradeCost,getSuitUpgradeStepCost};//# sourceMappingURL=upgrade-costs.js.map
|