@shipload/sdk 1.0.0-next.3 → 1.0.0-next.31

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.
Files changed (99) hide show
  1. package/lib/shipload.d.ts +1849 -961
  2. package/lib/shipload.js +9089 -4854
  3. package/lib/shipload.js.map +1 -1
  4. package/lib/shipload.m.js +8958 -4805
  5. package/lib/shipload.m.js.map +1 -1
  6. package/lib/testing.d.ts +856 -0
  7. package/lib/testing.js +3739 -0
  8. package/lib/testing.js.map +1 -0
  9. package/lib/testing.m.js +3733 -0
  10. package/lib/testing.m.js.map +1 -0
  11. package/package.json +15 -2
  12. package/src/capabilities/craftable.ts +51 -0
  13. package/src/capabilities/crafting.test.ts +7 -0
  14. package/src/capabilities/crafting.ts +3 -3
  15. package/src/capabilities/gathering.ts +17 -7
  16. package/src/capabilities/index.ts +0 -1
  17. package/src/capabilities/modules.ts +6 -0
  18. package/src/capabilities/storage.ts +16 -1
  19. package/src/contracts/platform.ts +231 -3
  20. package/src/contracts/server.ts +816 -471
  21. package/src/data/capabilities.ts +14 -329
  22. package/src/data/capability-formulas.ts +76 -0
  23. package/src/data/catalog.ts +0 -5
  24. package/src/data/colors.ts +14 -47
  25. package/src/data/entities.json +46 -10
  26. package/src/data/item-ids.ts +15 -12
  27. package/src/data/items.json +302 -38
  28. package/src/data/kind-registry.json +85 -0
  29. package/src/data/kind-registry.ts +150 -0
  30. package/src/data/metadata.ts +100 -31
  31. package/src/data/recipes-runtime.ts +3 -23
  32. package/src/data/recipes.json +250 -113
  33. package/src/derivation/build-methods.ts +45 -0
  34. package/src/derivation/capabilities.ts +415 -0
  35. package/src/derivation/capability-mappings.ts +117 -0
  36. package/src/derivation/crafting.ts +23 -24
  37. package/src/derivation/index.ts +17 -2
  38. package/src/derivation/reserve-regen.ts +34 -0
  39. package/src/derivation/resources.ts +125 -38
  40. package/src/derivation/stars.test.ts +51 -0
  41. package/src/derivation/stars.ts +15 -0
  42. package/src/derivation/stats.ts +6 -6
  43. package/src/derivation/stratum.ts +15 -19
  44. package/src/derivation/tiers.ts +28 -7
  45. package/src/entities/entity.ts +98 -0
  46. package/src/entities/gamestate.ts +3 -28
  47. package/src/entities/makers.ts +91 -136
  48. package/src/entities/slot-multiplier.ts +39 -0
  49. package/src/errors.ts +10 -15
  50. package/src/format.ts +26 -4
  51. package/src/index-module.ts +189 -47
  52. package/src/managers/actions.ts +252 -83
  53. package/src/managers/base.ts +6 -2
  54. package/src/managers/construction-types.ts +79 -0
  55. package/src/managers/construction.ts +396 -0
  56. package/src/managers/context.ts +11 -1
  57. package/src/managers/entities.ts +18 -66
  58. package/src/managers/epochs.ts +40 -0
  59. package/src/managers/index.ts +17 -1
  60. package/src/managers/locations.ts +25 -29
  61. package/src/managers/nft.ts +28 -0
  62. package/src/managers/plot.ts +127 -0
  63. package/src/nft/atomicassets.abi.json +1342 -0
  64. package/src/nft/atomicassets.ts +237 -0
  65. package/src/nft/atomicdata.ts +130 -0
  66. package/src/nft/buildImmutableData.ts +321 -0
  67. package/src/nft/description.ts +37 -15
  68. package/src/nft/index.ts +3 -0
  69. package/src/resolution/describe-module.ts +5 -8
  70. package/src/resolution/display-name.ts +38 -10
  71. package/src/resolution/resolve-item.ts +22 -20
  72. package/src/scheduling/accessor.ts +68 -22
  73. package/src/scheduling/availability.ts +108 -0
  74. package/src/scheduling/energy.ts +48 -0
  75. package/src/scheduling/lane-core.ts +130 -0
  76. package/src/scheduling/lanes.ts +60 -0
  77. package/src/scheduling/projection.ts +121 -94
  78. package/src/scheduling/schedule.ts +237 -103
  79. package/src/scheduling/task-cargo.ts +46 -0
  80. package/src/shipload.ts +16 -1
  81. package/src/subscriptions/manager.ts +40 -6
  82. package/src/subscriptions/mappers.ts +3 -8
  83. package/src/subscriptions/types.ts +3 -2
  84. package/src/testing/catalog-hash.ts +19 -0
  85. package/src/testing/index.ts +2 -0
  86. package/src/testing/projection-parity.ts +143 -0
  87. package/src/travel/travel.ts +90 -13
  88. package/src/types/capabilities.ts +1 -0
  89. package/src/types/index.ts +0 -1
  90. package/src/types.ts +19 -12
  91. package/src/utils/cargo.ts +27 -0
  92. package/src/utils/display-name.ts +70 -0
  93. package/src/utils/system.ts +25 -24
  94. package/src/capabilities/loading.ts +0 -8
  95. package/src/entities/container.ts +0 -108
  96. package/src/entities/ship-deploy.ts +0 -258
  97. package/src/entities/ship.ts +0 -204
  98. package/src/entities/warehouse.ts +0 -119
  99. package/src/types/entity-traits.ts +0 -69
