@elite-dangerous-almanac/core 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PROVENANCE/ships/SOURCES.md +23 -0
- package/dist/chunk-37JIMWLK.js +1 -0
- package/dist/chunk-37JIMWLK.js.map +1 -0
- package/dist/chunk-4CBMQULR.js +1 -0
- package/dist/{chunk-4ZGUSHTP.js.map → chunk-4CBMQULR.js.map} +1 -1
- package/dist/{chunk-QTAMQ6ME.js → chunk-5VWACBTN.js} +1 -1
- package/dist/chunk-65FZECUX.js +1 -0
- package/dist/chunk-65FZECUX.js.map +1 -0
- package/dist/chunk-6BFQIYGZ.js +1 -0
- package/dist/chunk-6BFQIYGZ.js.map +1 -0
- package/dist/chunk-6HA2YIKW.js +1 -0
- package/dist/chunk-6HA2YIKW.js.map +1 -0
- package/dist/{chunk-7EE5VIHR.js → chunk-6HMIF2RJ.js} +1 -1
- package/dist/chunk-6S36AVA4.js +1 -0
- package/dist/chunk-6S36AVA4.js.map +1 -0
- package/dist/chunk-6WTUY6ZX.js +1 -0
- package/dist/{chunk-V3AEUBHV.js.map → chunk-6WTUY6ZX.js.map} +1 -1
- package/dist/chunk-77TT4K53.js +1 -0
- package/dist/{chunk-Y6KJJMIM.js → chunk-A4QKXXZD.js} +1 -1
- package/dist/chunk-AAE4KZ2V.js +1 -0
- package/dist/chunk-AAE4KZ2V.js.map +1 -0
- package/dist/{chunk-Q5XOGATC.js → chunk-AIEC3LBT.js} +1 -1
- package/dist/{chunk-QY3L5BKN.js → chunk-APEG4ZER.js} +1 -1
- package/dist/{chunk-JGOAQLYW.js → chunk-F44QX47A.js} +1 -1
- package/dist/{chunk-EVJ32UF3.js → chunk-FA5JVXVG.js} +1 -1
- package/dist/{chunk-EVJ32UF3.js.map → chunk-FA5JVXVG.js.map} +1 -1
- package/dist/chunk-GGQMIQPC.js +1 -0
- package/dist/chunk-GGQMIQPC.js.map +1 -0
- package/dist/{chunk-EYGVDJ2I.js → chunk-GMTAFUAG.js} +1 -1
- package/dist/{chunk-Z43DN4PY.js → chunk-GTEHRZPN.js} +1 -1
- package/dist/{chunk-Z43DN4PY.js.map → chunk-GTEHRZPN.js.map} +1 -1
- package/dist/{chunk-PA5EITW5.js → chunk-HUYYGTRM.js} +1 -1
- package/dist/{chunk-PA5EITW5.js.map → chunk-HUYYGTRM.js.map} +1 -1
- package/dist/{chunk-HKXXFIRI.js → chunk-ITKZKREP.js} +1 -1
- package/dist/{chunk-OYR5HUQZ.js → chunk-IWFQ4ZKF.js} +1 -1
- package/dist/{chunk-ZCEAPJDH.js → chunk-J7BM5NGK.js} +1 -1
- package/dist/chunk-JET673E5.js +1 -0
- package/dist/chunk-JET673E5.js.map +1 -0
- package/dist/chunk-JMAXSXXQ.js +1 -0
- package/dist/chunk-JMAXSXXQ.js.map +1 -0
- package/dist/chunk-JO52LYO3.js +1 -0
- package/dist/chunk-M2TCZKRT.js +1 -0
- package/dist/chunk-M2TCZKRT.js.map +1 -0
- package/dist/chunk-M4FZRDAH.js +1 -0
- package/dist/chunk-M4FZRDAH.js.map +1 -0
- package/dist/chunk-OJC6AUL7.js +1 -0
- package/dist/chunk-OJC6AUL7.js.map +1 -0
- package/dist/{chunk-FYVPZBXN.js → chunk-Q5ALV3DI.js} +1 -1
- package/dist/{chunk-SQS7672E.js → chunk-Q6YDPREF.js} +1 -1
- package/dist/chunk-SG6YLUQ4.js +1 -0
- package/dist/chunk-SG6YLUQ4.js.map +1 -0
- package/dist/{chunk-OVUHQEH5.js → chunk-T4MKUKYS.js} +1 -1
- package/dist/{chunk-OVUHQEH5.js.map → chunk-T4MKUKYS.js.map} +1 -1
- package/dist/{chunk-XUHAPOM6.js → chunk-VEEBJFJ7.js} +1 -1
- package/dist/{chunk-L747RVPO.js → chunk-VQJXRPYI.js} +1 -1
- package/dist/{chunk-L747RVPO.js.map → chunk-VQJXRPYI.js.map} +1 -1
- package/dist/chunk-VTMCSCXV.js +1 -0
- package/dist/chunk-VTMCSCXV.js.map +1 -0
- package/dist/chunk-XQJERZUS.js +1 -0
- package/dist/chunk-XQJERZUS.js.map +1 -0
- package/dist/commodities/commodities-all.js +1 -1
- package/dist/commodities/commodities-rare.js +1 -1
- package/dist/commodities/commodities-standard.js +1 -1
- package/dist/commodities/commodities.js +1 -1
- package/dist/commodities/index.js +1 -1
- package/dist/materials/index.js +1 -1
- package/dist/materials/materials-all.js +1 -1
- package/dist/materials/materials-encoded.js +1 -1
- package/dist/materials/materials-manufactured.js +1 -1
- package/dist/materials/materials-raw.js +1 -1
- package/dist/materials/materials.js +1 -1
- package/dist/ships/armour.js +1 -1
- package/dist/ships/build-metrics.js +1 -1
- package/dist/ships/distributor.js +1 -1
- package/dist/ships/heat.js +1 -1
- package/dist/ships/index.d.ts +1 -1
- package/dist/ships/index.js +1 -1
- package/dist/ships/jump-range.js +1 -1
- package/dist/ships/loadout-validation.d.ts +111 -5
- package/dist/ships/loadout-validation.js +1 -1
- package/dist/ships/mobility-capacitor.js +1 -1
- package/dist/ships/mobility.js +1 -1
- package/dist/ships/modules-all.js +1 -1
- package/dist/ships/modules-core.js +1 -1
- package/dist/ships/modules-internal.js +1 -1
- package/dist/ships/modules.d.ts +21 -1
- package/dist/ships/modules.js +1 -1
- package/dist/ships/power.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +12 -7
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/resistances.js +1 -1
- package/dist/ships/shield-capacitor.js +1 -1
- package/dist/ships/shield-recovery.js +1 -1
- package/dist/ships/shields.js +1 -1
- package/dist/ships/ship-loadout.d.ts +84 -17
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/slef.d.ts +4 -1
- package/dist/ships/slef.js +1 -1
- package/dist/ships/weapons-capacitor.js +1 -1
- package/dist/ships/weapons.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4KJ7CR74.js +0 -1
- package/dist/chunk-4KJ7CR74.js.map +0 -1
- package/dist/chunk-4ZGUSHTP.js +0 -1
- package/dist/chunk-6L56LWTT.js +0 -1
- package/dist/chunk-6L56LWTT.js.map +0 -1
- package/dist/chunk-6O4NRRSB.js +0 -1
- package/dist/chunk-6O4NRRSB.js.map +0 -1
- package/dist/chunk-7TQ2X6Q3.js +0 -1
- package/dist/chunk-7TQ2X6Q3.js.map +0 -1
- package/dist/chunk-B4ZSTOM4.js +0 -1
- package/dist/chunk-B4ZSTOM4.js.map +0 -1
- package/dist/chunk-D6YEHR5S.js +0 -1
- package/dist/chunk-D6YEHR5S.js.map +0 -1
- package/dist/chunk-EVW4Z4CB.js +0 -1
- package/dist/chunk-EVW4Z4CB.js.map +0 -1
- package/dist/chunk-GZYPQIO2.js +0 -1
- package/dist/chunk-GZYPQIO2.js.map +0 -1
- package/dist/chunk-JQG4C67D.js +0 -1
- package/dist/chunk-OYFMHDYT.js +0 -1
- package/dist/chunk-OYFMHDYT.js.map +0 -1
- package/dist/chunk-PY5L6WC5.js +0 -1
- package/dist/chunk-PY5L6WC5.js.map +0 -1
- package/dist/chunk-Q2L75GSI.js +0 -1
- package/dist/chunk-Q2L75GSI.js.map +0 -1
- package/dist/chunk-QJ7GB6FF.js +0 -1
- package/dist/chunk-QJ7GB6FF.js.map +0 -1
- package/dist/chunk-RRYBSAPX.js +0 -1
- package/dist/chunk-RRYBSAPX.js.map +0 -1
- package/dist/chunk-V3AEUBHV.js +0 -1
- package/dist/chunk-V4C6FIE2.js +0 -1
- package/dist/chunk-VYDQHPY2.js +0 -1
- package/dist/chunk-VYDQHPY2.js.map +0 -1
- package/dist/chunk-YXPZ7QQB.js +0 -1
- package/dist/chunk-YXPZ7QQB.js.map +0 -1
- /package/dist/{chunk-QTAMQ6ME.js.map → chunk-5VWACBTN.js.map} +0 -0
- /package/dist/{chunk-7EE5VIHR.js.map → chunk-6HMIF2RJ.js.map} +0 -0
- /package/dist/{chunk-JQG4C67D.js.map → chunk-77TT4K53.js.map} +0 -0
- /package/dist/{chunk-Y6KJJMIM.js.map → chunk-A4QKXXZD.js.map} +0 -0
- /package/dist/{chunk-Q5XOGATC.js.map → chunk-AIEC3LBT.js.map} +0 -0
- /package/dist/{chunk-QY3L5BKN.js.map → chunk-APEG4ZER.js.map} +0 -0
- /package/dist/{chunk-JGOAQLYW.js.map → chunk-F44QX47A.js.map} +0 -0
- /package/dist/{chunk-EYGVDJ2I.js.map → chunk-GMTAFUAG.js.map} +0 -0
- /package/dist/{chunk-HKXXFIRI.js.map → chunk-ITKZKREP.js.map} +0 -0
- /package/dist/{chunk-OYR5HUQZ.js.map → chunk-IWFQ4ZKF.js.map} +0 -0
- /package/dist/{chunk-ZCEAPJDH.js.map → chunk-J7BM5NGK.js.map} +0 -0
- /package/dist/{chunk-V4C6FIE2.js.map → chunk-JO52LYO3.js.map} +0 -0
- /package/dist/{chunk-FYVPZBXN.js.map → chunk-Q5ALV3DI.js.map} +0 -0
- /package/dist/{chunk-SQS7672E.js.map → chunk-Q6YDPREF.js.map} +0 -0
- /package/dist/{chunk-XUHAPOM6.js.map → chunk-VEEBJFJ7.js.map} +0 -0
package/dist/ships/modules.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-
|
|
1
|
+
export{getBulkheadsForShip,getModuleBySymbol,getModulesByName}from"../chunk-HUYYGTRM.js"; //# sourceMappingURL=modules.js.map
|
package/dist/ships/power.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{powerBudget}from"../chunk-
|
|
1
|
+
export{powerBudget}from"../chunk-GGQMIQPC.js"; //# sourceMappingURL=power.js.map
|
|
@@ -15,8 +15,8 @@ import './slots.js';
|
|
|
15
15
|
* arrives, not as the stock module leaves the shipyard. That is what
|
|
16
16
|
* {@link getPreEngineeredStats} returns.
|
|
17
17
|
*
|
|
18
|
-
* This module imports every module record to resolve stats. Its resolver is 362.
|
|
19
|
-
* minified in a consumer bundle; the complete runtime API is 396.
|
|
18
|
+
* This module imports every module record to resolve stats. Its resolver is 362.7 KiB
|
|
19
|
+
* minified in a consumer bundle; the complete runtime API is 396.5 KiB (43.2 KiB
|
|
20
20
|
* gzipped). Consumers that only list variants can import `./pre-engineered.js` without
|
|
21
21
|
* these module catalogues.
|
|
22
22
|
* A journal or SLEF module can instead be classified with
|
|
@@ -100,11 +100,16 @@ declare function getPreEngineeredJournalModifiers(variant: PreEngineeredVariant)
|
|
|
100
100
|
*
|
|
101
101
|
* A locked fixed article is also identified by its unique
|
|
102
102
|
* symbol/blueprint/grade/experimental tuple when a SLEF capture omits the `Modifiers` key
|
|
103
|
-
* entirely
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
* wins.
|
|
103
|
+
* entirely: being final, no ordinary roll could have written that tuple. A present empty
|
|
104
|
+
* or partial array does not use this shortcut: older library exports can carry an ordinary
|
|
105
|
+
* roll with the same tuple, and its values must not be replaced by reward stats. A third-
|
|
106
|
+
* party export can omit the array from such a roll; that record is indistinguishable from
|
|
107
|
+
* the fixed article, so the catalogue identity wins.
|
|
108
|
+
*
|
|
109
|
+
* An unlocked article that shares a blueprint with no craftable recipe of its base module
|
|
110
|
+
* is identified the same way, but by `ShipLoadout.fromLoadout` rather than here — that
|
|
111
|
+
* reading needs each module's engineering menu, a catalogue this module deliberately does
|
|
112
|
+
* not carry into a consumer's bundle.
|
|
108
113
|
*
|
|
109
114
|
* Frontier journals and captures may omit a derived modifier, so one predicted value may
|
|
110
115
|
* be absent. Every stated predicted value must agree within journal float noise, and all
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,unresolvedModifiers}from"../chunk-
|
|
1
|
+
export{getPreEngineeredJournalModifiers,getPreEngineeredModifiers,getPreEngineeredStats,identifyPreEngineeredVariant,unresolvedModifiers}from"../chunk-JET673E5.js"; //# sourceMappingURL=pre-engineered-stats.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{effectiveHitPoints,mapDamageTypes,stackArmourResistance,stackShieldResistance,systemsResistance}from"../chunk-
|
|
1
|
+
export{effectiveHitPoints,mapDamageTypes,stackArmourResistance,stackShieldResistance,systemsResistance}from"../chunk-F44QX47A.js"; //# sourceMappingURL=resistances.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{shieldCapacitorMetrics}from"../chunk-
|
|
1
|
+
export{shieldCapacitorMetrics}from"../chunk-XQJERZUS.js"; //# sourceMappingURL=shield-capacitor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{cellBankSummary,shieldRecovery}from"../chunk-
|
|
1
|
+
export{cellBankSummary,shieldRecovery}from"../chunk-JMAXSXXQ.js"; //# sourceMappingURL=shield-recovery.js.map
|
package/dist/ships/shields.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength}from"../chunk-
|
|
1
|
+
export{shieldMassCurveMultiplier,shieldMetrics,shieldStrength}from"../chunk-5VWACBTN.js"; //# sourceMappingURL=shields.js.map
|
|
@@ -160,10 +160,13 @@ type LoadoutSlot = BuildSlot & {
|
|
|
160
160
|
* A change made while normalizing a journal or SLEF loadout against the catalogues.
|
|
161
161
|
*
|
|
162
162
|
* @remarks
|
|
163
|
-
* `ShipLoadout.fromLoadout` states the
|
|
163
|
+
* `ShipLoadout.fromLoadout` states the rules these outcomes report: a removable mount is
|
|
164
164
|
* `emptied` of an article the catalogue cannot resolve, and a fixed mount is `defaulted`
|
|
165
165
|
* to the hull's stock article whenever the source left none it can hold — with a `null`
|
|
166
|
-
* `sourceSymbol` when the source named nothing there at all.
|
|
166
|
+
* `sourceSymbol` when the source named nothing there at all. A module whose source stated
|
|
167
|
+
* a recipe and no `Modifiers` reports `unresolvedEngineering` when neither a craftable
|
|
168
|
+
* recipe nor a catalogued article answers to what it named, because that module alone
|
|
169
|
+
* keeps the figures of an unengineered one.
|
|
167
170
|
*
|
|
168
171
|
* @example
|
|
169
172
|
* ```ts
|
|
@@ -194,6 +197,20 @@ type LoadoutImportOutcome = {
|
|
|
194
197
|
readonly sourceSymbol: string | null;
|
|
195
198
|
/** Stock module identity installed in the mount. */
|
|
196
199
|
readonly replacementSymbol: string;
|
|
200
|
+
} | {
|
|
201
|
+
/**
|
|
202
|
+
* The source stated engineering with no `Modifiers`, and what it named could
|
|
203
|
+
* not be rolled — an unknown or unoffered blueprint or experimental effect, a
|
|
204
|
+
* grade or quality outside the recipe, or a base stat the catalogues do not
|
|
205
|
+
* carry — so this module's figures are the unengineered ones.
|
|
206
|
+
*/
|
|
207
|
+
readonly action: 'unresolvedEngineering';
|
|
208
|
+
/** Exact slot spelling used by the imported build. */
|
|
209
|
+
readonly slot: string;
|
|
210
|
+
/** Module identity the recipe was stated for. */
|
|
211
|
+
readonly sourceSymbol: string;
|
|
212
|
+
/** Recipe the source named, in its own spelling. */
|
|
213
|
+
readonly blueprintSymbol: string;
|
|
197
214
|
};
|
|
198
215
|
|
|
199
216
|
/**
|
|
@@ -378,8 +395,9 @@ interface EngineeringNormalized {
|
|
|
378
395
|
/** Discriminator for a successful normalization. */
|
|
379
396
|
readonly kind: 'normalized';
|
|
380
397
|
/**
|
|
381
|
-
* Quality reported by the fitted module before normalization, in `[0, 1]`.
|
|
382
|
-
*
|
|
398
|
+
* Quality reported by the fitted module before normalization, in `[0, 1]`. A block
|
|
399
|
+
* that stated no modifiers still reports the quality it stated, so this reads `1` for
|
|
400
|
+
* a completed roll whose figures this call was the first to spell out.
|
|
383
401
|
*/
|
|
384
402
|
readonly previousQuality: number;
|
|
385
403
|
/** Completed engineering quality. Always `1`. */
|
|
@@ -541,7 +559,8 @@ declare class ShipLoadout {
|
|
|
541
559
|
* Defaults to the first.
|
|
542
560
|
* @returns The loadout for that entry.
|
|
543
561
|
* @remarks Module normalization follows {@link ShipLoadout.fromLoadout}; inspect
|
|
544
|
-
* {@link importOutcomes} for modules that were emptied or defaulted
|
|
562
|
+
* {@link importOutcomes} for modules that were emptied or defaulted, and for stated
|
|
563
|
+
* engineering it could not resolve.
|
|
545
564
|
* @throws {SyntaxError} If `input` is a string that is not valid JSON.
|
|
546
565
|
* @throws {TypeError} If the export holds no usable loadout, `index` is out of range,
|
|
547
566
|
* or the selected entry names a hull absent from the catalogue.
|
|
@@ -560,6 +579,20 @@ declare class ShipLoadout {
|
|
|
560
579
|
* and the catalogue's stat block then supplies the values the capture omits; the
|
|
561
580
|
* capture's own modifiers stay authoritative over it.
|
|
562
581
|
*
|
|
582
|
+
* **A recipe stated without `Modifiers` is rolled.** A journal writes the modifier
|
|
583
|
+
* block beside the recipe, but SLEF permits stating the recipe alone and Inara does,
|
|
584
|
+
* so such a block is materialised here at the grade and quality it states — otherwise
|
|
585
|
+
* the module would report that it is engineered while publishing the figures of one
|
|
586
|
+
* that is not. Where the module's own engineering menu offers the recipe, the block
|
|
587
|
+
* is read as an ordinary roll of it, even if a fixed article of that module carries
|
|
588
|
+
* the same blueprint at the same grade; use {@link setPreEngineeredVariant} to say
|
|
589
|
+
* the article was meant instead. A Mercenary article is read as its own article at
|
|
590
|
+
* the grade it was bought at, and as that purchase climbed by its bespoke recipe
|
|
591
|
+
* above it. Where the menu does not offer the recipe, no ordinary roll
|
|
592
|
+
* could have written the block, so a single catalogued article answering to it is
|
|
593
|
+
* fitted. Where neither answers, the module keeps unengineered figures and
|
|
594
|
+
* {@link importOutcomes} reports the slot as `unresolvedEngineering`.
|
|
595
|
+
*
|
|
563
596
|
* Modules are imported as one complete snapshot, so their order does not affect
|
|
564
597
|
* per-ship count allowances. An entry stands as the event stated it when the mount
|
|
565
598
|
* can hold the article the catalogue resolves, when its slot is a known cosmetic or
|
|
@@ -725,18 +758,23 @@ declare class ShipLoadout {
|
|
|
725
758
|
*/
|
|
726
759
|
get sourcePurchase(): SourcePurchaseRecord | null;
|
|
727
760
|
/**
|
|
728
|
-
*
|
|
729
|
-
* mounts stocked from the hull defaults because the source
|
|
730
|
-
* defaults' own order
|
|
761
|
+
* What the import made of this build: the changes it applied, in source order,
|
|
762
|
+
* followed by the fixed mounts stocked from the hull defaults because the source
|
|
763
|
+
* named none, in the defaults' own order, followed by the modules whose stated
|
|
764
|
+
* engineering it could not resolve.
|
|
731
765
|
*
|
|
732
766
|
* @returns A deeply frozen list. It is empty for builds created with
|
|
733
767
|
* {@link ShipLoadout.empty} or {@link ShipLoadout.default}, and for imports that
|
|
734
|
-
* needed no normalization.
|
|
768
|
+
* needed no normalization and left no engineering unresolved.
|
|
735
769
|
* @remarks
|
|
736
770
|
* Each entry names the exact slot, and the source identity where the source gave one.
|
|
737
771
|
* `emptied` means an unknown module was removed from a removable mount; `defaulted`
|
|
738
772
|
* names the stock article fitted to armour, a core internal or the cargo hatch, with
|
|
739
773
|
* a `null` `sourceSymbol` when the source named nothing there at all.
|
|
774
|
+
* `unresolvedEngineering` is the one entry that reports a *non*-change: the source
|
|
775
|
+
* stated a recipe and no `Modifiers`, nothing the catalogues carry answers to it, and
|
|
776
|
+
* that module alone keeps the figures of an unengineered one (see
|
|
777
|
+
* {@link ShipLoadout.fromLoadout}).
|
|
740
778
|
*/
|
|
741
779
|
get importOutcomes(): readonly LoadoutImportOutcome[];
|
|
742
780
|
/**
|
|
@@ -744,11 +782,29 @@ declare class ShipLoadout {
|
|
|
744
782
|
*
|
|
745
783
|
* @remarks
|
|
746
784
|
* `valid` asks whether the fit is legal: a module in a nonexistent or incompatible
|
|
747
|
-
* slot, a duplicated exclusive family,
|
|
748
|
-
* makes it `false`. `complete` asks
|
|
749
|
-
*
|
|
750
|
-
*
|
|
751
|
-
* beside them.
|
|
785
|
+
* slot, a duplicated exclusive family, a module count past the build's allowance, or
|
|
786
|
+
* a ship heavier than its own thrusters can move makes it `false`. `complete` asks
|
|
787
|
+
* that *and* whether armour and the seven core mounts are filled — every build fills
|
|
788
|
+
* those, so on a build the two answers agree. Neither question reports import
|
|
789
|
+
* normalization, so read {@link importOutcomes} beside them.
|
|
790
|
+
*
|
|
791
|
+
* The thruster rule weighs the fitted thrusters' post-engineering `maxMass` against
|
|
792
|
+
* what the ship comes to at each load it can reach without being re-fitted:
|
|
793
|
+
* {@link unladenMass} alone, then with a full {@link fuelCapacity | main tank}, then
|
|
794
|
+
* with a full {@link cargoCapacity | hold} as well. The lightest of those that is
|
|
795
|
+
* already too heavy is what gets reported. A ship that cannot move on a full tank is
|
|
796
|
+
* an error — it never leaves the pad, where the tank always is one — while a ship
|
|
797
|
+
* that only fails with the hold full is a warning, and leaves the build valid and
|
|
798
|
+
* complete: how much cargo to take is the pilot's call. Either way
|
|
799
|
+
* {@link ships!BuildMetrics.mobilityMetrics | BuildMetrics.mobilityMetrics} reports
|
|
800
|
+
* a speed of zero at the load in question.
|
|
801
|
+
*
|
|
802
|
+
* A capture may state a mass nobody can weigh — a negative `UnladenMass`, or an
|
|
803
|
+
* engineering modifier that drives a rating below zero. Neither is refused here:
|
|
804
|
+
* this method reports a build rather than rejecting one, so an unweighable figure is
|
|
805
|
+
* left out and the rule it feeds simply does not run. The figure itself is still
|
|
806
|
+
* reported, as a thrown one, by whichever {@link ships!BuildMetrics | BuildMetrics}
|
|
807
|
+
* calculation reads it.
|
|
752
808
|
*
|
|
753
809
|
* @returns The validation report, recomputed from the current fit on every call.
|
|
754
810
|
*/
|
|
@@ -836,6 +892,13 @@ declare class ShipLoadout {
|
|
|
836
892
|
* satisfied, with candidates that would worsen a one-per-ship or module-count limit
|
|
837
893
|
* omitted.
|
|
838
894
|
*
|
|
895
|
+
* @remarks
|
|
896
|
+
* This is the outfitting *offer*, so the fifteen {@link ships!OutfittingModule.grantOnly | grantOnly}
|
|
897
|
+
* articles are never in it: each is a second identity for a module the game already
|
|
898
|
+
* sells — `Int_Engine_Size2_Class1_free` is the 2E Thrusters — and listing both puts
|
|
899
|
+
* the same article on the screen twice, once with no price. A build that already
|
|
900
|
+
* carries one keeps it; only the choices are filtered.
|
|
901
|
+
*
|
|
839
902
|
* @param slotKey - The slot key to fit, matched case-insensitively (journal spelling).
|
|
840
903
|
* @returns The fitting modules, in complete-catalogue order.
|
|
841
904
|
* @throws {RangeError} If the hull has no slot with that key.
|
|
@@ -1019,9 +1082,13 @@ declare class ShipLoadout {
|
|
|
1019
1082
|
* purchase identity. A refusal never changes the loadout.
|
|
1020
1083
|
*
|
|
1021
1084
|
* A block that names a blueprint and grade but states no `Modifiers` at all is rolled
|
|
1022
|
-
* here too, even at quality `1
|
|
1023
|
-
*
|
|
1024
|
-
*
|
|
1085
|
+
* here too, even at quality `1`, so a completed roll cannot stay stock. On an imported
|
|
1086
|
+
* build such a block is one {@link ShipLoadout.fromLoadout} did not roll: a catalogued
|
|
1087
|
+
* article it fitted instead, whose fixed modifiers this spells out unless the article
|
|
1088
|
+
* is final; a Mercenary article at the grade it was bought at, whose block no registry
|
|
1089
|
+
* publishes and which this refuses; or a recipe nothing answered to, which this
|
|
1090
|
+
* refuses for the reason the import could not roll it. A stated modifier array, empty
|
|
1091
|
+
* or partial, is left alone at quality `1`.
|
|
1025
1092
|
*
|
|
1026
1093
|
* @param slotKey - The engineered slot, matched case-insensitively.
|
|
1027
1094
|
* @returns A frozen result identifying a normalized, unchanged or unsupported state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{LoadoutEditError,ShipLoadout}from"../chunk-
|
|
1
|
+
export{LoadoutEditError,ShipLoadout}from"../chunk-SG6YLUQ4.js"; //# sourceMappingURL=ship-loadout.js.map
|
package/dist/ships/slef.d.ts
CHANGED
|
@@ -90,7 +90,10 @@ interface BlueprintModuleEngineering {
|
|
|
90
90
|
* `BlueprintName`, `Level` and `Quality` — the specification's own example omits it —
|
|
91
91
|
* so an export from another app may name the blueprint and its roll without spelling
|
|
92
92
|
* out the resulting stats. Treat a missing array as "not stated", not as "nothing was
|
|
93
|
-
* changed".
|
|
93
|
+
* changed". {@link ShipLoadout.fromLoadout} resolves what a missing array implies —
|
|
94
|
+
* rolling the stated recipe, or fitting the catalogued article the identity can only
|
|
95
|
+
* mean — so a build imported through it needs none of this. Working from the wire
|
|
96
|
+
* shape directly, a craftable recipe is reconstructed with
|
|
94
97
|
* {@link ShipLoadout.applyBlueprint}, or rolled where it stands with
|
|
95
98
|
* {@link ShipLoadout.completeEngineeringGrade}, which spells out a stated identity
|
|
96
99
|
* at quality `1`; resolve a fixed identity through the pre-engineered catalogue and
|
package/dist/ships/slef.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{getLoadoutModifier,inspectSlef,parseSlef,stringifySlef,toSlef}from"../chunk-
|
|
1
|
+
export{getLoadoutModifier,inspectSlef,parseSlef,stringifySlef,toSlef}from"../chunk-T4MKUKYS.js"; //# sourceMappingURL=slef.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{weaponsCapacitorMetrics}from"../chunk-
|
|
1
|
+
export{weaponsCapacitorMetrics}from"../chunk-M4FZRDAH.js"; //# sourceMappingURL=weapons-capacitor.js.map
|
package/dist/ships/weapons.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics}from"../chunk-
|
|
1
|
+
export{armourPiercingFactor,combinedRateOfFire,damageFalloff,damagePerSecond,energyPerSecond,heatPerSecond,splitDamage,sumWeaponMetrics,sustainedDamagePerSecond,sustainedFireFactor,weaponMetrics}from"../chunk-37JIMWLK.js"; //# sourceMappingURL=weapons.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elite-dangerous-almanac/core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Elite Dangerous static data and calculations: astronomy, ships and outfitting, personal equipment and engineering, materials, and market commodities.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
package/dist/chunk-4KJ7CR74.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{capacitorRechargeAtPips}from"./chunk-JOTAOI5T.js";var phaseTime=(megajoules,rate,draw,capacity,recharge)=>{if(megajoules<=0)return 0;if(rate<=0)return Infinity;if(draw<=0)return megajoules/rate;const drain=rate*draw-recharge;if(drain<=0)return megajoules/rate;const capacitorLifetime=capacity/drain;const beforeEmpty=capacitorLifetime*rate;if(megajoules<=beforeEmpty)return megajoules/rate;if(recharge<=0)return Infinity;return capacitorLifetime+(megajoules-beforeEmpty)/(recharge/draw)};var requireFiniteNonNegative=(name,value)=>{if(!Number.isFinite(value)||value<0){throw new RangeError(`shieldRecovery: ${name} must be a finite non-negative number`)}};function shieldRecovery(input){const pips=input.systemsPips??4;if(!Number.isFinite(pips)||pips<0||pips>4){throw new RangeError("shieldRecovery: systemsPips must be a finite number from 0 to 4")}for(const field of["strength","regenRate","brokenRegenRate","distributorDraw","systemsCapacity","systemsRecharge"]){requireFiniteNonNegative(field,input[field])}const recharge=capacitorRechargeAtPips(input.systemsRecharge,pips);const half=input.strength/2;return Object.freeze({regenRate:input.regenRate,brokenRegenRate:input.brokenRegenRate,recoveryTime:16+phaseTime(half,input.brokenRegenRate,input.distributorDraw,input.systemsCapacity,recharge),regenTime:phaseTime(half,input.regenRate,input.distributorDraw,input.systemsCapacity,recharge)})}function cellBankSummary(banks){for(const[index,bank]of banks.entries()){if(typeof bank.powered!=="boolean"){throw new TypeError(`cellBankSummary: banks[${index}].powered must be a boolean`)}}const metrics=banks.map(bank=>Object.freeze({slot:bank.slot,symbol:bank.symbol,reinforcement:bank.reinforcementRate*bank.duration,cells:bank.cells,spinUp:bank.spinUp,duration:bank.duration,heat:bank.heat,powered:bank.powered}));return Object.freeze({banks:Object.freeze(metrics),totalRestorable:metrics.reduce((sum,bank)=>sum+(bank.powered?bank.reinforcement*bank.cells:0),0),totalCells:metrics.reduce((sum,bank)=>sum+(bank.powered?bank.cells:0),0)})}export{cellBankSummary,shieldRecovery};//# sourceMappingURL=chunk-4KJ7CR74.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/shield-recovery.ts"],"names":["capacitorRechargeAtPips","phaseTime","megajoules","rate","draw","capacity","recharge","Infinity","drain","capacitorLifetime","beforeEmpty","requireFiniteNonNegative","name","value","Number","isFinite","RangeError","shieldRecovery","input","pips","systemsPips","field","systemsRecharge","half","strength","Object","freeze","regenRate","brokenRegenRate","recoveryTime","distributorDraw","systemsCapacity","regenTime","cellBankSummary","banks","index","bank","entries","powered","TypeError","metrics","map","slot","symbol","reinforcement","reinforcementRate","duration","cells","spinUp","heat","totalRestorable","reduce","sum","totalCells"],"mappings":"O,kDA0GA,IAAMC,UAAY,CACdC,WACAC,KACAC,KACAC,SACAC,YAEA,GAAIJ,YAAc,EAAG,OAAO,EAC5B,GAAIC,MAAQ,EAAG,OAAOI,SACtB,GAAIH,MAAQ,EAAG,OAAOF,WAAaC,KACnC,MAAMK,MAAQL,KAAOC,KAAOE,SAC5B,GAAIE,OAAS,EAAG,OAAON,WAAaC,KACpC,MAAMM,kBAAoBJ,SAAWG,MACrC,MAAME,YAAcD,kBAAoBN,KACxC,GAAID,YAAcQ,YAAa,OAAOR,WAAaC,KACnD,GAAIG,UAAY,EAAG,OAAOC,SAC1B,OAAOE,mBAAqBP,WAAaQ,cAAgBJ,SAAWF,OAGxE,IAAMO,yBAA2B,CAACC,KAAcC,SAC5C,IAAKC,OAAOC,SAASF,QAAUA,MAAQ,EAAG,CACtC,MAAM,IAAIG,WAAW,mBAAmBJ,4CAC5C,GAoBG,SAASK,eAAeC,OAC3B,MAAMC,KAAOD,MAAME,aAAe,EAClC,IAAKN,OAAOC,SAASI,OAASA,KAAO,GAAKA,KAAO,EAAG,CAChD,MAAM,IAAIH,WAAW,kEACzB,CACA,IAAA,MAAWK,QAAS,CAChB,WACA,YACA,kBACA,kBACA,kBACA,mBACQ,CACRV,yBAAyBU,MAAOH,MAAMG,OAC1C,CACA,MAAMf,SAAWN,wBAAwBkB,MAAMI,gBAAiBH,MAChE,MAAMI,KAAOL,MAAMM,SAAW,EAC9B,OAAOC,OAAOC,OAAO,CACjBC,UAAWT,MAAMS,UACjBC,gBAAiBV,MAAMU,gBACvBC,aACI,GACA5B,UACIsB,KACAL,MAAMU,gBACNV,MAAMY,gBACNZ,MAAMa,gBACNzB,UAER0B,UAAW/B,UACPsB,KACAL,MAAMS,UACNT,MAAMY,gBACNZ,MAAMa,gBACNzB,WAGZ,CAmBO,SAAS2B,gBAAgBC,OAC5B,IAAA,MAAYC,MAAOC,QAASF,MAAMG,UAAW,CACzC,UAAWD,KAAKE,UAAY,UAAW,CACnC,MAAM,IAAIC,UAAU,0BAA0BJ,mCAClD,CACJ,CACA,MAAMK,QAAUN,MAAMO,IAAKL,MACvBX,OAAOC,OAAO,CACVgB,KAAMN,KAAKM,KACXC,OAAQP,KAAKO,OACbC,cAAeR,KAAKS,kBAAoBT,KAAKU,SAC7CC,MAAOX,KAAKW,MACZC,OAAQZ,KAAKY,OACbF,SAAUV,KAAKU,SACfG,KAAMb,KAAKa,KACXX,QAASF,KAAKE,WAGtB,OAAOb,OAAOC,OAAO,CACjBQ,MAAOT,OAAOC,OAAOc,SACrBU,gBAAiBV,QAAQW,OACrB,CAACC,IAAKhB,OAASgB,KAAOhB,KAAKE,QAAUF,KAAKQ,cAAgBR,KAAKW,MAAQ,GACvE,GAEJM,WAAYb,QAAQW,OAAO,CAACC,IAAKhB,OAASgB,KAAOhB,KAAKE,QAAUF,KAAKW,MAAQ,GAAI,IAEzF,QAAAd,gBAAAhB"}
|