@elite-dangerous-almanac/core 0.1.5 → 0.1.7
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/i18n/SOURCES.md +107 -51
- package/PROVENANCE/ships/SOURCES.md +43 -2
- package/README.md +11 -5
- package/THIRD_PARTY_NOTICES.md +3 -0
- package/assets/ships/Adder/gunsight.svg +17 -0
- package/assets/ships/Anaconda/gunsight.svg +32 -0
- package/assets/ships/Asp/gunsight.svg +26 -0
- package/assets/ships/Asp_Scout/gunsight.svg +20 -0
- package/assets/ships/BelugaLiner/gunsight.svg +23 -0
- package/assets/ships/CobraMkIII/gunsight.svg +20 -0
- package/assets/ships/CobraMkIV/gunsight.svg +23 -0
- package/assets/ships/CobraMkV/gunsight.svg +23 -0
- package/assets/ships/Corsair/gunsight.svg +26 -0
- package/assets/ships/Cutter/gunsight.svg +29 -0
- package/assets/ships/DiamondBack/gunsight.svg +20 -0
- package/assets/ships/DiamondBackXL/gunsight.svg +17 -0
- package/assets/ships/Dolphin/gunsight.svg +14 -0
- package/assets/ships/Eagle/gunsight.svg +17 -0
- package/assets/ships/Empire_Courier/gunsight.svg +17 -0
- package/assets/ships/Empire_Eagle/gunsight.svg +17 -0
- package/assets/ships/Empire_Trader/gunsight.svg +20 -0
- package/assets/ships/Explorer_NX/gunsight.svg +29 -0
- package/assets/ships/Federation_Corvette/gunsight.svg +29 -0
- package/assets/ships/Federation_Corvette/schematic-bottom.svg +5 -5
- package/assets/ships/Federation_Corvette/schematic-top.svg +14 -14
- package/assets/ships/Federation_Dropship/gunsight.svg +23 -0
- package/assets/ships/Federation_Dropship_MkII/gunsight.svg +20 -0
- package/assets/ships/Federation_Gunship/gunsight.svg +29 -0
- package/assets/ships/FerDeLance/gunsight.svg +23 -0
- package/assets/ships/Hauler/gunsight.svg +11 -0
- package/assets/ships/Independant_Trader/gunsight.svg +20 -0
- package/assets/ships/Krait_Light/gunsight.svg +20 -0
- package/assets/ships/Krait_MkII/gunsight.svg +23 -0
- package/assets/ships/LakonMiner/gunsight.svg +32 -0
- package/assets/ships/Mamba/gunsight.svg +23 -0
- package/assets/ships/Mandalay/gunsight.svg +26 -0
- package/assets/ships/MediumTransport01/gunsight.svg +23 -0
- package/assets/ships/Orca/gunsight.svg +17 -0
- package/assets/ships/PantherMkII/gunsight.svg +38 -0
- package/assets/ships/Python/gunsight.svg +23 -0
- package/assets/ships/Python_NX/gunsight.svg +26 -0
- package/assets/ships/SideWinder/gunsight.svg +14 -0
- package/assets/ships/SmallCombat01_NX/gunsight.svg +23 -0
- package/assets/ships/Type6/gunsight.svg +14 -0
- package/assets/ships/Type7/gunsight.svg +20 -0
- package/assets/ships/Type8/gunsight.svg +26 -0
- package/assets/ships/Type9/gunsight.svg +23 -0
- package/assets/ships/Type9_Military/gunsight.svg +35 -0
- package/assets/ships/TypeX/gunsight.svg +26 -0
- package/assets/ships/TypeX_2/gunsight.svg +26 -0
- package/assets/ships/TypeX_3/gunsight.svg +29 -0
- package/assets/ships/Viper/gunsight.svg +20 -0
- package/assets/ships/Viper_MkIV/gunsight.svg +20 -0
- package/assets/ships/Vulture/gunsight.svg +14 -0
- package/dist/chunk-2VPVZELZ.js +1 -0
- package/dist/{chunk-MTAGULIO.js.map → chunk-2VPVZELZ.js.map} +1 -1
- package/dist/{chunk-6RLMBSXE.js → chunk-4S6WB7QR.js} +1 -1
- package/dist/chunk-4TFAZX73.js +1 -0
- package/dist/{chunk-EJMNNQIS.js.map → chunk-4TFAZX73.js.map} +1 -1
- package/dist/chunk-4ZGUSHTP.js +1 -0
- package/dist/{chunk-CTJQPQRA.js.map → chunk-4ZGUSHTP.js.map} +1 -1
- package/dist/{chunk-XT6KKGSE.js → chunk-6G6TYW2D.js} +1 -1
- package/dist/chunk-AFS6HN3D.js +1 -0
- package/dist/chunk-AFS6HN3D.js.map +1 -0
- package/dist/{chunk-XN6Q7LWU.js → chunk-CJWFY6OX.js} +1 -1
- package/dist/{chunk-UBYO7VZR.js → chunk-DBGXZF7O.js} +1 -1
- package/dist/{chunk-H3HMVGEY.js → chunk-EKQCVCMK.js} +1 -1
- package/dist/chunk-ELT3FEA4.js +1 -0
- package/dist/{chunk-3IMWUYXJ.js.map → chunk-ELT3FEA4.js.map} +1 -1
- package/dist/chunk-EXVCRIDP.js +1 -0
- package/dist/chunk-EXVCRIDP.js.map +1 -0
- package/dist/{chunk-EKWLAHRG.js → chunk-GRSNX36B.js} +1 -1
- package/dist/{chunk-EKWLAHRG.js.map → chunk-GRSNX36B.js.map} +1 -1
- package/dist/chunk-GVNTKCVF.js +1 -0
- package/dist/chunk-GVNTKCVF.js.map +1 -0
- package/dist/{chunk-FEER4ERG.js → chunk-IOJXLDJN.js} +1 -1
- package/dist/chunk-J42ZXLBL.js +1 -0
- package/dist/{chunk-GKDEI2SQ.js.map → chunk-J42ZXLBL.js.map} +1 -1
- package/dist/{chunk-PHPLZEFS.js → chunk-JPBMRJFC.js} +1 -1
- package/dist/{chunk-PHPLZEFS.js.map → chunk-JPBMRJFC.js.map} +1 -1
- package/dist/chunk-KJFUNIIY.js +1 -0
- package/dist/{chunk-TFPIPIMU.js.map → chunk-KJFUNIIY.js.map} +1 -1
- package/dist/{chunk-QMFBL5XO.js → chunk-LLHGSBPI.js} +1 -1
- package/dist/{chunk-QMFBL5XO.js.map → chunk-LLHGSBPI.js.map} +1 -1
- package/dist/{chunk-FGNJ7EVM.js → chunk-LZYHBFJC.js} +1 -1
- package/dist/{chunk-FGNJ7EVM.js.map → chunk-LZYHBFJC.js.map} +1 -1
- package/dist/chunk-M6G3UDTX.js +1 -0
- package/dist/chunk-M6G3UDTX.js.map +1 -0
- package/dist/{chunk-DLLBARN5.js → chunk-MKGJPVPS.js} +1 -1
- package/dist/{chunk-QI22FKBG.js → chunk-Q3QCLNVG.js} +1 -1
- package/dist/{chunk-QI22FKBG.js.map → chunk-Q3QCLNVG.js.map} +1 -1
- package/dist/chunk-RVIYOHYF.js +1 -0
- package/dist/chunk-RVIYOHYF.js.map +1 -0
- package/dist/chunk-SD6GNFDX.js +1 -0
- package/dist/chunk-SD6GNFDX.js.map +1 -0
- package/dist/chunk-SNADUQSJ.js +1 -0
- package/dist/chunk-SNADUQSJ.js.map +1 -0
- package/dist/chunk-TEOJCBSG.js +1 -0
- package/dist/chunk-TEOJCBSG.js.map +1 -0
- package/dist/chunk-TW7LUBHD.js +1 -0
- package/dist/{chunk-HRVIHQ4A.js.map → chunk-TW7LUBHD.js.map} +1 -1
- package/dist/{chunk-O72KI7RP.js → chunk-UHSNB5SV.js} +1 -1
- package/dist/chunk-V4C6FIE2.js +1 -0
- package/dist/{chunk-TLA6LHLN.js.map → chunk-V4C6FIE2.js.map} +1 -1
- package/dist/chunk-VDVFJXX5.js +1 -0
- package/dist/{chunk-PNZCLQDJ.js.map → chunk-VDVFJXX5.js.map} +1 -1
- package/dist/chunk-Z6XMXMVI.js +1 -0
- package/dist/{chunk-2J2UV4ZX.js.map → chunk-Z6XMXMVI.js.map} +1 -1
- package/dist/{chunk-VB3XZGIB.js → chunk-ZRG35JSH.js} +1 -1
- package/dist/{chunk-77QR33ON.js → chunk-ZZT2PQZ5.js} +1 -1
- package/dist/i18n/blueprints.d.ts +2 -1
- package/dist/i18n/blueprints.js +1 -1
- package/dist/i18n/diagnostics.d.ts +2 -0
- package/dist/i18n/diagnostics.js +1 -1
- package/dist/i18n/engineering-groups.d.ts +2 -2
- package/dist/i18n/engineering-groups.js +1 -1
- package/dist/i18n/experimental-effect-descriptions.js +1 -1
- package/dist/i18n/experimental-effects.js +1 -1
- package/dist/i18n/index.d.ts +32 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/materials.d.ts +2 -3
- package/dist/i18n/materials.js +1 -1
- package/dist/i18n/micro-resources.d.ts +2 -3
- package/dist/i18n/micro-resources.js +1 -1
- package/dist/i18n/module-families.d.ts +32 -0
- package/dist/i18n/module-families.js +1 -0
- package/dist/i18n/module-families.js.map +1 -0
- package/dist/i18n/modules.d.ts +3 -4
- package/dist/i18n/modules.js +1 -1
- package/dist/i18n/pre-engineered.js +1 -1
- package/dist/i18n/ships.js +1 -1
- package/dist/i18n/slots.js +1 -1
- package/dist/materials/index.js +1 -1
- package/dist/materials/materials-all.js +1 -1
- package/dist/materials/materials.js +1 -1
- package/dist/materials/micro-resources-all.js +1 -1
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/blueprint-costs.d.ts +3 -1
- package/dist/ships/blueprint-costs.js +1 -1
- package/dist/ships/blueprint-costs.js.map +1 -1
- package/dist/ships/blueprints.d.ts +4 -1
- package/dist/ships/blueprints.js +1 -1
- package/dist/ships/engineering.d.ts +1 -0
- package/dist/ships/experimental-effect-costs.d.ts +3 -2
- package/dist/ships/experimental-effect-costs.js +1 -1
- package/dist/ships/experimental-effect-costs.js.map +1 -1
- package/dist/ships/experimental-effects.d.ts +3 -1
- package/dist/ships/experimental-effects.js +1 -1
- package/dist/ships/gunsights.js +1 -1
- package/dist/ships/index.d.ts +7 -5
- package/dist/ships/index.js +1 -1
- package/dist/ships/loadout-validation.d.ts +1 -0
- package/dist/ships/module-capabilities.d.ts +1 -0
- package/dist/ships/module-families.d.ts +49 -0
- package/dist/ships/module-families.js +1 -0
- package/dist/ships/module-families.js.map +1 -0
- package/dist/ships/module-limits.d.ts +1 -0
- package/dist/ships/modules-all.d.ts +1 -0
- package/dist/ships/modules-all.js +1 -1
- package/dist/ships/modules-core.d.ts +1 -0
- package/dist/ships/modules-core.js +1 -1
- package/dist/ships/modules-hardpoint.d.ts +2 -0
- package/dist/ships/modules-hardpoint.js +1 -1
- package/dist/ships/modules-internal.d.ts +2 -0
- package/dist/ships/modules-internal.js +1 -1
- package/dist/ships/modules-utility.d.ts +2 -0
- package/dist/ships/modules-utility.js +1 -1
- package/dist/ships/modules.d.ts +23 -5
- package/dist/ships/modules.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +1 -0
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/pre-engineered.js +1 -1
- package/dist/ships/ship-loadout.d.ts +73 -32
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/weapons.d.ts +1 -0
- package/package.json +9 -1
- package/dist/chunk-2J2UV4ZX.js +0 -1
- package/dist/chunk-3IMWUYXJ.js +0 -1
- package/dist/chunk-CTJQPQRA.js +0 -1
- package/dist/chunk-DAQ3PJ4R.js +0 -1
- package/dist/chunk-DAQ3PJ4R.js.map +0 -1
- package/dist/chunk-E45EDCYH.js +0 -1
- package/dist/chunk-E45EDCYH.js.map +0 -1
- package/dist/chunk-EJMNNQIS.js +0 -1
- package/dist/chunk-GKDEI2SQ.js +0 -1
- package/dist/chunk-HRVIHQ4A.js +0 -1
- package/dist/chunk-M5IBENCW.js +0 -1
- package/dist/chunk-M5IBENCW.js.map +0 -1
- package/dist/chunk-MTAGULIO.js +0 -1
- package/dist/chunk-PNZCLQDJ.js +0 -1
- package/dist/chunk-TFPIPIMU.js +0 -1
- package/dist/chunk-TLA6LHLN.js +0 -1
- package/dist/chunk-XULHGGG4.js +0 -1
- package/dist/chunk-XULHGGG4.js.map +0 -1
- /package/dist/{chunk-6RLMBSXE.js.map → chunk-4S6WB7QR.js.map} +0 -0
- /package/dist/{chunk-XT6KKGSE.js.map → chunk-6G6TYW2D.js.map} +0 -0
- /package/dist/{chunk-XN6Q7LWU.js.map → chunk-CJWFY6OX.js.map} +0 -0
- /package/dist/{chunk-UBYO7VZR.js.map → chunk-DBGXZF7O.js.map} +0 -0
- /package/dist/{chunk-H3HMVGEY.js.map → chunk-EKQCVCMK.js.map} +0 -0
- /package/dist/{chunk-FEER4ERG.js.map → chunk-IOJXLDJN.js.map} +0 -0
- /package/dist/{chunk-DLLBARN5.js.map → chunk-MKGJPVPS.js.map} +0 -0
- /package/dist/{chunk-O72KI7RP.js.map → chunk-UHSNB5SV.js.map} +0 -0
- /package/dist/{chunk-VB3XZGIB.js.map → chunk-ZRG35JSH.js.map} +0 -0
- /package/dist/{chunk-77QR33ON.js.map → chunk-ZZT2PQZ5.js.map} +0 -0
|
@@ -6,6 +6,21 @@ They are deliberately sparse: absence means that no accepted source carried a va
|
|
|
6
6
|
the lookup API returns `null` for that locale rather than treating English as a
|
|
7
7
|
translation.
|
|
8
8
|
|
|
9
|
+
**Six locales are stored: `en`, `de`, `es`, `fr`, `pt` and `ru`.** Several accepted
|
|
10
|
+
sources publish more — Italian, Hungarian, Georgian and Simplified Chinese among them —
|
|
11
|
+
and those values are deliberately not carried: the project supports those six languages
|
|
12
|
+
and no others. That is a decision about this catalogue, not a gap in any source, so
|
|
13
|
+
re-deriving a catalogue from its source must drop the other columns again rather than
|
|
14
|
+
restore them. Every locale is stored under a bare language tag; a regional or script tag
|
|
15
|
+
resolves to its language.
|
|
16
|
+
|
|
17
|
+
**`pt` is Brazilian Portuguese.** Every accepted source publishes exactly one Portuguese
|
|
18
|
+
column and it is the Brazilian one: Odyssey Materials Helper's CSVs and EDSY's
|
|
19
|
+
`lang-pt.json` carry Brazilian spellings, EDDI's only populated Portuguese resource file
|
|
20
|
+
is `Modules.pt-BR.resx` (its `pt-PT` sibling is an empty stub), and Frontier's own
|
|
21
|
+
in-game localisation ships pt-BR and no European Portuguese. Storing it under the bare
|
|
22
|
+
tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
23
|
+
|
|
9
24
|
## `module-names.jsonc`
|
|
10
25
|
|
|
11
26
|
- **Acquired:** 2026-08-14 UTC.
|
|
@@ -19,31 +34,47 @@ translation.
|
|
|
19
34
|
Almanac's canonical English name. This prevents broad EDDI families such as
|
|
20
35
|
`CargoRack`, `MissileRack` and `PlanetaryApproachSuite` from erasing the distinct Mk II,
|
|
21
36
|
seeker and advanced names the Almanac carries. EDSY's module `fdname` and effective
|
|
22
|
-
`namekey` fill a missing `de`, `es`, `fr
|
|
37
|
+
`namekey` fill a missing `de`, `es`, `fr` or `ru` value only when EDSY's English
|
|
23
38
|
module name also exactly equals the canonical name. Values shared by modules with one
|
|
24
39
|
canonical name are retained only when they agree, then stored once under that name.
|
|
25
40
|
- **Coverage:** English covers all 1,199 symbols. The explicit translations cover 1,120
|
|
26
|
-
in German, 1,090 in Spanish, 1,088 in French,
|
|
27
|
-
|
|
28
|
-
|
|
41
|
+
in German, 1,090 in Spanish, 1,088 in French, 1,155 in Brazilian Portuguese and 1,153
|
|
42
|
+
in Russian. Portuguese comes from the same two joins, reading EDDI's
|
|
43
|
+
`Modules.pt-BR.resx` and EDSY's `lang-pt.json`.
|
|
29
44
|
- **Manual corrections:** none.
|
|
30
45
|
|
|
31
46
|
## `blueprint-names.jsonc`
|
|
32
47
|
|
|
33
|
-
- **Acquired:** 2026-08-14 UTC.
|
|
48
|
+
- **Acquired:** EDSY 2026-08-14 UTC; the in-game modification names 2026-08-23 UTC.
|
|
34
49
|
- **EDSY revision:** commit `e446fbe6e4597dea7ab0bd3105b9a36642388040`;
|
|
35
50
|
database version `424009901`, last-modified marker `20260810`.
|
|
51
|
+
- **In-game localisation revision:** none published; the game ships no immutable
|
|
52
|
+
identifier for its localisation tables. The acquired table is the evidence.
|
|
36
53
|
- **Derivation:** each of the 107 current keys and its English name comes from
|
|
37
|
-
`data/ships/blueprints.jsonc`.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
54
|
+
`data/ships/blueprints.jsonc`. Names remain keyed per blueprint because a single
|
|
55
|
+
English phrase can have different grammatical translations for different module
|
|
56
|
+
families. The Frontier `fdname` joins case-insensitively to the in-game modification
|
|
57
|
+
name table, which supplies every locale for the 90 recipes it names. The remaining 17
|
|
58
|
+
are ids this repository keys separately because their numbers differ, where the game
|
|
59
|
+
offers only the generic recipe's menu entry and so publishes only its name: each takes
|
|
60
|
+
the locales of the generic id it shadows — `AFM_Shielded`, `Refineries_Shielded` and
|
|
61
|
+
the four limpet-controller Shielded recipes from `Misc_Shielded`, the four
|
|
62
|
+
`LightWeight` and four `Reinforced` limpet recipes from `Misc_LightWeight` and
|
|
63
|
+
`Misc_Reinforced`, `MC_Overcharged` from `Weapon_Overcharged`, and `Scanner_LongRange`
|
|
64
|
+
and `Scanner_WideAngle` from `Sensor_LongRange` and `Sensor_WideAngle`. The last three
|
|
65
|
+
of those pairs are the same shadowing `blueprint-journal-names.jsonc` already records,
|
|
66
|
+
where the game writes the generic id for a recipe this repository keys specifically.
|
|
67
|
+
Only the English differs between a shadowing id and its generic: the Almanac's own
|
|
68
|
+
canonical name is kept, as it is for every other blueprint. Where EDSY and the in-game
|
|
69
|
+
table disagree the in-game value is kept, as everywhere else in this repository: it
|
|
70
|
+
differs for ten values across four locales, all of them wording, none of them meaning.
|
|
71
|
+
- **Coverage:** complete. All 107 blueprints carry all six locales.
|
|
72
|
+
- **Manual corrections:** two values in the in-game table carry a stray leading or
|
|
73
|
+
trailing ASCII space, marked in the acquired table and removed here so a successful
|
|
74
|
+
lookup is already trimmed like every other catalogue name: French `FSD_FastBoot` (which
|
|
75
|
+
EDSY carries with the same trailing space) and German `Railgun_LongShot`. The
|
|
76
|
+
Portuguese `GuardianModule_Sturdy` and `GuardianWeapon_Sturdy` values carry a literal
|
|
77
|
+
`<br>` line break for the in-game layout, which is stored as a single space.
|
|
47
78
|
|
|
48
79
|
## `experimental-effect-names.jsonc`
|
|
49
80
|
|
|
@@ -55,7 +86,7 @@ translation.
|
|
|
55
86
|
EDSY's `expeffect.fdname`; that record's id selects an explicit `expeffect-<id>` entry
|
|
56
87
|
from each language file.
|
|
57
88
|
- **Coverage:** English covers all 86 effects; EDSY covers 84 in German and 85 each in
|
|
58
|
-
Spanish, French, Portuguese and Russian.
|
|
89
|
+
Spanish, French, Brazilian Portuguese and Russian.
|
|
59
90
|
- **Manual corrections:** none.
|
|
60
91
|
|
|
61
92
|
## `material-names.jsonc`
|
|
@@ -73,11 +104,7 @@ translation.
|
|
|
73
104
|
parenthetical Guardian and Thargoid category labels where the owning catalogue does;
|
|
74
105
|
localized columns remain verbatim source values.
|
|
75
106
|
- **Coverage:** English, Spanish and Russian cover all 146 materials. The explicit
|
|
76
|
-
translations cover 128 in German, 140 in French
|
|
77
|
-
Georgian. Fourteen of the source's Georgian values are byte-for-byte equal to the
|
|
78
|
-
canonical English spelling and are retained verbatim; they are explicit source values,
|
|
79
|
-
not lookup-generated fallbacks. The pinned source carries no Simplified Chinese
|
|
80
|
-
material names.
|
|
107
|
+
translations cover 128 in German, and 140 each in French and Brazilian Portuguese.
|
|
81
108
|
- **Manual corrections:** none.
|
|
82
109
|
|
|
83
110
|
## `micro-resource-names.jsonc`
|
|
@@ -94,18 +121,14 @@ translation.
|
|
|
94
121
|
localized columns are copied. Twenty-eight of the 30 in-game-backed records also have
|
|
95
122
|
rows in Odyssey Materials Helper, while `PowerVirus` and
|
|
96
123
|
`SmallCapacityPowerRegulator` do not. All 30 take the explicit in-game `name` values for
|
|
97
|
-
German, Spanish, French
|
|
98
|
-
|
|
99
|
-
In both cases the owning catalogue remains authoritative for canonical English names.
|
|
124
|
+
German, Spanish, French and Russian. In both cases the owning catalogue remains
|
|
125
|
+
authoritative for canonical English names.
|
|
100
126
|
- **Coverage:** English, Spanish and Russian cover all 226 micro resources. The explicit
|
|
101
|
-
translations cover 218 in German
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
not
|
|
105
|
-
- **Manual corrections:**
|
|
106
|
-
under `pt`, matching the 188 existing Portuguese entries because both sets contain the
|
|
107
|
-
same Brazilian Portuguese game text. `pt-BR` lookups resolve these values through the
|
|
108
|
-
regional-to-language fallback.
|
|
127
|
+
translations cover 218 in German, 225 in French and 188 in Brazilian Portuguese. The
|
|
128
|
+
30 in-game-backed records take Portuguese from Odyssey Materials Helper where it has a
|
|
129
|
+
row, because the in-game capture supplied no Portuguese; `PowerVirus` and
|
|
130
|
+
`SmallCapacityPowerRegulator`, which the source does not carry at all, have none.
|
|
131
|
+
- **Manual corrections:** none.
|
|
109
132
|
|
|
110
133
|
## `ship-names.jsonc`
|
|
111
134
|
|
|
@@ -120,10 +143,12 @@ translation.
|
|
|
120
143
|
from `data/ships/ships.jsonc`. The symbol is joined to Odyssey Materials
|
|
121
144
|
Helper's `ships.name.*` key after removing punctuation and folding case. EDSY's
|
|
122
145
|
`eddb.js` `ship.fdname` supplies the second join, with explicit `ship-<id>` language
|
|
123
|
-
entries filling locales absent from the CSV. The
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
146
|
+
entries filling locales absent from the CSV. The CSV keys a row by the ship's display
|
|
147
|
+
name rather than its symbol, which differ for the four hulls whose name carries a mark
|
|
148
|
+
the symbol omits (`Viper` is `ships.name.viper_mk_iii`), so the name is tried first and
|
|
149
|
+
the symbol second. The resulting source-backed coverage is 48 ships in Spanish, 44 in
|
|
150
|
+
French, 38 in Brazilian Portuguese and 48 in Russian; no accepted source carries a
|
|
151
|
+
German ship-name table.
|
|
127
152
|
- **Standing conclusion:** every source-backed non-English value is byte-for-byte equal
|
|
128
153
|
to the canonical English ship name. The explicit values remain in the catalogue so a
|
|
129
154
|
lookup distinguishes a source-backed same spelling from an unavailable translation.
|
|
@@ -144,21 +169,42 @@ translation.
|
|
|
144
169
|
|
|
145
170
|
- **Acquired:** 2026-08-18 UTC.
|
|
146
171
|
- **EDSY revision:** commit `e446fbe6e4597dea7ab0bd3105b9a36642388040`;
|
|
147
|
-
database version `424009901`, last-modified marker `20260810`; `lang-en.json
|
|
148
|
-
`lang-
|
|
149
|
-
`9b199db635f7b968b75c8e9a14bdce68e37e4120`,
|
|
150
|
-
`493fa09c4d4a11f0282e1e4076a67fed8d7f317e` and
|
|
172
|
+
database version `424009901`, last-modified marker `20260810`; `lang-en.json` and
|
|
173
|
+
`lang-ru.json` have Git blob ids `9b199db635f7b968b75c8e9a14bdce68e37e4120` and
|
|
151
174
|
`36496372d056754c34da03ca6836e27987c96b6a` respectively.
|
|
152
175
|
- **Derivation:** each of the 48 group ids and its canonical English name is projected
|
|
153
176
|
from `data/ships/engineering-options.jsonc`. That catalogue derives its group menus
|
|
154
177
|
from EDSY, with the supplemental sources and corrections recorded in
|
|
155
178
|
`data/ships/SOURCES.md`. Where a canonical English name matches an EDSY `mtype-*`
|
|
156
179
|
value in `lang-en.json` byte-for-byte and uniquely, explicit values with the same key
|
|
157
|
-
are copied from `lang-
|
|
158
|
-
- **Coverage:** canonical English covers every engineering option group
|
|
159
|
-
Russian each cover 44 of 48. The Guardian power-plant, power-distributor
|
|
160
|
-
hull-reinforcement groups have no distinct EDSY label, and EDSY carries no
|
|
161
|
-
|
|
180
|
+
are copied from `lang-ru.json`.
|
|
181
|
+
- **Coverage:** canonical English covers every engineering option group; Brazilian
|
|
182
|
+
Portuguese and Russian each cover 44 of 48. The Guardian power-plant, power-distributor
|
|
183
|
+
and hull-reinforcement groups have no distinct EDSY label, and EDSY carries no value in
|
|
184
|
+
either language for `frameShiftDrivesSCO`.
|
|
185
|
+
- **Manual corrections:** none.
|
|
186
|
+
|
|
187
|
+
## `module-family-names.jsonc`
|
|
188
|
+
|
|
189
|
+
- **Acquired:** 2026-08-23 UTC.
|
|
190
|
+
- **In-game localisation revision:** none published; the game ships no immutable
|
|
191
|
+
identifier for its localisation tables. The acquired table is the evidence.
|
|
192
|
+
- **Derivation:** each of the 77 family ids and its canonical English name is projected
|
|
193
|
+
from `data/ships/module-families.jsonc`, whose own derivation is recorded in
|
|
194
|
+
`data/ships/SOURCES.md`. 58 of them are named by an in-game outfitting category, and
|
|
195
|
+
those categories' explicit German, Spanish, French, Brazilian Portuguese and Russian
|
|
196
|
+
labels are copied verbatim. The join is on family identity rather than on English
|
|
197
|
+
string equality, because the English column of the in-game table *is* the canonical
|
|
198
|
+
English name the ships catalogue took from it.
|
|
199
|
+
- **Coverage:** English covers all 77 families; the five other locales cover the same 58.
|
|
200
|
+
The 19 without a source-backed label are the families the in-game outfitting screen
|
|
201
|
+
does not name separately: `axMissileRacks`, `axMultiCannons`, `cargoHatches`,
|
|
202
|
+
`causticSinkLaunchers`, `guardianGaussCannons`, `guardianHybridPowerDistributors`,
|
|
203
|
+
`guardianHybridPowerPlants`, `guardianNaniteTorpedoPylons`, `guardianPlasmaChargers`,
|
|
204
|
+
`guardianShardCannons`, `guardianShieldReinforcementPackages`,
|
|
205
|
+
`miningMultiLimpetControllers`, `remoteReleaseFlakLaunchers`,
|
|
206
|
+
`remoteReleaseFlechetteLaunchers`, `shockCannons`, `shutdownFieldNeutralisers`,
|
|
207
|
+
`subSurfaceDisplacementMissiles`, `subSurfaceExtractionMissiles` and `xenoScanners`.
|
|
162
208
|
- **Manual corrections:** none.
|
|
163
209
|
|
|
164
210
|
## `experimental-effect-descriptions.jsonc`
|
|
@@ -175,22 +221,32 @@ translation.
|
|
|
175
221
|
|
|
176
222
|
## `pre-engineered-variant-names.jsonc`
|
|
177
223
|
|
|
178
|
-
- **Acquired:** 2026-08-18 UTC.
|
|
224
|
+
- **Acquired:** 2026-08-18 UTC; the Merc-shop names 2026-08-22 UTC.
|
|
179
225
|
- **Derivation:** all 76 compound identities and English names come from
|
|
180
226
|
`data/ships/pre-engineered.jsonc`. An identity combines the base module symbol,
|
|
181
227
|
blueprint, optional experimental effect and acquisition route. When a variant name
|
|
182
228
|
exactly matches its base module's canonical name, it reuses that record from
|
|
183
|
-
`module-names.jsonc`; the
|
|
229
|
+
`module-names.jsonc`; the 41 distinct display records are stored once. Fixed reward
|
|
184
230
|
names such as the three `Decorative_*` festive launchers remain canonical English.
|
|
231
|
+
- **The 22 Merc-shop rows carry the shop's own names**, in 14 distinct records — the shop
|
|
232
|
+
sells a "Far-Reaching Abrasion Blaster", not an Abrasion Blaster — so they do not reuse
|
|
233
|
+
their base module's record. English and the German, Spanish, French and Russian values
|
|
234
|
+
are supplied by the repository owner from the in-game shop listing; no registry
|
|
235
|
+
publishes them.
|
|
185
236
|
- **Coverage:** English covers every variant. Ordinary names inherit the explicit
|
|
186
|
-
localized values available for their base module
|
|
237
|
+
localized values available for their base module, which now includes Brazilian
|
|
238
|
+
Portuguese on 51 of the 76 variants; the Merc-shop names carry the five locales the
|
|
239
|
+
repository owner supplied and no Portuguese; fixed reward names have no accepted
|
|
187
240
|
translation source.
|
|
188
241
|
- **Manual corrections:** none.
|
|
189
242
|
|
|
190
243
|
## Known gaps
|
|
191
244
|
|
|
192
245
|
Localized coverage follows the accepted sources and is not complete for every catalogue or
|
|
193
|
-
locale.
|
|
194
|
-
|
|
195
|
-
|
|
246
|
+
stored locale. A language absent from all eleven catalogues is the locale decision
|
|
247
|
+
recorded above rather than a gap. The accepted sources carry only canonical English for
|
|
248
|
+
ship manufacturers, experimental-effect descriptions, 19 of the 77 outfitting-family
|
|
249
|
+
labels, some engineering-group labels, slot and restriction labels, fixed reward names,
|
|
250
|
+
and structured loadout, calculation, SLEF and edit messages. Missing source-backed
|
|
251
|
+
translations remain tracked by
|
|
196
252
|
[#320](https://github.com/DarkSession/Elite-Dangerous-Almanac/issues/320).
|
|
@@ -130,8 +130,6 @@ identity from FDevIDs, stats and slots from coriolis-data, joined on `symbol`.
|
|
|
130
130
|
### Gunsights
|
|
131
131
|
|
|
132
132
|
- **File:** `gunsights.jsonc` (48 player-flyable hulls, 234 weapon hardpoints).
|
|
133
|
-
- **Source:** in-game gunsight observations from the in-game verification snapshot
|
|
134
|
-
pinned above.
|
|
135
133
|
- **Derivation:** each observation is joined to `ships.jsonc` by case-insensitive hull
|
|
136
134
|
symbol. Its hardpoints are joined by exact journal slot key to the hardpoints returned
|
|
137
135
|
by `enumerateSlots`, then written in the existing `Ship.hardpoints` order. One observed
|
|
@@ -387,6 +385,42 @@ FDevIDs, stats from coriolis-data and EDSY, joined on `symbol`.
|
|
|
387
385
|
The group source, derivation, split
|
|
388
386
|
Guardian families and coverage are documented under Engineering options below; this
|
|
389
387
|
field is a projection of that map, not a separate classification source.
|
|
388
|
+
- **`familyId` groups every outfitting list.** Every record in all four catalogues
|
|
389
|
+
carries the id of the family its outfitting list shows it under: 521 core modules in
|
|
390
|
+
8 families, 484 internal modules in 32, 159 hardpoints in 25, and 35 utility fittings
|
|
391
|
+
in 12. No family crosses an outfitting category. The ids and their canonical English
|
|
392
|
+
names are `module-families.jsonc`, below; localized labels are
|
|
393
|
+
`data/i18n/module-family-names.jsonc`. Variants remain with the base family rather
|
|
394
|
+
than fragmenting a list: Bi-Weave and Prismatic generators are `shieldGenerators`;
|
|
395
|
+
corrosion-resistant and Mk II racks are `cargoRacks`; Powerplay and pre-engineered
|
|
396
|
+
weapons stay with their base weapon; Mk I/Mk II cabins and vessel hangars share
|
|
397
|
+
`passengerCabins` and `vesselHangars`. Guardian and AX weapons retain their distinct
|
|
398
|
+
family where their function differs. A core record's family follows from its `slot`,
|
|
399
|
+
which is on every one of them, so the two never disagree.
|
|
400
|
+
|
|
401
|
+
### `module-families.jsonc` — the family ids and their English names
|
|
402
|
+
|
|
403
|
+
- **Source:** Frontier's in-game outfitting category labels, acquired 2026-08-23 UTC
|
|
404
|
+
and supplied by the repository owner. The game publishes no immutable identifier for
|
|
405
|
+
its localisation tables, so the acquired table is the evidence; it is the same table
|
|
406
|
+
that supplies `data/i18n/module-family-names.jsonc`.
|
|
407
|
+
- **Derivation:** 58 of the 77 families are named by an in-game outfitting category and
|
|
408
|
+
take that category's English label verbatim — which is why `Cargo Scanners` is
|
|
409
|
+
`Manifest Scanners`, `Torpedo Pylons` is `Torpedoes` and `Mine Launchers` is `Mines`.
|
|
410
|
+
The remaining 19 keep the Almanac's own descriptive name, because the outfitting
|
|
411
|
+
screen does not name them separately. Each id is the camelCase form of its English
|
|
412
|
+
name with punctuation removed, which `modules.test.ts` asserts, so an id and its
|
|
413
|
+
label cannot drift apart.
|
|
414
|
+
- **Merged families.** Where the game lists several Almanac families under one category,
|
|
415
|
+
they are one family here: the operations, rescue, universal and xeno multi-limpet
|
|
416
|
+
controllers are `multiLimpetControllers`; mining volley repeaters and seismic charge
|
|
417
|
+
launchers are `miningTools`; the Mk II Plasma Shock Accelerator is a
|
|
418
|
+
`plasmaAccelerators`; the Supercruise Assist is a `flightAssists`. Mining multi-limpet
|
|
419
|
+
controllers are deliberately **not** merged, and keep their own family.
|
|
420
|
+
- **The in-game English is not always the better name**, and is kept anyway so the
|
|
421
|
+
library's label is the one a player sees on the outfitting screen: `engines` for
|
|
422
|
+
thrusters, `fsd` for Frame Shift Drives, `afms` for Auto Field-Maintenance Units,
|
|
423
|
+
`ecms` for Electronic Countermeasures, and the singular `pulseWaveAnalyser`.
|
|
390
424
|
- **Stats source:** coriolis-data `modules/**` for the mechanical, defence, power and
|
|
391
425
|
weapon stats; EDSY `eddb.js` for mass, integrity, power draw, boot time and the
|
|
392
426
|
engineering base stats coriolis does not carry; and in-game verification for the
|
|
@@ -1732,6 +1766,13 @@ up straight through with no disambiguation at all. Both paths are evidence that
|
|
|
1732
1766
|
and several rows are annotated as having been obtainable both ways — the six SCO "V1"
|
|
1733
1767
|
drives most obviously. `acquisition` records the tag; it is not a claim that no other
|
|
1734
1768
|
route ever existed.
|
|
1769
|
+
- **`name` is the base module's name, except on the Merc-shop rows.** A community-goal or
|
|
1770
|
+
tech-broker article is listed under the module it fits as, so those rows carry the
|
|
1771
|
+
catalogue name verbatim. The 22 `mercenary` rows do not: the shop sells the
|
|
1772
|
+
"Far-Reaching Abrasion Blaster" and the "Support Focused Power Distributor" under those
|
|
1773
|
+
names, 14 distinct ones over the 22 rows. Supplied by the repository owner from the
|
|
1774
|
+
in-game shop listing, acquired 2026-08-22 UTC; the registries carry the transformation,
|
|
1775
|
+
not the label. Their localized values are recorded in `data/i18n/SOURCES.md`.
|
|
1735
1776
|
- **`engineeringLocked: true` marks 12 final weapon rows:** the seven pre-engineered
|
|
1736
1777
|
Guardian weapons and the five fixed Enzyme/AX articles. Their evidence is recorded once
|
|
1737
1778
|
under Engineering options.
|
package/README.md
CHANGED
|
@@ -55,9 +55,10 @@ The package has six feature areas:
|
|
|
55
55
|
|
|
56
56
|
## Ship assets
|
|
57
57
|
|
|
58
|
-
Every catalogued hull includes
|
|
58
|
+
Every catalogued hull includes four SVG files in the installed package:
|
|
59
59
|
|
|
60
60
|
```text
|
|
61
|
+
assets/ships/<symbol>/gunsight.svg
|
|
61
62
|
assets/ships/<symbol>/illustration.svg
|
|
62
63
|
assets/ships/<symbol>/schematic-top.svg
|
|
63
64
|
assets/ships/<symbol>/schematic-bottom.svg
|
|
@@ -67,6 +68,11 @@ assets/ships/<symbol>/schematic-bottom.svg
|
|
|
67
68
|
package files rather than JavaScript subpath exports, so applications can copy them from
|
|
68
69
|
the installed package into their own public or bundled asset directory.
|
|
69
70
|
|
|
71
|
+
`gunsight.svg` is a `600 × 600` frontal plot of the fixed-weapon aim points at a nominal
|
|
72
|
+
1,000-metre target range. Each weapon group under `#weapon-dots` carries the same
|
|
73
|
+
`data-journal-slot` key used by the hull's hardpoint layout. The illustration and both
|
|
74
|
+
schematics use a `1200 × 800` canvas.
|
|
75
|
+
|
|
70
76
|
The two schematics expose a stable annotation contract for hull-anatomy interfaces:
|
|
71
77
|
|
|
72
78
|
- Each annotated feature is a `<g>` group carrying a `data-feature` category. The
|
|
@@ -170,10 +176,10 @@ getEngineeringGroupName('frameShiftDrives', 'de'); // -> null
|
|
|
170
176
|
```
|
|
171
177
|
|
|
172
178
|
The functions return an explicit source value verbatim, so a source-backed spelling may
|
|
173
|
-
happen to equal English; the library itself never supplies an English fallback.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
179
|
+
happen to equal English; the library itself never supplies an English fallback. The
|
|
180
|
+
catalogues carry English, French, German, Russian and Spanish, each stored under a bare
|
|
181
|
+
language tag: a regional or script subtag is dropped (`de-DE` → `de`), and any other
|
|
182
|
+
language returns `null`.
|
|
177
183
|
|
|
178
184
|
The same contract covers ship manufacturers, pre-engineered variant names, engineering
|
|
179
185
|
group names, experimental-effect descriptions, loadout-slot and restriction labels, and
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -137,6 +137,9 @@ a verbatim copy produced at build time — edit this file, never the copy.
|
|
|
137
137
|
[update notes](https://forums.frontier.co.uk/threads/648012/), and the
|
|
138
138
|
[Rhea Disaster Community Goal](https://forums.frontier.co.uk/threads/deliver-critical-aid-for-the-rhea-disaster.626528/)
|
|
139
139
|
with its [announcement](https://x.com/EliteDangerous/status/1812792503776489745).
|
|
140
|
+
Frontier's own **in-game localisation** supplies the outfitting category labels behind
|
|
141
|
+
the module families and their German, Spanish, French, Brazilian Portuguese and Russian
|
|
142
|
+
display text, and the engineering modification names in the six stored locales.
|
|
140
143
|
Values read directly from the running game are Frontier's too — see the notice below.
|
|
141
144
|
- **A [community description](https://www.reddit.com/r/EliteDangerous/comments/1uk2zhp/plasma_laser_theorycrafting_following_new/)
|
|
142
145
|
by u/Techno3020** — linked only as corroboration that the Operations Plasma conversion's
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" data-identity="adder" data-target-range-metres="1000" data-half-span-tangent="0.08">
|
|
2
|
+
<g id="gunsight" fill="none" stroke="#22333b" stroke-width="2">
|
|
3
|
+
<circle cx="300" cy="300" r="12"/>
|
|
4
|
+
<circle cx="300" cy="300" r="2" fill="#22333b" stroke="none"/>
|
|
5
|
+
</g>
|
|
6
|
+
<g id="weapon-dots" fill="#e63946" stroke="#ffffff" stroke-width="1.5">
|
|
7
|
+
<g id="hardpoint-01" data-name="MediumHardpoint1" data-journal-slot="MediumHardpoint1" data-socket="!Hardpoint0" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="7.95e-08" data-offset-y-metres="2.476220131">
|
|
8
|
+
<circle cx="300.000000" cy="290.714175" r="5"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g id="hardpoint-02" data-name="SmallHardpoint1" data-journal-slot="SmallHardpoint1" data-socket="!Hardpoint1" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="4.803110899" data-offset-y-metres="-3.305289984">
|
|
11
|
+
<circle cx="318.011666" cy="312.394837" r="5"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g id="hardpoint-03" data-name="SmallHardpoint2" data-journal-slot="SmallHardpoint2" data-socket="!Hardpoint2" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-4.81071919" data-offset-y-metres="-3.305160046">
|
|
14
|
+
<circle cx="281.959803" cy="312.394350" r="5"/>
|
|
15
|
+
</g>
|
|
16
|
+
</g>
|
|
17
|
+
</svg>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" data-identity="anaconda" data-target-range-metres="1000" data-half-span-tangent="0.08">
|
|
2
|
+
<g id="gunsight" fill="none" stroke="#22333b" stroke-width="2">
|
|
3
|
+
<circle cx="300" cy="300" r="12"/>
|
|
4
|
+
<circle cx="300" cy="300" r="2" fill="#22333b" stroke="none"/>
|
|
5
|
+
</g>
|
|
6
|
+
<g id="weapon-dots" fill="#e63946" stroke="#ffffff" stroke-width="1.5">
|
|
7
|
+
<g id="hardpoint-01" data-name="LargeHardpoint1" data-journal-slot="LargeHardpoint1" data-socket="!Hardpoint0" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-0.0676546022" data-offset-y-metres="-16.49276972">
|
|
8
|
+
<circle cx="299.746295" cy="361.847886" r="5"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g id="hardpoint-02" data-name="HugeHardpoint1" data-journal-slot="HugeHardpoint1" data-socket="!Hardpoint1" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-0.0500994027" data-offset-y-metres="-20.85164976">
|
|
11
|
+
<circle cx="299.812127" cy="378.193687" r="5"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g id="hardpoint-03" data-name="LargeHardpoint2" data-journal-slot="LargeHardpoint2" data-socket="!Hardpoint2" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-6.395654671" data-offset-y-metres="-6.012909889">
|
|
14
|
+
<circle cx="276.016295" cy="322.548412" r="5"/>
|
|
15
|
+
</g>
|
|
16
|
+
<g id="hardpoint-04" data-name="LargeHardpoint3" data-journal-slot="LargeHardpoint3" data-socket="!Hardpoint3" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="6.260495193" data-offset-y-metres="-6.012919426">
|
|
17
|
+
<circle cx="323.476857" cy="322.548448" r="5"/>
|
|
18
|
+
</g>
|
|
19
|
+
<g id="hardpoint-05" data-name="MediumHardpoint2" data-journal-slot="MediumHardpoint2" data-socket="!Hardpoint4" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="8.197345741" data-offset-y-metres="-10.42525959">
|
|
20
|
+
<circle cx="330.740047" cy="339.094723" r="5"/>
|
|
21
|
+
</g>
|
|
22
|
+
<g id="hardpoint-06" data-name="MediumHardpoint1" data-journal-slot="MediumHardpoint1" data-socket="!Hardpoint5" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-8.332314484" data-offset-y-metres="-10.4250598">
|
|
23
|
+
<circle cx="268.753821" cy="339.093974" r="5"/>
|
|
24
|
+
</g>
|
|
25
|
+
<g id="hardpoint-07" data-name="SmallHardpoint2" data-journal-slot="SmallHardpoint2" data-socket="!Hardpoint7" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="1.396265395" data-offset-y-metres="-27.17289925">
|
|
26
|
+
<circle cx="305.235995" cy="401.898372" r="5"/>
|
|
27
|
+
</g>
|
|
28
|
+
<g id="hardpoint-08" data-name="SmallHardpoint1" data-journal-slot="SmallHardpoint1" data-socket="!Hardpoint8" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-1.532654636" data-offset-y-metres="-27.17029953">
|
|
29
|
+
<circle cx="294.252545" cy="401.888623" r="5"/>
|
|
30
|
+
</g>
|
|
31
|
+
</g>
|
|
32
|
+
</svg>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" data-identity="asp" data-target-range-metres="1000" data-half-span-tangent="0.08">
|
|
2
|
+
<g id="gunsight" fill="none" stroke="#22333b" stroke-width="2">
|
|
3
|
+
<circle cx="300" cy="300" r="12"/>
|
|
4
|
+
<circle cx="300" cy="300" r="2" fill="#22333b" stroke="none"/>
|
|
5
|
+
</g>
|
|
6
|
+
<g id="weapon-dots" fill="#e63946" stroke="#ffffff" stroke-width="1.5">
|
|
7
|
+
<g id="hardpoint-01" data-name="SmallHardpoint1" data-journal-slot="SmallHardpoint1" data-socket="!Hardpoint4" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="4.393425578" data-offset-y-metres="-3.852212012">
|
|
8
|
+
<circle cx="316.475346" cy="314.445795" r="5"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g id="hardpoint-02" data-name="SmallHardpoint2" data-journal-slot="SmallHardpoint2" data-socket="!Hardpoint5" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-4.393014318" data-offset-y-metres="-3.852212012">
|
|
11
|
+
<circle cx="283.526196" cy="314.445795" r="5"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g id="hardpoint-03" data-name="SmallHardpoint3" data-journal-slot="SmallHardpoint3" data-socket="!Hardpoint6" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="0.8882707894" data-offset-y-metres="-5.805761874">
|
|
14
|
+
<circle cx="303.331015" cy="321.771607" r="5"/>
|
|
15
|
+
</g>
|
|
16
|
+
<g id="hardpoint-04" data-name="SmallHardpoint4" data-journal-slot="SmallHardpoint4" data-socket="!Hardpoint7" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-0.8607862056" data-offset-y-metres="-5.805761874">
|
|
17
|
+
<circle cx="296.772052" cy="321.771607" r="5"/>
|
|
18
|
+
</g>
|
|
19
|
+
<g id="hardpoint-05" data-name="MediumHardpoint1" data-journal-slot="MediumHardpoint1" data-socket="!Hardpoint8" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="4.019735926" data-offset-y-metres="-0.2208419442">
|
|
20
|
+
<circle cx="315.074010" cy="300.828157" r="5"/>
|
|
21
|
+
</g>
|
|
22
|
+
<g id="hardpoint-06" data-name="MediumHardpoint2" data-journal-slot="MediumHardpoint2" data-socket="!Hardpoint9" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-4.01976431" data-offset-y-metres="-0.2208419442">
|
|
23
|
+
<circle cx="284.925884" cy="300.828157" r="5"/>
|
|
24
|
+
</g>
|
|
25
|
+
</g>
|
|
26
|
+
</svg>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" data-identity="asp_scout" data-target-range-metres="1000" data-half-span-tangent="0.08">
|
|
2
|
+
<g id="gunsight" fill="none" stroke="#22333b" stroke-width="2">
|
|
3
|
+
<circle cx="300" cy="300" r="12"/>
|
|
4
|
+
<circle cx="300" cy="300" r="2" fill="#22333b" stroke="none"/>
|
|
5
|
+
</g>
|
|
6
|
+
<g id="weapon-dots" fill="#e63946" stroke="#ffffff" stroke-width="1.5">
|
|
7
|
+
<g id="hardpoint-01" data-name="SmallHardpoint1" data-journal-slot="SmallHardpoint1" data-socket="!Hardpoint6" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="0.8882707894" data-offset-y-metres="-5.805761874">
|
|
8
|
+
<circle cx="303.331015" cy="321.771607" r="5"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g id="hardpoint-02" data-name="SmallHardpoint2" data-journal-slot="SmallHardpoint2" data-socket="!Hardpoint7" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-0.8607862056" data-offset-y-metres="-5.805761874">
|
|
11
|
+
<circle cx="296.772052" cy="321.771607" r="5"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g id="hardpoint-03" data-name="MediumHardpoint1" data-journal-slot="MediumHardpoint1" data-socket="!Hardpoint8" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="4.019735926" data-offset-y-metres="-0.2208419442">
|
|
14
|
+
<circle cx="315.074010" cy="300.828157" r="5"/>
|
|
15
|
+
</g>
|
|
16
|
+
<g id="hardpoint-04" data-name="MediumHardpoint2" data-journal-slot="MediumHardpoint2" data-socket="!Hardpoint9" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-4.01976431" data-offset-y-metres="-0.2208419442">
|
|
17
|
+
<circle cx="284.925884" cy="300.828157" r="5"/>
|
|
18
|
+
</g>
|
|
19
|
+
</g>
|
|
20
|
+
</svg>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" data-identity="belugaliner" data-target-range-metres="1000" data-half-span-tangent="0.08">
|
|
2
|
+
<g id="gunsight" fill="none" stroke="#22333b" stroke-width="2">
|
|
3
|
+
<circle cx="300" cy="300" r="12"/>
|
|
4
|
+
<circle cx="300" cy="300" r="2" fill="#22333b" stroke="none"/>
|
|
5
|
+
</g>
|
|
6
|
+
<g id="weapon-dots" fill="#e63946" stroke="#ffffff" stroke-width="1.5">
|
|
7
|
+
<g id="hardpoint-01" data-name="MediumHardpoint1" data-journal-slot="MediumHardpoint1" data-socket="!Hardpoint6" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-3.867887652" data-offset-y-metres="19.74544048">
|
|
8
|
+
<circle cx="285.495421" cy="225.954598" r="5"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g id="hardpoint-02" data-name="MediumHardpoint2" data-journal-slot="MediumHardpoint2" data-socket="!Hardpoint7" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="3.86789211" data-offset-y-metres="19.74544048">
|
|
11
|
+
<circle cx="314.504595" cy="225.954598" r="5"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g id="hardpoint-03" data-name="MediumHardpoint3" data-journal-slot="MediumHardpoint3" data-socket="!Hardpoint8" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="3.1204e-06" data-offset-y-metres="-12.56546021">
|
|
14
|
+
<circle cx="300.000012" cy="347.120476" r="5"/>
|
|
15
|
+
</g>
|
|
16
|
+
<g id="hardpoint-04" data-name="MediumHardpoint4" data-journal-slot="MediumHardpoint4" data-socket="!Hardpoint11" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="9.956502282" data-offset-y-metres="-13.03135967">
|
|
17
|
+
<circle cx="337.336884" cy="348.867599" r="5"/>
|
|
18
|
+
</g>
|
|
19
|
+
<g id="hardpoint-05" data-name="MediumHardpoint5" data-journal-slot="MediumHardpoint5" data-socket="!Hardpoint12" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-10.04569784" data-offset-y-metres="-13.03135967">
|
|
20
|
+
<circle cx="262.328633" cy="348.867599" r="5"/>
|
|
21
|
+
</g>
|
|
22
|
+
</g>
|
|
23
|
+
</svg>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" data-identity="cobramkiii" data-target-range-metres="1000" data-half-span-tangent="0.08">
|
|
2
|
+
<g id="gunsight" fill="none" stroke="#22333b" stroke-width="2">
|
|
3
|
+
<circle cx="300" cy="300" r="12"/>
|
|
4
|
+
<circle cx="300" cy="300" r="2" fill="#22333b" stroke="none"/>
|
|
5
|
+
</g>
|
|
6
|
+
<g id="weapon-dots" fill="#e63946" stroke="#ffffff" stroke-width="1.5">
|
|
7
|
+
<g id="hardpoint-01" data-name="MediumHardpoint1" data-journal-slot="MediumHardpoint1" data-socket="!Hardpoint0" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-2.725256026" data-offset-y-metres="-2.219459772">
|
|
8
|
+
<circle cx="289.780290" cy="308.322974" r="5"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g id="hardpoint-02" data-name="MediumHardpoint2" data-journal-slot="MediumHardpoint2" data-socket="!Hardpoint1" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="4.300404012" data-offset-y-metres="-2.219459772">
|
|
11
|
+
<circle cx="316.126515" cy="308.322974" r="5"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g id="hardpoint-03" data-name="SmallHardpoint2" data-journal-slot="SmallHardpoint2" data-socket="!Hardpoint2" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="19.62892336" data-offset-y-metres="-4.274562851">
|
|
14
|
+
<circle cx="373.608463" cy="316.029611" r="5"/>
|
|
15
|
+
</g>
|
|
16
|
+
<g id="hardpoint-04" data-name="SmallHardpoint1" data-journal-slot="SmallHardpoint1" data-socket="!Hardpoint3" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-18.16507536" data-offset-y-metres="-4.274562851">
|
|
17
|
+
<circle cx="231.880967" cy="316.029611" r="5"/>
|
|
18
|
+
</g>
|
|
19
|
+
</g>
|
|
20
|
+
</svg>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" data-identity="cobramkiv" data-target-range-metres="1000" data-half-span-tangent="0.08">
|
|
2
|
+
<g id="gunsight" fill="none" stroke="#22333b" stroke-width="2">
|
|
3
|
+
<circle cx="300" cy="300" r="12"/>
|
|
4
|
+
<circle cx="300" cy="300" r="2" fill="#22333b" stroke="none"/>
|
|
5
|
+
</g>
|
|
6
|
+
<g id="weapon-dots" fill="#e63946" stroke="#ffffff" stroke-width="1.5">
|
|
7
|
+
<g id="hardpoint-01" data-name="MediumHardpoint1" data-journal-slot="MediumHardpoint1" data-socket="!Hardpoint0" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-2.725256026" data-offset-y-metres="-2.219459772">
|
|
8
|
+
<circle cx="289.780290" cy="308.322974" r="5"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g id="hardpoint-02" data-name="MediumHardpoint2" data-journal-slot="MediumHardpoint2" data-socket="!Hardpoint1" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="4.300404012" data-offset-y-metres="-2.219459772">
|
|
11
|
+
<circle cx="316.126515" cy="308.322974" r="5"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g id="hardpoint-03" data-name="SmallHardpoint2" data-journal-slot="SmallHardpoint2" data-socket="!Hardpoint2" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="3.627923906" data-offset-y-metres="1.653739929">
|
|
14
|
+
<circle cx="313.604715" cy="293.798475" r="5"/>
|
|
15
|
+
</g>
|
|
16
|
+
<g id="hardpoint-04" data-name="SmallHardpoint1" data-journal-slot="SmallHardpoint1" data-socket="!Hardpoint3" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-2.16423589" data-offset-y-metres="1.653739929">
|
|
17
|
+
<circle cx="291.884115" cy="293.798475" r="5"/>
|
|
18
|
+
</g>
|
|
19
|
+
<g id="hardpoint-05" data-name="SmallHardpoint3" data-journal-slot="SmallHardpoint3" data-socket="!Hardpoint8" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="0.7319211364" data-offset-y-metres="1.53098011">
|
|
20
|
+
<circle cx="302.744704" cy="294.258825" r="5"/>
|
|
21
|
+
</g>
|
|
22
|
+
</g>
|
|
23
|
+
</svg>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" data-identity="cobramkv" data-target-range-metres="1000" data-half-span-tangent="0.08">
|
|
2
|
+
<g id="gunsight" fill="none" stroke="#22333b" stroke-width="2">
|
|
3
|
+
<circle cx="300" cy="300" r="12"/>
|
|
4
|
+
<circle cx="300" cy="300" r="2" fill="#22333b" stroke="none"/>
|
|
5
|
+
</g>
|
|
6
|
+
<g id="weapon-dots" fill="#e63946" stroke="#ffffff" stroke-width="1.5">
|
|
7
|
+
<g id="hardpoint-01" data-name="MediumHardpoint1" data-journal-slot="MediumHardpoint1" data-socket="!Hardpoint0" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-6.025300026" data-offset-y-metres="-2.749541938">
|
|
8
|
+
<circle cx="277.405125" cy="310.310782" r="5"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g id="hardpoint-02" data-name="MediumHardpoint2" data-journal-slot="MediumHardpoint2" data-socket="!Hardpoint1" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="6.025300026" data-offset-y-metres="-2.749541938">
|
|
11
|
+
<circle cx="322.594875" cy="310.310782" r="5"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g id="hardpoint-03" data-name="SmallHardpoint2" data-journal-slot="SmallHardpoint2" data-socket="!Hardpoint2" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="8.157999992" data-offset-y-metres="-1.031039953">
|
|
14
|
+
<circle cx="330.592500" cy="303.866400" r="5"/>
|
|
15
|
+
</g>
|
|
16
|
+
<g id="hardpoint-04" data-name="SmallHardpoint1" data-journal-slot="SmallHardpoint1" data-socket="!Hardpoint3" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-8.157670021" data-offset-y-metres="-1.031039953">
|
|
17
|
+
<circle cx="269.408737" cy="303.866400" r="5"/>
|
|
18
|
+
</g>
|
|
19
|
+
<g id="hardpoint-05" data-name="MediumHardpoint3" data-journal-slot="MediumHardpoint3" data-socket="!Hardpoint8" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="0" data-offset-y-metres="3.086419821">
|
|
20
|
+
<circle cx="300.000000" cy="288.425926" r="5"/>
|
|
21
|
+
</g>
|
|
22
|
+
</g>
|
|
23
|
+
</svg>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600" data-identity="corsair" data-target-range-metres="1000" data-half-span-tangent="0.08">
|
|
2
|
+
<g id="gunsight" fill="none" stroke="#22333b" stroke-width="2">
|
|
3
|
+
<circle cx="300" cy="300" r="12"/>
|
|
4
|
+
<circle cx="300" cy="300" r="2" fill="#22333b" stroke="none"/>
|
|
5
|
+
</g>
|
|
6
|
+
<g id="weapon-dots" fill="#e63946" stroke="#ffffff" stroke-width="1.5">
|
|
7
|
+
<g id="hardpoint-01" data-name="LargeHardpoint1" data-journal-slot="LargeHardpoint1" data-socket="!Hardpoint0" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-0.000246232" data-offset-y-metres="1.928740025">
|
|
8
|
+
<circle cx="299.999077" cy="292.767225" r="5"/>
|
|
9
|
+
</g>
|
|
10
|
+
<g id="hardpoint-02" data-name="LargeHardpoint2" data-journal-slot="LargeHardpoint2" data-socket="!Hardpoint1" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-3.847556298" data-offset-y-metres="-5.660593912">
|
|
11
|
+
<circle cx="285.571664" cy="321.227227" r="5"/>
|
|
12
|
+
</g>
|
|
13
|
+
<g id="hardpoint-03" data-name="LargeHardpoint3" data-journal-slot="LargeHardpoint3" data-socket="!Hardpoint2" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="3.846753652" data-offset-y-metres="-5.660593912">
|
|
14
|
+
<circle cx="314.425326" cy="321.227227" r="5"/>
|
|
15
|
+
</g>
|
|
16
|
+
<g id="hardpoint-04" data-name="MediumHardpoint3" data-journal-slot="MediumHardpoint3" data-socket="!Hardpoint3" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-0.000246232" data-offset-y-metres="-12.9786396">
|
|
17
|
+
<circle cx="299.999077" cy="348.669899" r="5"/>
|
|
18
|
+
</g>
|
|
19
|
+
<g id="hardpoint-05" data-name="MediumHardpoint2" data-journal-slot="MediumHardpoint2" data-socket="!Hardpoint4" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="-3.895796245" data-offset-y-metres="0.2843203545">
|
|
20
|
+
<circle cx="285.390764" cy="298.933799" r="5"/>
|
|
21
|
+
</g>
|
|
22
|
+
<g id="hardpoint-06" data-name="MediumHardpoint1" data-journal-slot="MediumHardpoint1" data-socket="!Hardpoint5" data-direction-ratio-x="0" data-direction-ratio-y="0" data-offset-x-metres="3.895303781" data-offset-y-metres="0.2843203545">
|
|
23
|
+
<circle cx="314.607389" cy="298.933799" r="5"/>
|
|
24
|
+
</g>
|
|
25
|
+
</g>
|
|
26
|
+
</svg>
|