@@ -8,7 +8,6 @@ export interface StatMapping {
8
8
  stat: string
9
9
  capability: string
10
10
  attribute: string
11
- rationale: string
12
11
  }
13
12
 
14
13
  export const capabilityNames: string[] = [
@@ -22,21 +21,31 @@ export const capabilityNames: string[] = [
22
21
  'Crafter',
23
22
  'Launch',
24
23
  'Hauler',
24
+ 'Battery',
25
25
  ]
26
26
 
27
27
  export const capabilityAttributes: CapabilityAttribute[] = [
28
28
  {capability: 'Hull', attribute: 'mass', description: 'Total mass of the hull'},
29
29
  {capability: 'Storage', attribute: 'capacity', description: 'Maximum mass that can be stored'},
30
+ {
31
+ capability: 'Storage',
32
+ attribute: 'bonus',
33
+ description: 'Capacity bonus added by an installed Storage module',
34
+ },
30
35
  {capability: 'Movement', attribute: 'thrust', description: 'Propulsion force'},
31
36
  {capability: 'Movement', attribute: 'drain', description: 'Energy consumed per movement'},
32
37
  {capability: 'Energy', attribute: 'capacity', description: 'Maximum energy storage'},
33
38
  {capability: 'Energy', attribute: 'recharge', description: 'Energy regeneration rate'},
34
39
  {capability: 'Loader', attribute: 'mass', description: 'Weight of the loader unit itself'},
35
40
  {capability: 'Loader', attribute: 'thrust', description: 'Loading speed/force'},
41
+ {
42
+ capability: 'Loader',
43
+ attribute: 'quantity',
44
+ description: 'Number of cargo items moved per load operation',
45
+ },
36
46
  {capability: 'Gathering', attribute: 'yield', description: 'Mass gathered per second'},
37
47
  {capability: 'Gathering', attribute: 'drain', description: 'Energy consumed per gather'},
38
48
  {capability: 'Gathering', attribute: 'depth', description: 'Maximum gather depth'},
39
- {capability: 'Gathering', attribute: 'speed', description: 'Gathering speed/penetration'},
40
49
  {capability: 'Warp', attribute: 'range', description: 'Maximum warp distance'},
41
50
  {capability: 'Crafter', attribute: 'speed', description: 'Crafting time per item'},
42
51
  {
@@ -63,322 +72,10 @@ export const capabilityAttributes: CapabilityAttribute[] = [
63
72
  attribute: 'drain',
64
73
  description: 'Energy consumed per target during haul-beam operation',
65
74
  },
66
- ]
67
-
68
- export const statMappings: StatMapping[] = [
69
- {
70
- stat: 'Strength',
71
- capability: 'Gathering',
72
- attribute: 'yield',
73
- rationale: 'Raw mechanical force drives faster gathering',
74
- },
75
- {
76
- stat: 'Strength',
77
- capability: 'Storage',
78
- attribute: 'capacity',
79
- rationale: 'Stronger walls hold more capacity per mass',
80
- },
81
- {
82
- stat: 'Strength',
83
- capability: 'Launch',
84
- attribute: 'capacity',
85
- rationale: 'Stronger housing handles larger launch loads',
86
- },
87
- {
88
- stat: 'Tolerance',
89
- capability: 'Movement',
90
- attribute: 'thrust',
91
- rationale: 'Engine components that tolerate more can push harder',
92
- },
93
- {
94
- stat: 'Tolerance',
95
- capability: 'Energy',
96
- attribute: 'recharge',
97
- rationale: 'Generator housing withstands stress for faster recharge',
98
- },
99
- {
100
- stat: 'Tolerance',
101
- capability: 'Gathering',
102
- attribute: 'depth',
103
- rationale: 'Housing withstands pressure/heat at extreme depths',
104
- },
105
- {
106
- stat: 'Tolerance',
107
- capability: 'Warp',
108
- attribute: 'range',
109
- rationale: 'Warp drive housing withstands extreme forces',
110
- },
111
- {
112
- stat: 'Density',
113
- capability: 'Hull',
114
- attribute: 'mass',
115
- rationale: 'Lighter metal = lighter hull',
116
- },
117
- {
118
- stat: 'Density',
119
- capability: 'Loader',
120
- attribute: 'mass',
121
- rationale: 'Lighter metal = lighter loader units',
122
- },
123
- {
124
- stat: 'Density',
125
- capability: 'Movement',
126
- attribute: 'drain',
127
- rationale: 'Lighter components require less energy to move',
128
- },
129
- {
130
- stat: 'Conductivity',
131
- capability: 'Movement',
132
- attribute: 'drain',
133
- rationale: 'Efficient energy transfer reduces movement energy cost',
134
- },
135
- {
136
- stat: 'Conductivity',
137
- capability: 'Gathering',
138
- attribute: 'drain',
139
- rationale: 'Efficient energy transfer reduces gathering energy cost',
140
- },
141
- {
142
- stat: 'Conductivity',
143
- capability: 'Crafter',
144
- attribute: 'drain',
145
- rationale: 'Efficient energy transfer reduces crafting energy cost',
146
- },
147
- {
148
- stat: 'Conductivity',
149
- capability: 'Energy',
150
- attribute: 'recharge',
151
- rationale: 'Better conductivity speeds energy flow during recharge',
152
- },
153
- {
154
- stat: 'Ductility',
155
- capability: 'Crafter',
156
- attribute: 'quality',
157
- rationale: 'Precise shaping enables tighter crafting tolerances',
158
- },
159
- {
160
- stat: 'Ductility',
161
- capability: 'Gathering',
162
- attribute: 'yield',
163
- rationale: 'Precisely shaped conduit components gather faster',
164
- },
165
- {
166
- stat: 'Ductility',
167
- capability: 'Storage',
168
- attribute: 'capacity',
169
- rationale: 'Precision-formed container walls maximize volume',
170
- },
171
- {
172
- stat: 'Ductility',
173
- capability: 'Loader',
174
- attribute: 'mass',
175
- rationale: 'Precision-formed precious metal reduces loader unit mass',
176
- },
177
- {
178
- stat: 'Reflectivity',
179
- capability: 'Gathering',
180
- attribute: 'depth',
181
- rationale: 'Reflective heat shielding protects equipment at depth',
182
- },
183
- {
184
- stat: 'Reflectivity',
185
- capability: 'Launch',
186
- attribute: 'range',
187
- rationale: 'Reflective surfaces focus electromagnetic launch energy',
188
- },
189
- {
190
- stat: 'Volatility',
191
- capability: 'Gathering',
192
- attribute: 'yield',
193
- rationale: 'Energy release powers faster gathering',
194
- },
195
- {
196
- stat: 'Volatility',
197
- capability: 'Movement',
198
- attribute: 'thrust',
199
- rationale: 'Energy release drives propulsion force',
200
- },
201
- {
202
- stat: 'Volatility',
203
- capability: 'Loader',
204
- attribute: 'thrust',
205
- rationale: 'Energy release powers loader motors',
206
- },
207
- {
208
- stat: 'Volatility',
209
- capability: 'Launch',
210
- attribute: 'capacity',
211
- rationale: 'Energy release enables launching heavier payloads',
212
- },
213
- {
214
- stat: 'Reactivity',
215
- capability: 'Crafter',
216
- attribute: 'speed',
217
- rationale: 'Reactive gases accelerate chemical/thermal processing',
218
- },
219
- {
220
- stat: 'Reactivity',
221
- capability: 'Gathering',
222
- attribute: 'speed',
223
- rationale: 'Reactive gases manage heat/friction during gathering',
224
- },
225
75
  {
226
- stat: 'Reactivity',
227
- capability: 'Launch',
228
- attribute: 'drain',
229
- rationale: 'Reactive gas medium reduces electromagnetic resistance',
230
- },
231
- {
232
- stat: 'Thermal',
233
- capability: 'Crafter',
234
- attribute: 'quality',
235
- rationale: 'Precise thermal control during fabrication',
236
- },
237
- {
238
- stat: 'Thermal',
239
- capability: 'Gathering',
240
- attribute: 'drain',
241
- rationale: 'Thermal management reduces energy waste during gathering',
242
- },
243
- {
244
- stat: 'Thermal',
245
- capability: 'Energy',
246
- attribute: 'capacity',
247
- rationale: 'Thermal management enables denser energy storage',
248
- },
249
- {
250
- stat: 'Resonance',
251
- capability: 'Energy',
252
- attribute: 'capacity',
253
- rationale: 'Resonating crystals store energy in fields',
254
- },
255
- {
256
- stat: 'Resonance',
257
- capability: 'Warp',
258
- attribute: 'range',
259
- rationale: 'Resonant crystals amplify warp field projection',
260
- },
261
- {
262
- stat: 'Resonance',
263
- capability: 'Launch',
264
- attribute: 'range',
265
- rationale: 'Resonant crystals focus electromagnetic launch field',
266
- },
267
- {
268
- stat: 'Resonance',
269
- capability: 'Launch',
270
- attribute: 'capacity',
271
- rationale: 'Stronger resonant field launches heavier payloads',
272
- },
273
- {
274
- stat: 'Hardness',
275
- capability: 'Crafter',
276
- attribute: 'speed',
277
- rationale: 'Hard tooling surfaces cut and shape materials faster',
278
- },
279
- {
280
- stat: 'Hardness',
281
- capability: 'Launch',
282
- attribute: 'drain',
283
- rationale: 'Hard rail surfaces reduce friction, less energy wasted',
284
- },
285
- {
286
- stat: 'Clarity',
287
- capability: 'Energy',
288
- attribute: 'recharge',
289
- rationale: 'Flawless crystals enable smoother energy flow during recharge',
290
- },
291
- {
292
- stat: 'Clarity',
293
- capability: 'Crafter',
294
- attribute: 'quality',
295
- rationale: 'Precision optics for calibration during fabrication',
296
- },
297
- {
298
- stat: 'Clarity',
299
- capability: 'Crafter',
300
- attribute: 'drain',
301
- rationale: 'Precision computing optimizes energy routing in factory',
302
- },
303
- {
304
- stat: 'Plasticity',
305
- capability: 'Crafter',
306
- attribute: 'speed',
307
- rationale: 'Easily reshaped materials speed up processing',
308
- },
309
- {
310
- stat: 'Plasticity',
311
- capability: 'Movement',
312
- attribute: 'thrust',
313
- rationale: 'Flexible polymer seals reduce friction in propulsion',
314
- },
315
- {
316
- stat: 'Plasticity',
317
- capability: 'Loader',
318
- attribute: 'thrust',
319
- rationale: 'Flexible joints improve loader force transfer',
320
- },
321
- {
322
- stat: 'Insulation',
323
- capability: 'Movement',
324
- attribute: 'drain',
325
- rationale: 'Better insulation reduces energy loss during movement',
326
- },
327
- {
328
- stat: 'Insulation',
329
- capability: 'Gathering',
330
- attribute: 'drain',
331
- rationale: 'Better insulation reduces energy loss during gathering',
332
- },
333
- {
334
- stat: 'Insulation',
335
- capability: 'Crafter',
336
- attribute: 'drain',
337
- rationale: 'Better insulation reduces energy loss during crafting',
338
- },
339
- {
340
- stat: 'Insulation',
341
- capability: 'Launch',
342
- attribute: 'drain',
343
- rationale: 'Better insulation reduces energy loss during launch',
344
- },
345
- {
346
- stat: 'Purity',
347
- capability: 'Storage',
348
- attribute: 'capacity',
349
- rationale: 'Purer composites make better containers',
350
- },
351
- {
352
- stat: 'Purity',
353
- capability: 'Gathering',
354
- attribute: 'speed',
355
- rationale: 'Purer bio-lubricants reduce friction during gathering',
356
- },
357
- {
358
- stat: 'Purity',
359
- capability: 'Energy',
360
- attribute: 'capacity',
361
- rationale: 'Purer organic electrolytes store more charge',
362
- },
363
- {
364
- stat: 'Resonance',
365
- capability: 'Hauler',
366
- attribute: 'capacity',
367
- rationale:
368
- 'Resonant field strength determines how many targets the haul beam can lock onto simultaneously.',
369
- },
370
- {
371
- stat: 'Conductivity',
372
- capability: 'Hauler',
373
- attribute: 'efficiency',
374
- rationale: 'Energy-transfer efficiency reduces the thrust penalty from each hauled target.',
375
- },
376
- {
377
- stat: 'Clarity',
378
- capability: 'Hauler',
379
- attribute: 'drain',
380
- rationale:
381
- 'Clarity-focused energy routing reduces per-target drain during haul-beam operation.',
76
+ capability: 'Battery',
77
+ attribute: 'bonus',
78
+ description: 'Energy capacity bonus added by an installed Battery module',
382
79
  },
383
80
  ]
384
81
 
@@ -394,15 +91,3 @@ export function getCapabilityAttributes(capability?: string): CapabilityAttribut
394
91
  }
395
92
  return capabilityAttributes
396
93
  }
