@elite-dangerous-almanac/core 0.2.10 → 0.2.12
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 +58 -51
- package/README.md +7 -5
- 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-25EECUZ2.js +1 -0
- package/dist/chunk-25EECUZ2.js.map +1 -0
- package/dist/chunk-36I5QLTL.js +1 -0
- package/dist/chunk-36I5QLTL.js.map +1 -0
- package/dist/{chunk-2TY42PTF.js → chunk-6MQOPQAA.js} +1 -1
- package/dist/{chunk-X3MXPE7G.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-BUQLUEQS.js +1 -0
- package/dist/chunk-BUQLUEQS.js.map +1 -0
- package/dist/{chunk-SFEQXUIA.js → chunk-CCJPWDMA.js} +1 -1
- package/dist/{chunk-5VWACBTN.js → chunk-DBJKLXLS.js} +1 -1
- package/dist/{chunk-5VWACBTN.js.map → chunk-DBJKLXLS.js.map} +1 -1
- package/dist/{chunk-G7WARJ3X.js → chunk-DEY44PHF.js} +1 -1
- package/dist/chunk-DEY44PHF.js.map +1 -0
- 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-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-C3YZ5KTA.js → chunk-P6HCQ2YE.js} +1 -1
- package/dist/chunk-P6HCQ2YE.js.map +1 -0
- package/dist/chunk-WDAYRHXR.js +1 -0
- package/dist/{chunk-AYAKU4YA.js.map → chunk-WDAYRHXR.js.map} +1 -1
- 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/equipment/index.d.ts +7 -0
- package/dist/equipment/index.js +1 -1
- package/dist/equipment/suit-loadout.d.ts +284 -0
- package/dist/equipment/suit-loadout.js +1 -0
- package/dist/equipment/suit-loadout.js.map +1 -0
- 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/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/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/shields.d.ts +4 -1
- package/dist/ships/shields.js +1 -1
- package/dist/ships/ship-loadout.d.ts +21 -19
- package/dist/ships/ship-loadout.js +1 -1
- package/package.json +14 -5
- package/dist/chunk-AUBV6S7V.js +0 -1
- package/dist/chunk-AYAKU4YA.js +0 -1
- package/dist/chunk-C3YZ5KTA.js.map +0 -1
- package/dist/chunk-G7WARJ3X.js.map +0 -1
- package/dist/chunk-GVNTKCVF.js +0 -1
- package/dist/chunk-GVNTKCVF.js.map +0 -1
- package/dist/chunk-HIJR7DOC.js +0 -1
- package/dist/chunk-HIJR7DOC.js.map +0 -1
- package/dist/chunk-T7IQHFQ2.js +0 -1
- package/dist/chunk-UI5RROGI.js +0 -1
- package/dist/chunk-ZBUTGTZ3.js +0 -1
- package/dist/chunk-ZBUTGTZ3.js.map +0 -1
- /package/dist/{chunk-2TY42PTF.js.map → chunk-6MQOPQAA.js.map} +0 -0
- /package/dist/{chunk-X3MXPE7G.js.map → chunk-7UF4XRIR.js.map} +0 -0
- /package/dist/{chunk-SFEQXUIA.js.map → chunk-CCJPWDMA.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
|
|
@@ -1476,7 +1476,7 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1476
1476
|
`special_plasma_slug` is the id the game writes. This repo follows EDSY: one
|
|
1477
1477
|
`special_plasma_slug` at damage −10% / ammo −100%, plus the `_cooled` rail-gun variant.
|
|
1478
1478
|
|
|
1479
|
-
- **Files:** `blueprints.jsonc` (
|
|
1479
|
+
- **Files:** `blueprints.jsonc` (identity, display text and measured per-grade stat modifiers),
|
|
1480
1480
|
`blueprint-costs.jsonc` (the matching per-grade material requirements),
|
|
1481
1481
|
`blueprint-merc-coin-costs.jsonc` (the per-roll Merc-Coin amounts the recipes that
|
|
1482
1482
|
charge a currency bill alongside those materials),
|
|
@@ -1585,9 +1585,30 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1585
1585
|
record of the same recipe is rejected: it is a copy that can drift from the one the
|
|
1586
1586
|
game names, no observed journal, SLEF export or corpus build carries a prefixed id
|
|
1587
1587
|
(see above), and nothing else in this catalogue keys one recipe twice.
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1588
|
+
- **Direct in-game observation supplies Mercenary weapon recipes.** It supplies the
|
|
1589
|
+
identities, names, grade roll bounds, materials, and Merc-Coin costs for
|
|
1590
|
+
`BeamLaser_Overloaded`, `BurstLaser_Regenerative`, `Cannon_ForceImpact`, and
|
|
1591
|
+
`SeekerMissileRackLarge_ExposingMissiles`. The observations were acquired
|
|
1592
|
+
2026-09-13 UTC. The stored decimals remove binary floating-point noise.
|
|
1593
|
+
- **Direct in-game observation also supplies selected existing recipe mechanics.** It
|
|
1594
|
+
supplies the grade bounds for `MultiCannon_Rapid`, `SeekerMissileRack_Drag`, both
|
|
1595
|
+
`SeekerMissileRack*_Lockdown` recipes, and the named ordinary recipes in the same
|
|
1596
|
+
observation. `Sensor_Expanded` includes its power-draw leg. The stored weapon rate
|
|
1597
|
+
derives from the observed burst interval. The observations were acquired
|
|
1598
|
+
2026-09-13 UTC.
|
|
1599
|
+
- **The large Double Screaming Fragment Cannon grade-5 result is observed directly.**
|
|
1600
|
+
The observation was acquired 2026-09-14 UTC. Its rate is 7.439685 shots per second.
|
|
1601
|
+
Its damage rate is 336.571350 per second. Its range is 1849.624023 metres. These values
|
|
1602
|
+
give the stored `RateOfFire` and `Range` multipliers. Screening Shell supplies the only Reload Time
|
|
1603
|
+
reduction for both Double Screaming recipes. The effect keeps the grade-5 reload at
|
|
1604
|
+
2.5 seconds, so these recipes contain no separate Reload Time feature.
|
|
1605
|
+
- **The two Lockdown recipes have different Merc-Coin costs.** The medium recipe costs
|
|
1606
|
+
10, 10, 20, and 40 Merc Coin per roll at grades 2–5. The large recipe costs 10, 15,
|
|
1607
|
+
25, and 45. Direct in-game observation supplies both sets.
|
|
1608
|
+
|
|
1609
|
+
Where only the registry supplies a recipe, it exposes **one displayed total per grade**.
|
|
1610
|
+
Each such feature stores that total as a fixed value (`min == max`). Direct in-game
|
|
1611
|
+
observations store the observed roll bounds.
|
|
1591
1612
|
The three Plasma conversion recipes also expose equal and opposite damage-share totals.
|
|
1592
1613
|
Inara labels those player-facing rows **Thermal** and **Plasma**, not with journal
|
|
1593
1614
|
modifier labels: Thermal decreases by 3.9, 6.6, 9.4, 12.4 and 15.5 percentage points
|
|
@@ -1622,11 +1643,10 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1622
1643
|
each grade by its roll count.
|
|
1623
1644
|
- **A minority of recipes charge one.** Inara's blueprint
|
|
1624
1645
|
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
|
|
1646
|
+
set is the bespoke grade-2–5 recipes a bought Mercenary article climbs plus the
|
|
1647
|
+
Operations recipes an ordinary menu lists at grades 1–5 (`FuelScoop_Efficiency`
|
|
1648
|
+
and the `*Laser_ThermalPlasmaConversion` recipes). One published recipe can answer to
|
|
1649
|
+
more than one stored id. An ordinary engineer recipe is therefore **absent rather than
|
|
1630
1650
|
zero**, and `GuardianModule_Sturdy`
|
|
1631
1651
|
is absent for the same reason. That index is the whole evidence for the negative half
|
|
1632
1652
|
of the claim: it is a completeness reading of one listing, not 197 pages checked one
|
|
@@ -2110,53 +2130,42 @@ base module's name: the Mining Laser and the size-5 Frame Shift Drive.
|
|
|
2110
2130
|
- **`acquisition` says where each remaining variant comes from** — `mercenary`,
|
|
2111
2131
|
`communityGoal` or `techBroker`.
|
|
2112
2132
|
- **`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
|
|
2133
|
+
blueprint panels observed by the repository owner on 2026-09-13 UTC. Every one is
|
|
2134
|
+
grade 1, and that is the point: the
|
|
2116
2135
|
purchased module already
|
|
2117
2136
|
contains the grade-1 pre-engineering, which is exactly why these blueprints' own
|
|
2118
2137
|
recipes start at grade 2 (see the Operations section above). The two facts are
|
|
2119
2138
|
consistent by construction: material costs for further engineering begin at grade 2.
|
|
2120
2139
|
- **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
|
|
2140
|
+
`Hpt_BasicMissileRack_Fixed_Large` at **900 MC**. Direct observation supplies its
|
|
2141
|
+
size, price and fixed transformation.
|
|
2142
|
+
- **These shop articles come from direct in-game observation.** The observations were
|
|
2143
|
+
acquired 2026-09-13 UTC. The observed panels supply each Mercenary row's
|
|
2144
|
+
grade-1 fixed transformation. The burst laser's stated damage includes Regeneration
|
|
2145
|
+
Sequence. Its fixed Damage change is therefore +4%, which composes with the effect's
|
|
2146
|
+
−10% to give the observed −6.4%. Force Shell supplies the cannon's −16.7% Shot Speed
|
|
2147
|
+
change. Feedback Cascade supplies the rail gun's Damage and Thermal Load reductions.
|
|
2148
|
+
Screening Shell supplies both fragment cannons' Reload Time reduction. Incendiary
|
|
2149
|
+
Rounds supplies part of the mining laser's Thermal Load increase. FSD Interrupt
|
|
2150
|
+
supplies part of both Lockdown racks' Damage and Rate of Fire reductions. The
|
|
2151
|
+
cannon's fixed damage split is equal parts Kinetic and Explosive. Both cargo racks
|
|
2152
|
+
carry the exact multiplier implied by their observed capacities.
|
|
2153
|
+
Mercenary hardpoints keep the experimental state supplied by the shop. An engineer
|
|
2154
|
+
cannot add, remove or replace their effect. Direct observation acquired 2026-09-14 UTC
|
|
2155
|
+
supplies this rule.
|
|
2156
|
+
- **The large Double Screaming Fragment Cannon uses its exact observed firing rate.**
|
|
2157
|
+
Its grade-1 rate is 2.166787 shots per second. The fixed transformation stores the
|
|
2158
|
+
multiplier that reproduces this rate from the stock firing cycle.
|
|
2135
2159
|
- **Some Merc rows carry a default experimental effect** applied beside the grade-1
|
|
2136
2160
|
blueprint, recorded as `experimentalEffectSymbol`: Screening Shell on both Double
|
|
2137
2161
|
Screaming Fragment Cannons, Incendiary Rounds on the Long Range Mining Laser,
|
|
2138
2162
|
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.
|
|
2163
|
+
Feedback Rail Gun, Drag Munitions on the Drag Seeker Missile Rack and Exposing
|
|
2164
|
+
Missiles, Thermal Cascade on the Lightweight Thermal Seeker Missile Rack, FSD
|
|
2165
|
+
Interrupt on both Lockdown Seeker Missile Racks, Regeneration Sequence on the
|
|
2166
|
+
Regenerative Burst Laser, and Force Shell on the Force Impact Cannon. Source:
|
|
2167
|
+
repository-owner in-game observation. Every row carries
|
|
2168
|
+
its observed grade-1 transformation in `modifiers`.
|
|
2160
2169
|
- **`communityGoal`** — modules awarded for taking part in a community goal. Source:
|
|
2161
2170
|
EDSY's stored-module presets, which record each reward as an encoded module state; the
|
|
2162
2171
|
blueprint, grade and experimental effect were
|
|
@@ -2201,16 +2210,14 @@ base module's name: the Mining Laser and the size-5 Frame Shift Drive.
|
|
|
2201
2210
|
Merc Coin is a separate currency with no credit equivalent, which is why it is its own
|
|
2202
2211
|
field rather than the `cost` modules carry. Tech-broker unlocks have no equivalent
|
|
2203
2212
|
number: they are paid in materials and commodities, so nothing is stored for them.
|
|
2204
|
-
- **`modifiers` is the hand-set stat block a
|
|
2213
|
+
- **`modifiers` is the hand-set stat block a fixed variant arrives with** — what makes
|
|
2205
2214
|
these records fittable rather than merely catalogued. Same vocabulary as a blueprint
|
|
2206
2215
|
feature: a journal Modifier `label`, a `method` (`multiplicative` / `additive` /
|
|
2207
2216
|
`overwrite`) and a `value`. Decoded from the same EDSY preset state as the blueprint
|
|
2208
2217
|
and grade, then translated into the Almanac's own vocabulary — EDSY's attribute names
|
|
2209
2218
|
map to journal Modifier Labels through its own table, and resistances, which EDSY
|
|
2210
2219
|
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.
|
|
2220
|
+
resistance. Each Mercenary row carries its observed grade-1 transformation.
|
|
2214
2221
|
- **Values are the authored decimals, recovered rather than rounded.** The presets
|
|
2215
2222
|
encode modifiers in EDSY's custom 20-bit float (1 sign, 5 exponent, 14 mantissa),
|
|
2216
2223
|
which carries about fifteen significant bits — so decoding a change the game states
|
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ The package has six feature areas:
|
|
|
49
49
|
bodies with their physics;
|
|
50
50
|
- `ships`: ships, modules, SLEF loadouts, engineering and build metrics;
|
|
51
51
|
- `equipment`: Odyssey suits, handheld weapons and their damage per second, suit tools,
|
|
52
|
-
grade upgrades and
|
|
52
|
+
grade upgrades, modifications and journal suit loadouts;
|
|
53
53
|
- `i18n`: sparse localized catalogue names, descriptions, slot labels and structured
|
|
54
54
|
diagnostic messages;
|
|
55
55
|
- `materials`: ship engineering materials and Odyssey micro resources;
|
|
@@ -247,8 +247,10 @@ blueprints and experimental effects are keyed by theirs; neither place invents a
|
|
|
247
247
|
synthetic id. The journal omits the technology suffix from three weapon modification
|
|
248
248
|
families, so `resolvePersonalModificationForWeapon` resolves those spellings against the
|
|
249
249
|
weapon before joining to `PERSONAL_MODIFICATIONS` or `PERSONAL_MODIFICATION_COSTS`.
|
|
250
|
-
|
|
251
|
-
|
|
250
|
+
`parseSuitLoadout` reads a journal `SuitLoadout`, `SwitchSuitLoadout` or
|
|
251
|
+
`CreateSuitLoadout` event into the suit, its grade, its modifications and the weapon at
|
|
252
|
+
each mount, and resolves those spellings on the way. Material shopping lists live on the
|
|
253
|
+
separate `equipment/modification-costs` subpath and consume the
|
|
252
254
|
micro-resource symbols from the `materials` feature area. Suit tools are the one
|
|
253
255
|
personal-equipment record with no Frontier symbol — the journal never names a tool — so
|
|
254
256
|
`PersonalTool.id` is a library key such as `arc-cutter`, and `getPersonalToolName` takes
|
|
@@ -277,8 +279,8 @@ that same id.
|
|
|
277
279
|
|
|
278
280
|
The [repository README](https://github.com/DarkSession/Elite-Dangerous-Almanac#readme)
|
|
279
281
|
contains the project guide. The generated
|
|
280
|
-
[
|
|
281
|
-
complete API reference.
|
|
282
|
+
[TypeScript wiki](https://github.com/DarkSession/Elite-Dangerous-Almanac/wiki/TypeScript)
|
|
283
|
+
contains the guides and the complete API reference.
|
|
282
284
|
|
|
283
285
|
## Data and credits
|
|
284
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
|