@elite-dangerous-almanac/core 0.2.8 → 0.2.10
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 +137 -45
- package/PROVENANCE/i18n/SOURCES.md +187 -81
- package/PROVENANCE/ships/SOURCES.md +344 -200
- package/README.md +10 -2
- package/THIRD_PARTY_NOTICES.md +11 -3
- 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-773VO2GK.js → chunk-4T3TTYUT.js} +1 -1
- package/dist/{chunk-773VO2GK.js.map → chunk-4T3TTYUT.js.map} +1 -1
- package/dist/{chunk-W5ULI75F.js → chunk-7C7NJWCF.js} +1 -1
- package/dist/{chunk-W5ULI75F.js.map → chunk-7C7NJWCF.js.map} +1 -1
- package/dist/{chunk-IMNOEFUE.js → chunk-7Y5EK2VO.js} +1 -1
- package/dist/{chunk-IMNOEFUE.js.map → chunk-7Y5EK2VO.js.map} +1 -1
- package/dist/{chunk-2OBUSQA7.js → chunk-AAU7OM47.js} +1 -1
- package/dist/{chunk-2OBUSQA7.js.map → chunk-AAU7OM47.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-IN36YSS4.js → chunk-C3YZ5KTA.js} +1 -1
- package/dist/{chunk-IN36YSS4.js.map → chunk-C3YZ5KTA.js.map} +1 -1
- 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-C6G7IN74.js +1 -0
- package/dist/chunk-C6G7IN74.js.map +1 -0
- 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-YJAH6DFY.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-SC4MEHVY.js → chunk-HIJR7DOC.js} +1 -1
- package/dist/{chunk-SC4MEHVY.js.map → chunk-HIJR7DOC.js.map} +1 -1
- 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-5YEHJM6V.js → chunk-OSMBAFRW.js} +1 -1
- package/dist/{chunk-5YEHJM6V.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-3WGXGBW5.js → chunk-R2AEZYX7.js} +1 -1
- package/dist/{chunk-FJIWJYKO.js → chunk-RA4YJBU5.js} +1 -1
- 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-WV7QCDL5.js → chunk-SIL356HB.js} +1 -1
- package/dist/{chunk-WV7QCDL5.js.map → chunk-SIL356HB.js.map} +1 -1
- package/dist/{chunk-OLKOWR7S.js → chunk-SS7HVNP5.js} +1 -1
- package/dist/{chunk-OLKOWR7S.js.map → chunk-SS7HVNP5.js.map} +1 -1
- 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-UVX7RCMP.js +1 -0
- package/dist/chunk-UVX7RCMP.js.map +1 -0
- 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-7EWZGDWY.js → chunk-X3MXPE7G.js} +1 -1
- package/dist/{chunk-7EWZGDWY.js.map → chunk-X3MXPE7G.js.map} +1 -1
- package/dist/{chunk-JCYOE3C4.js → chunk-XQJERZUS.js} +1 -1
- package/dist/{chunk-JCYOE3C4.js.map → chunk-XQJERZUS.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-YI5XKWW2.js +1 -0
- package/dist/{chunk-GIGRBFIJ.js.map → chunk-YI5XKWW2.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 +11 -6
- package/dist/equipment/engineering.js +1 -1
- package/dist/equipment/index.d.ts +4 -4
- package/dist/equipment/index.js +1 -1
- package/dist/equipment/modification-journal.js +1 -1
- package/dist/equipment/modifications.d.ts +23 -14
- package/dist/equipment/modifications.js +1 -1
- package/dist/equipment/suits.d.ts +2 -145
- 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 -135
- 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 +19 -9
- 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 +4 -6
- package/dist/i18n/personal-modifications.js +1 -1
- 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 +3 -4
- package/dist/i18n/personal-weapons.js +1 -1
- package/dist/i18n/pre-engineered.d.ts +1 -1
- package/dist/i18n/slots.d.ts +2 -2
- package/dist/i18n/suits.d.ts +36 -6
- package/dist/i18n/suits.js +1 -1
- 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 +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 +5 -6
- 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 +26 -24
- 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/shield-capacitor.js +1 -1
- package/dist/ships/ship-loadout.d.ts +7 -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/ships/weapons.js +1 -1
- package/dist/suits-B4sQMLFe.d.ts +450 -0
- package/dist/{system-address-cyJaeZIS.d.ts → system-address-DmzXRD48.d.ts} +6 -4
- package/package.json +13 -1
- package/dist/chunk-77TT4K53.js +0 -1
- package/dist/chunk-DAQ3PJ4R.js +0 -1
- package/dist/chunk-DAQ3PJ4R.js.map +0 -1
- package/dist/chunk-DHACRCLI.js +0 -1
- package/dist/chunk-DHACRCLI.js.map +0 -1
- package/dist/chunk-FJIWJYKO.js.map +0 -1
- package/dist/chunk-GIGRBFIJ.js +0 -1
- package/dist/chunk-IUSMAX5T.js +0 -1
- package/dist/chunk-IUSMAX5T.js.map +0 -1
- package/dist/chunk-LWNBWRKL.js +0 -1
- package/dist/chunk-LWNBWRKL.js.map +0 -1
- package/dist/chunk-MT5AHPNP.js +0 -1
- package/dist/chunk-MT5AHPNP.js.map +0 -1
- package/dist/chunk-QJECDMQQ.js +0 -1
- package/dist/chunk-YJAH6DFY.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-3WGXGBW5.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
|
@@ -15,7 +15,13 @@ import { PersonalModifier } from './engineering.js';
|
|
|
15
15
|
* @packageDocumentation
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
/**
|
|
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
|
+
*/
|
|
19
25
|
type PersonalModificationTarget = 'suit' | 'weapon';
|
|
20
26
|
/** One permanent personal-equipment engineering recipe. */
|
|
21
27
|
interface PersonalModification {
|
|
@@ -31,29 +37,32 @@ interface PersonalModification {
|
|
|
31
37
|
* `equipment/engineering`.
|
|
32
38
|
*
|
|
33
39
|
* A modifier names a stat of whatever it modifies, which is usually the equipment
|
|
34
|
-
* the recipe is installed on.
|
|
35
|
-
* to know about:
|
|
36
|
-
* `reserveAmmo
|
|
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`.
|
|
37
45
|
*
|
|
38
46
|
* @remarks
|
|
39
47
|
* **Empty** where the recipe changes nothing this catalogue names. Night Vision,
|
|
40
|
-
* Scope, Stowed reloading and Combat Movement Speed have no numeric
|
|
41
|
-
* all — Scope swaps the sight, and each weapon's two magnifications
|
|
42
|
-
* `scopeMagnification
|
|
43
|
-
*
|
|
44
|
-
*
|
|
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
|
|
45
54
|
* [`data/equipment/SOURCES.md`](https://github.com/DarkSession/Elite-Dangerous-Almanac/blob/main/data/equipment/SOURCES.md).
|
|
46
55
|
*/
|
|
47
56
|
readonly modifiers: readonly PersonalModifier[];
|
|
48
57
|
}
|
|
49
58
|
/**
|
|
50
|
-
*
|
|
59
|
+
* Every suit and weapon engineering recipe, keyed by recipe symbol.
|
|
51
60
|
*
|
|
52
61
|
* @remarks
|
|
53
|
-
*
|
|
54
|
-
* Hip Fire Accuracy each have separate Kinetic, Laser and Plasma recipes
|
|
55
|
-
* material costs differ. Their keys end in `_kinetic`, `_laser` or
|
|
56
|
-
* journal omits that suffix, so resolve its value with
|
|
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
|
|
57
66
|
* `resolvePersonalModificationForWeapon` from `equipment/modification-journal`.
|
|
58
67
|
*
|
|
59
68
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-
|
|
1
|
+
export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-YI5XKWW2.js"; //# sourceMappingURL=modifications.js.map
|
|
@@ -1,145 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
* grade shares, and the grade-dependent defensive stats.
|
|
4
|
-
*
|
|
5
|
-
* @packageDocumentation
|
|
6
|
-
*/
|
|
7
|
-
/** A Pioneer Supplies equipment grade, from the stock grade 1 through grade 5. */
|
|
8
|
-
type EquipmentGrade = 1 | 2 | 3 | 4 | 5;
|
|
9
|
-
/** The stats of one suit at one equipment grade. */
|
|
10
|
-
interface SuitGrade {
|
|
11
|
-
/** Frontier item symbol for this exact suit and grade. */
|
|
12
|
-
readonly symbol: string;
|
|
13
|
-
/** Permanent engineering-modification slots available, from `0` through `4`. */
|
|
14
|
-
readonly modificationSlots: number;
|
|
15
|
-
/** Base shield strength in shield points. */
|
|
16
|
-
readonly shieldStrength: number;
|
|
17
|
-
/** Shield points regenerated per second. */
|
|
18
|
-
readonly shieldRegeneration: number;
|
|
19
|
-
/** Kinetic damage resistance as a fraction; negative values increase damage. */
|
|
20
|
-
readonly kineticResistance: number;
|
|
21
|
-
/** Thermal damage resistance as a fraction. */
|
|
22
|
-
readonly thermalResistance: number;
|
|
23
|
-
/** Plasma damage resistance as a fraction; negative values increase damage. */
|
|
24
|
-
readonly plasmaResistance: number;
|
|
25
|
-
/** Explosive damage resistance as a fraction. */
|
|
26
|
-
readonly explosiveResistance: number;
|
|
27
|
-
}
|
|
28
|
-
/** One personal suit model sold by Pioneer Supplies. */
|
|
29
|
-
interface Suit {
|
|
30
|
-
/** Suit family without a grade suffix, e.g. `"utilitysuit"`. */
|
|
31
|
-
readonly family: string;
|
|
32
|
-
/** English display name, e.g. `"Maverick Suit"`. */
|
|
33
|
-
readonly name: string;
|
|
34
|
-
/** Number of primary-weapon slots. */
|
|
35
|
-
readonly primarySlots: number;
|
|
36
|
-
/** Number of secondary-weapon slots. */
|
|
37
|
-
readonly secondarySlots: number;
|
|
38
|
-
/** Suit health in health points, the pool the shield protects. */
|
|
39
|
-
readonly health: number;
|
|
40
|
-
/** Suit mass in kilograms. */
|
|
41
|
-
readonly mass: number;
|
|
42
|
-
/** Battery capacity in energy units, the pool the suit's tools draw from. */
|
|
43
|
-
readonly batteryCapacity: number;
|
|
44
|
-
/** Emergency air, in seconds of life support. */
|
|
45
|
-
readonly oxygenTime: number;
|
|
46
|
-
/** Jump-assist boost acceleration, the bare figure the panel shows, which has no unit. */
|
|
47
|
-
readonly boostAcceleration: number;
|
|
48
|
-
/** Backpack goods capacity in items. */
|
|
49
|
-
readonly goodsCapacity: number;
|
|
50
|
-
/** Backpack assets capacity in components. */
|
|
51
|
-
readonly assetsCapacity: number;
|
|
52
|
-
/** Backpack data capacity in items. */
|
|
53
|
-
readonly dataCapacity: number;
|
|
54
|
-
/** How far footsteps carry, as a multiplier of the base audible range. */
|
|
55
|
-
readonly footstepAudibleRange: number;
|
|
56
|
-
/** Line-of-sight analysis range in metres. */
|
|
57
|
-
readonly losAnalysisRange: number;
|
|
58
|
-
/** Seconds of line of sight the suit needs to complete an analysis. */
|
|
59
|
-
readonly losAnalysisTime: number;
|
|
60
|
-
/**
|
|
61
|
-
* Available grade records, keyed by `"1"` through `"5"`.
|
|
62
|
-
*
|
|
63
|
-
* @remarks
|
|
64
|
-
* A grade changes exactly what {@link SuitGrade} carries — the four resistances,
|
|
65
|
-
* shield strength, shield regeneration, the modification slots and the item symbol.
|
|
66
|
-
* Every stat above is a property of the suit family and is the same at all five.
|
|
67
|
-
*/
|
|
68
|
-
readonly grades: Readonly<Partial<Record<`${EquipmentGrade}`, SuitGrade>>>;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* All four personal suits, including the non-upgradeable Flight Suit.
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* ```ts
|
|
75
|
-
* import { SUITS } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
76
|
-
* SUITS.length; // -> 4
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
declare const SUITS: readonly Suit[];
|
|
80
|
-
/**
|
|
81
|
-
* Look up a suit model by its grade-independent family, case-insensitively.
|
|
82
|
-
*
|
|
83
|
-
* @param family - Family such as `"utilitysuit"`, matched case-insensitively after
|
|
84
|
-
* trimming surrounding whitespace.
|
|
85
|
-
* @returns The frozen suit record, or `null` when unknown.
|
|
86
|
-
* @throws {TypeError} If `family` is present and not a string. A nullish family is a
|
|
87
|
-
* miss, answered like an unrecognised one.
|
|
88
|
-
* @example
|
|
89
|
-
* ```ts
|
|
90
|
-
* import { getSuitByFamily } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
91
|
-
* getSuitByFamily('utilitysuit')?.name; // -> 'Maverick Suit'
|
|
92
|
-
* ```
|
|
93
|
-
*/
|
|
94
|
-
declare function getSuitByFamily(family: string): Suit | null;
|
|
95
|
-
/**
|
|
96
|
-
* Look up a suit by its display name, case-insensitively.
|
|
97
|
-
*
|
|
98
|
-
* @param name - Display name such as `"Maverick Suit"`, matched case-insensitively
|
|
99
|
-
* after trimming surrounding whitespace.
|
|
100
|
-
* @returns The frozen suit record, or `null` when unknown.
|
|
101
|
-
* @throws {TypeError} If `name` is present and not a string. A nullish name is a miss,
|
|
102
|
-
* answered like an unrecognised one.
|
|
103
|
-
* @example
|
|
104
|
-
* ```ts
|
|
105
|
-
* import { getSuitByName } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
106
|
-
* getSuitByName('Maverick Suit')?.family; // -> 'utilitysuit'
|
|
107
|
-
* ```
|
|
108
|
-
*/
|
|
109
|
-
declare function getSuitByName(name: string): Suit | null;
|
|
110
|
-
/**
|
|
111
|
-
* Resolve the grade-specific Frontier item symbol reported by journal suit events.
|
|
112
|
-
*
|
|
113
|
-
* @param symbol - Item symbol such as `"utilitysuit_class3"`, matched
|
|
114
|
-
* case-insensitively after trimming surrounding whitespace.
|
|
115
|
-
* @returns The owning suit and its numeric grade, or `null` when unknown.
|
|
116
|
-
* @throws {TypeError} If `symbol` is present and not a string. A nullish symbol is a
|
|
117
|
-
* miss, answered like an unrecognised one.
|
|
118
|
-
* @example
|
|
119
|
-
* ```ts
|
|
120
|
-
* import { getSuitBySymbol } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
121
|
-
* getSuitBySymbol('utilitysuit_class3')?.grade; // -> 3
|
|
122
|
-
* ```
|
|
123
|
-
*/
|
|
124
|
-
declare function getSuitBySymbol(symbol: string): Readonly<{
|
|
125
|
-
suit: Suit;
|
|
126
|
-
grade: EquipmentGrade;
|
|
127
|
-
}> | null;
|
|
128
|
-
/**
|
|
129
|
-
* Read a suit's stats at one grade.
|
|
130
|
-
*
|
|
131
|
-
* @param suit - A catalogue suit record.
|
|
132
|
-
* @param grade - Integer grade `1`–`5`.
|
|
133
|
-
* @returns The frozen grade record, or `null` when that suit has no such grade.
|
|
134
|
-
* @throws {RangeError} If `grade` is not an integer from 1 through 5.
|
|
135
|
-
* @example
|
|
136
|
-
* ```ts
|
|
137
|
-
* import { getSuitByFamily, getSuitGrade } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
138
|
-
* const suit = getSuitByFamily('utilitysuit');
|
|
139
|
-
* if (!suit) throw new Error('Maverick Suit is missing');
|
|
140
|
-
* getSuitGrade(suit, 5)?.modificationSlots; // -> 4
|
|
141
|
-
* ```
|
|
142
|
-
*/
|
|
143
|
-
declare function getSuitGrade(suit: Suit, grade: number): SuitGrade | null;
|
|
144
|
-
|
|
145
|
-
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-B4sQMLFe.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-C6G7IN74.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-B4sQMLFe.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-C6G7IN74.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
|
|
@@ -1,135 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Odyssey handheld weapons: their journal identifiers, combat stats, sight
|
|
5
|
-
* magnification and grade-dependent damage.
|
|
6
|
-
*
|
|
7
|
-
* @packageDocumentation
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/** A weapon manufacturer's shared Pioneer grade-upgrade recipe. */
|
|
11
|
-
type WeaponUpgradeGroup = 'karma' | 'takada' | 'manticore';
|
|
12
|
-
/** Technology suffix used to disambiguate personal-weapon modification recipes. */
|
|
13
|
-
type PersonalWeaponEngineeringType = 'kinetic' | 'laser' | 'plasma';
|
|
14
|
-
/** A handheld weapon's form factor. */
|
|
15
|
-
type PersonalWeaponClass = 'pistol' | 'carbine' | 'rifle' | 'shotgun' | 'sniper' | 'launcher';
|
|
16
|
-
/** Which suit weapon slot accepts the weapon. */
|
|
17
|
-
type PersonalWeaponSlot = 'primary' | 'secondary';
|
|
18
|
-
/** The damage family relevant to resistances and some modification recipes. */
|
|
19
|
-
type PersonalDamageType = 'kinetic' | 'thermal' | 'plasma' | 'explosive';
|
|
20
|
-
/** A handheld weapon firing cycle. */
|
|
21
|
-
type PersonalFireMode = 'automatic' | 'semi-automatic' | 'burst';
|
|
22
|
-
/** A weapon's aim-down-sights magnification, before and after the Scope modification. */
|
|
23
|
-
interface ScopeMagnification {
|
|
24
|
-
/** Magnification of the sight the weapon ships with, e.g. `1.12` for 1.12x. */
|
|
25
|
-
readonly default: number;
|
|
26
|
-
/** Magnification of the sight the Scope modification fits, e.g. `1.41` for 1.41x. */
|
|
27
|
-
readonly upgraded: number;
|
|
28
|
-
}
|
|
29
|
-
/** Grade-dependent stats for one handheld weapon. */
|
|
30
|
-
interface PersonalWeaponGrade {
|
|
31
|
-
/** Damage per projectile or pellet. */
|
|
32
|
-
readonly damage: number;
|
|
33
|
-
/** Permanent engineering-modification slots available, from `0` through `4`. */
|
|
34
|
-
readonly modificationSlots: number;
|
|
35
|
-
}
|
|
36
|
-
/** One handheld weapon sold by Pioneer Supplies. */
|
|
37
|
-
interface PersonalWeapon {
|
|
38
|
-
/** Frontier item id reported by journal loadout events. */
|
|
39
|
-
readonly symbol: string;
|
|
40
|
-
/** English display name. */
|
|
41
|
-
readonly name: string;
|
|
42
|
-
/** Manufacturer recipe family used for grade upgrades. */
|
|
43
|
-
readonly upgradeGroup: WeaponUpgradeGroup;
|
|
44
|
-
/** Recipe suffix used when the journal omits a modification's weapon technology. */
|
|
45
|
-
readonly engineeringType: PersonalWeaponEngineeringType;
|
|
46
|
-
/** Weapon form factor. */
|
|
47
|
-
readonly class: PersonalWeaponClass;
|
|
48
|
-
/** Suit slot this weapon occupies. */
|
|
49
|
-
readonly slot: PersonalWeaponSlot;
|
|
50
|
-
/** Base damage family. */
|
|
51
|
-
readonly damageType: PersonalDamageType;
|
|
52
|
-
/** Firing cycle. */
|
|
53
|
-
readonly fireMode: PersonalFireMode;
|
|
54
|
-
/** Shots per second. */
|
|
55
|
-
readonly rateOfFire: number;
|
|
56
|
-
/** Rounds loaded in one magazine. */
|
|
57
|
-
readonly magazineSize: number;
|
|
58
|
-
/** Spare rounds carried before suit-capacity changes. */
|
|
59
|
-
readonly reserveAmmo: number;
|
|
60
|
-
/** Headshot damage multiplier (`2` means 200%). */
|
|
61
|
-
readonly headshotMultiplier: number;
|
|
62
|
-
/** Nominal effective range in metres. */
|
|
63
|
-
readonly effectiveRange: number;
|
|
64
|
-
/**
|
|
65
|
-
* Aim-down-sights magnification with the stock sight and with the one the Scope
|
|
66
|
-
* modification fits. Scope carries no modifier of its own: this pair is its whole
|
|
67
|
-
* numeric effect, and it differs per weapon.
|
|
68
|
-
*/
|
|
69
|
-
readonly scopeMagnification: ScopeMagnification;
|
|
70
|
-
/**
|
|
71
|
-
* Grade records keyed by `"1"` through `"5"` — every weapon carries all five,
|
|
72
|
-
* unlike {@link Suit.grades}, and `equipment.test.ts` pins that. Read one through
|
|
73
|
-
* {@link getPersonalWeaponGrade} to get the same nullable answer suits give.
|
|
74
|
-
*/
|
|
75
|
-
readonly grades: Readonly<Record<`${EquipmentGrade}`, PersonalWeaponGrade>>;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* All eleven handheld weapons in catalogue order.
|
|
79
|
-
*
|
|
80
|
-
* @example
|
|
81
|
-
* ```ts
|
|
82
|
-
* import { PERSONAL_WEAPONS } from '@elite-dangerous-almanac/core/equipment/weapons';
|
|
83
|
-
* PERSONAL_WEAPONS.length; // -> 11
|
|
84
|
-
* ```
|
|
85
|
-
*/
|
|
86
|
-
declare const PERSONAL_WEAPONS: readonly PersonalWeapon[];
|
|
87
|
-
/**
|
|
88
|
-
* Look up a handheld weapon by its Frontier journal symbol, case-insensitively.
|
|
89
|
-
*
|
|
90
|
-
* @param symbol - Journal item id such as `"wpn_m_assaultrifle_kinetic_fauto"`,
|
|
91
|
-
* matched case-insensitively after trimming surrounding whitespace.
|
|
92
|
-
* @returns The frozen weapon record, or `null` when unknown.
|
|
93
|
-
* @throws {TypeError} If `symbol` is present and not a string. A nullish symbol is a
|
|
94
|
-
* miss, answered like an unrecognised one.
|
|
95
|
-
* @example
|
|
96
|
-
* ```ts
|
|
97
|
-
* import { getPersonalWeaponBySymbol } from '@elite-dangerous-almanac/core/equipment/weapons';
|
|
98
|
-
* getPersonalWeaponBySymbol('wpn_m_assaultrifle_kinetic_fauto')?.name; // -> 'Karma AR-50'
|
|
99
|
-
* ```
|
|
100
|
-
*/
|
|
101
|
-
declare function getPersonalWeaponBySymbol(symbol: string): PersonalWeapon | null;
|
|
102
|
-
/**
|
|
103
|
-
* Look up a handheld weapon by display name, case-insensitively.
|
|
104
|
-
*
|
|
105
|
-
* @param name - English display name such as `"Karma AR-50"`; surrounding
|
|
106
|
-
* whitespace is ignored.
|
|
107
|
-
* @returns The frozen weapon record, or `null` when unknown.
|
|
108
|
-
* @throws {TypeError} If `name` is present and not a string. A nullish name is a miss,
|
|
109
|
-
* answered like an unrecognised one.
|
|
110
|
-
* @example
|
|
111
|
-
* ```ts
|
|
112
|
-
* import { getPersonalWeaponByName } from '@elite-dangerous-almanac/core/equipment/weapons';
|
|
113
|
-
* getPersonalWeaponByName('Karma AR-50')?.symbol; // -> 'wpn_m_assaultrifle_kinetic_fauto'
|
|
114
|
-
* ```
|
|
115
|
-
*/
|
|
116
|
-
declare function getPersonalWeaponByName(name: string): PersonalWeapon | null;
|
|
117
|
-
/**
|
|
118
|
-
* Read one handheld weapon's stats at a grade.
|
|
119
|
-
*
|
|
120
|
-
* @param weapon - A catalogue weapon record.
|
|
121
|
-
* @param grade - Integer grade `1`–`5`.
|
|
122
|
-
* @returns The frozen grade record, or `null` when the record carries no such grade.
|
|
123
|
-
* Every catalogued weapon carries all five, so the `null` is the same promise
|
|
124
|
-
* {@link getSuitGrade} makes rather than an outcome the shipped catalogue produces —
|
|
125
|
-
* write the two the same way and neither can surprise you.
|
|
126
|
-
* @throws {RangeError} If `grade` is not an integer from 1 through 5.
|
|
127
|
-
* @example
|
|
128
|
-
* ```ts
|
|
129
|
-
* import { PERSONAL_WEAPONS, getPersonalWeaponGrade } from '@elite-dangerous-almanac/core/equipment/weapons';
|
|
130
|
-
* getPersonalWeaponGrade(PERSONAL_WEAPONS[0]!, 5)?.modificationSlots; // -> 4
|
|
131
|
-
* ```
|
|
132
|
-
*/
|
|
133
|
-
declare function getPersonalWeaponGrade(weapon: PersonalWeapon, grade: number): PersonalWeaponGrade | null;
|
|
134
|
-
|
|
135
|
-
export { PERSONAL_WEAPONS, type PersonalDamageType, type PersonalFireMode, type PersonalWeapon, type PersonalWeaponClass, type PersonalWeaponEngineeringType, type PersonalWeaponGrade, type PersonalWeaponSlot, type ScopeMagnification, type WeaponUpgradeGroup, getPersonalWeaponByName, getPersonalWeaponBySymbol, getPersonalWeaponGrade };
|
|
1
|
+
import './engineering.js';
|
|
2
|
+
export { P as PERSONAL_WEAPONS, a as PersonalDamageType, b as PersonalFireMode, e as PersonalWeapon, f as PersonalWeaponClass, g as PersonalWeaponEngineeringType, h as PersonalWeaponGrade, i as PersonalWeaponMetrics, j as PersonalWeaponSlot, R as ReloadTime, k as ScopeMagnification, W as WeaponUpgradeGroup, n as getPersonalWeaponByName, o as getPersonalWeaponBySymbol, p as getPersonalWeaponGrade, u as personalWeaponMetrics } from '../suits-B4sQMLFe.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{PERSONAL_WEAPONS,getPersonalWeaponByName,getPersonalWeaponBySymbol,getPersonalWeaponGrade}from"../chunk-
|
|
1
|
+
export{PERSONAL_WEAPONS,getPersonalWeaponByName,getPersonalWeaponBySymbol,getPersonalWeaponGrade,personalWeaponMetrics}from"../chunk-PIU24HRN.js"; //# sourceMappingURL=weapons.js.map
|
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @param blueprintSymbol - Frontier's blueprint id, such as `"FSD_LongRange"`. Matching ignores
|
|
6
6
|
* case and surrounding whitespace.
|
|
7
|
-
* @param locale - A BCP 47 language or regional tag, such as `"de"
|
|
8
|
-
*
|
|
9
|
-
* hyphens. A regional tag falls back to its language after an exact-locale miss.
|
|
7
|
+
* @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
|
|
8
|
+
* {@link GameLocale} for how a tag is matched.
|
|
10
9
|
* @returns The localized blueprint name; the canonical `Blueprint.name` for any English
|
|
11
10
|
* tag; or `null` when the id is unknown, the locale is
|
|
12
11
|
* unsupported, or the pinned source carries no value for that blueprint and locale.
|
package/dist/i18n/blueprints.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getBlueprintName}from"../chunk-
|
|
1
|
+
export{getBlueprintName}from"../chunk-UI5RROGI.js"; //# sourceMappingURL=blueprints.js.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** Localized market-commodity display names, isolated from commodity metadata. */
|
|
2
|
+
/**
|
|
3
|
+
* Look up a market commodity's source-backed display name for a locale.
|
|
4
|
+
*
|
|
5
|
+
* @param symbol - Frontier's commodity symbol, such as `"LavianBrandy"`. Matching
|
|
6
|
+
* ignores case and surrounding whitespace, so the lower-cased form a market or journal
|
|
7
|
+
* line reports resolves too.
|
|
8
|
+
* @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
|
|
9
|
+
* {@link GameLocale} for how a tag is matched.
|
|
10
|
+
* @returns The localized commodity name; the canonical `Commodity.name` for any English
|
|
11
|
+
* tag; or `null` when the symbol is unknown or the locale is not one of the six this
|
|
12
|
+
* catalogue stores.
|
|
13
|
+
* @remarks
|
|
14
|
+
* Standard and rare commodities share this one lookup, as they share one symbol space.
|
|
15
|
+
* All six stored locales are complete for this dataset, so a supported locale always
|
|
16
|
+
* answers. This function bundles names only, not categories or the `rare` flag.
|
|
17
|
+
*
|
|
18
|
+
* **This is a heavy `i18n` dataset**: six locales for every good in both commodity
|
|
19
|
+
* catalogues is ~101 KiB minified (~27 KiB gzipped). It has its own module so an application that
|
|
20
|
+
* never shows a translated commodity name does not pay for it — import it from
|
|
21
|
+
* `core/i18n/commodities` rather than the `core/i18n` barrel if you want that boundary
|
|
22
|
+
* to be explicit.
|
|
23
|
+
* @throws {TypeError} If `symbol` is present and not a string, or `locale` is not a
|
|
24
|
+
* string. A nullish `symbol` is a lookup miss and returns `null`.
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { getCommodityName } from '@elite-dangerous-almanac/core/i18n/commodities';
|
|
28
|
+
*
|
|
29
|
+
* getCommodityName('LavianBrandy', 'de-DE'); // -> 'Lave-Brandy'
|
|
30
|
+
* getCommodityName('platinum', 'ru'); // -> 'Платина'
|
|
31
|
+
* getCommodityName('platinum', 'it'); // -> null
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
declare function getCommodityName(symbol: string, locale: string): string | null;
|
|
35
|
+
|
|
36
|
+
export { getCommodityName };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{getCommodityName}from"../chunk-TRGHPX2O.js"; //# sourceMappingURL=commodities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"O"}
|
|
@@ -9,12 +9,11 @@
|
|
|
9
9
|
* question — it names the damage split or behaviour the `modifiers` list cannot
|
|
10
10
|
* express — and the two are deliberately not the same string.
|
|
11
11
|
*
|
|
12
|
-
* **This is
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* you want that boundary to be explicit.
|
|
12
|
+
* **This is a heavy `i18n` dataset**: six locales of prose for every effect is ~129 KiB
|
|
13
|
+
* minified (~25 KiB gzipped), more than module names cost. It has its own module so an
|
|
14
|
+
* application that never shows an effect description does not pay for it — import it
|
|
15
|
+
* from `core/i18n/experimental-effect-descriptions` rather than the `core/i18n` barrel
|
|
16
|
+
* if you want that boundary to be explicit.
|
|
18
17
|
*
|
|
19
18
|
* @param experimentalEffectSymbol - Frontier's experimental-effect id. Matching ignores case and
|
|
20
19
|
* surrounding whitespace.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getExperimentalEffectDescription}from"../chunk-
|
|
1
|
+
export{getExperimentalEffectDescription}from"../chunk-RJ3ZLQRB.js"; //# sourceMappingURL=experimental-effect-descriptions.js.map
|
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @param experimentalEffectSymbol - Frontier's experimental-effect id, such as
|
|
6
6
|
* `"special_concordant_sequence"`. Matching ignores case and surrounding whitespace.
|
|
7
|
-
* @param locale - A BCP 47 language or regional tag, such as `"de"
|
|
8
|
-
*
|
|
9
|
-
* hyphens. A regional tag falls back to its language after an exact-locale miss.
|
|
7
|
+
* @param locale - A BCP 47 language or regional tag, such as `"de"` or `"de-DE"`; see
|
|
8
|
+
* {@link GameLocale} for how a tag is matched.
|
|
10
9
|
* @returns The localized effect name; the canonical `ExperimentalEffect.name` for any
|
|
11
10
|
* English tag; or `null` when
|
|
12
11
|
* the id is unknown, the locale is unsupported, or the pinned source carries no value
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getExperimentalEffectName}from"../chunk-
|
|
1
|
+
export{getExperimentalEffectName}from"../chunk-QPT2WJYN.js"; //# sourceMappingURL=experimental-effects.js.map
|