397
-
398
- export function getStatMappings(): StatMapping[] {
399
- return statMappings
400
- }
401
-
402
- export function getStatMappingsForStat(stat: string): StatMapping[] {
403
- return statMappings.filter((m) => m.stat === stat)
404
- }
405
-
406
- export function getStatMappingsForCapability(capability: string): StatMapping[] {
407
- return statMappings.filter((m) => m.capability === capability)
408
- }
@@ -0,0 +1,76 @@
1
+ export interface SlotConsumer {
2
+ capability: string
3
+ attribute: string
4
+ }
5
+
6
+ export type SlotConsumerKind =
7
+ | 'engine'
8
+ | 'generator'
9
+ | 'gatherer'
10
+ | 'loader'
11
+ | 'crafter'
12
+ | 'storage'
13
+ | 'hauler'
14
+ | 'warp'
15
+ | 'battery'
16
+ | 'ship-t1'
17
+ | 'container-t1'
18
+ | 'warehouse-t1'
19
+ | 'extractor-t1'
20
+ | 'container-t2'
21
+
22
+ const ENTITY_HULL_SLOTS: Record<number, SlotConsumer> = {
23
+ 0: {capability: 'Storage', attribute: 'capacity'},
24
+ 1: {capability: 'Hull', attribute: 'mass'},
25
+ 2: {capability: 'Storage', attribute: 'capacity'},
26
+ 3: {capability: 'Storage', attribute: 'capacity'},
27
+ }
28
+
29
+ export const SLOT_FORMULAS: Record<SlotConsumerKind, Record<number, SlotConsumer>> = {
30
+ engine: {
31
+ 0: {capability: 'Movement', attribute: 'thrust'},
32
+ 1: {capability: 'Movement', attribute: 'drain'},
33
+ },
34
+ generator: {
35
+ 0: {capability: 'Energy', attribute: 'capacity'},
36
+ 1: {capability: 'Energy', attribute: 'recharge'},
37
+ },
38
+ gatherer: {
39
+ 0: {capability: 'Gathering', attribute: 'yield'},
40
+ 1: {capability: 'Gathering', attribute: 'depth'},
41
+ 2: {capability: 'Gathering', attribute: 'drain'},
42
+ },
43
+ loader: {
44
+ 0: {capability: 'Loader', attribute: 'mass'},
45
+ 1: {capability: 'Loader', attribute: 'thrust'},
46
+ },
47
+ crafter: {
48
+ 0: {capability: 'Crafter', attribute: 'speed'},
49
+ 1: {capability: 'Crafter', attribute: 'drain'},
50
+ },
51
+ storage: {
52
+ 0: {capability: 'Storage', attribute: 'bonus'},
53
+ 1: {capability: 'Storage', attribute: 'bonus'},
54
+ 2: {capability: 'Storage', attribute: 'bonus'},
55
+ 3: {capability: 'Storage', attribute: 'bonus'},
56
+ },
57
+ hauler: {
58
+ 0: {capability: 'Hauler', attribute: 'capacity'},
59
+ 1: {capability: 'Hauler', attribute: 'efficiency'},
60
+ 2: {capability: 'Hauler', attribute: 'drain'},
61
+ },
62
+ warp: {
63
+ 0: {capability: 'Warp', attribute: 'range'},
64
+ },
65
+ battery: {
66
+ 0: {capability: 'Battery', attribute: 'bonus'},
67
+ 1: {capability: 'Battery', attribute: 'bonus'},
68
+ 2: {capability: 'Battery', attribute: 'bonus'},
69
+ 3: {capability: 'Battery', attribute: 'bonus'},
70
+ },
71
+ 'ship-t1': ENTITY_HULL_SLOTS,
72
+ 'container-t1': ENTITY_HULL_SLOTS,
73
+ 'warehouse-t1': ENTITY_HULL_SLOTS,
74
+ 'extractor-t1': ENTITY_HULL_SLOTS,
75
+ 'container-t2': ENTITY_HULL_SLOTS,
76
+ }
@@ -1,6 +1,5 @@
1
1
  import {UInt16, type UInt16Type} from '@wharfkit/antelope'
