@elite-dangerous-almanac/core 0.2.11 → 0.2.13
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 +18 -0
- package/PROVENANCE/commodities/SOURCES.md +2 -1
- package/PROVENANCE/i18n/SOURCES.md +66 -2
- package/PROVENANCE/ships/SOURCES.md +119 -67
- package/README.md +2 -2
- package/THIRD_PARTY_NOTICES.md +2 -1
- package/dist/astro/codex-region-lookup.js +1 -1
- package/dist/astro/codex-region.d.ts +5 -1
- package/dist/astro/codex-region.js +1 -1
- package/dist/astro/index.js +1 -1
- package/dist/{chunk-OSMBAFRW.js → chunk-2GVJNKFW.js} +1 -1
- package/dist/{chunk-OSMBAFRW.js.map → chunk-2GVJNKFW.js.map} +1 -1
- package/dist/{chunk-Q5ALV3DI.js → chunk-3I2I5KG4.js} +1 -1
- package/dist/chunk-55R4MYWV.js +1 -0
- package/dist/chunk-55R4MYWV.js.map +1 -0
- package/dist/{chunk-2TY42PTF.js → chunk-6MQOPQAA.js} +1 -1
- package/dist/{chunk-RA6SY445.js → chunk-7UF4XRIR.js} +1 -1
- package/dist/{chunk-K5JK3XQB.js → chunk-ARG6ESYB.js} +1 -1
- package/dist/{chunk-K5JK3XQB.js.map → chunk-ARG6ESYB.js.map} +1 -1
- package/dist/{chunk-ADLVPKUV.js → chunk-ATD32GCX.js} +1 -1
- package/dist/{chunk-ADLVPKUV.js.map → chunk-ATD32GCX.js.map} +1 -1
- package/dist/{chunk-UVX7RCMP.js → chunk-BI3EFLQ7.js} +1 -1
- package/dist/{chunk-SFEQXUIA.js → chunk-CCJPWDMA.js} +1 -1
- package/dist/chunk-EXHZ4CFB.js +1 -0
- package/dist/{chunk-AUBV6S7V.js.map → chunk-EXHZ4CFB.js.map} +1 -1
- package/dist/chunk-FRG7MKSJ.js +1 -0
- package/dist/{chunk-T7IQHFQ2.js.map → chunk-FRG7MKSJ.js.map} +1 -1
- package/dist/chunk-HE4XE3WR.js +1 -0
- package/dist/chunk-HE4XE3WR.js.map +1 -0
- package/dist/{chunk-XQJERZUS.js → chunk-HWOP7QWK.js} +1 -1
- package/dist/{chunk-ZWT5Y3JR.js → chunk-JEHKGTP2.js} +1 -1
- package/dist/chunk-JEHKGTP2.js.map +1 -0
- package/dist/chunk-KLC5XT6F.js +1 -0
- package/dist/chunk-KLC5XT6F.js.map +1 -0
- package/dist/chunk-KR664YI3.js +1 -0
- package/dist/{chunk-UI5RROGI.js.map → chunk-KR664YI3.js.map} +1 -1
- package/dist/{chunk-Q647OXON.js → chunk-LOWKWUNS.js} +1 -1
- package/dist/{chunk-Q647OXON.js.map → chunk-LOWKWUNS.js.map} +1 -1
- package/dist/chunk-O4NIJDL4.js +1 -0
- package/dist/chunk-O4NIJDL4.js.map +1 -0
- package/dist/{chunk-4T3TTYUT.js → chunk-P3DGQUID.js} +1 -1
- package/dist/{chunk-4T3TTYUT.js.map → chunk-P3DGQUID.js.map} +1 -1
- package/dist/{chunk-F44QX47A.js → chunk-Q75JSMU6.js} +1 -1
- package/dist/{chunk-F44QX47A.js.map → chunk-Q75JSMU6.js.map} +1 -1
- package/dist/chunk-QQFZEOPB.js +1 -0
- package/dist/chunk-QQFZEOPB.js.map +1 -0
- package/dist/{chunk-DBJKLXLS.js → chunk-SRPCHXW2.js} +1 -1
- package/dist/{chunk-3GNYPM6J.js → chunk-T6BIFKPU.js} +1 -1
- package/dist/{chunk-3GNYPM6J.js.map → chunk-T6BIFKPU.js.map} +1 -1
- package/dist/chunk-WDAYRHXR.js +1 -0
- package/dist/{chunk-AYAKU4YA.js.map → chunk-WDAYRHXR.js.map} +1 -1
- package/dist/chunk-ZBB7Q3OZ.js +1 -0
- package/dist/chunk-ZBB7Q3OZ.js.map +1 -0
- package/dist/commodities/commodities-all.js +1 -1
- package/dist/commodities/commodities-standard.d.ts +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/i18n/blueprints.js +1 -1
- package/dist/i18n/codex-regions.d.ts +33 -0
- package/dist/i18n/codex-regions.js +1 -0
- package/dist/i18n/codex-regions.js.map +1 -0
- package/dist/i18n/index.d.ts +10 -8
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/pre-engineered.d.ts +4 -0
- package/dist/i18n/pre-engineered.js +1 -1
- package/dist/materials/index.js +1 -1
- package/dist/materials/micro-resources-all.js +1 -1
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/armour.js +1 -1
- package/dist/ships/blueprint-costs.js +1 -1
- package/dist/ships/blueprints.d.ts +1 -2
- package/dist/ships/blueprints.js +1 -1
- package/dist/ships/build-metrics.js +1 -1
- package/dist/ships/index.js +1 -1
- package/dist/ships/loadout-validation.d.ts +1 -1
- package/dist/ships/loadout-validation.js +1 -1
- package/dist/ships/modules-all.js +1 -1
- package/dist/ships/modules-hardpoint.js +1 -1
- package/dist/ships/modules.d.ts +26 -13
- package/dist/ships/modules.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +5 -9
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/pre-engineered.d.ts +12 -6
- package/dist/ships/pre-engineered.js +1 -1
- package/dist/ships/resistances.d.ts +3 -2
- package/dist/ships/resistances.js +1 -1
- package/dist/ships/shield-capacitor.js +1 -1
- package/dist/ships/shields.js +1 -1
- package/dist/ships/ship-loadout.d.ts +16 -18
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/weapons.d.ts +2 -0
- package/dist/ships/weapons.js +1 -1
- package/package.json +10 -5
- package/dist/chunk-4WC5NHBJ.js +0 -1
- package/dist/chunk-4WC5NHBJ.js.map +0 -1
- package/dist/chunk-53EBUFVU.js +0 -1
- package/dist/chunk-53EBUFVU.js.map +0 -1
- package/dist/chunk-A6QTYK2D.js +0 -1
- package/dist/chunk-A6QTYK2D.js.map +0 -1
- package/dist/chunk-AAU7OM47.js +0 -1
- package/dist/chunk-AAU7OM47.js.map +0 -1
- package/dist/chunk-AUBV6S7V.js +0 -1
- package/dist/chunk-AYAKU4YA.js +0 -1
- package/dist/chunk-C3YZ5KTA.js +0 -1
- package/dist/chunk-C3YZ5KTA.js.map +0 -1
- package/dist/chunk-T7IQHFQ2.js +0 -1
- package/dist/chunk-UI5RROGI.js +0 -1
- package/dist/chunk-ZWT5Y3JR.js.map +0 -1
- /package/dist/{chunk-Q5ALV3DI.js.map → chunk-3I2I5KG4.js.map} +0 -0
- /package/dist/{chunk-2TY42PTF.js.map → chunk-6MQOPQAA.js.map} +0 -0
- /package/dist/{chunk-RA6SY445.js.map → chunk-7UF4XRIR.js.map} +0 -0
- /package/dist/{chunk-UVX7RCMP.js.map → chunk-BI3EFLQ7.js.map} +0 -0
- /package/dist/{chunk-SFEQXUIA.js.map → chunk-CCJPWDMA.js.map} +0 -0
- /package/dist/{chunk-XQJERZUS.js.map → chunk-HWOP7QWK.js.map} +0 -0
- /package/dist/{chunk-DBJKLXLS.js.map → chunk-SRPCHXW2.js.map} +0 -0
|
@@ -93,3 +93,21 @@ e3-26` sits ≈6800 ly beyond every Bleia sphere, and `Praea Aec AA-A b1-1` sits
|
|
|
93
93
|
approximate (≈49.35 ly grid resolution); coordinates are quantised to 1/64 ly.
|
|
94
94
|
- **Grid mapping:** regions sit on a `4096 / 83` ly (≈49.3494 ly) grid over the galactic
|
|
95
95
|
plane, origin corner at `(x0, y0, z0) = (-49985, -40985, -24105)` ly.
|
|
96
|
+
- **Manual corrections:** one. Region 31 is stored as `The Formidine Rift`. The upstream
|
|
97
|
+
transcription drops the article, and the game's own codex English carries it
|
|
98
|
+
(§`data/i18n/SOURCES.md`, acquired 2026-09-10 UTC). The game is taken as authoritative
|
|
99
|
+
for a region name, because `RegionMap.png` reads the codex names rather than naming the
|
|
100
|
+
regions itself. The Veils, The Conduit, The Abyss and The Void keep their article
|
|
101
|
+
upstream, so this is a transcription slip and not an upstream naming choice. Every
|
|
102
|
+
other region name matches the game's English exactly.
|
|
103
|
+
- **A name lookup answers the game's spelling and not the transcription's.** Resolving
|
|
104
|
+
a region by the name `Formidine Rift` misses, where it hit before the correction.
|
|
105
|
+
That spelling is what the upstream catalogues carry, and it is also the game's own
|
|
106
|
+
Spanish, so a caller holding either has to pass `The Formidine Rift`. A region id is
|
|
107
|
+
unaffected, which is why `data/i18n/codex-region-names.jsonc` is keyed by id.
|
|
108
|
+
- **The game's own region raster is not a second source for the geometry.** The codex
|
|
109
|
+
localisation table acquired for `data/i18n/codex-region-names.jsonc` also carries a
|
|
110
|
+
region raster and per-region border polygons. The raster reproduces
|
|
111
|
+
`galactic-region-cells.jsonc` cell for cell, so it confirms the upstream derivation
|
|
112
|
+
and adds nothing to it. The borders are that raster's outline on cell edges, which the
|
|
113
|
+
cells already state; they are not stored.
|
|
@@ -46,7 +46,8 @@ readings are appended, in symbol order, after `curatedcommodity`**: `Bastnasite`
|
|
|
46
46
|
- **The category is separately verified in the running game** (2026-09-03 UTC; no
|
|
47
47
|
immutable revision), exactly as `curatedcommodity`'s is. The registry names a unit and
|
|
48
48
|
its display name and does not say which market group it belongs to. Every one of these is
|
|
49
|
-
`Minerals` except `Helium` and `Helium3`, which are `Chemicals
|
|
49
|
+
`Minerals` except `Helium` and `Helium3`, which are `Chemicals`, and `Iridium`, which is
|
|
50
|
+
`Metals`.
|
|
50
51
|
- **They are stored as standard, not rare.** The registry's English description marks a
|
|
51
52
|
rare good with the phrase "This rare good". No appended unit carries the marker, no
|
|
52
53
|
appended unit appears in FDevIDs' `rare_commodity.csv`, and every unit the marker does
|
|
@@ -109,7 +109,8 @@ tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
|
109
109
|
|
|
110
110
|
## `blueprint-names.jsonc`
|
|
111
111
|
|
|
112
|
-
- **Acquired:** EDSY 2026-08-14 UTC;
|
|
112
|
+
- **Acquired:** EDSY 2026-08-14 UTC; in-game modification names 2026-08-23 and
|
|
113
|
+
2026-09-13 UTC.
|
|
113
114
|
- **EDSY revision:** commit `e446fbe6e4597dea7ab0bd3105b9a36642388040`;
|
|
114
115
|
database version `424009901`, last-modified marker `20260810`.
|
|
115
116
|
- **In-game localisation revision:** none published; the game ships no immutable
|
|
@@ -139,6 +140,10 @@ tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
|
139
140
|
EDSY carries with the same trailing space) and German `Railgun_LongShot`. The
|
|
140
141
|
Portuguese `GuardianModule_Sturdy` and `GuardianWeapon_Sturdy` values carry a literal
|
|
141
142
|
`<br>` line break for the in-game layout, which is stored as a single space.
|
|
143
|
+
- **These Mercenary blueprint names come from direct in-game observation:**
|
|
144
|
+
`BeamLaser_Overloaded`, `BurstLaser_Regenerative`, `Cannon_ForceImpact` and
|
|
145
|
+
`SeekerMissileRackLarge_ExposingMissiles` carry all six observed locales. English uses
|
|
146
|
+
the catalogue's short-name style. The other locales keep the observed strings.
|
|
142
147
|
|
|
143
148
|
## `experimental-effect-names.jsonc`
|
|
144
149
|
|
|
@@ -289,7 +294,8 @@ tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
|
289
294
|
|
|
290
295
|
## `pre-engineered-variant-names.jsonc`
|
|
291
296
|
|
|
292
|
-
- **Acquired:** 2026-08-18 UTC;
|
|
297
|
+
- **Acquired:** 2026-08-18 UTC; Merc-shop names 2026-08-22, 2026-08-30 and
|
|
298
|
+
2026-09-13 UTC.
|
|
293
299
|
- **Derivation:** every compound identity and English name comes from
|
|
294
300
|
`data/ships/pre-engineered.jsonc`. An identity combines the base module symbol,
|
|
295
301
|
blueprint, optional experimental effect and acquisition route. When a variant name
|
|
@@ -533,6 +539,64 @@ tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
|
533
539
|
`"Posavasos Buckyball "` with a trailing space, which is layout and not part of the
|
|
534
540
|
name; it is stored trimmed. Every other value is verbatim.
|
|
535
541
|
|
|
542
|
+
## `codex-region-names.jsonc`
|
|
543
|
+
|
|
544
|
+
- **Acquired:** 2026-09-10 UTC.
|
|
545
|
+
- **In-game localisation revision:** none published; the game ships no immutable
|
|
546
|
+
identifier for its localisation tables. The acquired table is the evidence, and its
|
|
547
|
+
SHA-256 is
|
|
548
|
+
`b280c66219b2fc6d6e92120f013247fdd2404a8a7614e59c0d79a23f300ae51e`.
|
|
549
|
+
- **Derivation:** every region id and canonical English name comes from
|
|
550
|
+
`data/astro/galactic-regions.jsonc`, which stays authoritative for the id set. Each id
|
|
551
|
+
joins to the in-game codex localisation identity `$Codex_RegionName_<id>;`, which
|
|
552
|
+
carries one name per locale. The join is exact and total: every region resolves, and
|
|
553
|
+
the acquired table names no region the astro catalogue does not carry.
|
|
554
|
+
- **The catalogue is keyed by the region id, not by the English name.** The id is the
|
|
555
|
+
region's stable identity and the name is the value being translated, so a corrected
|
|
556
|
+
English name cannot orphan its translations. The correction below is the reason
|
|
557
|
+
this matters rather than a hypothetical.
|
|
558
|
+
- **The game wins the one English disagreement, against this file's opening rule.** The
|
|
559
|
+
astro catalogue's region names are transcribed from EliteDangerousRegionMap's
|
|
560
|
+
`RegionMap.png`, which reads the game's own codex names rather than naming the regions
|
|
561
|
+
itself, so it is not an independent authority the way a ships or commodities catalogue
|
|
562
|
+
is. The game's English is `The Formidine Rift`; German, Portuguese and Russian repeat
|
|
563
|
+
it, Spanish drops the article and French translates the name. The transcription dropped
|
|
564
|
+
the article, and The Veils, The Conduit, The Abyss and The Void all keep theirs
|
|
565
|
+
upstream. The astro catalogue is corrected to the game's English
|
|
566
|
+
(§`data/astro/SOURCES.md`) and the two agree on every other region.
|
|
567
|
+
- **Coverage:** complete. Every region carries all six locales. French translates most of
|
|
568
|
+
the regions; German, Spanish, Portuguese and Russian translate few and otherwise carry
|
|
569
|
+
the English name, which is the game's own value and not a fallback this project
|
|
570
|
+
manufactured. Izanami, Temple, Mare Somnia, Xibalba and Tenebrae are spelled alike in
|
|
571
|
+
all six, so those are proper nouns the game leaves alone.
|
|
572
|
+
- **Some differences look like defects and are the source's own values.** A locale that
|
|
573
|
+
carries the English name does not always carry it byte for byte:
|
|
574
|
+
- **The possessive apostrophe is mixed.** Newton's Vault, Aquila's Halo, Lyra's Song and
|
|
575
|
+
Kepler's Crest carry `U+2019` in German, Spanish, Portuguese and Russian, against the
|
|
576
|
+
English `U+0027`. This is the position `suit-descriptions.jsonc` already records for
|
|
577
|
+
its own mixed apostrophes.
|
|
578
|
+
- **Achilles's Altar differs by the possessive as well as the glyph.** German, Spanish,
|
|
579
|
+
Portuguese and Russian carry `Achilles’ Altar` — `U+2019` and no trailing `s` —
|
|
580
|
+
against the English `Achilles's Altar`.
|
|
581
|
+
- **Russian carries `Ori-Cygnus Arm` for Orion-Cygnus Arm.** It is the game's string,
|
|
582
|
+
and nothing here expands it.
|
|
583
|
+
A fixture pins one of each, so normalising them fails a test rather than changing the
|
|
584
|
+
data quietly.
|
|
585
|
+
- **The acquired table's region grid is not stored, because this repository already has
|
|
586
|
+
it.** The table carries a run-length region raster and a per-region border polygon
|
|
587
|
+
beside the names. The raster reproduces `data/astro/galactic-region-cells.jsonc`
|
|
588
|
+
cell for cell — the same region ids over the same 2048-by-2048 grid, with the same
|
|
589
|
+
projection — and the borders are that raster's own outline, traced on cell edges and
|
|
590
|
+
quantised to 1/32 light year against the cells' 1/64. Neither carries a fact the cells
|
|
591
|
+
do not, so importing either would be a second copy of one geometry. Re-deriving this
|
|
592
|
+
catalogue must take the names alone.
|
|
593
|
+
- **The `$Codex_RegionName_<id>;` keys are not stored, and that is a decision rather than
|
|
594
|
+
a gap.** The key states the region id inside its own name, so a journal `CodexEntry`
|
|
595
|
+
yields the id by reading the number out of the key. A key column would restate what the
|
|
596
|
+
key already carries, and would have to be re-derived every time this catalogue is.
|
|
597
|
+
Storing the id alone is the smaller record.
|
|
598
|
+
- **Manual corrections:** none. Every value is stored verbatim.
|
|
599
|
+
|
|
536
600
|
## Names this repository deliberately does not localize
|
|
537
601
|
|
|
538
602
|
No catalogues are stored for the following names, either because the game does not
|
|
@@ -18,6 +18,7 @@ Referred to throughout by source name; the pin is here, once.
|
|
|
18
18
|
| Elite Dangerous in-game verification | game version `4.4.0.3`; direct in-game observation | 2026-08-14 UTC |
|
|
19
19
|
| Elite Dangerous in-game purchase capture | no game version recorded; nine `ModuleBuyAndStore` journal entries from market `128666762`, 17:34-17:37, at a 10% and a 2.5% outfitting discount | 2026-08-30 UTC |
|
|
20
20
|
| Elite Dangerous in-game outfitting observation | no game version recorded; direct in-game observation that outfitting offers no non-SCO size-8 frame shift drive | 2026-08-30 UTC |
|
|
21
|
+
| Elite Dangerous in-game SCO outfitting observation | no game version recorded; direct in-game observation that outfitting offers no SCO frame shift drive below the size of the mount being outfitted | 2026-09-17 UTC |
|
|
21
22
|
| Elite Dangerous Large Planetary Vehicle Hangar readings | **unreleased** — observation of the modules an unreleased update adds, plus outfitting and journal `ModuleBuy` readings at a 10% and 2.5% discount | 2026-09-02 UTC |
|
|
22
23
|
|
|
23
24
|
Every `eddb.js` derivation uses the baseline snapshot unless its catalogue note names
|
|
@@ -434,17 +435,29 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
434
435
|
in the symbol and the display name.
|
|
435
436
|
- **Derivation:** the symbol family is the classification, exactly as it is for `slot`
|
|
436
437
|
above, and it is applied once here so that consumers read a datum instead of
|
|
437
|
-
matching `Int_Hyperdrive_Overcharge` themselves
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
`
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
`fsdHeatRate`, which is a function of a
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
and
|
|
438
|
+
matching `Int_Hyperdrive_Overcharge` themselves. Every record carrying the flag has
|
|
439
|
+
`Overcharge` in its symbol today and no other record does, so the two agree; stating
|
|
440
|
+
the capability keeps that agreement from being something a consumer has to rely on.
|
|
441
|
+
Stored as a sparse flag rather than a `true`/`false` pair on every drive, following
|
|
442
|
+
`alwaysPowered` and `guardianZoneResistance`.
|
|
443
|
+
- **The two lines share every jump constant this catalogue carries** — `optMass`,
|
|
444
|
+
`maxFuel`, `fuelMul`, `fuelPower`, and the `fsdHeatRate`, which is a function of a
|
|
445
|
+
drive's size alone: 10, 14, 18, 27, 37, 43 and 50 for sizes 2 to 8, and where both
|
|
446
|
+
lines offer a size they state the same value. The overcharged supercruise behaviour
|
|
447
|
+
the drives are named for has no published figures and none are stored. The plain line
|
|
448
|
+
runs from size 2 to 7 and the SCO line from 2 to 8, so size 8 is stated on the SCO
|
|
449
|
+
line alone.
|
|
450
|
+
- **An SCO drive is sold only at the size of the mount being outfitted.** Outfitting
|
|
451
|
+
offers a class-4 SCO drive for a class-4 frame shift drive mount and not for a
|
|
452
|
+
class-5 one, where it does offer a class-4 plain drive — an SCO drive cannot be
|
|
453
|
+
underfitted.
|
|
454
|
+
- **Source:** Elite Dangerous in-game SCO outfitting observation, pinned above.
|
|
455
|
+
- **Derivation:** none; the observation is recorded as stated. No catalogue field
|
|
456
|
+
carries it — the drives are exactly the records `supercruiseOvercharge` already
|
|
457
|
+
marks, and every one of them states a `class` matching the `Size` token in its
|
|
458
|
+
symbol, so the flag and the class are together sufficient to state the rule.
|
|
459
|
+
Neither registry source carries a field stating such a restriction, so the
|
|
460
|
+
observation is the only evidence for it.
|
|
448
461
|
- **`cabinCapacity` — a passenger cabin's berths.** The `passengerCabins` records
|
|
449
462
|
carry it; every other record in all four catalogues omits it, and no cabin carries a
|
|
450
463
|
zero. It is the module's own seat count, not the ship's.
|
|
@@ -732,10 +745,11 @@ the armour modules, blueprint grade rolls and crafting costs remain unverified t
|
|
|
732
745
|
It also did not unambiguously settle the shield-generator resistances, shield-booster
|
|
733
746
|
properties or probe radius. Those values are not changed on guesswork. For the
|
|
734
747
|
anti-xeno, Guardian and special weapons whose damage observed in-game does not reduce honestly
|
|
735
|
-
to one conventional scalar, `damageComponents` preserves the exact amounts.
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
748
|
+
to one conventional scalar, `damageComponents` preserves the exact amounts. It read the
|
|
749
|
+
Enzyme Missile Rack's two channels as amounts without settling the minor one's type; that
|
|
750
|
+
type is caustic, and the note below records the correction. The projectile-limited
|
|
751
|
+
hardpoints carry their boundary parameters observed in-game in `projectileRange`; those
|
|
752
|
+
parameters are not presented as effective ranges.
|
|
739
753
|
|
|
740
754
|
**A journal capture is a third source, and it reaches fields in-game verification does
|
|
741
755
|
not.** Every engineered module in a `Loadout` states its own _unmodified_ value beside
|
|
@@ -847,7 +861,7 @@ Resource Siphon, the corrections are:
|
|
|
847
861
|
| Beam Laser, Cannon, Fragment Cannon, Multi-Cannon, Plasma Accelerator, Rail Gun, Shock Cannon and Point Defence records | damage / thermal load | `damage` and `thermalLoad` read from the module panel per symbol |
|
|
848
862
|
| Advanced Plasma Accelerator, Imperial Hammer, Shock Cannons and Mk II Plasma Shock Accelerator | burst interval / combined rate of fire | exact cycle values derived with the catalogue's documented formula |
|
|
849
863
|
| mining, utility and Guardian hardpoints | clip, distributor draw, reload, jitter, falloff and maximum range | observed values per symbol |
|
|
850
|
-
| anti-xeno, Guardian and special weapons | scalar, distribution and exact damage components |
|
|
864
|
+
| anti-xeno, Guardian and special weapons | scalar, distribution and exact damage components | a component record wherever the damage needs more than a share |
|
|
851
865
|
| AX missiles, subsurface displacement missiles and seismic charge launchers | projectile boundary parameters; misleading ordinary ranges absent | `projectileRange` stored; `maximumRange` and `falloffRange` absent |
|
|
852
866
|
|
|
853
867
|
In-game verification gives the integer thruster/FSD masses, 1.1/1.2 enhanced-thruster
|
|
@@ -879,6 +893,37 @@ EDSY's 40 / 70. The catalogue stores the displayed values without further deriva
|
|
|
879
893
|
applies the same correction to their exact thermal and anti-xeno components. The two
|
|
880
894
|
panel readings have no upstream immutable revision.
|
|
881
895
|
|
|
896
|
+
**The Mk II Plasma Shock Accelerator's damage type is Plasma, and it is stored as
|
|
897
|
+
`absolute`.** Plasma is a type of its own, not a second name for absolute damage, and the
|
|
898
|
+
stored share is not a claim that Frontier calls the channel absolute. What the two types
|
|
899
|
+
share is the only property a damage calculation reads from either: nothing resists them.
|
|
900
|
+
No shield generator, armour or hull reinforcement carries a Plasma resistance any more
|
|
901
|
+
than it carries an absolute one, so the whole of this weapon's output lands whatever the
|
|
902
|
+
target has fitted, and a share stored as `absolute` computes its effect exactly. The same
|
|
903
|
+
reading already stores the Operations Plasma conversion's Plasma share as `absolute`,
|
|
904
|
+
under "Engineering (blueprints and experimental effects)" below. What the storage costs is
|
|
905
|
+
the distinction itself, which is why it is written down here: should Frontier ever give a
|
|
906
|
+
defensive module a Plasma resistance, the two types stop agreeing, and this weapon and
|
|
907
|
+
that blueprint are the records to revisit.
|
|
908
|
+
|
|
909
|
+
Its `damageComponents` record goes with the `unclassified` spelling it replaces.
|
|
910
|
+
`damageComponents` preserves amounts a fractional split cannot state honestly — an
|
|
911
|
+
anti-xeno overlay, or a channel whose type is not established — and one conventional type
|
|
912
|
+
at the full scalar is neither.
|
|
913
|
+
|
|
914
|
+
**The Enzyme Missile Rack's minor damage channel is Caustic.** Of the 5 damage its round
|
|
915
|
+
carries, 4 are explosive and 1 is caustic. The amounts are what in-game verification
|
|
916
|
+
established; the minor channel's type it did not, and the share was stored as
|
|
917
|
+
`unclassified` for exactly as long as that was the whole of what was known. The type is
|
|
918
|
+
caustic, and the catalogue's own vocabulary says so twice over: Frontier's symbol for the
|
|
919
|
+
weapon is `Hpt_CausticMissile_Fixed_Medium`, and the enzyme it delivers is the damage the
|
|
920
|
+
Caustic Sink Launcher exists to shed. This is not the Mk II's situation above. Caustic is
|
|
921
|
+
a type the defensive side of the catalogue already names — `causticResistance` on the
|
|
922
|
+
armour and hull reinforcement records meets it, and it is one of the four resistances a build carries —
|
|
923
|
+
so the spelling decides whether a defender's caustic resistance reaches this weapon's
|
|
924
|
+
minor channel at all. `unclassified` would have kept it out of that arithmetic on a point
|
|
925
|
+
the game does settle.
|
|
926
|
+
|
|
882
927
|
**Values that look wrong and are not.** Three records break the pattern their family
|
|
883
928
|
follows and are confirmed outright by EDSY. Recorded so the "breaks its family's curve"
|
|
884
929
|
heuristic does not keep rediscovering them:
|
|
@@ -1476,7 +1521,7 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1476
1521
|
`special_plasma_slug` is the id the game writes. This repo follows EDSY: one
|
|
1477
1522
|
`special_plasma_slug` at damage −10% / ammo −100%, plus the `_cooled` rail-gun variant.
|
|
1478
1523
|
|
|
1479
|
-
- **Files:** `blueprints.jsonc` (
|
|
1524
|
+
- **Files:** `blueprints.jsonc` (identity, display text and measured per-grade stat modifiers),
|
|
1480
1525
|
`blueprint-costs.jsonc` (the matching per-grade material requirements),
|
|
1481
1526
|
`blueprint-merc-coin-costs.jsonc` (the per-roll Merc-Coin amounts the recipes that
|
|
1482
1527
|
charge a currency bill alongside those materials),
|
|
@@ -1585,9 +1630,30 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1585
1630
|
record of the same recipe is rejected: it is a copy that can drift from the one the
|
|
1586
1631
|
game names, no observed journal, SLEF export or corpus build carries a prefixed id
|
|
1587
1632
|
(see above), and nothing else in this catalogue keys one recipe twice.
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1633
|
+
- **Direct in-game observation supplies Mercenary weapon recipes.** It supplies the
|
|
1634
|
+
identities, names, grade roll bounds, materials, and Merc-Coin costs for
|
|
1635
|
+
`BeamLaser_Overloaded`, `BurstLaser_Regenerative`, `Cannon_ForceImpact`, and
|
|
1636
|
+
`SeekerMissileRackLarge_ExposingMissiles`. The observations were acquired
|
|
1637
|
+
2026-09-13 UTC. The stored decimals remove binary floating-point noise.
|
|
1638
|
+
- **Direct in-game observation also supplies selected existing recipe mechanics.** It
|
|
1639
|
+
supplies the grade bounds for `MultiCannon_Rapid`, `SeekerMissileRack_Drag`, both
|
|
1640
|
+
`SeekerMissileRack*_Lockdown` recipes, and the named ordinary recipes in the same
|
|
1641
|
+
observation. `Sensor_Expanded` includes its power-draw leg. The stored weapon rate
|
|
1642
|
+
derives from the observed burst interval. The observations were acquired
|
|
1643
|
+
2026-09-13 UTC.
|
|
1644
|
+
- **The large Double Screaming Fragment Cannon grade-5 result is observed directly.**
|
|
1645
|
+
The observation was acquired 2026-09-14 UTC. Its rate is 7.439685 shots per second.
|
|
1646
|
+
Its damage rate is 336.571350 per second. Its range is 1849.624023 metres. These values
|
|
1647
|
+
give the stored `RateOfFire` and `Range` multipliers. Screening Shell supplies the only Reload Time
|
|
1648
|
+
reduction for both Double Screaming recipes. The effect keeps the grade-5 reload at
|
|
1649
|
+
2.5 seconds, so these recipes contain no separate Reload Time feature.
|
|
1650
|
+
- **The two Lockdown recipes have different Merc-Coin costs.** The medium recipe costs
|
|
1651
|
+
10, 10, 20, and 40 Merc Coin per roll at grades 2–5. The large recipe costs 10, 15,
|
|
1652
|
+
25, and 45. Direct in-game observation supplies both sets.
|
|
1653
|
+
|
|
1654
|
+
Where only the registry supplies a recipe, it exposes **one displayed total per grade**.
|
|
1655
|
+
Each such feature stores that total as a fixed value (`min == max`). Direct in-game
|
|
1656
|
+
observations store the observed roll bounds.
|
|
1591
1657
|
The three Plasma conversion recipes also expose equal and opposite damage-share totals.
|
|
1592
1658
|
Inara labels those player-facing rows **Thermal** and **Plasma**, not with journal
|
|
1593
1659
|
modifier labels: Thermal decreases by 3.9, 6.6, 9.4, 12.4 and 15.5 percentage points
|
|
@@ -1622,11 +1688,10 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1622
1688
|
each grade by its roll count.
|
|
1623
1689
|
- **A minority of recipes charge one.** Inara's blueprint
|
|
1624
1690
|
index marks a charging recipe by rendering its name in the coin colour, and the marked
|
|
1625
|
-
set is
|
|
1626
|
-
|
|
1627
|
-
and the
|
|
1628
|
-
|
|
1629
|
-
than one stored id. An ordinary engineer recipe is therefore **absent rather than
|
|
1691
|
+
set is the bespoke grade-2–5 recipes a bought Mercenary article climbs plus the
|
|
1692
|
+
Operations recipes an ordinary menu lists at grades 1–5 (`FuelScoop_Efficiency`
|
|
1693
|
+
and the `*Laser_ThermalPlasmaConversion` recipes). One published recipe can answer to
|
|
1694
|
+
more than one stored id. An ordinary engineer recipe is therefore **absent rather than
|
|
1630
1695
|
zero**, and `GuardianModule_Sturdy`
|
|
1631
1696
|
is absent for the same reason. That index is the whole evidence for the negative half
|
|
1632
1697
|
of the claim: it is a completeness reading of one listing, not 197 pages checked one
|
|
@@ -2110,53 +2175,42 @@ base module's name: the Mining Laser and the size-5 Frame Shift Drive.
|
|
|
2110
2175
|
- **`acquisition` says where each remaining variant comes from** — `mercenary`,
|
|
2111
2176
|
`communityGoal` or `techBroker`.
|
|
2112
2177
|
- **`mercenary`** — the Merc-Coin shop rows. Source: the in-game outfitting and
|
|
2113
|
-
blueprint
|
|
2114
|
-
|
|
2115
|
-
Every one is grade 1, and that is the point: the
|
|
2178
|
+
blueprint panels observed by the repository owner on 2026-09-13 UTC. Every one is
|
|
2179
|
+
grade 1, and that is the point: the
|
|
2116
2180
|
purchased module already
|
|
2117
2181
|
contains the grade-1 pre-engineering, which is exactly why these blueprints' own
|
|
2118
2182
|
recipes start at grade 2 (see the Operations section above). The two facts are
|
|
2119
2183
|
consistent by construction: material costs for further engineering begin at grade 2.
|
|
2120
2184
|
- **The large Seeker Missile Rack's Lockdown** is a `mercenary` row on
|
|
2121
|
-
`Hpt_BasicMissileRack_Fixed_Large` at **900 MC
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
the
|
|
2185
|
+
`Hpt_BasicMissileRack_Fixed_Large` at **900 MC**. Direct observation supplies its
|
|
2186
|
+
size, price and fixed transformation.
|
|
2187
|
+
- **These shop articles come from direct in-game observation.** The observations were
|
|
2188
|
+
acquired 2026-09-13 UTC. The observed panels supply each Mercenary row's
|
|
2189
|
+
grade-1 fixed transformation. The burst laser's stated damage includes Regeneration
|
|
2190
|
+
Sequence. Its fixed Damage change is therefore +4%, which composes with the effect's
|
|
2191
|
+
−10% to give the observed −6.4%. Force Shell supplies the cannon's −16.7% Shot Speed
|
|
2192
|
+
change. Feedback Cascade supplies the rail gun's Damage and Thermal Load reductions.
|
|
2193
|
+
Screening Shell supplies both fragment cannons' Reload Time reduction. Incendiary
|
|
2194
|
+
Rounds supplies part of the mining laser's Thermal Load increase. FSD Interrupt
|
|
2195
|
+
supplies part of both Lockdown racks' Damage and Rate of Fire reductions. The
|
|
2196
|
+
cannon's fixed damage split is equal parts Kinetic and Explosive. Both cargo racks
|
|
2197
|
+
carry the exact multiplier implied by their observed capacities.
|
|
2198
|
+
Mercenary hardpoints keep the experimental state supplied by the shop. An engineer
|
|
2199
|
+
cannot add, remove or replace their effect. Direct observation acquired 2026-09-14 UTC
|
|
2200
|
+
supplies this rule.
|
|
2201
|
+
- **The large Double Screaming Fragment Cannon uses its exact observed firing rate.**
|
|
2202
|
+
Its grade-1 rate is 2.166787 shots per second. The fixed transformation stores the
|
|
2203
|
+
multiplier that reproduces this rate from the stock firing cycle.
|
|
2135
2204
|
- **Some Merc rows carry a default experimental effect** applied beside the grade-1
|
|
2136
2205
|
blueprint, recorded as `experimentalEffectSymbol`: Screening Shell on both Double
|
|
2137
2206
|
Screaming Fragment Cannons, Incendiary Rounds on the Long Range Mining Laser,
|
|
2138
2207
|
Phasing Sequence on the Rapid Phase Multi-Cannon, Feedback Cascade on the Enduring
|
|
2139
|
-
Feedback Rail Gun, Drag Munitions on
|
|
2140
|
-
on the Lightweight Thermal Seeker Missile Rack,
|
|
2141
|
-
Seeker Missile Racks
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
every row.** The first: the effect is one the stock module's own experimental menu
|
|
2146
|
-
offers, so the shop is baking in an effect the module can carry
|
|
2147
|
-
(`engineering-options.jsonc`). That covers every row but the Mining Laser, whose
|
|
2148
|
-
base module offers no experimental effect at all. The second: the same base module
|
|
2149
|
-
already carries the same effect on a catalogued community-goal or tech-broker
|
|
2150
|
-
variant. That covers every row but the large Drag Seeker Missile Rack, whose
|
|
2151
|
-
corroboration is its medium twin rather than a variant of its own symbol.
|
|
2152
|
-
- **The mining laser is the weakest of them.** Incendiary Rounds is outside
|
|
2153
|
-
`Hpt_MiningLaser_Fixed_Small`'s experimental menu — it is the only row a shop menu
|
|
2154
|
-
could not have offered — so only the twin check speaks for it, and a twin is
|
|
2155
|
-
consistency more than evidence. It is recorded because it was observed. The
|
|
2156
|
-
blueprint names of the seeker racks and the rail gun do echo their effects
|
|
2157
|
-
(`SeekerMissileRack*_Lockdown`, `_LightWeightThermal`, `_Drag`, "Enduring
|
|
2158
|
-
Feedback"), but a name is weaker evidence than either check above, and no row
|
|
2159
|
-
rests on one.
|
|
2208
|
+
Feedback Rail Gun, Drag Munitions on the Drag Seeker Missile Rack and Exposing
|
|
2209
|
+
Missiles, Thermal Cascade on the Lightweight Thermal Seeker Missile Rack, FSD
|
|
2210
|
+
Interrupt on both Lockdown Seeker Missile Racks, Regeneration Sequence on the
|
|
2211
|
+
Regenerative Burst Laser, and Force Shell on the Force Impact Cannon. Source:
|
|
2212
|
+
repository-owner in-game observation. Every row carries
|
|
2213
|
+
its observed grade-1 transformation in `modifiers`.
|
|
2160
2214
|
- **`communityGoal`** — modules awarded for taking part in a community goal. Source:
|
|
2161
2215
|
EDSY's stored-module presets, which record each reward as an encoded module state; the
|
|
2162
2216
|
blueprint, grade and experimental effect were
|
|
@@ -2201,16 +2255,14 @@ base module's name: the Mining Laser and the size-5 Frame Shift Drive.
|
|
|
2201
2255
|
Merc Coin is a separate currency with no credit equivalent, which is why it is its own
|
|
2202
2256
|
field rather than the `cost` modules carry. Tech-broker unlocks have no equivalent
|
|
2203
2257
|
number: they are paid in materials and commodities, so nothing is stored for them.
|
|
2204
|
-
- **`modifiers` is the hand-set stat block a
|
|
2258
|
+
- **`modifiers` is the hand-set stat block a fixed variant arrives with** — what makes
|
|
2205
2259
|
these records fittable rather than merely catalogued. Same vocabulary as a blueprint
|
|
2206
2260
|
feature: a journal Modifier `label`, a `method` (`multiplicative` / `additive` /
|
|
2207
2261
|
`overwrite`) and a `value`. Decoded from the same EDSY preset state as the blueprint
|
|
2208
2262
|
and grade, then translated into the Almanac's own vocabulary — EDSY's attribute names
|
|
2209
2263
|
map to journal Modifier Labels through its own table, and resistances, which EDSY
|
|
2210
2264
|
stores in a different form from this repo, are converted using the module's base
|
|
2211
|
-
resistance.
|
|
2212
|
-
publishes the grade-1 pre-engineering they arrive with and a guess is worse than an
|
|
2213
|
-
omission.
|
|
2265
|
+
resistance. Each Mercenary row carries its observed grade-1 transformation.
|
|
2214
2266
|
- **Values are the authored decimals, recovered rather than rounded.** The presets
|
|
2215
2267
|
encode modifiers in EDSY's custom 20-bit float (1 sign, 5 exponent, 14 mantissa),
|
|
2216
2268
|
which carries about fifteen significant bits — so decoding a change the game states
|
package/README.md
CHANGED
|
@@ -279,8 +279,8 @@ that same id.
|
|
|
279
279
|
|
|
280
280
|
The [repository README](https://github.com/DarkSession/Elite-Dangerous-Almanac#readme)
|
|
281
281
|
contains the project guide. The generated
|
|
282
|
-
[
|
|
283
|
-
complete API reference.
|
|
282
|
+
[TypeScript wiki](https://github.com/DarkSession/Elite-Dangerous-Almanac/wiki/TypeScript)
|
|
283
|
+
contains the guides and the complete API reference.
|
|
284
284
|
|
|
285
285
|
## Data and credits
|
|
286
286
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -167,7 +167,8 @@ a verbatim copy produced at build time — edit this file, never the copy.
|
|
|
167
167
|
Frontier's own **in-game localisation** supplies the outfitting category labels behind
|
|
168
168
|
the module families and their German, Spanish, French, Brazilian Portuguese and Russian
|
|
169
169
|
display text, the engineering modification names in the six stored locales, the market
|
|
170
|
-
commodity names in `data/i18n/commodity-names.jsonc`,
|
|
170
|
+
commodity names in `data/i18n/commodity-names.jsonc`, the galactic codex region names
|
|
171
|
+
in `data/i18n/codex-region-names.jsonc`, and the personal-equipment
|
|
171
172
|
display text in `data/i18n/`: the suit names and descriptions, the suit tool names, the
|
|
172
173
|
handheld-weapon descriptions, and the names and descriptions of the engineer-applied
|
|
173
174
|
suit and weapon modifications. The game's own **commodity registry** supplies the
|