@elite-dangerous-almanac/core 0.2.7 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PROVENANCE/astro/SOURCES.md +13 -12
- package/PROVENANCE/commodities/SOURCES.md +50 -6
- package/PROVENANCE/equipment/SOURCES.md +229 -29
- package/PROVENANCE/i18n/SOURCES.md +328 -73
- package/PROVENANCE/ships/SOURCES.md +352 -216
- package/README.md +30 -7
- package/THIRD_PARTY_NOTICES.md +12 -1
- package/dist/astro/body-rings.d.ts +2 -2
- package/dist/astro/codex-region-lookup.d.ts +1 -1
- package/dist/astro/codex-region-lookup.js +1 -1
- package/dist/astro/hand-authored-regions.d.ts +1 -1
- package/dist/astro/index.d.ts +1 -1
- package/dist/astro/index.js +1 -1
- package/dist/astro/naming-region-origins.d.ts +1 -1
- package/dist/astro/naming-region-origins.js +1 -1
- package/dist/astro/nebulae-all.d.ts +4 -6
- package/dist/astro/nebulae-all.js +1 -1
- package/dist/astro/nebulae-all.js.map +1 -1
- package/dist/astro/nebulae-planetary.d.ts +4 -5
- package/dist/astro/nebulae-planetary.js +1 -1
- package/dist/astro/nebulae-procgen.d.ts +3 -3
- package/dist/astro/nebulae-real.d.ts +3 -3
- package/dist/astro/nebulae.d.ts +8 -8
- package/dist/astro/permit-locked-regions.d.ts +2 -2
- package/dist/astro/permit-locked-systems.d.ts +1 -1
- package/dist/astro/permit-locks.d.ts +2 -2
- package/dist/astro/procedural-system.d.ts +3 -3
- package/dist/astro/procedural-system.js +1 -1
- package/dist/astro/system-address.d.ts +1 -1
- package/dist/astro/system-address.js +1 -1
- package/dist/astro/system-name.js +1 -1
- package/dist/{chunk-XSLPWM5N.js → chunk-2J6NNI3Y.js} +1 -1
- package/dist/{chunk-DWRNXUAX.js → chunk-2KIZN3BY.js} +1 -1
- package/dist/{chunk-J7BM5NGK.js → chunk-2TY42PTF.js} +1 -1
- package/dist/{chunk-MVBVXK3G.js → chunk-3GNYPM6J.js} +1 -1
- package/dist/{chunk-MVBVXK3G.js.map → chunk-3GNYPM6J.js.map} +1 -1
- package/dist/{chunk-773VO2GK.js → chunk-4T3TTYUT.js} +1 -1
- package/dist/{chunk-773VO2GK.js.map → chunk-4T3TTYUT.js.map} +1 -1
- package/dist/chunk-7C7NJWCF.js +1 -0
- package/dist/chunk-7C7NJWCF.js.map +1 -0
- package/dist/{chunk-FMA36V6A.js → chunk-7Y5EK2VO.js} +1 -1
- package/dist/{chunk-FMA36V6A.js.map → chunk-7Y5EK2VO.js.map} +1 -1
- package/dist/chunk-AC3U7LRK.js +1 -0
- package/dist/{chunk-MGRDB2BZ.js.map → chunk-AC3U7LRK.js.map} +1 -1
- package/dist/{chunk-BJU27V6C.js → chunk-AUBV6S7V.js} +1 -1
- package/dist/{chunk-BJU27V6C.js.map → chunk-AUBV6S7V.js.map} +1 -1
- package/dist/{chunk-DI5RXSJR.js → chunk-BVLBS2QY.js} +1 -1
- package/dist/{chunk-DI5RXSJR.js.map → chunk-BVLBS2QY.js.map} +1 -1
- package/dist/chunk-C3YZ5KTA.js +1 -0
- package/dist/chunk-C3YZ5KTA.js.map +1 -0
- package/dist/{chunk-6UNAD74Z.js → chunk-C4FUV6GF.js} +1 -1
- package/dist/{chunk-6UNAD74Z.js.map → chunk-C4FUV6GF.js.map} +1 -1
- package/dist/chunk-CEF7SMB2.js +1 -0
- package/dist/chunk-CEF7SMB2.js.map +1 -0
- package/dist/chunk-E2HDF6PJ.js +1 -0
- package/dist/chunk-E2HDF6PJ.js.map +1 -0
- package/dist/{chunk-OFZGNWBT.js → chunk-ETREYN5U.js} +1 -1
- package/dist/{chunk-OFZGNWBT.js.map → chunk-ETREYN5U.js.map} +1 -1
- package/dist/{chunk-KBCA4GEZ.js → chunk-FP2TQJZP.js} +1 -1
- package/dist/{chunk-F7VWRDSL.js → chunk-G7WARJ3X.js} +1 -1
- package/dist/chunk-G7WARJ3X.js.map +1 -0
- package/dist/{chunk-Z4OUB4SJ.js → chunk-GLTCCDN5.js} +1 -1
- package/dist/{chunk-Z4OUB4SJ.js.map → chunk-GLTCCDN5.js.map} +1 -1
- package/dist/chunk-GVNTKCVF.js +1 -0
- package/dist/chunk-GVNTKCVF.js.map +1 -0
- package/dist/{chunk-Q6YDPREF.js → chunk-GZLD7RTK.js} +1 -1
- package/dist/{chunk-Q6YDPREF.js.map → chunk-GZLD7RTK.js.map} +1 -1
- package/dist/chunk-HIJR7DOC.js +1 -0
- package/dist/chunk-HIJR7DOC.js.map +1 -0
- package/dist/{chunk-ETWMPMZP.js → chunk-K5JK3XQB.js} +1 -1
- package/dist/{chunk-GRIK3EDH.js → chunk-KY7KSPU6.js} +1 -1
- package/dist/{chunk-GRIK3EDH.js.map → chunk-KY7KSPU6.js.map} +1 -1
- package/dist/{chunk-EHFHRQEP.js → chunk-M4STXLXO.js} +1 -1
- package/dist/{chunk-EHFHRQEP.js.map → chunk-M4STXLXO.js.map} +1 -1
- package/dist/{chunk-NZXSIHAW.js → chunk-OSMBAFRW.js} +1 -1
- package/dist/{chunk-NZXSIHAW.js.map → chunk-OSMBAFRW.js.map} +1 -1
- package/dist/chunk-PIU24HRN.js +1 -0
- package/dist/chunk-PIU24HRN.js.map +1 -0
- package/dist/{chunk-ELT3FEA4.js → chunk-PKKBYBL4.js} +1 -1
- package/dist/{chunk-ELT3FEA4.js.map → chunk-PKKBYBL4.js.map} +1 -1
- package/dist/{chunk-6HMIF2RJ.js → chunk-Q647OXON.js} +1 -1
- package/dist/{chunk-6HMIF2RJ.js.map → chunk-Q647OXON.js.map} +1 -1
- package/dist/{chunk-BMQM4JBL.js → chunk-QPT2WJYN.js} +1 -1
- package/dist/{chunk-BMQM4JBL.js.map → chunk-QPT2WJYN.js.map} +1 -1
- package/dist/{chunk-A6OINYNP.js → chunk-R2AEZYX7.js} +1 -1
- package/dist/chunk-RA4YJBU5.js +1 -0
- package/dist/chunk-RA4YJBU5.js.map +1 -0
- package/dist/{chunk-MRLUWHGI.js → chunk-RJ3ZLQRB.js} +1 -1
- package/dist/{chunk-MRLUWHGI.js.map → chunk-RJ3ZLQRB.js.map} +1 -1
- package/dist/chunk-SFEQXUIA.js +1 -0
- package/dist/chunk-SIL356HB.js +1 -0
- package/dist/chunk-SIL356HB.js.map +1 -0
- package/dist/chunk-SS7HVNP5.js +1 -0
- package/dist/chunk-SS7HVNP5.js.map +1 -0
- package/dist/chunk-TRGHPX2O.js +1 -0
- package/dist/chunk-TRGHPX2O.js.map +1 -0
- package/dist/{chunk-GMTAFUAG.js → chunk-TYRH73MO.js} +1 -1
- package/dist/{chunk-GMTAFUAG.js.map → chunk-TYRH73MO.js.map} +1 -1
- package/dist/{chunk-7TVFV3VO.js → chunk-U3IRMXMR.js} +1 -1
- package/dist/{chunk-A7IVMYNF.js → chunk-U73MBQ45.js} +1 -1
- package/dist/{chunk-A7IVMYNF.js.map → chunk-U73MBQ45.js.map} +1 -1
- package/dist/{chunk-IZIIGK3W.js → chunk-UE22QU7A.js} +1 -1
- package/dist/{chunk-IZIIGK3W.js.map → chunk-UE22QU7A.js.map} +1 -1
- package/dist/{chunk-DBDCOHI4.js → chunk-UI5RROGI.js} +1 -1
- package/dist/{chunk-DBDCOHI4.js.map → chunk-UI5RROGI.js.map} +1 -1
- package/dist/chunk-URRPEUIK.js +1 -0
- package/dist/{chunk-QJECDMQQ.js.map → chunk-URRPEUIK.js.map} +1 -1
- package/dist/chunk-UTWZZOSA.js +1 -0
- package/dist/chunk-UTWZZOSA.js.map +1 -0
- package/dist/{chunk-ZEN5K3GE.js → chunk-UVX7RCMP.js} +1 -1
- package/dist/{chunk-ZEN5K3GE.js.map → chunk-UVX7RCMP.js.map} +1 -1
- package/dist/{chunk-7ATBEOVC.js → chunk-WG4DPXJI.js} +1 -1
- package/dist/{chunk-XFDMCPDW.js → chunk-WZIBBJHA.js} +1 -1
- package/dist/{chunk-XFDMCPDW.js.map → chunk-WZIBBJHA.js.map} +1 -1
- package/dist/{chunk-7S7ZTZZY.js → chunk-X3MXPE7G.js} +1 -1
- package/dist/{chunk-7S7ZTZZY.js.map → chunk-X3MXPE7G.js.map} +1 -1
- package/dist/{chunk-SD6GNFDX.js → chunk-YBE5M27G.js} +1 -1
- package/dist/{chunk-SD6GNFDX.js.map → chunk-YBE5M27G.js.map} +1 -1
- package/dist/chunk-ZBUTGTZ3.js +1 -0
- package/dist/chunk-ZBUTGTZ3.js.map +1 -0
- package/dist/commodities/commodities-all.d.ts +2 -2
- package/dist/commodities/commodities-all.js +1 -1
- package/dist/commodities/commodities-rare.d.ts +3 -4
- package/dist/commodities/commodities-rare.js +1 -1
- package/dist/commodities/commodities-standard.d.ts +7 -7
- package/dist/commodities/commodities-standard.js +1 -1
- package/dist/commodities/commodities.d.ts +12 -12
- package/dist/commodities/commodities.js +1 -1
- package/dist/commodities/index.js +1 -1
- package/dist/equipment/engineering.d.ts +58 -1
- package/dist/equipment/engineering.js +1 -1
- package/dist/equipment/index.d.ts +14 -3
- package/dist/equipment/index.js +1 -1
- package/dist/equipment/modification-journal.js +1 -1
- package/dist/equipment/modifications.d.ts +43 -11
- package/dist/equipment/modifications.js +1 -1
- package/dist/equipment/suits.d.ts +2 -115
- package/dist/equipment/suits.js +1 -1
- package/dist/equipment/tools.d.ts +102 -0
- package/dist/equipment/tools.js +1 -0
- package/dist/equipment/tools.js.map +1 -0
- package/dist/equipment/upgrade-costs.d.ts +2 -3
- package/dist/equipment/upgrade-costs.js +1 -1
- package/dist/equipment/weapons.d.ts +2 -121
- package/dist/equipment/weapons.js +1 -1
- package/dist/i18n/blueprints.d.ts +2 -3
- package/dist/i18n/blueprints.js +1 -1
- package/dist/i18n/commodities.d.ts +36 -0
- package/dist/i18n/commodities.js +1 -0
- package/dist/i18n/commodities.js.map +1 -0
- package/dist/i18n/experimental-effect-descriptions.d.ts +5 -6
- package/dist/i18n/experimental-effect-descriptions.js +1 -1
- package/dist/i18n/experimental-effects.d.ts +2 -3
- package/dist/i18n/experimental-effects.js +1 -1
- package/dist/i18n/index.d.ts +87 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/materials.d.ts +2 -4
- package/dist/i18n/materials.js +1 -1
- package/dist/i18n/micro-resources.d.ts +2 -4
- package/dist/i18n/micro-resources.js +1 -1
- package/dist/i18n/module-families.d.ts +3 -5
- package/dist/i18n/module-families.js +1 -1
- package/dist/i18n/modules.d.ts +3 -6
- package/dist/i18n/modules.js +1 -1
- package/dist/i18n/personal-modifications.d.ts +66 -0
- package/dist/i18n/personal-modifications.js +1 -0
- package/dist/i18n/personal-modifications.js.map +1 -0
- package/dist/i18n/personal-tools.d.ts +33 -0
- package/dist/i18n/personal-tools.js +1 -0
- package/dist/i18n/personal-tools.js.map +1 -0
- package/dist/i18n/personal-weapons.d.ts +32 -0
- package/dist/i18n/personal-weapons.js +1 -0
- package/dist/i18n/personal-weapons.js.map +1 -0
- package/dist/i18n/pre-engineered.d.ts +1 -1
- package/dist/i18n/slots.d.ts +2 -2
- package/dist/i18n/suits.d.ts +89 -0
- package/dist/i18n/suits.js +1 -0
- package/dist/i18n/suits.js.map +1 -0
- package/dist/materials/index.d.ts +4 -3
- package/dist/materials/index.js +1 -1
- package/dist/materials/materials-all.d.ts +2 -2
- package/dist/materials/materials-all.js +1 -1
- package/dist/materials/materials-raw.d.ts +3 -4
- package/dist/materials/materials-raw.js +1 -1
- package/dist/materials/materials.d.ts +18 -15
- package/dist/materials/materials.js +1 -1
- package/dist/materials/micro-resources-all.d.ts +2 -2
- package/dist/materials/micro-resources-all.js +1 -1
- package/dist/materials/micro-resources-component.d.ts +2 -2
- package/dist/materials/micro-resources-consumable.d.ts +2 -2
- package/dist/materials/micro-resources-data.d.ts +2 -2
- package/dist/materials/micro-resources-item.d.ts +2 -2
- package/dist/materials/micro-resources.d.ts +17 -14
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/ammunition.d.ts +4 -4
- package/dist/ships/blueprint-costs.d.ts +13 -13
- package/dist/ships/blueprint-costs.js +1 -1
- package/dist/ships/blueprint-journal.d.ts +3 -3
- package/dist/ships/blueprint-journal.js +1 -1
- package/dist/ships/blueprints.d.ts +3 -3
- package/dist/ships/build-metrics.d.ts +2 -1
- package/dist/ships/build-metrics.js +1 -1
- package/dist/ships/default-loadouts.d.ts +2 -3
- package/dist/ships/default-loadouts.js +1 -1
- package/dist/ships/engineering-options.d.ts +29 -32
- package/dist/ships/engineering-options.js +1 -1
- package/dist/ships/engineering.d.ts +1 -2
- package/dist/ships/engineering.js +1 -1
- package/dist/ships/experimental-effect-costs.d.ts +1 -1
- package/dist/ships/gunsights.d.ts +3 -3
- package/dist/ships/heat.d.ts +1 -1
- package/dist/ships/index.d.ts +4 -5
- package/dist/ships/index.js +1 -1
- package/dist/ships/loadout-validation.d.ts +8 -3
- package/dist/ships/loadout-validation.js +1 -1
- package/dist/ships/module-families.d.ts +1 -1
- package/dist/ships/modules-all.d.ts +2 -3
- package/dist/ships/modules-all.js +1 -1
- package/dist/ships/modules-core.d.ts +3 -3
- package/dist/ships/modules-hardpoint.d.ts +4 -5
- package/dist/ships/modules-hardpoint.js +1 -1
- package/dist/ships/modules-internal.d.ts +19 -9
- package/dist/ships/modules-internal.js +1 -1
- package/dist/ships/modules-utility.d.ts +3 -4
- package/dist/ships/modules-utility.js +1 -1
- package/dist/ships/modules.d.ts +31 -25
- package/dist/ships/modules.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +1 -1
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/pre-engineered.d.ts +9 -10
- package/dist/ships/pre-engineered.js +1 -1
- package/dist/ships/ship-loadout.d.ts +13 -7
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/ships.d.ts +1 -2
- package/dist/ships/ships.js +1 -1
- package/dist/ships/slots.d.ts +5 -5
- package/dist/suits-B37rAORs.d.ts +414 -0
- package/dist/{system-address-cyJaeZIS.d.ts → system-address-DmzXRD48.d.ts} +6 -4
- package/package.json +25 -1
- package/dist/chunk-4U7KYQGK.js +0 -1
- package/dist/chunk-4U7KYQGK.js.map +0 -1
- package/dist/chunk-6GJHUWMO.js +0 -1
- package/dist/chunk-6GJHUWMO.js.map +0 -1
- package/dist/chunk-77TT4K53.js +0 -1
- package/dist/chunk-B7EYTZRK.js +0 -1
- package/dist/chunk-B7EYTZRK.js.map +0 -1
- package/dist/chunk-C5HG4GJI.js +0 -1
- package/dist/chunk-C5HG4GJI.js.map +0 -1
- package/dist/chunk-F7VWRDSL.js.map +0 -1
- package/dist/chunk-KLC5XT6F.js +0 -1
- package/dist/chunk-KLC5XT6F.js.map +0 -1
- package/dist/chunk-MGRDB2BZ.js +0 -1
- package/dist/chunk-QJECDMQQ.js +0 -1
- package/dist/chunk-TSEDU73T.js +0 -1
- package/dist/chunk-TSEDU73T.js.map +0 -1
- package/dist/chunk-XRGECU7S.js +0 -1
- package/dist/chunk-XRGECU7S.js.map +0 -1
- /package/dist/{chunk-XSLPWM5N.js.map → chunk-2J6NNI3Y.js.map} +0 -0
- /package/dist/{chunk-DWRNXUAX.js.map → chunk-2KIZN3BY.js.map} +0 -0
- /package/dist/{chunk-J7BM5NGK.js.map → chunk-2TY42PTF.js.map} +0 -0
- /package/dist/{chunk-KBCA4GEZ.js.map → chunk-FP2TQJZP.js.map} +0 -0
- /package/dist/{chunk-ETWMPMZP.js.map → chunk-K5JK3XQB.js.map} +0 -0
- /package/dist/{chunk-A6OINYNP.js.map → chunk-R2AEZYX7.js.map} +0 -0
- /package/dist/{chunk-77TT4K53.js.map → chunk-SFEQXUIA.js.map} +0 -0
- /package/dist/{chunk-7TVFV3VO.js.map → chunk-U3IRMXMR.js.map} +0 -0
- /package/dist/{chunk-7ATBEOVC.js.map → chunk-WG4DPXJI.js.map} +0 -0
|
@@ -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 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 |
|
|
21
22
|
|
|
22
23
|
Every `eddb.js` derivation uses the baseline snapshot unless its catalogue note names
|
|
23
24
|
the Vessel Hangar snapshot.
|
|
@@ -32,13 +33,13 @@ re-derived from a public source.
|
|
|
32
33
|
Each hull is **one record** carrying its identity, its stats, and its slot layout —
|
|
33
34
|
identity from FDevIDs, stats and slots from coriolis-data, joined on `symbol`.
|
|
34
35
|
|
|
35
|
-
- **File:** `ships.jsonc` (
|
|
36
|
+
- **File:** `ships.jsonc` (the player-flyable hulls).
|
|
36
37
|
- **Identity source:** FDevIDs `shipyard.csv`, columns `id,symbol,name,entitlement`.
|
|
37
38
|
- **Identity derivation:** records are carried over in shipyard order (roughly the
|
|
38
39
|
order hulls were introduced): internal `symbol` and display `name`. The CSV's
|
|
39
40
|
numeric ship-type `id` column is dropped — hulls are keyed by `symbol`.
|
|
40
|
-
`entitlement` is FDevIDs' DLC/grant token, kept only where the CSV gives one (
|
|
41
|
-
|
|
41
|
+
`entitlement` is FDevIDs' DLC/grant token, kept only where the CSV gives one (most
|
|
42
|
+
hulls carry no entitlement, so the field is omitted rather than stored empty).
|
|
42
43
|
- **Stats + slots source:** coriolis-data `ships/*.json` — `properties` for manufacturer,
|
|
43
44
|
numeric size class and stats,
|
|
44
45
|
`slots` + `bulkheads` for the layout.
|
|
@@ -56,8 +57,8 @@ identity from FDevIDs, stats and slots from coriolis-data, joined on `symbol`.
|
|
|
56
57
|
Masses are tonnes, speeds m/s, rotation rates deg/s. The in-game hull audit below
|
|
57
58
|
overrides registry values where they disagree.
|
|
58
59
|
- **Speed is stored as installed endpoints.** An Elite Dangerous `4.4.0.3` hull audit
|
|
59
|
-
recorded 2026-08-14 UTC supplies `minimumSpeed` and `maximumSpeed` directly for
|
|
60
|
-
|
|
60
|
+
recorded 2026-08-14 UTC supplies `minimumSpeed` and `maximumSpeed` directly for every
|
|
61
|
+
hull.
|
|
61
62
|
The game's ratio values carry no independent information:
|
|
62
63
|
`minThrust = 100 * minimumSpeed / maximumSpeed` and
|
|
63
64
|
`pipSpeed = (maximumSpeed - minimumSpeed) / (4 * maximumSpeed)`. The ratios are
|
|
@@ -67,8 +68,8 @@ identity from FDevIDs, stats and slots from coriolis-data, joined on `symbol`.
|
|
|
67
68
|
- **Angular rates are stored as zero- and four-ENG-PIP endpoints.** The same game audit
|
|
68
69
|
supplies `minPitch`, `minRoll` and `minYaw` from each flight-default block. The
|
|
69
70
|
selected full-rate words come from the hull overrides; an exact `-1.0` override
|
|
70
|
-
sentinel selects the corresponding flight-default word. This structure holds for
|
|
71
|
-
|
|
71
|
+
sentinel selects the corresponding flight-default word. This structure holds for every
|
|
72
|
+
player hull. EDSY's public handling implementation independently identifies these
|
|
72
73
|
minima as zero-ENG-PIP values and linearly interpolates each axis to its full rate.
|
|
73
74
|
- **Installed English display names are taken verbatim from the game.** The Elite
|
|
74
75
|
Dangerous `4.4.0.3` localisation audit recorded 2026-08-14 UTC replaces eight compact
|
|
@@ -111,8 +112,8 @@ identity from FDevIDs, stats and slots from coriolis-data, joined on `symbol`.
|
|
|
111
112
|
measurement of Frontier's game rather than a stat the game displays. The baseline is
|
|
112
113
|
EDSY `eddb.js` `ship[…].heatdismax` from the pinned snapshot, joined by
|
|
113
114
|
case-insensitive `fdname` / `symbol`. A complete maintainer-supplied thermal audit
|
|
114
|
-
from Elite Dangerous `4.4.0.3`, recorded 2026-08-14 UTC, governs
|
|
115
|
-
supplies the nine corrections and omissions listed above.
|
|
115
|
+
from Elite Dangerous `4.4.0.3`, recorded 2026-08-14 UTC, governs every value and
|
|
116
|
+
supplies the nine corrections and omissions listed above. Every other value agrees
|
|
116
117
|
with EDSY exactly.
|
|
117
118
|
Each value is the load in thermal-load units per second shed at heat level 1. The
|
|
118
119
|
stored catalogue range is Hauler `16.2` through Cutter `72.58`.
|
|
@@ -131,7 +132,7 @@ identity from FDevIDs, stats and slots from coriolis-data, joined on `symbol`.
|
|
|
131
132
|
|
|
132
133
|
### Gunsights
|
|
133
134
|
|
|
134
|
-
- **File:** `gunsights.jsonc` (
|
|
135
|
+
- **File:** `gunsights.jsonc` (every hardpoint on every player-flyable hull).
|
|
135
136
|
- **Derivation:** each observation is joined to `ships.jsonc` by case-insensitive hull
|
|
136
137
|
symbol. Its hardpoints are joined by exact journal slot key to the hardpoints returned
|
|
137
138
|
by `enumerateSlots`, then written in the existing `Ship.hardpoints` order. One observed
|
|
@@ -152,14 +153,14 @@ identity from FDevIDs, stats and slots from coriolis-data, joined on `symbol`.
|
|
|
152
153
|
`48.7663916349` written `48.76639`. Exact zero and tiny near-zero values both describe
|
|
153
154
|
centerline mounts; the residuals are numeric precision, not meaningful sub-millimetre
|
|
154
155
|
displacements to interpret or normalize.
|
|
155
|
-
- **Manual corrections:** none.
|
|
156
|
+
- **Manual corrections:** none. Every hull and every hardpoint slot key joins
|
|
156
157
|
one-to-one without correction.
|
|
157
158
|
|
|
158
159
|
### Default loadouts
|
|
159
160
|
|
|
160
|
-
- **File:** `default-loadouts.jsonc` (
|
|
161
|
+
- **File:** `default-loadouts.jsonc` (every hull's stock modules).
|
|
161
162
|
- **Primary source:** EDSY `eddb.js` `ship[*].stock`, from the baseline pinned snapshot.
|
|
162
|
-
It carries
|
|
163
|
+
It carries every current hull, including the Lynx Highliner absent from the pinned
|
|
163
164
|
coriolis-data revision, and distinguishes current stock modules such as SCO frame
|
|
164
165
|
shift drives, Supercruise Assist and Advanced Docking Computer.
|
|
165
166
|
- **Derivation:** the source ship is joined to `ships.jsonc` by case-insensitive Frontier
|
|
@@ -169,8 +170,8 @@ identity from FDevIDs, stats and slots from coriolis-data, joined on `symbol`.
|
|
|
169
170
|
then through EDSY's global module table; the resulting Frontier `fdname` becomes the
|
|
170
171
|
stored module `symbol`. Zero entries are empty optional, hardpoint or utility mounts
|
|
171
172
|
and are omitted. The output stores the layout's canonical journal slot key, not the
|
|
172
|
-
source array position.
|
|
173
|
-
ship and module catalogues and
|
|
173
|
+
source array position. Every fitted symbol and mount resolves against the checked-in
|
|
174
|
+
ship and module catalogues and passes the same compatibility rules as `ShipLoadout`.
|
|
174
175
|
- **Planetary approach suite:** EDSY treats the approach suite as a built-in outside its
|
|
175
176
|
stock arrays. `int_planetapproachsuite_advanced` is added to every hull's dedicated
|
|
176
177
|
`PlanetaryApproachSuite` mount. Coriolis-data stores id `4F` (the advanced suite) on 46
|
|
@@ -217,6 +218,25 @@ include the Sub-Surface Extraction Missile (`Hpt_Human_Extraction_Fixed_Medium`)
|
|
|
217
218
|
alongside the displacement missile it varies, so it counts as a mining tool despite its
|
|
218
219
|
unrelated symbol.
|
|
219
220
|
|
|
221
|
+
**`vesselHangar` takes three families, where the registries list one.** Both carry the
|
|
222
|
+
Type-11's `FighterBay01` as fighter-hangars-only — coriolis `"eligible": { "fh": 1 }`,
|
|
223
|
+
EDSY `{ifh:1}` — and both were read before the modules existed. A journal `ModuleBuy`
|
|
224
|
+
records `int_mkiilargebuggybay_size4_class3` bought into that mount, over the
|
|
225
|
+
`int_fighterbay_size5_class1` it replaced, and both **unreleased** Large Planetary Vehicle
|
|
226
|
+
Hangar lines fit there, so the stored rule takes `int_largebuggybay` and
|
|
227
|
+
`int_mkiilargebuggybay` beside `int_fighterbay`. The plain line's prefix covers its
|
|
228
|
+
`_Free` grants, which fit wherever their sold twins do. In-game readings govern where a
|
|
229
|
+
registry disagrees, and here the registries are not wrong so much as older than the
|
|
230
|
+
modules.
|
|
231
|
+
|
|
232
|
+
**Neither Large Planetary Vehicle Hangar line carries `restrictedToSlot`.** Fitting one
|
|
233
|
+
mount does not reserve a module to that kind of mount, and neither line could be reserved
|
|
234
|
+
to `vesselHangar` anyway: of the thirteen hulls the Mk II line is restricted to, only the
|
|
235
|
+
Type-11 has such a mount, so on the other twelve it must be fitting ordinary optionals,
|
|
236
|
+
and the plain line carries no hull restriction at all. Those thirteen are exactly the hulls that can carry a
|
|
237
|
+
ship-launched vessel, which is what makes the hull list and the mount reading one fact
|
|
238
|
+
rather than two.
|
|
239
|
+
|
|
220
240
|
**`passenger` rests on a capture as well as on EDSY**, and needs to. `PASSENGER` is the
|
|
221
241
|
one restricted family absent from EDSY's journal import map and its `ipc` eligibility
|
|
222
242
|
check is commented out in `edsy.js`, so the reservation alone confirmed no journal
|
|
@@ -236,7 +256,7 @@ stored on the mount, for example `{ "size": 1, "name": "Slot14_Size1" }`.
|
|
|
236
256
|
EDSY's own — `edsy.js` reads them in `Build.fromJournal()` and writes them in
|
|
237
257
|
`exportJournal()`. Only EDSY carries them; coriolis-data does not model journal slot
|
|
238
258
|
names at all, so the corroborating source has to be captures, and five are in hand —
|
|
239
|
-
four SLEF exports and one journal — covering four of the
|
|
259
|
+
four SLEF exports and one journal — covering four of the hulls with names of their
|
|
240
260
|
own (below). One is a journal rather
|
|
241
261
|
than an export: `journal-lynx-highliner.jsonc` gives Frontier's own casing for a hull the
|
|
242
262
|
Inara export already covers in lower case, and one thing that export does not — its
|
|
@@ -273,7 +293,7 @@ size differs from coriolis's.
|
|
|
273
293
|
- **Lynx Highliner** `Slot01_Size6`, **`Passenger01`–`03`**, `Slot02_Size5`, …
|
|
274
294
|
- **Panther Clipper Mk II** and **Type-11 Prospector** are carried too, though the
|
|
275
295
|
regular numbering derives their names. They are kept so the stored table matches EDSY's
|
|
276
|
-
|
|
296
|
+
entries one for one.
|
|
277
297
|
|
|
278
298
|
**The `_SizeN` suffix is Frontier's, and on three hulls it is wrong.** The Keelback, Asp
|
|
279
299
|
Scout and Type-7 name mounts with a class the hull does not have there. That is the
|
|
@@ -351,17 +371,17 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
351
371
|
outfitting categories.
|
|
352
372
|
- **Identity source:** FDevIDs `outfitting.csv`, columns
|
|
353
373
|
`id,symbol,category,name,mount,guidance,ship,class,rating,entitlement`, supplemented
|
|
354
|
-
for the six bundle-granted Vessel Hangars by the pinned CAPI response below
|
|
374
|
+
for the six bundle-granted Vessel Hangars by the pinned CAPI response below and for
|
|
375
|
+
the nine unreleased Large Planetary Vehicle Hangars by the readings pinned above.
|
|
355
376
|
- **Identity derivation:** the acquired FDevIDs module records are kept in CSV order
|
|
356
|
-
within each category file. The
|
|
357
|
-
records across all four categories. The CSV's numeric `id`
|
|
377
|
+
within each category file. The CSV's numeric `id`
|
|
358
378
|
column is dropped — modules are keyed by `symbol` — and rows marked `removed` are
|
|
359
379
|
excluded because they are not current outfitting modules. `class` is FDevIDs' `class` — the
|
|
360
380
|
module size (0–8) — and `rating` its grade letter (A–I); together they are the "5A"
|
|
361
381
|
the outfitting screen shows. `mount` (Fixed / Gimballed / Turreted) and `guidance`
|
|
362
382
|
(Dumbfire / Seeker / Swarm) are stored only on the hardpoints that carry them; `ship`
|
|
363
383
|
names the hull an armour variant belongs to (armour is the one ship-specific module,
|
|
364
|
-
so only the
|
|
384
|
+
so only the armour records carry it); `entitlement` is kept only where it is a
|
|
365
385
|
real DLC/grant token. `name` is FDevIDs' descriptive English label, including expanded
|
|
366
386
|
forms such as Frame Shift Drive and Auto Field-Maintenance Unit.
|
|
367
387
|
- **The CSV's `category` column is not stored — the file states it.** It would be the
|
|
@@ -377,7 +397,7 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
377
397
|
fitting or an ordinary optional internal fits any mount of its kind that is large
|
|
378
398
|
enough, so there is no single mount to name.
|
|
379
399
|
- **Derivation:** the value is the mount the module is sold for in the outfitting
|
|
380
|
-
screen, assigned by symbol family — the
|
|
400
|
+
screen, assigned by symbol family — the `*_Armour_*` records are `armour`, the
|
|
381
401
|
`Int_PowerPlant_*`/`Int_GuardianPowerplant_*` are `powerPlant`, and so on through
|
|
382
402
|
`Int_Engine_*` and `Int_MkIIAgileBoost_Engine_*` (`thrusters`), `Int_Hyperdrive_*`
|
|
383
403
|
(`frameShiftDrive`), `Int_LifeSupport_*`, `Int_PowerDistributor_*`/
|
|
@@ -386,18 +406,17 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
386
406
|
II's `Int_MkIIAgileBoost_Engine_*` thrusters.
|
|
387
407
|
- **A fuel tank is the one module built for two kinds of mount:** it is `fuelTank`
|
|
388
408
|
and also fits any optional slot large enough, exactly as the game sells it.
|
|
389
|
-
- **`kind` is the ordinary engineering-menu family.** The
|
|
409
|
+
- **`kind` is the ordinary engineering-menu family.** The records mapped by
|
|
390
410
|
`engineering-options.jsonc` repeat that map's group key in the compact on-disk `kind`
|
|
391
|
-
field. The
|
|
392
|
-
engineering menu; this includes the
|
|
393
|
-
Abrasion Blaster, and the
|
|
411
|
+
field. The rest carry no `kind` because they have no ordinary
|
|
412
|
+
engineering menu; this includes the Enzyme/AX weapons, the fixed Mining Laser and
|
|
413
|
+
Abrasion Blaster, and the cargo racks documented under Engineering options below.
|
|
394
414
|
The group source, derivation, split
|
|
395
415
|
Guardian families and coverage are documented under Engineering options below; this
|
|
396
416
|
field is a projection of that map, not a separate classification source.
|
|
397
417
|
- **`familyId` groups every outfitting list.** Every record in all four catalogues
|
|
398
|
-
carries the id of the family its outfitting list shows it under
|
|
399
|
-
|
|
400
|
-
in 12. No family crosses an outfitting category. The ids and their canonical English
|
|
418
|
+
carries the id of the family its outfitting list shows it under. No family crosses an
|
|
419
|
+
outfitting category. The ids and their canonical English
|
|
401
420
|
names are `module-families.jsonc`, below; localized labels are
|
|
402
421
|
`data/i18n/module-family-names.jsonc`. Variants remain with the base family rather
|
|
403
422
|
than fragmenting a list: Bi-Weave and Prismatic generators are `shieldGenerators`;
|
|
@@ -406,8 +425,8 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
406
425
|
`passengerCabins` and `vesselHangars`. Guardian and AX weapons retain their distinct
|
|
407
426
|
family where their function differs. A core record's family follows from its `slot`,
|
|
408
427
|
which is on every one of them, so the two never disagree.
|
|
409
|
-
- **`supercruiseOvercharge` — the SCO drive line.** The
|
|
410
|
-
`Int_Hyperdrive_Overcharge_*` records carry `true`; the
|
|
428
|
+
- **`supercruiseOvercharge` — the SCO drive line.** The
|
|
429
|
+
`Int_Hyperdrive_Overcharge_*` records carry `true`; the plain drives of the same
|
|
411
430
|
sizes and ratings, and every other record in all four catalogues, omit it.
|
|
412
431
|
- **Source:** FDevIDs `outfitting.csv`, which sells the two drive lines under distinct
|
|
413
432
|
symbol families and names the Overcharge one `Frame Shift Drive (SCO)`. No registry
|
|
@@ -417,7 +436,7 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
417
436
|
above, and it is applied once here so that consumers read a datum instead of
|
|
418
437
|
matching `Int_Hyperdrive_Overcharge` themselves — which a pre-engineered or fitted
|
|
419
438
|
article's symbol does not always let them do. Stored as a sparse flag rather than a
|
|
420
|
-
`true`/`false` pair on
|
|
439
|
+
`true`/`false` pair on every drive, following `alwaysPowered` and
|
|
421
440
|
`guardianZoneResistance`.
|
|
422
441
|
- **Nothing else is derived from it.** The two lines share every jump constant this
|
|
423
442
|
catalogue carries (`optMass`, `maxFuel`, `fuelMul`, `fuelPower`, and the
|
|
@@ -426,14 +445,14 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
426
445
|
calculation reads the flag; the
|
|
427
446
|
overcharged supercruise behaviour the drives are named for has no published figures
|
|
428
447
|
and none are stored.
|
|
429
|
-
- **`cabinCapacity` — a passenger cabin's berths.** The
|
|
448
|
+
- **`cabinCapacity` — a passenger cabin's berths.** The `passengerCabins` records
|
|
430
449
|
carry it; every other record in all four catalogues omits it, and no cabin carries a
|
|
431
450
|
zero. It is the module's own seat count, not the ship's.
|
|
432
451
|
- **Source:** coriolis-data
|
|
433
452
|
`modules/internal/{economy,business,first,luxury}_passenger_cabin.json` (`passengers`)
|
|
434
453
|
and EDSY `eddb.js` (`cabincap`, whose `fdattr` is the journal's `CabinCapacity`), from
|
|
435
|
-
the snapshots pinned above. The two agree on every
|
|
436
|
-
neither is preferred; the
|
|
454
|
+
the snapshots pinned above. The two agree on every Mk I cabin, so
|
|
455
|
+
neither is preferred; the Mk II cabins rest on EDSY alone, which is where their
|
|
437
456
|
masses come from as well. FDevIDs publishes no capacity column.
|
|
438
457
|
- **Values:** Mk I economy 2/4/8/16/32 by size 2–6, business 3/6/10/16 by size 3–6,
|
|
439
458
|
first 3/6/12 by size 4–6 and luxury 4/8 by size 5–6. Mk II economy 3/6/12/24/48 by
|
|
@@ -448,19 +467,20 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
448
467
|
publishes one (`cabincls`, values `E`/`B`/`F`/`L`), which this catalogue does not
|
|
449
468
|
copy: the symbol already states the class, uniformly across both lines. The symbol's
|
|
450
469
|
`_ClassN` suffix — not the `class` field, which is the slot size — is 1/2/3/4 for
|
|
451
|
-
economy/business/first/luxury on
|
|
470
|
+
economy/business/first/luxury on every record, which is what the English `name` and
|
|
452
471
|
EDSY's `cabincls` both agree with; the `rating` field is what does not state it, for
|
|
453
472
|
the reason above. The Mk I line runs all four, the Mk II line economy and business
|
|
454
473
|
only.
|
|
455
474
|
- **EDSY's five `Int_PassengerCabin_Size{2..6}_Class0` "Prisoner Cells" rows are not
|
|
456
475
|
carried**, capacity or otherwise: EDSY has them commented out with a null `fdid`, and
|
|
457
476
|
the inclusion rule below excludes an identity no registry offers to players.
|
|
458
|
-
- **`grantOnly` — the articles that arrive granted rather than sold.**
|
|
459
|
-
carry `true
|
|
460
|
-
support, distributor, sensors, fuel tank, shield generator, cargo rack)
|
|
461
|
-
`*_Free` Vessel Hangars
|
|
462
|
-
|
|
463
|
-
|
|
477
|
+
- **`grantOnly` — the articles that arrive granted rather than sold.** The records that
|
|
478
|
+
carry `true` are the nine `*_free` starter fittings (power plant, thrusters, drive, life
|
|
479
|
+
support, distributor, sensors, fuel tank, shield generator, cargo rack), the six
|
|
480
|
+
`*_Free` Vessel Hangars and the three **unreleased** `*_Class3_Free` Large Planetary
|
|
481
|
+
Vehicle Hangars. Every other record omits it, and nothing carries `false`.
|
|
482
|
+
- **Source:** Frontier's own symbol naming, and for the six Vessel Hangars the pinned
|
|
483
|
+
CAPI response, which lists them `bundle: true` under the grant tokens
|
|
464
484
|
`ELITE_V_MKIFIGHTERBAY_FREE` / `ELITE_V_MKIIFIGHTERBAY_FREE` — see "Records sourced
|
|
465
485
|
outside the baseline registries" below, which also reads that response's zero as the
|
|
466
486
|
bundle charge rather than a purchase price. No registry publishes a field for
|
|
@@ -484,13 +504,12 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
484
504
|
and supplied by the repository owner. The game publishes no immutable identifier for
|
|
485
505
|
its localisation tables, so the acquired table is the evidence; it is the same table
|
|
486
506
|
that supplies `data/i18n/module-family-names.jsonc`.
|
|
487
|
-
- **Derivation:**
|
|
507
|
+
- **Derivation:** most families are named by an in-game outfitting category and
|
|
488
508
|
take that category's English label verbatim — which is why `Cargo Scanners` is
|
|
489
509
|
`Manifest Scanners`, `Torpedo Pylons` is `Torpedoes` and `Mine Launchers` is `Mines`.
|
|
490
|
-
The
|
|
510
|
+
The rest keep the Almanac's own descriptive name, because the outfitting
|
|
491
511
|
screen does not name them separately. Each id is the camelCase form of its English
|
|
492
|
-
name with punctuation removed
|
|
493
|
-
label cannot drift apart.
|
|
512
|
+
name with punctuation removed.
|
|
494
513
|
- **Merged families.** Where the game lists several Almanac families under one category,
|
|
495
514
|
they are one family here: the operations, rescue, universal and xeno multi-limpet
|
|
496
515
|
controllers are `multiLimpetControllers`; mining volley repeaters and seismic charge
|
|
@@ -561,9 +580,9 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
561
580
|
zero would zero their DPS) and `burstrof: 0` on the Mining Volley Repeater, whose
|
|
562
581
|
burst is a single shot.
|
|
563
582
|
- **`shotSpeed` and `reloadTime` are absent on the weapons that have neither, and
|
|
564
|
-
that absence is an answer.** The
|
|
583
|
+
that absence is an answer.** The weapons with no `shotSpeed` are the lasers, rail
|
|
565
584
|
guns, Gauss cannons and mine launchers — nothing there travels, so there is no
|
|
566
|
-
projectile speed to move.
|
|
585
|
+
projectile speed to move. Those with no `reloadTime` are a _different and smaller_
|
|
567
586
|
family, the pulse, burst, beam and mining lasers alone: they have no clip and never
|
|
568
587
|
reload, while rail guns, Gauss cannons and mine launchers all reload and all carry
|
|
569
588
|
the stat. Neither registry publishes a figure for either set, and EDSY's per-family
|
|
@@ -577,8 +596,8 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
577
596
|
computers, and Coriolis's own code reads a missing mass as zero (`Module.getMass()` →
|
|
578
597
|
`this.mass || 0`). This catalogue reads an absent field as _unknown_ instead, so a
|
|
579
598
|
single such module would make a whole hull's mass — and with it its jump range —
|
|
580
|
-
impossible to compute. The
|
|
581
|
-
`Int_Repairer_
|
|
599
|
+
impossible to compute. The affected records (`Int_FuelScoop_*`,
|
|
600
|
+
`Int_Repairer_*`, `Int_Refinery_*`, `Int_DockingComputer_{Standard,Advanced}`,
|
|
582
601
|
`ModularCargoBayDoor`, `Int_DroneControl_ResourceSiphon`) say so outright, matching
|
|
583
602
|
upstream's own `"mass": 0` on `Int_DetailedSurfaceScanner_Tiny`. **Verified, not
|
|
584
603
|
assumed:** summing the Deep Black's module masses with these families excluded gives
|
|
@@ -627,7 +646,7 @@ Thirteen stored fields supply the base values referenced by engineering recipes:
|
|
|
627
646
|
scanner and sensor suite carries
|
|
628
647
|
`scannerRange`, while `maximumRange` is reserved for weapons and non-scanner utility
|
|
629
648
|
effects.
|
|
630
|
-
- **`EnergyPerRegen` needs no stored value.**
|
|
649
|
+
- **`EnergyPerRegen` needs no stored value.** Every shield generator carries
|
|
631
650
|
`distributorDraw`, and EDSY (`genpwr`) and coriolis (`distdraw`) both confirm it is the
|
|
632
651
|
same stat under the journal's other name.
|
|
633
652
|
- **Four figures no third-party registry lists, derived from the family rule.** Three
|
|
@@ -642,11 +661,11 @@ Thirteen stored fields supply the base values referenced by engineering recipes:
|
|
|
642
661
|
join makes it a reading.
|
|
643
662
|
- **A weapon with no maximum range carries no Long Range falloff leg.** That leg is
|
|
644
663
|
stored upstream as an overwrite in `[0, 1]` — a flag meaning "damage falls off from
|
|
645
|
-
maximum range." On the
|
|
646
|
-
|
|
664
|
+
maximum range." On the weapons `Weapon_LongRange` reaches that have no range at all
|
|
665
|
+
(missile and torpedo
|
|
647
666
|
racks, mine launchers, flak mortars, the AX dumbfires) there is nothing to resolve
|
|
648
667
|
against, and the recipe's `Range` leg is inert there for the same reason; the flag is
|
|
649
|
-
dropped rather than published as a one-metre falloff.
|
|
668
|
+
dropped rather than published as a one-metre falloff. A few of them do carry a real
|
|
650
669
|
`falloffRange` — the flak mortars, the AX dumbfire missiles and the Disruptor pulse
|
|
651
670
|
laser — and keep it unchanged: only the sentinel is ever dropped, and no record's
|
|
652
671
|
`falloffRange` is small enough to be mistaken for one.
|
|
@@ -665,7 +684,7 @@ Thirteen stored fields supply the base values referenced by engineering recipes:
|
|
|
665
684
|
|
|
666
685
|
### Deliberately absent fields
|
|
667
686
|
|
|
668
|
-
- **`integrity` is absent on
|
|
687
|
+
- **`integrity` is absent on some non-armour records** because no registry publishes one
|
|
669
688
|
for those families and the game's module panel shows none. Guardian hull reinforcement
|
|
670
689
|
packages are in that set and do draw power,
|
|
671
690
|
so "no integrity" is not a shorthand for "inert".
|
|
@@ -685,33 +704,36 @@ Two starter capacities are derived rather than read:
|
|
|
685
704
|
2^size across all eight sizes of both families, with no exception.
|
|
686
705
|
|
|
687
706
|
**In-game coverage, stated separately from registry coverage.** In-game verification
|
|
688
|
-
covers
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
707
|
+
covers every catalogue identity except two sets. The six bundle-granted Vessel Hangars
|
|
708
|
+
rely on the public registry and CAPI evidence below — their stats match their ordinary
|
|
709
|
+
twins, but they have not been independently checked in the module panel. The six
|
|
710
|
+
**unreleased** Large Planetary Vehicle Hangars sit outside it altogether: the game does
|
|
711
|
+
not offer them yet, so nothing about them can be read from a panel until the update
|
|
712
|
+
ships. Numeric verification covers the non-armour modules; the ship-specific armour
|
|
713
|
+
modules' class, mass, hull boost and resistances retain their registry provenance rather
|
|
714
|
+
than being described as game-verified.
|
|
715
|
+
|
|
716
|
+
Every numeric field available through in-game verification was compared, and the
|
|
717
|
+
comparison reached every record carrying the field, apart from the two sets named above,
|
|
718
|
+
which sit outside in-game verification of `powerDraw` and
|
|
719
|
+
`bootTime`. The fields compared are `powerDraw`, `bootTime`, power-plant output and
|
|
720
|
+
efficiency, every FSD field, thruster heat rate, all six distributor fields, sensor
|
|
721
|
+
range and angle, shield mass/strength curves, shield regeneration, shield-cell
|
|
722
|
+
timing/reinforcement/heat, fuel-scoop rate, interdictor range and facing, cargo
|
|
723
|
+
capacity, fuel capacity, hull reinforcement, module protection, shield addition,
|
|
724
|
+
Guardian jump boost, weapon armour piercing, burst rounds, burst rate and rounds per
|
|
725
|
+
shot. Of those, `powerDraw` and `bootTime` agreed everywhere; where the others
|
|
726
|
+
disagreed, the corrections are tabulated below.
|
|
727
|
+
|
|
728
|
+
In-game verification did not yield store prices, hardpoint reserve ammo,
|
|
729
|
+
projectile speed, rail-gun charge time, or the hardpoint scanners'
|
|
730
|
+
range/angle/time fields. Hardpoint maximum-range values, ECM heat and reload,
|
|
731
|
+
the armour modules, blueprint grade rolls and crafting costs remain unverified too.
|
|
710
732
|
It also did not unambiguously settle the shield-generator resistances, shield-booster
|
|
711
|
-
properties or probe radius. Those values are not changed on guesswork. For the
|
|
733
|
+
properties or probe radius. Those values are not changed on guesswork. For the
|
|
712
734
|
anti-xeno, Guardian and special weapons whose damage observed in-game does not reduce honestly
|
|
713
735
|
to one conventional scalar, `damageComponents` preserves the exact amounts. The two
|
|
714
|
-
channel types not established by in-game verification remain `unclassified`.
|
|
736
|
+
channel types not established by in-game verification remain `unclassified`. The
|
|
715
737
|
projectile-limited hardpoints carry their boundary parameters observed in-game in
|
|
716
738
|
`projectileRange`; those parameters are not presented as effective ranges.
|
|
717
739
|
|
|
@@ -751,7 +773,7 @@ and its `PowerDraw` leg reads ×1.15 in the same block.
|
|
|
751
773
|
A fourth label, `Jitter`, already resolved to `jitter`. A capture states it as
|
|
752
774
|
`OriginalValue: 0` on a missile rack whose record holds no such field — a weapon that
|
|
753
775
|
carries no jitter fires true. That zero is a value rather than an absence, so it is a
|
|
754
|
-
`defaultBase` like `roundsPerShot`'s 1. It applies to the
|
|
776
|
+
`defaultBase` like `roundsPerShot`'s 1. It applies to the weapons offered Rapid Fire,
|
|
755
777
|
its multi-cannon spelling, or Inertial Impact (`special_distortion_field`) that hold no
|
|
756
778
|
jitter of their own.
|
|
757
779
|
|
|
@@ -760,10 +782,9 @@ external readings of an unmodified weapon's folded figure. On a beam laser the f
|
|
|
760
782
|
trivial because `damage` is already per second; the huge and medium gimballed beams have
|
|
761
783
|
no separate journal `Damage` reading.
|
|
762
784
|
|
|
763
|
-
**Every module in every catalogue carries at least one stat
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
absent.
|
|
785
|
+
**Every module in every catalogue carries at least one stat**, and no record holds only a
|
|
786
|
+
lone `mass`. Many `bootTime` values are `0` (every hardpoint among them); they are stored
|
|
787
|
+
rather than omitted, because an absent field means absent.
|
|
767
788
|
|
|
768
789
|
**`Int_DroneControl_ResourceSiphon` has a mass of 0 t.** The value is read directly from
|
|
769
790
|
in-game: 0 t mass, alongside integrity 20, power draw 0.4 MW and boot time 0 s. It is not
|
|
@@ -812,8 +833,8 @@ or where no corresponding in-game value was available:
|
|
|
812
833
|
| `Hpt_HeatSinkLauncher_Turret_Tiny` | `ammoMaximum` | 3 | 2 | a journal states the base as 2, and EDSY agrees; in-game verification does not reach hardpoint reserve ammo |
|
|
813
834
|
| `Hpt_Guardian_ShardCannon_Fixed_Medium` | `shotSpeed` | 1133 | 1133.333374 | Frontier's journal states the base beside the tech-broker Modified variant's engineered value |
|
|
814
835
|
|
|
815
|
-
**In-game corrections.** Values are stored at the observed in-game precision.
|
|
816
|
-
|
|
836
|
+
**In-game corrections.** Values are stored at the observed in-game precision. Beyond the
|
|
837
|
+
Resource Siphon, the corrections are:
|
|
817
838
|
|
|
818
839
|
| Records | Fields | Stored in-game values |
|
|
819
840
|
| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------ |
|
|
@@ -823,11 +844,11 @@ account for 300 fields on 135 modules in addition to the Resource Siphon:
|
|
|
823
844
|
| `Int_MetaAlloyHullReinforcement_Size{1..5}_Class{1,2}` | caustic resistance | 0.02 on all ten |
|
|
824
845
|
| shield generators | regeneration / broken regeneration | observed 1.06–5.76 values per symbol |
|
|
825
846
|
| `Int_ShieldCellBank_Size1_Class2`; `Int_FuelScoop_Size4_Class5` | reserve ammo; scoop rate | 1; 0.343 t/s |
|
|
826
|
-
| Beam Laser, Cannon, Fragment Cannon, Multi-Cannon, Plasma Accelerator, Rail Gun, Shock Cannon and Point Defence records | damage / thermal load |
|
|
847
|
+
| 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 |
|
|
827
848
|
| 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 |
|
|
828
849
|
| mining, utility and Guardian hardpoints | clip, distributor draw, reload, jitter, falloff and maximum range | observed values per symbol |
|
|
829
|
-
| anti-xeno, Guardian and special weapons | scalar, distribution and exact damage components |
|
|
830
|
-
| AX missiles, subsurface displacement missiles and seismic charge launchers | projectile boundary parameters; misleading ordinary ranges absent |
|
|
850
|
+
| anti-xeno, Guardian and special weapons | scalar, distribution and exact damage components | one component record per weapon |
|
|
851
|
+
| AX missiles, subsurface displacement missiles and seismic charge launchers | projectile boundary parameters; misleading ordinary ranges absent | `projectileRange` stored; `maximumRange` and `falloffRange` absent |
|
|
831
852
|
|
|
832
853
|
In-game verification gives the integer thruster/FSD masses, 1.1/1.2 enhanced-thruster
|
|
833
854
|
acceleration multipliers and the rising Guardian Shield Reinforcement integrity ladder.
|
|
@@ -856,8 +877,7 @@ damage for the small 1D cannon and **38.5** for the medium 2B cannon. Those read
|
|
|
856
877
|
settle the registry disagreement in favour of coriolis-data's 22 / 38.5 rather than
|
|
857
878
|
EDSY's 40 / 70. The catalogue stores the displayed values without further derivation and
|
|
858
879
|
applies the same correction to their exact thermal and anti-xeno components. The two
|
|
859
|
-
|
|
860
|
-
immutable revision.
|
|
880
|
+
panel readings have no upstream immutable revision.
|
|
861
881
|
|
|
862
882
|
**Values that look wrong and are not.** Three records break the pattern their family
|
|
863
883
|
follows and are confirmed outright by EDSY. Recorded so the "breaks its family's curve"
|
|
@@ -871,7 +891,7 @@ heuristic does not keep rediscovering them:
|
|
|
871
891
|
distributor integrity otherwise tracks 0.80× the A-rated standard ladder, which would
|
|
872
892
|
put size 5 near 85; EDSY states 99 for both sizes. The duplicate is in the game data.
|
|
873
893
|
- **`Int_DroneControl_Recon_Size5_Class1` `bootTime` really is 9.85** — the only
|
|
874
|
-
non-integer boot time in
|
|
894
|
+
non-integer boot time in the whole catalogue, where its three family siblings are exactly 10.
|
|
875
895
|
EDSY gives `boottime:9.85`.
|
|
876
896
|
|
|
877
897
|
### Prices — `cost` on modules, `hullCost` / `retailCost` on hulls
|
|
@@ -886,11 +906,11 @@ the Lynx Highliner, which has no coriolis entry.
|
|
|
886
906
|
Ship-specific **armour** is priced from each hull's `bulkheads` upstream, joined on hull
|
|
887
907
|
and bulkhead name because those records carry no symbol upstream.
|
|
888
908
|
|
|
889
|
-
- **
|
|
890
|
-
|
|
909
|
+
- **Every hull is priced, and nearly every module.** The ones without a price are the
|
|
910
|
+
grant/starter `*_free` variants, the two unsold Corrosion Resistant Cargo Racks
|
|
891
911
|
(both Community Goal rewards) and `Int_ShieldGenerator_Size1_Class4` — no registry
|
|
892
|
-
publishes a figure for them. The three Mk II Vessel Hangars are
|
|
893
|
-
|
|
912
|
+
publishes a figure for them. The three Mk II Vessel Hangars are priced from an in-game
|
|
913
|
+
purchase capture, below.
|
|
894
914
|
**`cost` is omitted, never set to 0**: `0` is a real price (the starter
|
|
895
915
|
Lightweight Alloy bulkhead costs nothing), while omission means unknown.
|
|
896
916
|
- **Sixteen duplicated symbols take the first occurrence's price.** Where coriolis-data
|
|
@@ -951,8 +971,8 @@ and bulkhead name because those records carry no symbol upstream.
|
|
|
951
971
|
where both registries publish a multiple of 10 still differ by 10
|
|
952
972
|
(`Int_FighterBay_Size{6,7}_Class1`, `Int_PassengerCabin_Size6_Class1`), which no
|
|
953
973
|
rounding explains: whatever the real price is, at least one of the two registries is
|
|
954
|
-
wrong about it by five credits or more, and neither says which.
|
|
955
|
-
|
|
974
|
+
wrong about it by five credits or more, and neither says which. In-game readings
|
|
975
|
+
settle two of the three, with coriolis exactly right in both:
|
|
956
976
|
`Int_FighterBay_Size7_Class1` is 2 369 320 and `Int_FighterBay_Size6_Class1` is
|
|
957
977
|
1 869 340, so EDSY's 2 369 330 is the wrong member of that pair (see "Prices read from
|
|
958
978
|
an in-game purchase capture" below). So treat 12 560 as
|
|
@@ -1073,7 +1093,7 @@ and size-6 racks): here the discount is stated rather than solved for.
|
|
|
1073
1093
|
- **The size-8 SCO drives are priced identically to their size-7 siblings.** All four
|
|
1074
1094
|
distinct readings land exactly on coriolis's size-7 figures (6 838 548, 20 515 645,
|
|
1075
1095
|
61 546 935), and EDSY's size-8 numbers are those same figures rounded to 10. The
|
|
1076
|
-
catalogue
|
|
1096
|
+
catalogue carries the exact readings rather than EDSY's rounded figures.
|
|
1077
1097
|
- **A known residual.** `Int_CorrosionProofCargoRack_Size4_Class1` at 94 330 predicts
|
|
1078
1098
|
82 775 under this rule where `journal-the-deep-black.jsonc` reads **82 774**. It is one
|
|
1079
1099
|
of a minority of records whose catalogue list price appears to sit a credit or two above
|
|
@@ -1104,7 +1124,10 @@ and size-6 racks): here the discount is stated rather than solved for.
|
|
|
1104
1124
|
Clipper Mk II, and coriolis-data describes them as a "Panther Clipper storage rack")
|
|
1105
1125
|
and the three Mk II Vessel Hangars → `["Explorer_NX", "PantherMkII", "LakonMiner"]`
|
|
1106
1126
|
(EDSY has no record for the Mk II bays at all, so their restriction rests on
|
|
1107
|
-
Frontier's update notes and Inara)
|
|
1127
|
+
Frontier's update notes and Inara), plus the three **unreleased** Mk II Large
|
|
1128
|
+
Planetary Vehicle Hangars → the thirteen hulls listed under "Records sourced outside
|
|
1129
|
+
the baseline registries" below, where the plain Large hangars beside them carry no
|
|
1130
|
+
restriction. Armour records use the `ship` field instead.
|
|
1108
1131
|
- **`restrictedToSlot`** is the same idea one axis over: the slot restriction a module
|
|
1109
1132
|
requires, so it fits only mounts carrying it — the mirror of a mount's `restriction`,
|
|
1110
1133
|
and the half `restrictedToShips` cannot express. Five records have one: the two
|
|
@@ -1124,8 +1147,8 @@ and size-6 racks): here the discount is stated rather than solved for.
|
|
|
1124
1147
|
optional: a plain cargo rack fits a `cargo` mount _and_ every unrestricted one, and
|
|
1125
1148
|
does not carry it. The set of five is pinned, so widening it is a deliberate act.
|
|
1126
1149
|
- **`exclusionGroup`** carries EDSY's one-per-ship `limit` families, renamed from its
|
|
1127
|
-
compact ids to stable descriptive values.
|
|
1128
|
-
|
|
1150
|
+
compact ids to stable descriptive values. The stored set covers the internal and
|
|
1151
|
+
utility records in all but one of EDSY's one-per-ship source families: shield
|
|
1129
1152
|
generators (standard, bi-weave and prismatic
|
|
1130
1153
|
share one group), fuel scoops, refineries, frame-shift-drive interdictors, Guardian
|
|
1131
1154
|
FSD boosters, vessel hangars, docking computers, supercruise assist, multi-limpet
|
|
@@ -1135,10 +1158,10 @@ and size-6 racks): here the discount is stated rather than solved for.
|
|
|
1135
1158
|
are not current outfitting records; `Int_SupercruiseAssist` matches EDSY's
|
|
1136
1159
|
`Int_SuperCruiseAssist` case-insensitively, as Frontier symbols are matched elsewhere.
|
|
1137
1160
|
The three Mk I bundle-granted and all six Mk II Vessel Hangars are absent from the
|
|
1138
|
-
baseline table; they join to the separately pinned Vessel Hangar snapshot, where
|
|
1139
|
-
|
|
1140
|
-
- **`limitGroup` / `limitIncrease` preserve EDSY's non-exclusive fitting limit.**
|
|
1141
|
-
|
|
1161
|
+
baseline table; they join to the separately pinned Vessel Hangar snapshot, where each
|
|
1162
|
+
carries the same `limit:'ifh'` as the ordinary Mk I records.
|
|
1163
|
+
- **`limitGroup` / `limitIncrease` preserve EDSY's non-exclusive fitting limit.** Every
|
|
1164
|
+
current hardpoint record whose EDSY module carries `limit:'hex'` stores
|
|
1142
1165
|
`limitGroup:'experimentalWeapon'`; the source's `eddb.limit.hex` is `4`. This is the
|
|
1143
1166
|
shared AX/Guardian experimental-weapon allowance, not a name-based classification:
|
|
1144
1167
|
the marked set is exactly the source set, including the Caustic Missile Rack and
|
|
@@ -1167,6 +1190,117 @@ and size-6 racks): here the discount is stated rather than solved for.
|
|
|
1167
1190
|
|
|
1168
1191
|
Records not in coriolis-data / FDevIDs at the acquired revisions:
|
|
1169
1192
|
|
|
1193
|
+
- **Large Planetary Vehicle Hangars — nine records that are UNRELEASED.** They are
|
|
1194
|
+
carried ahead of the update that adds them, and split into a line that is observed and
|
|
1195
|
+
a line that is not:
|
|
1196
|
+
- `Int_LargeBuggyBay_Size{2,4,6}_Class3` and their `_Free` grant twins, named **Large
|
|
1197
|
+
Planetary Vehicle Hangar** — identity and stats from the in-game observation pinned
|
|
1198
|
+
above.
|
|
1199
|
+
- `Int_MkIILargeBuggyBay_Size{2,4,6}_Class3`, named **Mk II Large Planetary Vehicle
|
|
1200
|
+
Hangar** — stats from the same observation, with the size-4 identity, its price and
|
|
1201
|
+
its mount read from a journal `ModuleBuy`. See "The Mk II line's identity comes from
|
|
1202
|
+
a journal" below.
|
|
1203
|
+
|
|
1204
|
+
No registry carries any of the nine, and the game cannot be asked about most of them
|
|
1205
|
+
until the update ships, so none is registry-confirmed and all are outside in-game
|
|
1206
|
+
*verification* as this file uses the term — including the size-4 Mk II record, which a
|
|
1207
|
+
journal does carry. #16 tracks the verification and lists what closes it; a reading on
|
|
1208
|
+
release that disagrees wins outright, symbols included.
|
|
1209
|
+
- **The observed line's identity is settled.** The symbol is `Int_LargeBuggyBay_`, not
|
|
1210
|
+
the `Int_BuggyBay_…_Class3` this catalogue first guessed — the same `Large` prefix
|
|
1211
|
+
Frontier uses for `Int_LargeCargoRack_Size{7,8}_Class1`, whose display name is "Mk II
|
|
1212
|
+
Cargo Rack". The observation also carries three `_Free` grant twins, spelled as the
|
|
1213
|
+
Vessel Hangars' are.
|
|
1214
|
+
- **Observed stats.** Integrity 30 and boot time 5 s throughout, matching every shipped
|
|
1215
|
+
hangar; mass 12/20/34 t and power draw 0.75/1.2/1.8 MW at sizes 2, 4 and 6. The
|
|
1216
|
+
`_Free` twins carry the same four values as their sold twins, so they are stored with
|
|
1217
|
+
them rather than left blank.
|
|
1218
|
+
- **The size-2 record was derived before it was observed, and the derivation held.**
|
|
1219
|
+
It was reasoned from two relations across the shipped hangars — the Large hangar
|
|
1220
|
+
taking the shipped `Class1` mass and the shipped `Class2` power draw — which
|
|
1221
|
+
produced exactly the 12 t and 0.75 MW later observed. The relations are recorded
|
|
1222
|
+
because they still carry the Mk II line, which has no observation.
|
|
1223
|
+
- **`rating` is `F`, and a `C` alongside it is a mapping artefact.** The shipped
|
|
1224
|
+
hangars are `Class1` rating H and `Class2` rating G, so this family does not use the
|
|
1225
|
+
ordinary class-to-letter ladder that would make a `Class3` record a C. F continues
|
|
1226
|
+
its own ladder and F is what the outfitting panel reads, which settles it: the
|
|
1227
|
+
panel is the grade letter's source everywhere in this catalogue. The `C` seen beside
|
|
1228
|
+
these records is what a generic quality-tier mapping produces, applied to a family
|
|
1229
|
+
that does not use that ladder, and it is not carried.
|
|
1230
|
+
- **`vehicleSlots` is observed as 1, 2 and 4 by size — and still not stored.** The
|
|
1231
|
+
observation carries the count for both lines and it matches the shipped hangars of
|
|
1232
|
+
the same sizes. No module record in this catalogue carries a vehicle-slot field, the
|
|
1233
|
+
six shipped hangars included, so adding one is a schema change covering all fifteen
|
|
1234
|
+
hangars rather than something to smuggle in beside unreleased records. The figures
|
|
1235
|
+
are kept here so they are not lost.
|
|
1236
|
+
- **`entitlement` is omitted.** The six shipped hangars carry
|
|
1237
|
+
`ELITE_HORIZONS_V_PLANETARY_LANDINGS`; the Mk II Vessel Hangars, the closest recent
|
|
1238
|
+
addition of the same shape, carry no token at all. Nothing states one for these, and
|
|
1239
|
+
an invented token would be worse than an absent one. The `_Free` twins take
|
|
1240
|
+
`grantOnly` from Frontier's own `_Free` suffix, as §`grantOnly` describes, and no
|
|
1241
|
+
token either.
|
|
1242
|
+
- **The Mk II line's identity comes from a journal.** A `ModuleBuy` entry names
|
|
1243
|
+
`$int_mkiilargebuggybay_size4_class3_name;`, localised "Mk II Large Planetary Vehicle
|
|
1244
|
+
Hangar" — so the prefix is `Int_MkIILargeBuggyBay_`, one word, and the earlier
|
|
1245
|
+
`Int_BuggyBayMk2_` guess is gone. Its stats are 9/15/25.5 t at 0.5/0.8/1.2 MW,
|
|
1246
|
+
integrity 30 and boot time 5 s, at sizes 2, 4 and 6.
|
|
1247
|
+
- **Only the size-4 identity is read; the other two are extended from it.** The
|
|
1248
|
+
journal names one module. Sizes 2 and 6 keep the same prefix and the same
|
|
1249
|
+
`_Size{n}_Class3` shape, which is how every other sized family in this catalogue
|
|
1250
|
+
spells itself, and their stats are observed. It is a narrow extension of a read
|
|
1251
|
+
identity rather than a guess, but it is still an extension.
|
|
1252
|
+
- **The casing is reconstructed.** A journal spells a symbol in lower case, and
|
|
1253
|
+
FDevIDs — which supplies casing everywhere else here — has no row yet.
|
|
1254
|
+
`Int_MkIILargeBuggyBay_` follows `Int_MkII_PassengerCabin_`'s `MkII` and the
|
|
1255
|
+
observed `Int_LargeBuggyBay_`, minus the separator the journal shows is absent.
|
|
1256
|
+
Nothing turns on it: this catalogue matches symbols case-insensitively.
|
|
1257
|
+
- **The Mk II line has no observed `_Free` grant twin**, where the plain line has
|
|
1258
|
+
three. Whether that is a real asymmetry or a gap in what has been seen is open.
|
|
1259
|
+
- **Only the Mk II records are ship-restricted**, to the thirteen hulls reported:
|
|
1260
|
+
`TypeX_2`, `Anaconda`, `BelugaLiner`, `Explorer_NX`, `Federation_Corvette`,
|
|
1261
|
+
`Federation_Gunship`, `Cutter`, `Independant_Trader`, `Krait_MkII`, `PantherMkII`,
|
|
1262
|
+
`Type9`, `Type9_Military` and `LakonMiner` — stored in the order they were reported.
|
|
1263
|
+
The plain line carries no restriction, and nothing read so far shows one. **How wide
|
|
1264
|
+
that line's hull coverage actually is has not been established**, so its absent
|
|
1265
|
+
restriction is the reading its silence supports rather than a positive fact.
|
|
1266
|
+
- **The thirteen are exactly the hulls that can carry a ship-launched vessel**, and
|
|
1267
|
+
the journal reading is what makes that legible rather than coincidental: the Mk II
|
|
1268
|
+
hangar was bought into the Type-11's `FighterBay01`, the one vessel-hangar-restricted
|
|
1269
|
+
mount in the catalogue, over the Vessel Hangar it replaced. §`restriction` carries
|
|
1270
|
+
the mount half of this, including why neither line takes `restrictedToSlot`.
|
|
1271
|
+
- **Prices are stored at list, recovered from six discounted readings** — one per sold
|
|
1272
|
+
record, all at a 10% and a 2.5% outfitting discount. The readings are 28 431 at size
|
|
1273
|
+
2, 113 724 at size 4 and 909 792 at size 6, **the same figure for the plain and the
|
|
1274
|
+
Mk II record at each size**. Run each through the discount model §Prices measures —
|
|
1275
|
+
`paid = ceil(ceil(list * 9/10) * 39/40)` — and all three come back exactly from a
|
|
1276
|
+
round list figure that is 1.5x the shipped `Class2` hangar of the same size: 32 400,
|
|
1277
|
+
129 600 and 1 036 800 against 21 600, 86 400 and 691 200. `cost` stores that recovered
|
|
1278
|
+
list price, as it does everywhere else. This overrides an early note that the size-2
|
|
1279
|
+
figure carried no 2.5% discount: undiscounted, 28 431 would be 1.316x its `Class2`
|
|
1280
|
+
sibling, against a 1.5x that lands on a round number and holds for all three sizes at
|
|
1281
|
+
once. The size-4 Mk II reading is a journal `ModuleBuy` `BuyPrice`; the rest are
|
|
1282
|
+
outfitting readings.
|
|
1283
|
+
- **The two lines really do share a price, and that was doubted here.** A Mk II
|
|
1284
|
+
article costing exactly its plain sibling is not how the Mk I and Mk II Vessel
|
|
1285
|
+
Hangars behave, which differ at every size, so this file previously called the
|
|
1286
|
+
shared size-6 figure unlikely to survive. Readings at all three sizes, taken for
|
|
1287
|
+
both lines, say otherwise. The price tracks the size, not the mark.
|
|
1288
|
+
- **No reading pins its list price on its own.** Under a ceiling at each step,
|
|
1289
|
+
`list - 1` reproduces the same paid figure for all three sizes (32 399, 129 599 and
|
|
1290
|
+
1 036 799 do), exactly as `unique: false` marks two rows of the purchase capture.
|
|
1291
|
+
What settles them is the 1.5x relation landing on a round number three times over,
|
|
1292
|
+
and that is weaker than a reading — the one part of the price story a release does
|
|
1293
|
+
not automatically confirm.
|
|
1294
|
+
- **The `_Free` twins carry no price**, as the bundle-granted Vessel Hangars do not:
|
|
1295
|
+
a grant has no list price, and `cost` is omitted rather than set to 0.
|
|
1296
|
+
- **They are exempt from nothing else.** The nine carry stats, so they are among the
|
|
1297
|
+
records carrying at least one; the six sold ones carry a price; and all nine are
|
|
1298
|
+
outside in-game verification, which the `registryOnlyIdentities` count in
|
|
1299
|
+
`fixtures/ships/module-stats.jsonc` pins alongside the bundle-granted Vessel Hangars.
|
|
1300
|
+
`data/i18n/module-names.jsonc` carries the plain line's name in all six locales; the
|
|
1301
|
+
Mk II line's English is read and its five other locales are constructed, which
|
|
1302
|
+
§`module-names.jsonc` there records as a manual correction.
|
|
1303
|
+
|
|
1170
1304
|
- **Vessel Hangars** — the three Mk II records
|
|
1171
1305
|
(`Int_FighterBayMk2_Size{5,6,7}_Class1`) have the same operational stats as the Mk I
|
|
1172
1306
|
bays at half the mass (10/20/30 t, integrity 60/80/120, power
|
|
@@ -1230,13 +1364,12 @@ Records not in coriolis-data / FDevIDs at the acquired revisions:
|
|
|
1230
1364
|
same _kind_ of judgement on thinner evidence, and a contrary in-game reading should
|
|
1231
1365
|
reverse it.
|
|
1232
1366
|
- **The 2026-08-14 in-game audit's totals counted these five as verified, and are
|
|
1233
|
-
|
|
1234
|
-
modules checked numerically, and "every FSD field 72/72" — figures that
|
|
1235
|
-
been true of five records the game does not offer.
|
|
1236
|
-
identity
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
a re-derivation from a new capture.
|
|
1367
|
+
corrected here.** That audit reported `identityMatches` 1193 of 1199 with 952
|
|
1368
|
+
non-armour modules checked numerically, and "every FSD field 72/72" — figures that
|
|
1369
|
+
could not have been true of five records the game does not offer. Corrected, those
|
|
1370
|
+
five drop out of the identity, non-armour and FSD totals alike. They leave the
|
|
1371
|
+
catalogue; they do not join the registry-only set, which stays limited to the
|
|
1372
|
+
bundle-granted Vessel Hangars. The source capture itself has not changed.
|
|
1240
1373
|
- **1B Shield Generator** (`Int_ShieldGenerator_Size1_Class4`) — a gap in FDevIDs, not
|
|
1241
1374
|
in the game: every other shield-generator size carries all five ratings, and size 1
|
|
1242
1375
|
ran E/D/C/A with **B missing**. The module is real, so the record is carried with the
|
|
@@ -1268,6 +1401,15 @@ Records not in coriolis-data / FDevIDs at the acquired revisions:
|
|
|
1268
1401
|
the three unknown fields are omitted.
|
|
1269
1402
|
- The built-in **Cargo Hatch** is stored once as `ModularCargoBayDoor`; per-hull
|
|
1270
1403
|
duplicates of the same fitting are not carried separately.
|
|
1404
|
+
- **The nine Large Planetary Vehicle Hangars are a standing exception, and the only
|
|
1405
|
+
one.** No registry lists them and no player-facing capture establishes them, because
|
|
1406
|
+
the update that adds them has not shipped — so the rule, read as written, excludes
|
|
1407
|
+
them. They are carried anyway so that the work of adding them is reviewable before
|
|
1408
|
+
release rather than after; §"Records sourced outside the baseline registries" says
|
|
1409
|
+
which are observed, which are reported and which are guessed. The exception closes
|
|
1410
|
+
the moment the update ships: either a real source confirms them, and they become
|
|
1411
|
+
ordinary records, or it does not, and they come out — #16. It is not a precedent for
|
|
1412
|
+
carrying any other unreleased identity.
|
|
1271
1413
|
|
|
1272
1414
|
## Engineering (blueprints and experimental effects)
|
|
1273
1415
|
|
|
@@ -1336,7 +1478,7 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1336
1478
|
|
|
1337
1479
|
- **Files:** `blueprints.jsonc` (per-blueprint, per-grade stat modifiers),
|
|
1338
1480
|
`blueprint-costs.jsonc` (the matching per-grade material requirements),
|
|
1339
|
-
`blueprint-merc-coin-costs.jsonc` (the per-roll Merc-Coin amounts the
|
|
1481
|
+
`blueprint-merc-coin-costs.jsonc` (the per-roll Merc-Coin amounts the recipes that
|
|
1340
1482
|
charge a currency bill alongside those materials),
|
|
1341
1483
|
`blueprint-journal-names.jsonc` (the three recipe ids whose journal spelling collides
|
|
1342
1484
|
with another recipe), `experimental-effects.jsonc` (special-effect stat modifiers and
|
|
@@ -1352,14 +1494,14 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1352
1494
|
- **Display names:** each blueprint and experimental effect carries its `name`.
|
|
1353
1495
|
Effect names are the English strings observed in-game. Blueprint names are coriolis
|
|
1354
1496
|
`blueprint.name` for the 81 blueprints coriolis carries, and the Operations dossier's
|
|
1355
|
-
display label for the
|
|
1497
|
+
display label for the rest — the Operations keys and `GuardianModule_Sturdy`,
|
|
1356
1498
|
which is journal-keyed but absent from coriolis, so its name comes from the Inara
|
|
1357
1499
|
registry like the Operations keys' own.
|
|
1358
1500
|
- **These are the short modifier labels, not the full outfitting-panel
|
|
1359
1501
|
strings — deliberately.** The panel calls `Weapon_LongRange` "Long-Range Weapon",
|
|
1360
1502
|
`ShieldBooster_HeavyDuty` "Heavy Duty Shield Booster" and
|
|
1361
1503
|
`Armour_Advanced` "Lightweight Armour"; this catalogue says "Long range", "Heavy
|
|
1362
|
-
duty" and "Lightweight". Nearly all
|
|
1504
|
+
duty" and "Lightweight". Nearly all of them differ that way, because a blueprint's name
|
|
1363
1505
|
is read next to the module it is applied to, where repeating the module's own name
|
|
1364
1506
|
is noise. The convention is house style and is kept: switching to the panel strings
|
|
1365
1507
|
would change every blueprint record's `name` for no gain. Two names were wrong in
|
|
@@ -1368,12 +1510,11 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1368
1510
|
and `special_choke_canister` **"Ion Disruption"** (not "Ion Disruptor").
|
|
1369
1511
|
- **Blueprint journal names — three collisions, stored separately from mechanics.**
|
|
1370
1512
|
`blueprint-journal-names.jsonc` maps a recipe id only when the id the game writes for it
|
|
1371
|
-
is a key some _other_ record already answers to.
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
already carrying and four recipes a player rolls at an engineer. The three that do are
|
|
1513
|
+
is a key some _other_ record already answers to. Every other recipe needs no entry for
|
|
1514
|
+
one of two reasons: its key already is the id a journal writes (including Anti-Guardian
|
|
1515
|
+
Zone Resistance as `GuardianModule_Sturdy`), or it is an Operations id for
|
|
1516
|
+
which no journal spelling has been observed — most of them recipes a module is sold
|
|
1517
|
+
already carrying, and four recipes a player rolls at an engineer. The three that do are
|
|
1377
1518
|
`Scanner_LongRange` and `Scanner_WideAngle`, coriolis keys
|
|
1378
1519
|
for recipes the game writes as `Sensor_LongRange` / `Sensor_WideAngle` — the same ids it
|
|
1379
1520
|
writes for the sensor suites' own Long Range and Wide Angle, which are different recipes
|
|
@@ -1461,7 +1602,7 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1461
1602
|
repository contains no raw `Loadout` capture of this blueprint.
|
|
1462
1603
|
Their per-roll `materials` are from the same registry (resolved to Frontier material
|
|
1463
1604
|
`symbol`s against the `materials` domain). Where that same crafting-cost table lists a
|
|
1464
|
-
per-roll **Merc-Coin** amount beside them — on the
|
|
1605
|
+
per-roll **Merc-Coin** amount beside them — on the recipes named under "Merc-Coin
|
|
1465
1606
|
crafting cost" below, which is every recipe in this bullet except the Anti-Guardian one
|
|
1466
1607
|
— the amount is a currency rather than a material, so it is stored separately, in
|
|
1467
1608
|
`blueprint-merc-coin-costs.jsonc`. Some totals are
|
|
@@ -1479,20 +1620,21 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1479
1620
|
`EngineeringMaterial` list would put something with no `symbol` in the materials domain.
|
|
1480
1621
|
Amounts are **per roll**, exactly as the material recipes are, so pricing a climb weights
|
|
1481
1622
|
each grade by its roll count.
|
|
1482
|
-
- **
|
|
1483
|
-
a charging recipe by rendering its name in the coin colour, and the marked
|
|
1484
|
-
exactly the
|
|
1623
|
+
- **A minority of recipes charge one.** Inara's blueprint
|
|
1624
|
+
index marks a charging recipe by rendering its name in the coin colour, and the marked
|
|
1625
|
+
set is exactly the bespoke grade-2–5 recipes a bought Mercenary article climbs plus the
|
|
1485
1626
|
four Operations recipes an ordinary menu lists at grades 1–5 (`FuelScoop_Efficiency`
|
|
1486
1627
|
and the three `*Laser_ThermalPlasmaConversion`) — 18 marked rows of the 197 the index
|
|
1487
|
-
lists, because one published recipe can answer to more
|
|
1488
|
-
engineer recipe is therefore **absent rather than
|
|
1628
|
+
lists, fewer than the ids they price because one published recipe can answer to more
|
|
1629
|
+
than one stored id. An ordinary engineer recipe is therefore **absent rather than
|
|
1630
|
+
zero**, and `GuardianModule_Sturdy`
|
|
1489
1631
|
is absent for the same reason. That index is the whole evidence for the negative half
|
|
1490
1632
|
of the claim: it is a completeness reading of one listing, not 197 pages checked one
|
|
1491
1633
|
by one. Acquired 2026-08-22 UTC; the pages are live and expose no immutable revision.
|
|
1492
1634
|
- **Every row is joined to its blueprint symbol by its own material recipe, not by name.** Inara
|
|
1493
1635
|
publishes one page per recipe, keyed by its display name; each of the 18 pages' per-grade
|
|
1494
1636
|
material lists was compared against `blueprint-costs.jsonc` before its Merc-Coin figures
|
|
1495
|
-
were taken, and
|
|
1637
|
+
were taken, and every row agrees on every grade, every material and every count. That is what
|
|
1496
1638
|
binds "Rail Gun — Enduring feedback" to `RailGun_LongShot` rather than a guess at the
|
|
1497
1639
|
display name.
|
|
1498
1640
|
- **One published recipe, several stored ids, one set of amounts.** Inara publishes a
|
|
@@ -1542,9 +1684,9 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1542
1684
|
- **Cross-checked against coriolis-data** (commit
|
|
1543
1685
|
`0db9234b5b9ce8c939ea84133d7ce336eea88e27`, acquired 2026-08-01 UTC), which holds the
|
|
1544
1686
|
same facts split across `modifications/modifierActions.json` (modifiers) and
|
|
1545
|
-
`modifications/specials.json` (recipes).
|
|
1546
|
-
`specials.json`;
|
|
1547
|
-
that do not, `special_blinding_shell` and `special_smart_rounds`, are qualitative
|
|
1687
|
+
`modifications/specials.json` (recipes). Every active effect here appears in
|
|
1688
|
+
`specials.json`; all but two have a `modifierActions.json` entry to diff against — the
|
|
1689
|
+
two that do not, `special_blinding_shell` and `special_smart_rounds`, are qualitative
|
|
1548
1690
|
records this file stores with no modifiers either. The two sources agree everywhere
|
|
1549
1691
|
once each one's conventions are accounted for: coriolis stores the four resistances
|
|
1550
1692
|
as `modmod` percentage points where this file stores fractions (hull and shield boost
|
|
@@ -1558,7 +1700,7 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1558
1700
|
`ammomax: -100` leg (stored here as `AmmoMaximum −1`, the "reloads from ship fuel"
|
|
1559
1701
|
mechanic) that coriolis's `modifierActions` does not carry at all; and coriolis
|
|
1560
1702
|
splits Plasma Slug by weapon family where EDSY does not, discussed next.
|
|
1561
|
-
- **Weapon-combat experimental effects are carried in full**
|
|
1703
|
+
- **Weapon-combat experimental effects are carried in full** (Auto Loader,
|
|
1562
1704
|
Corrosive Shell, Force Shell, FSD Interrupt, Plasma Slug, …). A purely-qualitative one —
|
|
1563
1705
|
a gameplay flag with no numeric magnitude the data exposes — carries an **empty
|
|
1564
1706
|
`modifiers` list and a human-readable `description`** instead; effects that do have
|
|
@@ -1580,7 +1722,7 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1580
1722
|
`journal-federation-corvette.jsonc` independently settles High Yield Shell, stating
|
|
1581
1723
|
`$Kinetic;` 100 → 50 and `$Explosive;` 0 → 50 for its large gimballed cannon. The
|
|
1582
1724
|
three sourced conversions remain a lower bound rather than a count:
|
|
1583
|
-
|
|
1725
|
+
several of the effects an engineer offers a weapon carry no `description` at all —
|
|
1584
1726
|
`special_incendiary_rounds` and `special_emissive_munitions` among them — so for those
|
|
1585
1727
|
the data neither states a conversion nor rules one out.
|
|
1586
1728
|
|
|
@@ -1634,17 +1776,17 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1634
1776
|
- **Availability is a property of the module, not of the blueprint.** A Pulse Laser and a
|
|
1635
1777
|
Rail Gun both take the Efficient blueprint but offer different experimental effects, so
|
|
1636
1778
|
"which experimentals go with blueprint X" has no single answer. Modules are therefore
|
|
1637
|
-
grouped
|
|
1779
|
+
grouped — one group per ordinary engineering menu — and each group lists the
|
|
1638
1780
|
`blueprints` and `experimentals` it offers.
|
|
1639
1781
|
- **A group carries no display name.** The grouping is this repository's own partition of
|
|
1640
1782
|
the modules sharing one menu; the game publishes no engineering-group label, heading
|
|
1641
|
-
each menu with the module's outfitting family instead. EDSY's `mtype-*` strings
|
|
1642
|
-
|
|
1643
|
-
|
|
1783
|
+
each menu with the module's outfitting family instead. EDSY's `mtype-*` strings are
|
|
1784
|
+
outfitting labels reached by a name join and disagree with `module-families.jsonc` in
|
|
1785
|
+
22 places on wording
|
|
1644
1786
|
(`cannons` Russian "Пушки" against the family's "Орудия", `moduleReinforcements`
|
|
1645
1787
|
Brazilian Portuguese title case against the family's sentence case). Consumers name a
|
|
1646
1788
|
group by joining a module's `familyId` to `module-families.jsonc`. The two partitions
|
|
1647
|
-
do not coincide exactly:
|
|
1789
|
+
do not coincide exactly: nearly every group sits wholly inside one family, while
|
|
1648
1790
|
`heatSinkLaunchers` covers both `heatsinkLaunchers` and `causticSinkLaunchers`, and the
|
|
1649
1791
|
`fsd` and `hullReinforcements` families are each split across two groups.
|
|
1650
1792
|
- **Source:** EDSY `eddb.js`, whose module-group tables carry each group's `blueprints`
|
|
@@ -1654,9 +1796,8 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1654
1796
|
`modifications/modules.json`, which carries the same per-group lists keyed by the
|
|
1655
1797
|
journal `BlueprintName`s this catalogue joins on.
|
|
1656
1798
|
- **Coverage: every retained group EDSY's `mtype` table gives a `blueprints:` key.** After
|
|
1657
|
-
the corrections below,
|
|
1658
|
-
|
|
1659
|
-
bulkheads (the 241 ship armour records), life
|
|
1799
|
+
the corrections below, the grouped modules include
|
|
1800
|
+
bulkheads (the ship armour records), life
|
|
1660
1801
|
support, sensors, the Detailed Surface Scanner, refineries, AFMUs, fuel
|
|
1661
1802
|
scoops, FSD interdictors and boosters, Guardian module and shield reinforcement, the
|
|
1662
1803
|
four engineerable limpet controllers, chaff, heat sink and caustic sink launchers,
|
|
@@ -1679,30 +1820,32 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1679
1820
|
- **The ordinary halves must not list `GuardianModule_Sturdy`**, which is an
|
|
1680
1821
|
Anti-Guardian recipe on a non-Guardian module and EDSY denies it. `powerPlants`,
|
|
1681
1822
|
`powerDistributors` and `hullReinforcements` therefore hold ordinary modules only,
|
|
1682
|
-
and the
|
|
1683
|
-
- **
|
|
1684
|
-
every blueprint:**
|
|
1823
|
+
and the Guardian ones sit in the three groups above.
|
|
1824
|
+
- **Some modules are absent from the registry-derived result because upstream denies them
|
|
1825
|
+
every blueprint:** the AX multi-cannons, most of the mining tools, and the Mk II
|
|
1685
1826
|
Plasma Shock Accelerator. The two gimballed AX multi-cannons are removed by the in-game
|
|
1686
|
-
correction below, while `plasmaAccelerators`
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1827
|
+
correction below, while the `plasmaAccelerators` family keeps every module but the
|
|
1828
|
+
Mk II. The
|
|
1829
|
+
remaining mining tools are the manually corrected Mining Laser and Abrasion Blaster
|
|
1830
|
+
below, so no mining tool has an ordinary menu and the empty `miningToolsLasers` group
|
|
1831
|
+
is not retained.
|
|
1832
|
+
The plain Module Reinforcement Packages are denied their family's only recipe
|
|
1833
|
+
and are absent too, which leaves `moduleReinforcements` holding the Guardian
|
|
1691
1834
|
packages.
|
|
1692
|
-
- **The
|
|
1693
|
-
the pinned registries. Whole families first, both registries
|
|
1835
|
+
- **The modules that are absent have no ordinary engineering menu.** For most this comes
|
|
1836
|
+
from the pinned registries. Whole families first, both registries
|
|
1694
1837
|
agreeing: fuel tanks, passenger cabins, the repair/recon/research/decontamination and
|
|
1695
1838
|
multi-limpet controllers, meta-alloy and ordinary module reinforcement, the Pulse Wave
|
|
1696
1839
|
Analyser, the mining launchers, Shock Cannons, Nanite Torpedo Pylons, fighter and
|
|
1697
1840
|
vehicle hangars, the docking computers and Supercruise Assist, the module stabilisers,
|
|
1698
1841
|
the planetary approach suites, the cargo hatch and
|
|
1699
1842
|
the AX utility modules (Xeno Scanners, Shutdown Field Neutralisers), followed by the
|
|
1700
|
-
individually denied modules described above. The
|
|
1701
|
-
Mining Laser, Abrasion Blaster and
|
|
1702
|
-
result below.
|
|
1703
|
-
They and the size-5 class-2 Module Reinforcement Package
|
|
1704
|
-
|
|
1705
|
-
their bespoke recipes.
|
|
1843
|
+
individually denied modules described above. The rest are the Enzyme and AX articles,
|
|
1844
|
+
the fixed Mining Laser, the Abrasion Blaster and the cargo racks corrected from the
|
|
1845
|
+
registry-derived result below.
|
|
1846
|
+
They and the size-5 class-2 Module Reinforcement Package the registries already leave
|
|
1847
|
+
ungrouped have no stock menu, but qualifying Mercenary articles remain upgradeable
|
|
1848
|
+
through their bespoke recipes.
|
|
1706
1849
|
- **EDSY's `_X_` prefix means "not applicable" and is honoured**, not stripped: the
|
|
1707
1850
|
Detailed Surface Scanner's group lists only `iss_er` (`Sensor_Expanded`), because its
|
|
1708
1851
|
three other entries are `_X_`-marked. The `Decorative_*` entries on the remote-release
|
|
@@ -1723,18 +1866,17 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1723
1866
|
Range and Wide Angle where the sensor suites take the `Sensor_*` ones. (Their other
|
|
1724
1867
|
four ids are unaffected: `Sensor_FastScan` and the generic `Misc_*` trio, exactly as
|
|
1725
1868
|
coriolis has them.) The shared symbol is not a defect in EDSY's table, and §Scanner
|
|
1726
|
-
Long Range and Wide Angle below is what follows from that.
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
20 in all, every one an exact match. Chaff, heat sink, point defence and ECMs keep the
|
|
1869
|
+
Long Range and Wide Angle below is what follows from that. Every substituted list,
|
|
1870
|
+
and every further group coriolis carries a list for, was checked against coriolis's
|
|
1871
|
+
own and matches exactly. Chaff, heat sink, point defence and ECMs keep the
|
|
1730
1872
|
generic `Misc_*` ids: there coriolis agrees with EDSY.
|
|
1731
|
-
- **
|
|
1732
|
-
them at all: the Guardian-only groups (`guardianPowerPlants`,
|
|
1873
|
+
- **Some retained groups rest on EDSY alone**, because coriolis carries no blueprint
|
|
1874
|
+
list for them at all: the Guardian-only groups (`guardianPowerPlants`,
|
|
1733
1875
|
`guardianPowerDistributors`, `guardianHullReinforcements`, `moduleReinforcements`,
|
|
1734
1876
|
`shieldReinforcements`, `fsdBoosters`, `guardianGauss`, `guardianPlasma` and
|
|
1735
1877
|
`guardianShard`). That is coriolis being
|
|
1736
1878
|
silent rather than contradicting — its Guardian groups are empty objects — but it
|
|
1737
|
-
means the second registry corroborates
|
|
1879
|
+
means the second registry corroborates most groups, not
|
|
1738
1880
|
all of them. The Guardian-weapon menus are independently settled by the in-game
|
|
1739
1881
|
observations below: stock weapons take Anti-Guardian Zone Resistance alone, while
|
|
1740
1882
|
the pre-engineered articles are final.
|
|
@@ -1742,12 +1884,12 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1742
1884
|
EDSY has a single Overcharged for every weapon; coriolis splits it, and `multiCannons`
|
|
1743
1885
|
lists coriolis's `MC_Overcharged`. See "Multi-cannon Overcharged: one journal id, two
|
|
1744
1886
|
recipes" below for the evidence and for what the split costs.
|
|
1745
|
-
- **The groups
|
|
1746
|
-
of modules sold already engineered rather than offered in a menu
|
|
1887
|
+
- **The groups do not name every blueprint.** The ones they miss are Operations keys
|
|
1888
|
+
of modules sold already engineered rather than offered in a menu, plus the
|
|
1747
1889
|
fixed Expanded Cargo Rack reward identity. Four Operations keys _are_ named by a
|
|
1748
1890
|
group, because they are recipes a player applies — see "Four Operations recipes are
|
|
1749
1891
|
listed by a menu" below.
|
|
1750
|
-
- **
|
|
1892
|
+
- **A few modules are bound by the family rule, not by a source row.** EDSY has no live
|
|
1751
1893
|
entry for `Int_ShieldGenerator_Size1_Class4` (present but commented out, and naming
|
|
1752
1894
|
its `mtype` — `isg`), nor for eight of the `*_free` starter fittings. Each takes its
|
|
1753
1895
|
family's group, on the same rule the stats above use: a `*_free` variant is its priced
|
|
@@ -1762,12 +1904,12 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1762
1904
|
- **File order is derivable:** `modules` is written group by group in the order `groups`
|
|
1763
1905
|
declares them, and within a group in module-catalogue order, so a re-derivation from the
|
|
1764
1906
|
same sources reproduces the file rather than reshuffling it.
|
|
1765
|
-
- **`exclusions` are the exceptions, and they are real.**
|
|
1766
|
-
blueprints but not all of its experimental effects:
|
|
1767
|
-
Sequence,
|
|
1768
|
-
Penetrator Munitions or FSD Interrupt. Upstream these are an exclusion map. A module
|
|
1769
|
-
absent from `exclusions` takes its whole group's list.
|
|
1770
|
-
that would otherwise be listed here
|
|
1907
|
+
- **`exclusions` are the exceptions, and they are real.** Some modules take their group's
|
|
1908
|
+
blueprints but not all of its experimental effects: most Multi-cannons cannot take
|
|
1909
|
+
Phasing Sequence, dumbfire racks cannot take Drag Munitions, and some missile racks are
|
|
1910
|
+
short of Penetrator Munitions or FSD Interrupt. Upstream these are an exclusion map. A module
|
|
1911
|
+
absent from `exclusions` takes its whole group's list. Every mining tool
|
|
1912
|
+
that would otherwise be listed here is absent from the catalogue entirely, taking no
|
|
1771
1913
|
ordinary blueprint either.
|
|
1772
1914
|
- **The fixed Mining Laser and Abrasion Blaster have no ordinary engineering menu.** Both
|
|
1773
1915
|
are removed from `modules`, despite EDSY assigning them to `miningToolsLasers` with
|
|
@@ -1786,12 +1928,12 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1786
1928
|
- **Expanded Cargo Rack is a fixed reward identity, not an ordinary cargo-rack recipe.**
|
|
1787
1929
|
EDSY and coriolis expose `CargoRack_IncreasedCapacity` as the grade-5 identity carried
|
|
1788
1930
|
by the size-5 and size-6 community-goal articles catalogued in `pre-engineered.jsonc`.
|
|
1789
|
-
Direct in-game menu confirmation recorded 2026-08-18 UTC establishes that
|
|
1790
|
-
|
|
1931
|
+
Direct in-game menu confirmation recorded 2026-08-18 UTC establishes that no
|
|
1932
|
+
stock cargo-rack identity — ordinary, corrosion-resistant, or Mk II — has an
|
|
1791
1933
|
ordinary engineering menu; there is no immutable revision for an in-game observation.
|
|
1792
1934
|
The fixed articles keep their sourced modifier blocks and remain identifiable without
|
|
1793
1935
|
granting the same state to a stock rack. A re-derivation must drop the `cargoRacks`
|
|
1794
|
-
group,
|
|
1936
|
+
group, its module mappings, and the corresponding projected `kind` fields in
|
|
1795
1937
|
`modules-internal.jsonc`.
|
|
1796
1938
|
- **The Enzyme Missile Rack and AX weapons have no ordinary engineering menu.** Direct
|
|
1797
1939
|
in-game confirmation recorded 2026-08-18 UTC establishes that the Enzyme Missile Rack,
|
|
@@ -1801,23 +1943,23 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1801
1943
|
through grades 2–5 of its bespoke `EnzymeMissileRack_HighYield` recipe. Its separately
|
|
1802
1944
|
catalogued grade-5 High Capacity community-goal article is final. The Enhanced AX
|
|
1803
1945
|
Multi-Cannons and AX Missile Racks in `pre-engineered.jsonc` are fixed tech-broker
|
|
1804
|
-
variants and cannot be engineered further.
|
|
1805
|
-
`engineeringLocked: true`; the multi-cannons retain
|
|
1806
|
-
`Weapon_Overcharged`, not the ordinary multi-cannon menu key `MC_Overcharged`. A
|
|
1946
|
+
variants and cannot be engineered further. The community-goal Enzyme article, both
|
|
1947
|
+
multi-cannons and both racks carry `engineeringLocked: true`; the multi-cannons retain
|
|
1948
|
+
Frontier's journal identity `Weapon_Overcharged`, not the ordinary multi-cannon menu key `MC_Overcharged`. A
|
|
1807
1949
|
re-derivation must drop the
|
|
1808
1950
|
`experimentalWeapons`, `antiXenoMissileRacks` and `antiXenoMultiCannons` groups, their
|
|
1809
1951
|
five module mappings and the corresponding projected `kind` fields in
|
|
1810
1952
|
`modules-hardpoint.jsonc`.
|
|
1811
|
-
- **An empty experimental menu is still distinct from no menu.**
|
|
1812
|
-
no experimental at all, so
|
|
1953
|
+
- **An empty experimental menu is still distinct from no menu.** Many groups offer
|
|
1954
|
+
no experimental at all, so their modules have an empty experimental
|
|
1813
1955
|
list while retaining blueprints.
|
|
1814
1956
|
- **Key form:** the Anti-Guardian blueprint is listed under `GuardianModule_Sturdy`, the id
|
|
1815
1957
|
a Loadout writes and the one EDSY uses — the same and only spelling `blueprints.jsonc`
|
|
1816
1958
|
keys it under.
|
|
1817
|
-
- **Anti-Guardian Zone Resistance carries no experimental effect.**
|
|
1818
|
-
offering `GuardianModule_Sturdy`
|
|
1959
|
+
- **Anti-Guardian Zone Resistance carries no experimental effect.** Every group
|
|
1960
|
+
offering `GuardianModule_Sturdy` stores `"experimentals": []`, including
|
|
1819
1961
|
`guardianGauss`, `guardianPlasma` and `guardianShard`.
|
|
1820
|
-
- There are no pre-engineered Guardian module reward variants. The
|
|
1962
|
+
- There are no pre-engineered Guardian module reward variants. The Guardian
|
|
1821
1963
|
variants are weapons, whose ordinary recipes identify final purchases rather than
|
|
1822
1964
|
engineer rolls.
|
|
1823
1965
|
- **Neither registry publishes this, and a re-derivation will not reproduce it.**
|
|
@@ -1837,7 +1979,7 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1837
1979
|
Guardian power plant, distributor or hull reinforcement package at all. Its
|
|
1838
1980
|
Guardian-weapon entries are final pre-engineered articles, a separate case recorded
|
|
1839
1981
|
below.
|
|
1840
|
-
- The
|
|
1982
|
+
- The modules in the three split families above (`guardianPowerPlants`,
|
|
1841
1983
|
`guardianPowerDistributors` and `guardianHullReinforcements`) therefore carry no
|
|
1842
1984
|
experimental effects in the catalogue at all. Blueprints are unaffected on every
|
|
1843
1985
|
module.
|
|
@@ -1882,7 +2024,7 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1882
2024
|
stock weapon's engineering menu.
|
|
1883
2025
|
|
|
1884
2026
|
So these recipes reach the weapons only as **pre-engineered identities**, and no menu
|
|
1885
|
-
lists them: `pre-engineered.jsonc` marks
|
|
2027
|
+
lists them: `pre-engineered.jsonc` marks every catalogued Guardian-weapon variant
|
|
1886
2028
|
`engineeringLocked: true`, and the 18 build-corpus entries that name one are final
|
|
1887
2029
|
articles rather than recipes a player may apply.
|
|
1888
2030
|
|
|
@@ -1898,7 +2040,7 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1898
2040
|
|
|
1899
2041
|
### A tech-broker unlock may be sold under its own name
|
|
1900
2042
|
|
|
1901
|
-
|
|
2043
|
+
Some tech-broker variants are not sold as the plain base module. Each carries
|
|
1902
2044
|
one of three markers, supplied by repository-owner in-game verification (2026-08-30 UTC);
|
|
1903
2045
|
no registry publishes them, and the game exposes no immutable identifier for its
|
|
1904
2046
|
outfitting strings.
|
|
@@ -1919,11 +2061,6 @@ whose thermal-cascade tech-broker row is a Seeker Missile Rack V1 while its thre
|
|
|
1919
2061
|
community-goal rows are plain. Two tech-broker rows carry no marker at all and keep their
|
|
1920
2062
|
base module's name: the Mining Laser and the size-5 Frame Shift Drive.
|
|
1921
2063
|
|
|
1922
|
-
This repository's own fixtures already described several of these under the corrected
|
|
1923
|
-
names — `pre-engineered.jsonc` calls one row "the tech-broker 'Modified Guardian Shard
|
|
1924
|
-
Cannon'" and another "a V1 FSD" — while `name` carried the plain module's. The data now
|
|
1925
|
-
agrees with the prose.
|
|
1926
|
-
|
|
1927
2064
|
### Festive variants
|
|
1928
2065
|
|
|
1929
2066
|
- **File:** `pre-engineered.jsonc`. Three grade-5 records pair
|
|
@@ -1970,12 +2107,12 @@ agrees with the prose.
|
|
|
1970
2107
|
`{ symbol, name, blueprint, grade, acquisition }`, plus any sourced stat block and
|
|
1971
2108
|
price. The game reports these articles under the base module symbol rather than a
|
|
1972
2109
|
distinct variant symbol.
|
|
1973
|
-
- **`acquisition` says where each remaining variant comes from
|
|
1974
|
-
|
|
2110
|
+
- **`acquisition` says where each remaining variant comes from** — `mercenary`,
|
|
2111
|
+
`communityGoal` or `techBroker`.
|
|
1975
2112
|
- **`mercenary`** — the Merc-Coin shop rows. Source: the in-game outfitting and
|
|
1976
2113
|
blueprint registries, cross-checked against Inara's outfitting and blueprint registries
|
|
1977
2114
|
acquired 2026-08-07 UTC (no immutable revision exposed) and Frontier's update notes.
|
|
1978
|
-
|
|
2115
|
+
Every one is grade 1, and that is the point: the
|
|
1979
2116
|
purchased module already
|
|
1980
2117
|
contains the grade-1 pre-engineering, which is exactly why these blueprints' own
|
|
1981
2118
|
recipes start at grade 2 (see the Operations section above). The two facts are
|
|
@@ -1988,14 +2125,14 @@ agrees with the prose.
|
|
|
1988
2125
|
stocks it; both Lockdown recipes run grades 2–5, the weapon-reward range that marks a
|
|
1989
2126
|
module as bought pre-engineered; and it is the only grade-2–5 Operations recipe in the
|
|
1990
2127
|
file
|
|
1991
|
-
that would otherwise have no row,
|
|
2128
|
+
that would otherwise have no row, every other one having one. Price and size confirmed
|
|
1992
2129
|
2026-08-07 UTC against an index of the Inara outfitting listing, which
|
|
1993
2130
|
reports the MERC Lockdown Seeker Missile Rack [Fixed] at 900 MC for the 3A and 800 MC
|
|
1994
2131
|
for the 2B. This is an index reading rather than a pinned page capture. Both halves check
|
|
1995
2132
|
against rows already here — the large rack is 3A and its other Merc row is 900 MC, the
|
|
1996
2133
|
medium is 2B and its Lockdown row is 800 MC — and that corroboration is what carries
|
|
1997
2134
|
the weight.
|
|
1998
|
-
- **
|
|
2135
|
+
- **Some Merc rows carry a default experimental effect** applied beside the grade-1
|
|
1999
2136
|
blueprint, recorded as `experimentalEffectSymbol`: Screening Shell on both Double
|
|
2000
2137
|
Screaming Fragment Cannons, Incendiary Rounds on the Long Range Mining Laser,
|
|
2001
2138
|
Phasing Sequence on the Rapid Phase Multi-Cannon, Feedback Cascade on the Enduring
|
|
@@ -2004,15 +2141,15 @@ agrees with the prose.
|
|
|
2004
2141
|
Seeker Missile Racks. Source: repository-owner in-game observation, recorded
|
|
2005
2142
|
2026-08-29 UTC; no registry publishes them. These rows still carry no `modifiers`:
|
|
2006
2143
|
the effect is recorded, the unpublished grade-1 blueprint transformation is not.
|
|
2007
|
-
- **Two independent checks each corroborate
|
|
2008
|
-
|
|
2144
|
+
- **Two independent checks each corroborate all but one, and between them cover
|
|
2145
|
+
every row.** The first: the effect is one the stock module's own experimental menu
|
|
2009
2146
|
offers, so the shop is baking in an effect the module can carry
|
|
2010
2147
|
(`engineering-options.jsonc`). That covers every row but the Mining Laser, whose
|
|
2011
2148
|
base module offers no experimental effect at all. The second: the same base module
|
|
2012
2149
|
already carries the same effect on a catalogued community-goal or tech-broker
|
|
2013
2150
|
variant. That covers every row but the large Drag Seeker Missile Rack, whose
|
|
2014
2151
|
corroboration is its medium twin rather than a variant of its own symbol.
|
|
2015
|
-
- **The mining laser is the weakest of
|
|
2152
|
+
- **The mining laser is the weakest of them.** Incendiary Rounds is outside
|
|
2016
2153
|
`Hpt_MiningLaser_Fixed_Small`'s experimental menu — it is the only row a shop menu
|
|
2017
2154
|
could not have offered — so only the twin check speaks for it, and a twin is
|
|
2018
2155
|
consistency more than evidence. It is recorded because it was observed. The
|
|
@@ -2024,12 +2161,12 @@ agrees with the prose.
|
|
|
2024
2161
|
EDSY's stored-module presets, which record each reward as an encoded module state; the
|
|
2025
2162
|
blueprint, grade and experimental effect were
|
|
2026
2163
|
decoded from that state rather than inferred from its display label. All ids join to
|
|
2027
|
-
the blueprint, experimental-effect and module catalogues.
|
|
2028
|
-
|
|
2164
|
+
the blueprint, experimental-effect and module catalogues. All but two are grade 5, and
|
|
2165
|
+
some carry an experimental effect. Acquired 2026-08-01 UTC.
|
|
2029
2166
|
- **`techBroker`** — modules unlocked at a tech broker, from the same EDSY presets and
|
|
2030
2167
|
decoded the same way. Human brokers stock the "V1" drives, the SCO drives and a
|
|
2031
2168
|
seeker rack; the Guardian weapon rows come from the Salvation, Azimuth and Sirius
|
|
2032
|
-
brokers.
|
|
2169
|
+
brokers. Most are grade 5 — the grade-1 rows are the Guardian weapons
|
|
2033
2170
|
and a heat sink launcher, where the blueprint named does define a grade 1, so the
|
|
2034
2171
|
grade is a real grade of a real recipe rather than the Merc-shop convention.
|
|
2035
2172
|
Acquired 2026-08-01 UTC.
|
|
@@ -2039,13 +2176,13 @@ agrees with the prose.
|
|
|
2039
2176
|
route ever existed.
|
|
2040
2177
|
- **`name` is the base module's name, except on the Merc-shop rows.** A community-goal or
|
|
2041
2178
|
tech-broker article is listed under the module it fits as, so those rows carry the
|
|
2042
|
-
catalogue name verbatim. The
|
|
2179
|
+
catalogue name verbatim. The `mercenary` rows do not: the shop sells the
|
|
2043
2180
|
"Far-Reaching Abrasion Blaster" and the "Support Focused Power Distributor" under those
|
|
2044
|
-
names
|
|
2181
|
+
names. Supplied by the repository owner from the
|
|
2045
2182
|
in-game shop listing, acquired 2026-08-22 UTC; the registries carry the transformation,
|
|
2046
2183
|
not the label. Their localized values are recorded in `data/i18n/SOURCES.md`.
|
|
2047
|
-
- **`engineeringLocked: true` marks
|
|
2048
|
-
Guardian weapons and the
|
|
2184
|
+
- **`engineeringLocked: true` marks the final weapon rows:** the pre-engineered
|
|
2185
|
+
Guardian weapons and the fixed Enzyme/AX articles. Their evidence is recorded once
|
|
2049
2186
|
under Engineering options.
|
|
2050
2187
|
- **A reward variant is not reproducible by engineering the same blueprint.** Alongside
|
|
2051
2188
|
its blueprint and effect, each reward carries hand-set modifier overrides no blueprint
|
|
@@ -2057,7 +2194,7 @@ agrees with the prose.
|
|
|
2057
2194
|
Resistant Cargo Racks carry no engineering at all. They already exist as ordinary
|
|
2058
2195
|
module records (`Int_CorrosionProofCargoRack_Size{5,6}_Class1`), so there is no pairing
|
|
2059
2196
|
to record.
|
|
2060
|
-
- **`mercCoinCost` is the shop price in Merc Coin**, on the
|
|
2197
|
+
- **`mercCoinCost` is the shop price in Merc Coin**, on the `mercenary` rows and
|
|
2061
2198
|
nowhere else. Source: the in-game outfitting registry, with the variants and prices
|
|
2062
2199
|
corroborated by Inara's outfitting registry acquired 2026-08-07 UTC; no immutable
|
|
2063
2200
|
revision is exposed.
|
|
@@ -2071,7 +2208,7 @@ agrees with the prose.
|
|
|
2071
2208
|
and grade, then translated into the Almanac's own vocabulary — EDSY's attribute names
|
|
2072
2209
|
map to journal Modifier Labels through its own table, and resistances, which EDSY
|
|
2073
2210
|
stores in a different form from this repo, are converted using the module's base
|
|
2074
|
-
resistance.
|
|
2211
|
+
resistance. Every row carries one except the `mercenary` rows, because no registry
|
|
2075
2212
|
publishes the grade-1 pre-engineering they arrive with and a guess is worse than an
|
|
2076
2213
|
omission.
|
|
2077
2214
|
- **Values are the authored decimals, recovered rather than rounded.** The presets
|
|
@@ -2080,7 +2217,7 @@ agrees with the prose.
|
|
|
2080
2217
|
as `+20%` yields `0.199997`. Rounding that by eye would be a guess, so instead each
|
|
2081
2218
|
value is the **shortest decimal that re-encodes to the identical 20 bits**: the
|
|
2082
2219
|
figure the encoder was originally given, checked by re-encoding rather than assumed.
|
|
2083
|
-
|
|
2220
|
+
Every stat block recovers exactly; a value with no short round-tripping form would
|
|
2084
2221
|
have been kept as decoded, and none needed it. This is what makes the 5A "FSD V1"
|
|
2085
2222
|
resolve to a whole 1785 optimal mass (from `+0.7`) instead of 1785.0126 (from
|
|
2086
2223
|
`0.699988`).
|
|
@@ -2093,9 +2230,8 @@ agrees with the prose.
|
|
|
2093
2230
|
multiplier it implies, and re-encode. Where that lands on the stored bits (within the
|
|
2094
2231
|
encoder's own one-unit rounding), the source cannot tell the two apart and the round
|
|
2095
2232
|
stat is what was authored, so it is stored as an **`overwrite` of the stat** — exact,
|
|
2096
|
-
and the shape a journal reports a pre-engineered modifier in anyway.
|
|
2097
|
-
|
|
2098
|
-
over 11 modules in all.
|
|
2233
|
+
and the shape a journal reports a pre-engineered modifier in anyway. A minority of
|
|
2234
|
+
modifiers are stored this way, alongside the file's other `overwrite` modifiers.
|
|
2099
2235
|
Worth stating plainly, because the blueprint name invites the opposite reading: the
|
|
2100
2236
|
Shard's `MaximumRange` ×1.7647 with `FalloffRange` ×0.88235 is **not** a Long Range
|
|
2101
2237
|
roll of any grade. It is a bespoke stat block, as every reward variant's is.
|
|
@@ -2117,11 +2253,11 @@ agrees with the prose.
|
|
|
2117
2253
|
itself.
|
|
2118
2254
|
- **Burst interval has to be added to the decoder's output by hand.** EDSY carries no
|
|
2119
2255
|
journal Label for `bstint` — the journal reports the resulting `RateOfFire`, never the
|
|
2120
|
-
interval it comes from — so a straight decode drops it, leaving the
|
|
2256
|
+
interval it comes from — so a straight decode drops it, leaving the variants whose
|
|
2121
2257
|
stat block changes a burst pattern on the _stock_ cadence, and four of them (the two frag cannons
|
|
2122
2258
|
and the two Guardian gauss cannons) inconsistent as well as slow, carrying the
|
|
2123
2259
|
engineered `BurstSize` — and, on the gauss cannons, the engineered `BurstRateOfFire` —
|
|
2124
|
-
against a stock interval.
|
|
2260
|
+
against a stock interval. Each is stored under **`BurstInterval`**, the same label
|
|
2125
2261
|
the Rapid Fire and High Capacity blueprint features use (see the Engineering section
|
|
2126
2262
|
above), and it is the file's one departure from what the decoder emits: re-running the
|
|
2127
2263
|
decoder over the same EDSY revision reproduces every other byte.
|