2
2
  import items from './items.json'
3
- import {tierLabels} from './colors'
4
3
  import {itemMetadata} from './metadata'
5
4
  import {
6
5
  CATEGORY_LABELS,
@@ -115,10 +114,6 @@ export function categoryLabel(cat: ResourceCategory): string {
115
114
  return CATEGORY_LABELS[cat]
116
115
  }
117
116
 
118
- export function tierLabel(tier: number): string {
119
- return tierLabels[tier] ?? `T${tier}`
120
- }
121
-
122
117
  // Chain rescat enum order from server::getrescats.
123
118
  // IMPORTANT: gas=1, crystal=4 — does NOT match the player-facing T-prefix
124
119
  // order (ore=100, crystal=200, gas=300, regolith=400, biomass=500).
@@ -3,7 +3,7 @@ import type {ResourceCategory} from '../types'
3
3
  export const categoryColors: Record<ResourceCategory, string> = {
4
4
  ore: '#C26D3F',
5
5
  crystal: '#4ADBFF',
6
- gas: '#B8E4A0',
6
+ gas: '#B877FF',
7
7
  regolith: '#C4A57B',
8
8
  biomass: '#5A8B3E',
9
9
  }
@@ -21,65 +21,32 @@ export const tierColors: Record<number, string> = {
21
21
  10: '#ffffff',
22
22
  }
23
23
 
24
- // Rarity-tier names (badge labels). Kept disjoint from TIER_ADJECTIVES in
25
- // types.ts (resource descriptors like "Pristine Ore") so the two vocabularies
26
- // never collide at any tier.
27
- export const tierLabels: Record<number, string> = {
28
- 1: 'Common',
29
- 2: 'Uncommon',
30
- 3: 'Rare',
31
- 4: 'Epic',
32
- 5: 'Legendary',
33
- 6: 'Mythic',
34
- 7: 'Divine',
35
- 8: 'Celestial',
36
- 9: 'Eternal',
37
- 10: 'Transcendent',
38
- }
39
-
40
- export const categoryIcons: Record<ResourceCategory, string> = {
41
- ore: '⬡',
42
- crystal: '◈',
43
- gas: '◎',
44
- regolith: '■',
45
- biomass: '❋',
46
- }
47
-
48
- export type CategoryIconShape = 'hex' | 'diamond' | 'star' | 'circle' | 'square'
49
-
50
- export const categoryIconShapes: Record<ResourceCategory, CategoryIconShape> = {
51
- ore: 'hex',
52
- crystal: 'diamond',
53
- gas: 'circle',
54
- regolith: 'square',
55
- biomass: 'star',
56
- }
57
-
58
24
  export const componentIcon = '▣'
59
25
  export const moduleIcon = '⬢'
60
26
 
61
27
  export const itemAbbreviations: Record<number, string> = {
62
- 10001: 'HP',
63
- 10002: 'CL',
64
- 10003: 'TC',
65
- 10004: 'PC',
66
- 10005: 'DS',
67
- 10006: 'EP',
68
- 10007: 'CA',
69
- 10008: 'TB',
70
- 10009: 'RC',
71
- 10010: 'FA',
28
+ 10001: 'PL',
29
+ 10002: 'FR',
30
+ 10003: 'PC',
31
+ 10004: 'RS',
32
+ 10005: 'BM',
33
+ 10006: 'SN',
34
+ 10007: 'PM',
35
+ 10008: 'CR',
36
+ 10009: 'RX',
37
+ 10010: 'RE',
72
38
  10100: 'EN',
73
39
  10101: 'GN',
74
40
  10102: 'EX',
75
41
  10103: 'LD',
76
42
  10104: 'MF',
77
43
  10105: 'ST',
44
+ 10106: 'HL',
78
45
  10107: 'WP',
79
46
  10200: 'CT',
80
47
  10201: 'SH',
81
48
  10202: 'WH',
82
- 20001: 'HP',
83
- 20002: 'CL',
49
+ 20001: 'PL',
50
+ 20002: 'FR',
84
51
  20200: 'CT',
85
52
  }
@@ -7,19 +7,24 @@
7
7
  "entityItemId": 10201,
8
8
  "slots": [
9
9
  {
10
- "type": "any"
10
+ "type": "any",
11
+ "outputPct": 100
11
12
  },
12
13
  {
13
- "type": "any"
14
+ "type": "any",
15
+ "outputPct": 100
14
16
  },
15
17
  {
16
- "type": "any"
18
+ "type": "any",
19
+ "outputPct": 100
17
20
  },
18
21
  {
19
- "type": "any"
22
+ "type": "any",
23
+ "outputPct": 100
20
24
  },
21
25
  {
22
- "type": "any"
26
+ "type": "any",
27
+ "outputPct": 100
23
28
  }
24
29
  ]
25
30
  },
