@elite-dangerous-almanac/core 0.2.9 → 0.2.10
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/equipment/SOURCES.md +41 -27
- package/PROVENANCE/i18n/SOURCES.md +1 -1
- package/dist/chunk-C6G7IN74.js +1 -0
- package/dist/{chunk-UTWZZOSA.js.map → chunk-C6G7IN74.js.map} +1 -1
- package/dist/chunk-YI5XKWW2.js +1 -0
- package/dist/{chunk-AC3U7LRK.js.map → chunk-YI5XKWW2.js.map} +1 -1
- package/dist/equipment/index.d.ts +1 -1
- package/dist/equipment/index.js +1 -1
- package/dist/equipment/modifications.js +1 -1
- package/dist/equipment/suits.d.ts +1 -1
- package/dist/equipment/suits.js +1 -1
- package/dist/equipment/upgrade-costs.d.ts +1 -1
- package/dist/equipment/upgrade-costs.js +1 -1
- package/dist/equipment/weapons.d.ts +1 -1
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/suits.d.ts +1 -1
- package/dist/{suits-B37rAORs.d.ts → suits-B4sQMLFe.d.ts} +49 -13
- package/package.json +1 -1
- package/dist/chunk-AC3U7LRK.js +0 -1
- package/dist/chunk-UTWZZOSA.js +0 -1
|
@@ -8,7 +8,7 @@ Referred to throughout by source name; the pin is here, once.
|
|
|
8
8
|
| ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
|
|
9
9
|
| Odyssey Materials Helper | commit `2e6d4c3e767d2b714ffddc5c9386831d66812916` (2026-08-09), the last revision before the project extracted its core data into a separately distributed dependency | 2026-08-13 UTC |
|
|
10
10
|
| Frontier Elite Dangerous Gamestore | no immutable revision; the displayed weapon names were read on the acquisition date | 2026-08-13 UTC |
|
|
11
|
-
| Elite Dangerous in-game observation | no game version recorded; direct reading of the suit and weapon stats panels, the sight magnification they show, and the on-foot engineering options, and direct observation of what a weapon does when it is fired | panels 2026-08-31 UTC; firing behaviour 2026-09-03 UTC |
|
|
11
|
+
| Elite Dangerous in-game observation | no game version recorded; direct reading of the suit and weapon stats panels, the sight magnification they show, and the on-foot engineering options, and direct observation of what a suit's two defensive layers resist and of what a weapon does when it is fired | panels 2026-08-31 UTC; firing behaviour 2026-09-03 UTC; suit shield resistances 2026-09-04 UTC |
|
|
12
12
|
| EDCD/EDMarketConnector | commit `2b6a0ce1ee3ba60c21f3f4e9fa093046da8825e4` (2026-07-26); `monitor.py` sha256 `800720e04e3089ee9a4b57749de56061e8d31ba877e17f1420f994c52bac08ac` | 2026-09-02 UTC |
|
|
13
13
|
|
|
14
14
|
**Where a source and the game disagree, the in-game reading governs.** Odyssey Materials Helper
|
|
@@ -69,7 +69,7 @@ except where a derivation bullet below names the source that supplies one.
|
|
|
69
69
|
`SecondaryWeapon1`. Each suit's mount list is the weapon-mount counts this catalogue
|
|
70
70
|
already held, joined to those keys, primary mounts first and numbered from 1.
|
|
71
71
|
- **In-game observation supplies the stat values** in the suit, weapon and
|
|
72
|
-
modification sections below: the suit-wide component stats and
|
|
72
|
+
modification sections below: the suit-wide component stats and both resistance sets,
|
|
73
73
|
the weapon combat stats and damage, and the multipliers each modification applies.
|
|
74
74
|
The reload times are the exception: the panel shows no reload figure, so
|
|
75
75
|
`Weapon.java` supplies them. The tool figures are Odyssey Materials Helper's,
|
|
@@ -91,7 +91,7 @@ except where a derivation bullet below names the source that supplies one.
|
|
|
91
91
|
|
|
92
92
|
### Suit stats read in-game
|
|
93
93
|
|
|
94
|
-
The suit stats
|
|
94
|
+
The suit stats are read per suit family and per grade.
|
|
95
95
|
|
|
96
96
|
- **Suit-wide, identical at all five grades**, so they are stored once per family rather
|
|
97
97
|
than per grade: `health` (30 on every suit), `mass` (100 kg on every suit),
|
|
@@ -99,32 +99,44 @@ The suit stats panel is read per suit family and per grade.
|
|
|
99
99
|
`boostAcceleration` for the jump assist, the three backpack capacities
|
|
100
100
|
(`goodsCapacity`, `assetsCapacity`, `dataCapacity`), `footstepAudibleRange` as a
|
|
101
101
|
multiplier of the base audible range (1 on every suit), `losAnalysisRange` in metres
|
|
102
|
-
(50 on every suit) and `losAnalysisTime` in seconds (1 on every suit)
|
|
103
|
-
ones are stored anyway: a suit-stats
|
|
104
|
-
that is the same everywhere is still
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
102
|
+
(50 on every suit) and `losAnalysisTime` in seconds (1 on every suit), plus the four
|
|
103
|
+
shield resistances described below. The constant ones are stored anyway: a suit-stats
|
|
104
|
+
view reads them like any other field, and a value that is the same everywhere is still
|
|
105
|
+
the value.
|
|
106
|
+
- **A suit defends in two layers, and each layer has its own four resistances.** The
|
|
107
|
+
shield takes the damage first, and the armour takes what gets through. The two sets are
|
|
108
|
+
therefore stored separately, and each names the layer that has it. Damage Resistance is
|
|
109
|
+
the armour's modification: it moves the armour set and leaves the shield set alone.
|
|
110
|
+
Frontier's own symbol for it, `suit_improvedarmourrating`, is the evidence for that.
|
|
111
|
+
- **Both sets are stored as fractions** (`0.5` means half the damage taken), matching
|
|
112
|
+
the ships domain, and a negative value is a weakness.
|
|
113
|
+
- **The armour resistances are the four the suit panel shows.** The panel gives each one
|
|
114
|
+
as a percentage; the catalogue stores the same figure as a fraction. Every one is the
|
|
115
|
+
panel's figure, which corrects nine grade rows against Odyssey Materials Helper:
|
|
109
116
|
|
|
110
117
|
| Suit and grade | Field → stored value |
|
|
111
118
|
| ------------------- | ------------------------------------------------------------------------- |
|
|
112
|
-
| Artemis 1 | `
|
|
113
|
-
| Artemis 2 | `
|
|
114
|
-
| Artemis 3 | `
|
|
115
|
-
| Artemis 5 | `
|
|
116
|
-
| Flight Suit | `
|
|
117
|
-
| Dominator 4 | `
|
|
118
|
-
| Maverick 2 | `
|
|
119
|
-
| Maverick 3 | `
|
|
120
|
-
| Maverick 5 | `
|
|
121
|
-
|
|
122
|
-
- **
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
119
|
+
| Artemis 1 | `armourThermalResistance` 0.39→0.4 |
|
|
120
|
+
| Artemis 2 | `armourKineticResistance` -0.42→-0.43; `armourPlasmaResistance` 0→-0.01 |
|
|
121
|
+
| Artemis 3 | `armourPlasmaResistance` 0.14→0.15 |
|
|
122
|
+
| Artemis 5 | `armourKineticResistance` 0.14→0.15; `armourPlasmaResistance` 0.39→0.4 |
|
|
123
|
+
| Flight Suit | `armourThermalResistance` 0.39→0.4 |
|
|
124
|
+
| Dominator 4 | `armourKineticResistance` 0.19→0.11; `armourThermalResistance` 0.78→0.76; `armourPlasmaResistance` 0.46→0.41; `armourExplosiveResistance` 0.46→0.41 |
|
|
125
|
+
| Maverick 2 | `armourPlasmaResistance` 0.07→0.08 |
|
|
126
|
+
| Maverick 3 | `armourKineticResistance` -0.13→-0.14 |
|
|
127
|
+
| Maverick 5 | `armourKineticResistance` 0.19→0.2 |
|
|
128
|
+
|
|
129
|
+
- **The shield resistances are 0.6 kinetic, -0.5 thermal, 0 plasma and 0.5 explosive.**
|
|
130
|
+
The suit panel puts no figure on them. Each one is observed in-game as the multiplier
|
|
131
|
+
the shield applies to that damage type. A resistance is `1 −` that multiplier. Every
|
|
132
|
+
suit carries the same four multipliers at every grade. Reading each suit at each grade
|
|
133
|
+
establishes that.
|
|
134
|
+
- **Shield strength and shield regeneration match the panel.** That agreement is also why
|
|
135
|
+
the armour-resistance disagreements above are read as source rounding rather than as a
|
|
136
|
+
different snapshot of the game.
|
|
137
|
+
- **A grade changes the armour resistances, the shield's strength and regeneration, the
|
|
138
|
+
modification slots and the item symbol.** Nothing else on a suit changes with the
|
|
139
|
+
grade, which is what makes the suit-wide fields safe to store once per family.
|
|
128
140
|
|
|
129
141
|
### Suit tools
|
|
130
142
|
|
|
@@ -227,7 +239,9 @@ that changes nothing — is never stored.
|
|
|
227
239
|
like every other modifier.
|
|
228
240
|
- **A resistance factor multiplies the damage taken**, not the stored resistance
|
|
229
241
|
fraction. Damage Resistance is `×0.9` on damage taken, so a `0.5` resistance becomes
|
|
230
|
-
`0.55`. This is the same convention the ships domain uses for resistances.
|
|
242
|
+
`0.55`. This is the same convention the ships domain uses for resistances. Damage
|
|
243
|
+
Resistance's four factors name the armour stats, because that is the layer it moves. No
|
|
244
|
+
recipe moves a shield resistance.
|
|
231
245
|
- **`roundUp` marks the one result the game rounds up**: Magazine Size multiplies by 1.5
|
|
232
246
|
and rounds the magazine up to a whole number, so 45 rounds become 68 rather than 67.5.
|
|
233
247
|
- **Some recipes name a stat no catalogue field carries**, because the panel shows no
|
|
@@ -377,7 +377,7 @@ tag follows the rule above, so `pt-PT` resolves to Brazilian Portuguese.
|
|
|
377
377
|
catalogue publishes no description for a suit, so there is no canonical English here
|
|
378
378
|
to be authoritative for.
|
|
379
379
|
- **This is display prose, not the suit's stats.** `data/equipment/suits.jsonc` answers
|
|
380
|
-
what a suit does — shield strength, battery capacity,
|
|
380
|
+
what a suit does — shield strength, battery capacity, both resistance sets — and the
|
|
381
381
|
description answers what it is for, naming no figure at all. Neither is projected onto
|
|
382
382
|
the other.
|
|
383
383
|
- **Coverage:** complete. Every identifier carries all six locales, and every grade of a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{assertEquipmentGrade}from"./chunk-2W5MW376.js";import{findInKeyIndex,normalizeKey,createKeyIndex}from"./chunk-BKWLI44T.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var suits_default=[{family:"utilitysuit",name:"Maverick Suit",mounts:[{key:"PrimaryWeapon1",kind:"primary"},{key:"SecondaryWeapon",kind:"secondary"}],health:30,shieldKineticResistance:.6,shieldThermalResistance:-.5,shieldPlasmaResistance:0,shieldExplosiveResistance:.5,mass:100,batteryCapacity:13.5,oxygenTime:60,boostAcceleration:25,goodsCapacity:40,assetsCapacity:60,dataCapacity:20,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"utilitysuit_class1",modificationSlots:0,shieldStrength:13.5,shieldRegeneration:.99,armourKineticResistance:-.6,armourThermalResistance:.5,armourPlasmaResistance:-.1,armourExplosiveResistance:0},2:{symbol:"utilitysuit_class2",modificationSlots:1,shieldStrength:16.5,shieldRegeneration:1.21,armourKineticResistance:-.34,armourThermalResistance:.58,armourPlasmaResistance:.08,armourExplosiveResistance:.16},3:{symbol:"utilitysuit_class3",modificationSlots:2,shieldStrength:20.3,shieldRegeneration:1.49,armourKineticResistance:-.14,armourThermalResistance:.64,armourPlasmaResistance:.22,armourExplosiveResistance:.29},4:{symbol:"utilitysuit_class4",modificationSlots:3,shieldStrength:24.9,shieldRegeneration:1.82,armourKineticResistance:.06,armourThermalResistance:.7,armourPlasmaResistance:.35,armourExplosiveResistance:.41},5:{symbol:"utilitysuit_class5",modificationSlots:4,shieldStrength:30.4,shieldRegeneration:2.23,armourKineticResistance:.2,armourThermalResistance:.75,armourPlasmaResistance:.45,armourExplosiveResistance:.5}}},{family:"tacticalsuit",name:"Dominator Suit",mounts:[{key:"PrimaryWeapon1",kind:"primary"},{key:"PrimaryWeapon2",kind:"primary"},{key:"SecondaryWeapon",kind:"secondary"}],health:30,shieldKineticResistance:.6,shieldThermalResistance:-.5,shieldPlasmaResistance:0,shieldExplosiveResistance:.5,mass:100,batteryCapacity:10,oxygenTime:60,boostAcceleration:50,goodsCapacity:10,assetsCapacity:20,dataCapacity:10,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"tacticalsuit_class1",modificationSlots:0,shieldStrength:15,shieldRegeneration:1.1,armourKineticResistance:-.5,armourThermalResistance:.6,armourPlasmaResistance:0,armourExplosiveResistance:0},2:{symbol:"tacticalsuit_class2",modificationSlots:1,shieldStrength:18.3,shieldRegeneration:1.34,armourKineticResistance:-.26,armourThermalResistance:.66,armourPlasmaResistance:.16,armourExplosiveResistance:.16},3:{symbol:"tacticalsuit_class3",modificationSlots:2,shieldStrength:22.5,shieldRegeneration:1.65,armourKineticResistance:-.07,armourThermalResistance:.72,armourPlasmaResistance:.29,armourExplosiveResistance:.29},4:{symbol:"tacticalsuit_class4",modificationSlots:3,shieldStrength:27.6,shieldRegeneration:2.02,armourKineticResistance:.11,armourThermalResistance:.76,armourPlasmaResistance:.41,armourExplosiveResistance:.41},5:{symbol:"tacticalsuit_class5",modificationSlots:4,shieldStrength:33.8,shieldRegeneration:2.48,armourKineticResistance:.25,armourThermalResistance:.8,armourPlasmaResistance:.5,armourExplosiveResistance:.5}}},{family:"explorationsuit",name:"Artemis Suit",mounts:[{key:"PrimaryWeapon1",kind:"primary"},{key:"SecondaryWeapon",kind:"secondary"}],health:30,shieldKineticResistance:.6,shieldThermalResistance:-.5,shieldPlasmaResistance:0,shieldExplosiveResistance:.5,mass:100,batteryCapacity:17,oxygenTime:60,boostAcceleration:12.5,goodsCapacity:20,assetsCapacity:40,dataCapacity:10,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"explorationsuit_class1",modificationSlots:0,shieldStrength:12,shieldRegeneration:.88,armourKineticResistance:-.7,armourThermalResistance:.4,armourPlasmaResistance:-.2,armourExplosiveResistance:0},2:{symbol:"explorationsuit_class2",modificationSlots:1,shieldStrength:14.7,shieldRegeneration:1.07,armourKineticResistance:-.43,armourThermalResistance:.5,armourPlasmaResistance:-.01,armourExplosiveResistance:.16},3:{symbol:"explorationsuit_class3",modificationSlots:2,shieldStrength:18,shieldRegeneration:1.32,armourKineticResistance:-.21,armourThermalResistance:.57,armourPlasmaResistance:.15,armourExplosiveResistance:.29},4:{symbol:"explorationsuit_class4",modificationSlots:3,shieldStrength:22.1,shieldRegeneration:1.62,armourKineticResistance:0,armourThermalResistance:.65,armourPlasmaResistance:.29,armourExplosiveResistance:.41},5:{symbol:"explorationsuit_class5",modificationSlots:4,shieldStrength:27,shieldRegeneration:1.98,armourKineticResistance:.15,armourThermalResistance:.7,armourPlasmaResistance:.4,armourExplosiveResistance:.5}}},{family:"flightsuit",name:"Flight Suit",mounts:[{key:"SecondaryWeapon",kind:"secondary"}],health:30,shieldKineticResistance:.6,shieldThermalResistance:-.5,shieldPlasmaResistance:0,shieldExplosiveResistance:.5,mass:100,batteryCapacity:7,oxygenTime:60,boostAcceleration:30,goodsCapacity:5,assetsCapacity:10,dataCapacity:10,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"flightsuit",modificationSlots:0,shieldStrength:7.5,shieldRegeneration:.55,armourKineticResistance:-.7,armourThermalResistance:.4,armourPlasmaResistance:-.2,armourExplosiveResistance:0}}}];var SUITS=deepFreeze(suits_default);var BY_FAMILY=/* @__PURE__ */createKeyIndex(SUITS,"family");var BY_NAME=/* @__PURE__ */createKeyIndex(SUITS,"name");var BY_SYMBOL=/* @__PURE__ */Object.freeze(Object.fromEntries(SUITS.flatMap(suit=>Object.entries(suit.grades).map(([grade,stats])=>[stats.symbol.toLowerCase(),Object.freeze({suit:suit,grade:Number(grade)})]))));function getSuitByFamily(family){return findInKeyIndex(BY_FAMILY,family,"getSuitByFamily: family")}function getSuitByName(name){return findInKeyIndex(BY_NAME,name,"getSuitByName: name")}function getSuitBySymbol(symbol){const key=normalizeKey(symbol,"getSuitBySymbol: symbol");return Object.hasOwn(BY_SYMBOL,key)?BY_SYMBOL[key]:null}function getSuitGrade(suit,grade){assertEquipmentGrade(grade,"getSuitGrade");return suit.grades[String(grade)]??null}export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade};//# sourceMappingURL=chunk-C6G7IN74.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/equipment/suits.ts"],"names":["assertEquipmentGrade","findInKeyIndex","normalizeKey","createKeyIndex","deepFreeze","suits_default","family","name","key","grades","symbol","SUITS","BY_FAMILY","BY_NAME","BY_SYMBOL","Object","freeze","fromEntries","flatMap","suit","entries","map","grade","stats","toLowerCase","Number","getSuitByFamily","getSuitByName","getSuitBySymbol","hasOwn","getSuitGrade","String"],"mappings":"O,
|
|
1
|
+
{"version":3,"sources":["../src/equipment/suits.ts"],"names":["assertEquipmentGrade","findInKeyIndex","normalizeKey","createKeyIndex","deepFreeze","suits_default","family","name","key","grades","symbol","SUITS","BY_FAMILY","BY_NAME","BY_SYMBOL","Object","freeze","fromEntries","flatMap","suit","entries","map","grade","stats","toLowerCase","Number","getSuitByFamily","getSuitByName","getSuitBySymbol","hasOwn","getSuitGrade","String"],"mappings":"O,4oKAoKO,IAAMW,MAAyBP,WAAWC,eAEjD,IAAMO,yBAA4BT,eAAeQ,MAAO,UACxD,IAAME,uBAA0BV,eAAeQ,MAAO,QACtD,IAAMG,yBAA4BC,OAAOC,OACrCD,OAAOE,YACHN,MAAMO,QAASC,MACXJ,OAAOK,QAAQD,KAAKV,QAAQY,IAAI,EAAEC,MAAOC,SAAW,CAChDA,MAAMb,OAAOc,cACbT,OAAOC,OAAO,CAAEG,UAAMG,MAAOG,OAAOH,cAoB7C,SAASI,gBAAgBpB,QAC5B,OAAOL,eAAeW,UAAWN,OAAQ,0BAC7C,CAgBO,SAASqB,cAAcpB,MAC1B,OAAON,eAAeY,QAASN,KAAM,sBACzC,CAgBO,SAASqB,gBACZlB,QAEA,MAAMF,IAAMN,aAAaQ,OAAQ,2BACjC,OAAOK,OAAOc,OAAOf,UAAWN,KAAOM,UAAUN,KAAQ,IAC7D,CAiBO,SAASsB,aAAaX,KAAYG,OACrCtB,qBAAqBsB,MAAO,gBAC5B,OAAOH,KAAKV,OAAOsB,OAAOT,SAAkC,IAChE,QAAAX,MAAAe,gBAAAC,cAAAC,gBAAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{findByRawKey}from"./chunk-BKWLI44T.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var modifications_default={suit_increasedmeleedamage:{name:"Added Melee Damage",target:"suit",engineers:["Jude Navarro","Kit Fowler","Eleanor Bresa"],modifiers:[{stat:"meleeDamage",multiplier:2.5}]},suit_adsmovementspeed:{name:"Combat Movement Speed",target:"suit",engineers:["Terra Velasquez","Yarden Bond","Baltanos"],modifiers:[]},suit_improvedarmourrating:{name:"Damage Resistance",target:"suit",engineers:["Jude Navarro","Uma Laszlo","Eleanor Bresa"],modifiers:[{stat:"armourKineticResistance",multiplier:.9},{stat:"armourThermalResistance",multiplier:.9},{stat:"armourPlasmaResistance",multiplier:.9},{stat:"armourExplosiveResistance",multiplier:.9}]},suit_improvedradar:{name:"Enhanced Tracking",target:"suit",engineers:["Domino Green","Oden Geiger","Rosa Dayette"],modifiers:[{stat:"losAnalysisRange",multiplier:2},{stat:"losAnalysisTime",multiplier:.001}]},suit_increasedammoreserves:{name:"Extra Ammo Capacity",target:"suit",engineers:["Jude Navarro","Kit Fowler","Eleanor Bresa"],modifiers:[{stat:"reserveAmmo",multiplier:1.5}]},suit_backpackcapacity:{name:"Extra Backpack Capacity",target:"suit",engineers:["Domino Green","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"goodsCapacity",multiplier:2},{stat:"assetsCapacity",multiplier:2},{stat:"dataCapacity",multiplier:2}]},suit_increasedshieldregen:{name:"Faster Shield Regen",target:"suit",engineers:["Kit Fowler","Uma Laszlo","Eleanor Bresa"],modifiers:[{stat:"shieldRegeneration",multiplier:1.25}]},suit_increasedbatterycapacity:{name:"Improved Battery Capacity",target:"suit",engineers:["Oden Geiger","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"batteryCapacity",multiplier:1.5}]},suit_improvedjumpassist:{name:"Improved Jump Assist",target:"suit",engineers:["Hero Ferrari","Yarden Bond","Baltanos"],modifiers:[]},suit_increasedo2capacity:{name:"Increased Air Reserves",target:"suit",engineers:["Hero Ferrari","Terra Velasquez","Baltanos"],modifiers:[{stat:"oxygenTime",multiplier:5}]},suit_increasedsprintduration:{name:"Increased Sprint Duration",target:"suit",engineers:["Hero Ferrari","Terra Velasquez","Baltanos"],modifiers:[{stat:"sprintDuration",multiplier:2}]},suit_nightvision:{name:"Night Vision",target:"suit",engineers:["Oden Geiger","Yi Shen"],modifiers:[]},suit_quieterfootsteps:{name:"Quieter Footsteps",target:"suit",engineers:["Yarden Bond","Yi Shen"],modifiers:[{stat:"footstepAudibleRange",multiplier:.5}]},suit_reducedtoolbatteryconsumption:{name:"Reduced Tool Battery Consumption",target:"suit",engineers:["Domino Green","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"toolEnergyDrain",multiplier:.5}]},weapon_suppression_unpressurised:{name:"Audio Masking",target:"weapon",engineers:["Yarden Bond","Yi Shen"],modifiers:[{stat:"unpressurisedFiringAudibleRange",multiplier:.05}]},weapon_handling:{name:"Faster Handling",target:"weapon",engineers:["Hero Ferrari","Yarden Bond","Baltanos"],modifiers:[]},weapon_range_kinetic:{name:"Greater Range",target:"weapon",engineers:["Domino Green","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"effectiveRange",multiplier:1.5}]},weapon_range_laser:{name:"Greater Range",target:"weapon",engineers:["Domino Green","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"effectiveRange",multiplier:1.5}]},weapon_range_plasma:{name:"Greater Range",target:"weapon",engineers:["Domino Green","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"effectiveRange",multiplier:1.5}]},weapon_headshotdamage_kinetic:{name:"Headshot Damage",target:"weapon",engineers:["Uma Laszlo","Yi Shen"],modifiers:[{stat:"headshotMultiplier",multiplier:1.5}]},weapon_headshotdamage_laser:{name:"Headshot Damage",target:"weapon",engineers:["Uma Laszlo","Yi Shen"],modifiers:[{stat:"headshotMultiplier",multiplier:1.5}]},weapon_headshotdamage_plasma:{name:"Headshot Damage",target:"weapon",engineers:["Uma Laszlo","Yi Shen"],modifiers:[{stat:"headshotMultiplier",multiplier:1.5}]},weapon_accuracy_kinetic:{name:"Improved Hip Fire Accuracy",target:"weapon",engineers:["Yarden Bond","Terra Velasquez","Baltanos"],modifiers:[]},weapon_accuracy_laser:{name:"Improved Hip Fire Accuracy",target:"weapon",engineers:["Yarden Bond","Terra Velasquez","Baltanos"],modifiers:[]},weapon_accuracy_plasma:{name:"Improved Hip Fire Accuracy",target:"weapon",engineers:["Yarden Bond","Terra Velasquez","Baltanos"],modifiers:[]},weapon_clipsize:{name:"Magazine Size",target:"weapon",engineers:["Jude Navarro","Kit Fowler","Eleanor Bresa"],modifiers:[{stat:"magazineSize",multiplier:1.5,roundUp:true}]},weapon_suppression_pressurised:{name:"Noise Suppressor",target:"weapon",engineers:["Hero Ferrari","Terra Velasquez","Baltanos"],modifiers:[{stat:"pressurisedFiringAudibleRange",multiplier:.05}]},weapon_reloadspeed:{name:"Reload Speed",target:"weapon",engineers:["Jude Navarro","Uma Laszlo","Eleanor Bresa"],modifiers:[]},weapon_scope:{name:"Scope",target:"weapon",engineers:["Oden Geiger","Wellington Beck","Rosa Dayette"],modifiers:[]},weapon_stability:{name:"Stability",target:"weapon",engineers:["Domino Green","Oden Geiger","Rosa Dayette"],modifiers:[]},weapon_backpackreloading:{name:"Stowed reloading",target:"weapon",engineers:["Kit Fowler","Uma Laszlo","Eleanor Bresa"],modifiers:[]}};var PERSONAL_MODIFICATIONS=deepFreeze(modifications_default);function getPersonalModification(symbol){return findByRawKey(PERSONAL_MODIFICATIONS,symbol,"getPersonalModification: symbol")}export{PERSONAL_MODIFICATIONS,getPersonalModification};//# sourceMappingURL=chunk-YI5XKWW2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/equipment/modifications.ts"],"names":["findByRawKey","deepFreeze","modifications_default","PERSONAL_MODIFICATIONS","getPersonalModification","symbol"],"mappings":"O
|
|
1
|
+
{"version":3,"sources":["../src/equipment/modifications.ts"],"names":["findByRawKey","deepFreeze","modifications_default","PERSONAL_MODIFICATIONS","getPersonalModification","symbol"],"mappings":"O,upKA8EO,IAAMG,uBAAyEF,WAClFC,uBAkBG,SAASE,wBAAwBC,QACpC,OAAOL,aAAaG,uBAAwBE,OAAQ,kCACxD,QAAAF,uBAAAC"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @packageDocumentation
|
|
11
11
|
*/
|
|
12
|
-
export { E as EquipmentGrade, P as PERSONAL_WEAPONS, a as PersonalDamageType, b as PersonalFireMode, c as PersonalMount, d as PersonalMountKey, e as PersonalWeapon, f as PersonalWeaponClass, g as PersonalWeaponEngineeringType, h as PersonalWeaponGrade, i as PersonalWeaponMetrics, j as PersonalWeaponSlot, R as ReloadTime, S as SUITS, k as ScopeMagnification, l as Suit, m as SuitGrade, W as WeaponUpgradeGroup, n as getPersonalWeaponByName, o as getPersonalWeaponBySymbol, p as getPersonalWeaponGrade, q as getSuitByFamily, r as getSuitByName, s as getSuitBySymbol, t as getSuitGrade, u as personalWeaponMetrics } from '../suits-
|
|
12
|
+
export { E as EquipmentGrade, P as PERSONAL_WEAPONS, a as PersonalDamageType, b as PersonalFireMode, c as PersonalMount, d as PersonalMountKey, e as PersonalWeapon, f as PersonalWeaponClass, g as PersonalWeaponEngineeringType, h as PersonalWeaponGrade, i as PersonalWeaponMetrics, j as PersonalWeaponSlot, R as ReloadTime, S as SUITS, k as ScopeMagnification, l as Suit, m as SuitGrade, W as WeaponUpgradeGroup, n as getPersonalWeaponByName, o as getPersonalWeaponBySymbol, p as getPersonalWeaponGrade, q as getSuitByFamily, r as getSuitByName, s as getSuitBySymbol, t as getSuitGrade, u as personalWeaponMetrics } from '../suits-B4sQMLFe.js';
|
|
13
13
|
export { PERSONAL_TOOLS, PersonalTool, getPersonalToolById } from './tools.js';
|
|
14
14
|
export { PersonalEngineeringIngredient, PersonalModifier, applyPersonalModifiers, sumPersonalEngineeringIngredients } from './engineering.js';
|
|
15
15
|
export { PERSONAL_MODIFICATIONS, PersonalModification, PersonalModificationTarget, getPersonalModification } from './modifications.js';
|
package/dist/equipment/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{resolvePersonalModificationForWeapon}from"../chunk-R2AEZYX7.js";export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-
|
|
1
|
+
export{resolvePersonalModificationForWeapon}from"../chunk-R2AEZYX7.js";export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-YI5XKWW2.js";export{PERSONAL_TOOLS,getPersonalToolById}from"../chunk-CEF7SMB2.js";export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade}from"../chunk-C6G7IN74.js";export{PERSONAL_WEAPONS,getPersonalWeaponByName,getPersonalWeaponBySymbol,getPersonalWeaponGrade,personalWeaponMetrics}from"../chunk-PIU24HRN.js"; export{applyPersonalModifiers,sumPersonalEngineeringIngredients}from"../chunk-SIL356HB.js"; //# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-
|
|
1
|
+
export{PERSONAL_MODIFICATIONS,getPersonalModification}from"../chunk-YI5XKWW2.js"; //# sourceMappingURL=modifications.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { E as EquipmentGrade, c as PersonalMount, d as PersonalMountKey, S as SUITS, l as Suit, m as SuitGrade, q as getSuitByFamily, r as getSuitByName, s as getSuitBySymbol, t as getSuitGrade } from '../suits-
|
|
1
|
+
export { E as EquipmentGrade, c as PersonalMount, d as PersonalMountKey, S as SUITS, l as Suit, m as SuitGrade, q as getSuitByFamily, r as getSuitByName, s as getSuitBySymbol, t as getSuitGrade } from '../suits-B4sQMLFe.js';
|
|
2
2
|
import './engineering.js';
|
package/dist/equipment/suits.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade}from"../chunk-
|
|
1
|
+
export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade}from"../chunk-C6G7IN74.js"; //# sourceMappingURL=suits.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getSuitByFamily}from"../chunk-
|
|
1
|
+
import{getSuitByFamily}from"../chunk-C6G7IN74.js";import{getPersonalWeaponBySymbol}from"../chunk-PIU24HRN.js"; import{sumPersonalEngineeringIngredients}from"../chunk-SIL356HB.js"; import{deepFreeze}from"../chunk-DURKO7JU.js";var upgrade_costs_default={suits:{utilitysuit:{2:[{symbol:"suitschematic",count:1},{symbol:"healthmonitor",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"carbonfibreplating",count:2},{symbol:"graphene",count:2}],3:[{symbol:"suitschematic",count:2},{symbol:"healthmonitor",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"carbonfibreplating",count:5},{symbol:"graphene",count:5}],4:[{symbol:"suitschematic",count:4},{symbol:"healthmonitor",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"carbonfibreplating",count:9},{symbol:"graphene",count:9}],5:[{symbol:"suitschematic",count:5},{symbol:"healthmonitor",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"carbonfibreplating",count:12},{symbol:"graphene",count:12}]},tacticalsuit:{2:[{symbol:"suitschematic",count:1},{symbol:"healthmonitor",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"titaniumplating",count:2},{symbol:"graphene",count:2}],3:[{symbol:"suitschematic",count:2},{symbol:"healthmonitor",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"titaniumplating",count:5},{symbol:"graphene",count:5}],4:[{symbol:"suitschematic",count:4},{symbol:"healthmonitor",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"titaniumplating",count:9},{symbol:"graphene",count:9}],5:[{symbol:"suitschematic",count:5},{symbol:"healthmonitor",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"titaniumplating",count:12},{symbol:"graphene",count:12}]},explorationsuit:{2:[{symbol:"suitschematic",count:1},{symbol:"healthmonitor",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"aerogel",count:2},{symbol:"graphene",count:2}],3:[{symbol:"suitschematic",count:2},{symbol:"healthmonitor",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"aerogel",count:5},{symbol:"graphene",count:5}],4:[{symbol:"suitschematic",count:4},{symbol:"healthmonitor",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"aerogel",count:9},{symbol:"graphene",count:9}],5:[{symbol:"suitschematic",count:5},{symbol:"healthmonitor",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"aerogel",count:12},{symbol:"graphene",count:12}]}},weaponGroups:{takada:{2:[{symbol:"weaponschematic",count:1},{symbol:"ionisedgas",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"microelectrode",count:2},{symbol:"opticalfibre",count:2}],3:[{symbol:"weaponschematic",count:2},{symbol:"ionisedgas",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"microelectrode",count:5},{symbol:"opticalfibre",count:5}],4:[{symbol:"weaponschematic",count:4},{symbol:"ionisedgas",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"microelectrode",count:9},{symbol:"opticalfibre",count:9}],5:[{symbol:"weaponschematic",count:5},{symbol:"ionisedgas",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"microelectrode",count:12},{symbol:"opticalfibre",count:12}]},manticore:{2:[{symbol:"weaponschematic",count:1},{symbol:"ionisedgas",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"microelectrode",count:2},{symbol:"chemicalsuperbase",count:2}],3:[{symbol:"weaponschematic",count:2},{symbol:"ionisedgas",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"microelectrode",count:5},{symbol:"chemicalsuperbase",count:5}],4:[{symbol:"weaponschematic",count:4},{symbol:"ionisedgas",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"microelectrode",count:9},{symbol:"chemicalsuperbase",count:9}],5:[{symbol:"weaponschematic",count:5},{symbol:"ionisedgas",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"microelectrode",count:12},{symbol:"chemicalsuperbase",count:12}]},karma:{2:[{symbol:"weaponschematic",count:1},{symbol:"compressionliquefiedgas",count:1},{symbol:"manufacturinginstructions",count:1},{symbol:"weaponcomponent",count:2},{symbol:"tungstencarbide",count:2}],3:[{symbol:"weaponschematic",count:2},{symbol:"compressionliquefiedgas",count:2},{symbol:"manufacturinginstructions",count:2},{symbol:"weaponcomponent",count:5},{symbol:"tungstencarbide",count:5}],4:[{symbol:"weaponschematic",count:4},{symbol:"compressionliquefiedgas",count:4},{symbol:"manufacturinginstructions",count:4},{symbol:"weaponcomponent",count:9},{symbol:"tungstencarbide",count:9}],5:[{symbol:"weaponschematic",count:5},{symbol:"compressionliquefiedgas",count:5},{symbol:"manufacturinginstructions",count:5},{symbol:"weaponcomponent",count:12},{symbol:"tungstencarbide",count:12}]}}};var PERSONAL_UPGRADE_COSTS=deepFreeze(upgrade_costs_default);function getSuitUpgradeStepCost(family,targetGrade){assertTargetGrade(targetGrade,"getSuitUpgradeStepCost");const costs=getSuitUpgradeCosts(family);return costs?.[String(targetGrade)]??null}function getSuitUpgradeCost(family,targetGrade,currentGrade=1){assertGrade(targetGrade,"getSuitUpgradeCost: targetGrade");assertGrade(currentGrade,"getSuitUpgradeCost: currentGrade");const costs=getSuitUpgradeCosts(family);if(!costs)return null;return totalCosts(costs,targetGrade,currentGrade)}function getPersonalWeaponUpgradeStepCost(symbol,targetGrade){assertTargetGrade(targetGrade,"getPersonalWeaponUpgradeStepCost");const weapon=getPersonalWeaponBySymbol(symbol);if(!weapon)return null;return PERSONAL_UPGRADE_COSTS.weaponGroups[weapon.upgradeGroup][String(targetGrade)]??null}function getPersonalWeaponUpgradeCost(symbol,targetGrade,currentGrade=1){assertGrade(targetGrade,"getPersonalWeaponUpgradeCost: targetGrade");assertGrade(currentGrade,"getPersonalWeaponUpgradeCost: currentGrade");const weapon=getPersonalWeaponBySymbol(symbol);if(!weapon)return null;return totalCosts(PERSONAL_UPGRADE_COSTS.weaponGroups[weapon.upgradeGroup],targetGrade,currentGrade)}function totalCosts(costs,targetGrade,currentGrade){const steps=[];for(let grade=currentGrade+1;grade<=targetGrade;grade++){steps.push(costs[String(grade)])}return sumPersonalEngineeringIngredients(...steps)}function getSuitUpgradeCosts(family){const suit=getSuitByFamily(family);if(!suit||!Object.hasOwn(PERSONAL_UPGRADE_COSTS.suits,suit.family))return null;return PERSONAL_UPGRADE_COSTS.suits[suit.family]}function assertTargetGrade(grade,functionName){if(!Number.isInteger(grade)||grade<2||grade>5){throw new RangeError(`${functionName}: targetGrade must be an integer in [2, 5]`)}}function assertGrade(grade,label){if(!Number.isInteger(grade)||grade<1||grade>5){throw new RangeError(`${label} must be an integer in [1, 5]`)}}export{PERSONAL_UPGRADE_COSTS,getPersonalWeaponUpgradeCost,getPersonalWeaponUpgradeStepCost,getSuitUpgradeCost,getSuitUpgradeStepCost};//# sourceMappingURL=upgrade-costs.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import './engineering.js';
|
|
2
|
-
export { P as PERSONAL_WEAPONS, a as PersonalDamageType, b as PersonalFireMode, e as PersonalWeapon, f as PersonalWeaponClass, g as PersonalWeaponEngineeringType, h as PersonalWeaponGrade, i as PersonalWeaponMetrics, j as PersonalWeaponSlot, R as ReloadTime, k as ScopeMagnification, W as WeaponUpgradeGroup, n as getPersonalWeaponByName, o as getPersonalWeaponBySymbol, p as getPersonalWeaponGrade, u as personalWeaponMetrics } from '../suits-
|
|
2
|
+
export { P as PERSONAL_WEAPONS, a as PersonalDamageType, b as PersonalFireMode, e as PersonalWeapon, f as PersonalWeaponClass, g as PersonalWeaponEngineeringType, h as PersonalWeaponGrade, i as PersonalWeaponMetrics, j as PersonalWeaponSlot, R as ReloadTime, k as ScopeMagnification, W as WeaponUpgradeGroup, n as getPersonalWeaponByName, o as getPersonalWeaponBySymbol, p as getPersonalWeaponGrade, u as personalWeaponMetrics } from '../suits-B4sQMLFe.js';
|
package/dist/i18n/index.d.ts
CHANGED
|
@@ -90,7 +90,7 @@ export { getPersonalModificationDescription, getPersonalModificationName } from
|
|
|
90
90
|
export { getLoadoutSlotName, getSlotRestrictionLabel } from './slots.js';
|
|
91
91
|
export { getCalculationIssueMessage, getLoadoutEditErrorMessage, getLoadoutIssueMessage, getSlefDiagnosticMessage } from './diagnostics.js';
|
|
92
92
|
export { PreEngineeredVariantIdentity, getPreEngineeredVariantName } from './pre-engineered.js';
|
|
93
|
-
import '../suits-
|
|
93
|
+
import '../suits-B4sQMLFe.js';
|
|
94
94
|
import '../equipment/engineering.js';
|
|
95
95
|
import '../ships/slots.js';
|
|
96
96
|
import '../ships/loadout-calculations.js';
|
package/dist/i18n/suits.d.ts
CHANGED
|
@@ -229,8 +229,9 @@ declare function personalWeaponMetrics(weapon: PersonalWeapon, grade: number, mo
|
|
|
229
229
|
}): PersonalWeaponMetrics | null;
|
|
230
230
|
|
|
231
231
|
/**
|
|
232
|
-
* Odyssey personal suits: their journal identifiers, the suit-wide
|
|
233
|
-
*
|
|
232
|
+
* Odyssey personal suits: their journal identifiers, the suit-wide stats every grade
|
|
233
|
+
* shares, including the shield resistances, and the grade-dependent armour resistances
|
|
234
|
+
* and shield figures.
|
|
234
235
|
*
|
|
235
236
|
* @packageDocumentation
|
|
236
237
|
*/
|
|
@@ -270,7 +271,24 @@ interface PersonalMount {
|
|
|
270
271
|
/** Which weapons the mount takes; a weapon whose `slot` equals it fits here. */
|
|
271
272
|
readonly kind: PersonalWeaponSlot;
|
|
272
273
|
}
|
|
273
|
-
/**
|
|
274
|
+
/**
|
|
275
|
+
* The stats of one suit at one equipment grade.
|
|
276
|
+
*
|
|
277
|
+
* @remarks
|
|
278
|
+
* A suit defends in two layers, and each layer has its own four resistances. The four
|
|
279
|
+
* here are the armour's: they apply to the {@link Suit.health} pool, and the Damage
|
|
280
|
+
* Resistance modification moves them. The shield's four sit on {@link Suit}, because a
|
|
281
|
+
* grade leaves them alone.
|
|
282
|
+
* @example
|
|
283
|
+
* ```ts
|
|
284
|
+
* import { getSuitByFamily, getSuitGrade } from '@elite-dangerous-almanac/core/equipment/suits';
|
|
285
|
+
*
|
|
286
|
+
* const suit = getSuitByFamily('tacticalsuit')!;
|
|
287
|
+
* // The shield is weak against a laser; the armour behind it is strong.
|
|
288
|
+
* suit.shieldThermalResistance; // -> -0.5
|
|
289
|
+
* getSuitGrade(suit, 5)!.armourThermalResistance; // -> 0.8
|
|
290
|
+
* ```
|
|
291
|
+
*/
|
|
274
292
|
interface SuitGrade {
|
|
275
293
|
/** Frontier item symbol for this exact suit and grade. */
|
|
276
294
|
readonly symbol: string;
|
|
@@ -280,14 +298,14 @@ interface SuitGrade {
|
|
|
280
298
|
readonly shieldStrength: number;
|
|
281
299
|
/** Shield points regenerated per second. */
|
|
282
300
|
readonly shieldRegeneration: number;
|
|
283
|
-
/**
|
|
284
|
-
readonly
|
|
285
|
-
/**
|
|
286
|
-
readonly
|
|
287
|
-
/**
|
|
288
|
-
readonly
|
|
289
|
-
/**
|
|
290
|
-
readonly
|
|
301
|
+
/** Armour kinetic damage resistance as a fraction; negative values increase damage. */
|
|
302
|
+
readonly armourKineticResistance: number;
|
|
303
|
+
/** Armour thermal damage resistance as a fraction. */
|
|
304
|
+
readonly armourThermalResistance: number;
|
|
305
|
+
/** Armour plasma damage resistance as a fraction; negative values increase damage. */
|
|
306
|
+
readonly armourPlasmaResistance: number;
|
|
307
|
+
/** Armour explosive damage resistance as a fraction. */
|
|
308
|
+
readonly armourExplosiveResistance: number;
|
|
291
309
|
}
|
|
292
310
|
/** One personal suit model sold by Pioneer Supplies. */
|
|
293
311
|
interface Suit {
|
|
@@ -306,6 +324,23 @@ interface Suit {
|
|
|
306
324
|
readonly mounts: readonly PersonalMount[];
|
|
307
325
|
/** Suit health in health points, the pool the shield protects. */
|
|
308
326
|
readonly health: number;
|
|
327
|
+
/**
|
|
328
|
+
* Shield kinetic damage resistance as a fraction.
|
|
329
|
+
*
|
|
330
|
+
* @remarks
|
|
331
|
+
* The shield takes the damage first, and the armour under it takes what gets
|
|
332
|
+
* through, so the two layers carry separate resistances. The four here are the same
|
|
333
|
+
* at every grade, so they are stored once per family, like every other stat a grade
|
|
334
|
+
* leaves alone. A grade changes the shield's strength and its regeneration, both on
|
|
335
|
+
* {@link SuitGrade}, and it changes the armour's four resistances there as well.
|
|
336
|
+
*/
|
|
337
|
+
readonly shieldKineticResistance: number;
|
|
338
|
+
/** Shield thermal damage resistance as a fraction; negative values increase damage. */
|
|
339
|
+
readonly shieldThermalResistance: number;
|
|
340
|
+
/** Shield plasma damage resistance as a fraction. */
|
|
341
|
+
readonly shieldPlasmaResistance: number;
|
|
342
|
+
/** Shield explosive damage resistance as a fraction. */
|
|
343
|
+
readonly shieldExplosiveResistance: number;
|
|
309
344
|
/** Suit mass in kilograms. */
|
|
310
345
|
readonly mass: number;
|
|
311
346
|
/** Battery capacity in energy units, the pool the suit's tools draw from. */
|
|
@@ -330,8 +365,9 @@ interface Suit {
|
|
|
330
365
|
* Available grade records, keyed by `"1"` through `"5"`.
|
|
331
366
|
*
|
|
332
367
|
* @remarks
|
|
333
|
-
* A grade changes exactly what {@link SuitGrade} carries — the four
|
|
334
|
-
* shield strength, shield regeneration, the modification slots and the
|
|
368
|
+
* A grade changes exactly what {@link SuitGrade} carries — the four armour
|
|
369
|
+
* resistances, shield strength, shield regeneration, the modification slots and the
|
|
370
|
+
* item symbol.
|
|
335
371
|
* Every stat above is a property of the suit family and is the same at all five.
|
|
336
372
|
*/
|
|
337
373
|
readonly grades: Readonly<Partial<Record<`${EquipmentGrade}`, SuitGrade>>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elite-dangerous-almanac/core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"description": "Elite Dangerous static data and calculations: astronomy, ships and outfitting, personal equipment and engineering, materials, and market commodities.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
package/dist/chunk-AC3U7LRK.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{findByRawKey}from"./chunk-BKWLI44T.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var modifications_default={suit_increasedmeleedamage:{name:"Added Melee Damage",target:"suit",engineers:["Jude Navarro","Kit Fowler","Eleanor Bresa"],modifiers:[{stat:"meleeDamage",multiplier:2.5}]},suit_adsmovementspeed:{name:"Combat Movement Speed",target:"suit",engineers:["Terra Velasquez","Yarden Bond","Baltanos"],modifiers:[]},suit_improvedarmourrating:{name:"Damage Resistance",target:"suit",engineers:["Jude Navarro","Uma Laszlo","Eleanor Bresa"],modifiers:[{stat:"kineticResistance",multiplier:.9},{stat:"thermalResistance",multiplier:.9},{stat:"plasmaResistance",multiplier:.9},{stat:"explosiveResistance",multiplier:.9}]},suit_improvedradar:{name:"Enhanced Tracking",target:"suit",engineers:["Domino Green","Oden Geiger","Rosa Dayette"],modifiers:[{stat:"losAnalysisRange",multiplier:2},{stat:"losAnalysisTime",multiplier:.001}]},suit_increasedammoreserves:{name:"Extra Ammo Capacity",target:"suit",engineers:["Jude Navarro","Kit Fowler","Eleanor Bresa"],modifiers:[{stat:"reserveAmmo",multiplier:1.5}]},suit_backpackcapacity:{name:"Extra Backpack Capacity",target:"suit",engineers:["Domino Green","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"goodsCapacity",multiplier:2},{stat:"assetsCapacity",multiplier:2},{stat:"dataCapacity",multiplier:2}]},suit_increasedshieldregen:{name:"Faster Shield Regen",target:"suit",engineers:["Kit Fowler","Uma Laszlo","Eleanor Bresa"],modifiers:[{stat:"shieldRegeneration",multiplier:1.25}]},suit_increasedbatterycapacity:{name:"Improved Battery Capacity",target:"suit",engineers:["Oden Geiger","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"batteryCapacity",multiplier:1.5}]},suit_improvedjumpassist:{name:"Improved Jump Assist",target:"suit",engineers:["Hero Ferrari","Yarden Bond","Baltanos"],modifiers:[]},suit_increasedo2capacity:{name:"Increased Air Reserves",target:"suit",engineers:["Hero Ferrari","Terra Velasquez","Baltanos"],modifiers:[{stat:"oxygenTime",multiplier:5}]},suit_increasedsprintduration:{name:"Increased Sprint Duration",target:"suit",engineers:["Hero Ferrari","Terra Velasquez","Baltanos"],modifiers:[{stat:"sprintDuration",multiplier:2}]},suit_nightvision:{name:"Night Vision",target:"suit",engineers:["Oden Geiger","Yi Shen"],modifiers:[]},suit_quieterfootsteps:{name:"Quieter Footsteps",target:"suit",engineers:["Yarden Bond","Yi Shen"],modifiers:[{stat:"footstepAudibleRange",multiplier:.5}]},suit_reducedtoolbatteryconsumption:{name:"Reduced Tool Battery Consumption",target:"suit",engineers:["Domino Green","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"toolEnergyDrain",multiplier:.5}]},weapon_suppression_unpressurised:{name:"Audio Masking",target:"weapon",engineers:["Yarden Bond","Yi Shen"],modifiers:[{stat:"unpressurisedFiringAudibleRange",multiplier:.05}]},weapon_handling:{name:"Faster Handling",target:"weapon",engineers:["Hero Ferrari","Yarden Bond","Baltanos"],modifiers:[]},weapon_range_kinetic:{name:"Greater Range",target:"weapon",engineers:["Domino Green","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"effectiveRange",multiplier:1.5}]},weapon_range_laser:{name:"Greater Range",target:"weapon",engineers:["Domino Green","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"effectiveRange",multiplier:1.5}]},weapon_range_plasma:{name:"Greater Range",target:"weapon",engineers:["Domino Green","Wellington Beck","Rosa Dayette"],modifiers:[{stat:"effectiveRange",multiplier:1.5}]},weapon_headshotdamage_kinetic:{name:"Headshot Damage",target:"weapon",engineers:["Uma Laszlo","Yi Shen"],modifiers:[{stat:"headshotMultiplier",multiplier:1.5}]},weapon_headshotdamage_laser:{name:"Headshot Damage",target:"weapon",engineers:["Uma Laszlo","Yi Shen"],modifiers:[{stat:"headshotMultiplier",multiplier:1.5}]},weapon_headshotdamage_plasma:{name:"Headshot Damage",target:"weapon",engineers:["Uma Laszlo","Yi Shen"],modifiers:[{stat:"headshotMultiplier",multiplier:1.5}]},weapon_accuracy_kinetic:{name:"Improved Hip Fire Accuracy",target:"weapon",engineers:["Yarden Bond","Terra Velasquez","Baltanos"],modifiers:[]},weapon_accuracy_laser:{name:"Improved Hip Fire Accuracy",target:"weapon",engineers:["Yarden Bond","Terra Velasquez","Baltanos"],modifiers:[]},weapon_accuracy_plasma:{name:"Improved Hip Fire Accuracy",target:"weapon",engineers:["Yarden Bond","Terra Velasquez","Baltanos"],modifiers:[]},weapon_clipsize:{name:"Magazine Size",target:"weapon",engineers:["Jude Navarro","Kit Fowler","Eleanor Bresa"],modifiers:[{stat:"magazineSize",multiplier:1.5,roundUp:true}]},weapon_suppression_pressurised:{name:"Noise Suppressor",target:"weapon",engineers:["Hero Ferrari","Terra Velasquez","Baltanos"],modifiers:[{stat:"pressurisedFiringAudibleRange",multiplier:.05}]},weapon_reloadspeed:{name:"Reload Speed",target:"weapon",engineers:["Jude Navarro","Uma Laszlo","Eleanor Bresa"],modifiers:[]},weapon_scope:{name:"Scope",target:"weapon",engineers:["Oden Geiger","Wellington Beck","Rosa Dayette"],modifiers:[]},weapon_stability:{name:"Stability",target:"weapon",engineers:["Domino Green","Oden Geiger","Rosa Dayette"],modifiers:[]},weapon_backpackreloading:{name:"Stowed reloading",target:"weapon",engineers:["Kit Fowler","Uma Laszlo","Eleanor Bresa"],modifiers:[]}};var PERSONAL_MODIFICATIONS=deepFreeze(modifications_default);function getPersonalModification(symbol){return findByRawKey(PERSONAL_MODIFICATIONS,symbol,"getPersonalModification: symbol")}export{PERSONAL_MODIFICATIONS,getPersonalModification};//# sourceMappingURL=chunk-AC3U7LRK.js.map
|
package/dist/chunk-UTWZZOSA.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{assertEquipmentGrade}from"./chunk-2W5MW376.js";import{findInKeyIndex,normalizeKey,createKeyIndex}from"./chunk-BKWLI44T.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var suits_default=[{family:"utilitysuit",name:"Maverick Suit",mounts:[{key:"PrimaryWeapon1",kind:"primary"},{key:"SecondaryWeapon",kind:"secondary"}],health:30,mass:100,batteryCapacity:13.5,oxygenTime:60,boostAcceleration:25,goodsCapacity:40,assetsCapacity:60,dataCapacity:20,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"utilitysuit_class1",modificationSlots:0,shieldStrength:13.5,shieldRegeneration:.99,kineticResistance:-.6,thermalResistance:.5,plasmaResistance:-.1,explosiveResistance:0},2:{symbol:"utilitysuit_class2",modificationSlots:1,shieldStrength:16.5,shieldRegeneration:1.21,kineticResistance:-.34,thermalResistance:.58,plasmaResistance:.08,explosiveResistance:.16},3:{symbol:"utilitysuit_class3",modificationSlots:2,shieldStrength:20.3,shieldRegeneration:1.49,kineticResistance:-.14,thermalResistance:.64,plasmaResistance:.22,explosiveResistance:.29},4:{symbol:"utilitysuit_class4",modificationSlots:3,shieldStrength:24.9,shieldRegeneration:1.82,kineticResistance:.06,thermalResistance:.7,plasmaResistance:.35,explosiveResistance:.41},5:{symbol:"utilitysuit_class5",modificationSlots:4,shieldStrength:30.4,shieldRegeneration:2.23,kineticResistance:.2,thermalResistance:.75,plasmaResistance:.45,explosiveResistance:.5}}},{family:"tacticalsuit",name:"Dominator Suit",mounts:[{key:"PrimaryWeapon1",kind:"primary"},{key:"PrimaryWeapon2",kind:"primary"},{key:"SecondaryWeapon",kind:"secondary"}],health:30,mass:100,batteryCapacity:10,oxygenTime:60,boostAcceleration:50,goodsCapacity:10,assetsCapacity:20,dataCapacity:10,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"tacticalsuit_class1",modificationSlots:0,shieldStrength:15,shieldRegeneration:1.1,kineticResistance:-.5,thermalResistance:.6,plasmaResistance:0,explosiveResistance:0},2:{symbol:"tacticalsuit_class2",modificationSlots:1,shieldStrength:18.3,shieldRegeneration:1.34,kineticResistance:-.26,thermalResistance:.66,plasmaResistance:.16,explosiveResistance:.16},3:{symbol:"tacticalsuit_class3",modificationSlots:2,shieldStrength:22.5,shieldRegeneration:1.65,kineticResistance:-.07,thermalResistance:.72,plasmaResistance:.29,explosiveResistance:.29},4:{symbol:"tacticalsuit_class4",modificationSlots:3,shieldStrength:27.6,shieldRegeneration:2.02,kineticResistance:.11,thermalResistance:.76,plasmaResistance:.41,explosiveResistance:.41},5:{symbol:"tacticalsuit_class5",modificationSlots:4,shieldStrength:33.8,shieldRegeneration:2.48,kineticResistance:.25,thermalResistance:.8,plasmaResistance:.5,explosiveResistance:.5}}},{family:"explorationsuit",name:"Artemis Suit",mounts:[{key:"PrimaryWeapon1",kind:"primary"},{key:"SecondaryWeapon",kind:"secondary"}],health:30,mass:100,batteryCapacity:17,oxygenTime:60,boostAcceleration:12.5,goodsCapacity:20,assetsCapacity:40,dataCapacity:10,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"explorationsuit_class1",modificationSlots:0,shieldStrength:12,shieldRegeneration:.88,kineticResistance:-.7,thermalResistance:.4,plasmaResistance:-.2,explosiveResistance:0},2:{symbol:"explorationsuit_class2",modificationSlots:1,shieldStrength:14.7,shieldRegeneration:1.07,kineticResistance:-.43,thermalResistance:.5,plasmaResistance:-.01,explosiveResistance:.16},3:{symbol:"explorationsuit_class3",modificationSlots:2,shieldStrength:18,shieldRegeneration:1.32,kineticResistance:-.21,thermalResistance:.57,plasmaResistance:.15,explosiveResistance:.29},4:{symbol:"explorationsuit_class4",modificationSlots:3,shieldStrength:22.1,shieldRegeneration:1.62,kineticResistance:0,thermalResistance:.65,plasmaResistance:.29,explosiveResistance:.41},5:{symbol:"explorationsuit_class5",modificationSlots:4,shieldStrength:27,shieldRegeneration:1.98,kineticResistance:.15,thermalResistance:.7,plasmaResistance:.4,explosiveResistance:.5}}},{family:"flightsuit",name:"Flight Suit",mounts:[{key:"SecondaryWeapon",kind:"secondary"}],health:30,mass:100,batteryCapacity:7,oxygenTime:60,boostAcceleration:30,goodsCapacity:5,assetsCapacity:10,dataCapacity:10,footstepAudibleRange:1,losAnalysisRange:50,losAnalysisTime:1,grades:{1:{symbol:"flightsuit",modificationSlots:0,shieldStrength:7.5,shieldRegeneration:.55,kineticResistance:-.7,thermalResistance:.4,plasmaResistance:-.2,explosiveResistance:0}}}];var SUITS=deepFreeze(suits_default);var BY_FAMILY=/* @__PURE__ */createKeyIndex(SUITS,"family");var BY_NAME=/* @__PURE__ */createKeyIndex(SUITS,"name");var BY_SYMBOL=/* @__PURE__ */Object.freeze(Object.fromEntries(SUITS.flatMap(suit=>Object.entries(suit.grades).map(([grade,stats])=>[stats.symbol.toLowerCase(),Object.freeze({suit:suit,grade:Number(grade)})]))));function getSuitByFamily(family){return findInKeyIndex(BY_FAMILY,family,"getSuitByFamily: family")}function getSuitByName(name){return findInKeyIndex(BY_NAME,name,"getSuitByName: name")}function getSuitBySymbol(symbol){const key=normalizeKey(symbol,"getSuitBySymbol: symbol");return Object.hasOwn(BY_SYMBOL,key)?BY_SYMBOL[key]:null}function getSuitGrade(suit,grade){assertEquipmentGrade(grade,"getSuitGrade");return suit.grades[String(grade)]??null}export{SUITS,getSuitByFamily,getSuitByName,getSuitBySymbol,getSuitGrade};//# sourceMappingURL=chunk-UTWZZOSA.js.map
|