@@ -27,19 +32,50 @@
27
32
  "entityItemId": 10202,
28
33
  "slots": [
29
34
  {
30
- "type": "loader"
35
+ "type": "loader",
36
+ "outputPct": 100
31
37
  },
32
38
  {
33
- "type": "storage"
39
+ "type": "storage",
40
+ "outputPct": 100
34
41
  },
35
42
  {
36
- "type": "storage"
43
+ "type": "storage",
44
+ "outputPct": 100
37
45
  },
38
46
  {
39
- "type": "storage"
47
+ "type": "storage",
48
+ "outputPct": 100
40
49
  },
41
50
  {
42
- "type": "storage"
51
+ "type": "storage",
52
+ "outputPct": 100
53
+ }
54
+ ]
55
+ },
56
+ {
57
+ "entityItemId": 10203,
58
+ "slots": [
59
+ {
60
+ "type": "generator",
61
+ "outputPct": 100
62
+ },
63
+ {
64
+ "type": "gatherer",
65
+ "outputPct": 100
66
+ }
67
+ ]
68
+ },
69
+ {
70
+ "entityItemId": 10204,
71
+ "slots": [
72
+ {
73
+ "type": "generator",
74
+ "outputPct": 100
75
+ },
76
+ {
77
+ "type": "crafter",
78
+ "outputPct": 100
43
79
  }
44
80
  ]
45
81
  },
@@ -50,16 +50,16 @@ export const ITEM_BIOMASS_T7 = 507
50
50
  export const ITEM_BIOMASS_T8 = 508
51
51
  export const ITEM_BIOMASS_T9 = 509
52
52
  export const ITEM_BIOMASS_T10 = 510
53
- export const ITEM_HULL_PLATES = 10001
54
- export const ITEM_CARGO_LINING = 10002
55
- export const ITEM_THRUSTER_CORE = 10003
56
- export const ITEM_POWER_CELL = 10004
57
- export const ITEM_MATTER_CONDUIT = 10005
58
- export const ITEM_SURVEY_PROBE = 10006
59
- export const ITEM_CARGO_ARM = 10007
60
- export const ITEM_TOOL_BIT = 10008
61
- export const ITEM_REACTION_CHAMBER = 10009
62
- export const ITEM_FOCUSING_ARRAY = 10010
53
+ export const ITEM_PLATE = 10001
54
+ export const ITEM_FRAME = 10002
55
+ export const ITEM_PLASMA_CELL = 10003
56
+ export const ITEM_RESONATOR = 10004
57
+ export const ITEM_BEAM = 10005
58
+ export const ITEM_SENSOR = 10006
59
+ export const ITEM_POLYMER = 10007
60
+ export const ITEM_CERAMIC = 10008
61
+ export const ITEM_REACTOR = 10009
62
+ export const ITEM_RESIN = 10010
63
63
  export const ITEM_ENGINE_T1 = 10100
64
64
  export const ITEM_GENERATOR_T1 = 10101
65
65
  export const ITEM_GATHERER_T1 = 10102
@@ -68,9 +68,12 @@ export const ITEM_CRAFTER_T1 = 10104
68
68
  export const ITEM_STORAGE_T1 = 10105
69
69
  export const ITEM_HAULER_T1 = 10106
70
70
  export const ITEM_WARP_T1 = 10107
71
+ export const ITEM_BATTERY_T1 = 10108
71
72
  export const ITEM_CONTAINER_T1_PACKED = 10200
72
73
  export const ITEM_SHIP_T1_PACKED = 10201
73
74
  export const ITEM_WAREHOUSE_T1_PACKED = 10202
74
- export const ITEM_HULL_PLATES_T2 = 20001
75
- export const ITEM_CARGO_LINING_T2 = 20002
75
+ export const ITEM_EXTRACTOR_T1_PACKED = 10203
76
+ export const ITEM_FACTORY_T1_PACKED = 10204
77
+ export const ITEM_PLATE_T2 = 20001
78
+ export const ITEM_FRAME_T2 = 20002
76
79
  export const ITEM_CONTAINER_T2_PACKED = 20200