@shipload/sdk 2.0.0-rc14 → 2.0.0-rc15

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shipload/sdk",
3
3
  "description": "SDKs for Shipload",
4
- "version": "2.0.0-rc14",
4
+ "version": "2.0.0-rc15",
5
5
  "homepage": "https://github.com/shipload/sdk",
6
6
  "license": "MIT",
7
7
  "main": "lib/shipload.js",
@@ -11,42 +11,39 @@ export interface CategoryInfo {
11
11
 
12
12
  const categories: CategoryInfo[] = [
13
13
  {
14
- id: 'metal',
15
- name: 'Metals',
16
- label: 'Metal',
17
- description: 'Structural, strong, heavy — hulls, frames, load-bearing components',
18
- color: categoryColors.metal,
14
+ id: 'ore',
15
+ name: 'Ore',
16
+ label: 'Ore',
17
+ description: 'Structural metal-bearing rock — hulls, frames, load-bearing components',
18
+ color: categoryColors.ore,
19
19
  },
20
20
  {
21
- id: 'precious',
22
- name: 'Precious Metals',
23
- label: 'Precious Metal',
24
- description:
25
- 'Conductive, corrosion-resistant — electronics, energy systems, precision components',
26
- color: categoryColors.precious,
21
+ id: 'crystal',
22
+ name: 'Crystal',
23
+ label: 'Crystal',
24
+ description: 'Crystalline lattice — conductors, energy storage, resonant systems',
25
+ color: categoryColors.crystal,
27
26
  },
28
27
  {
29
28
  id: 'gas',
30
- name: 'Gases',
29
+ name: 'Gas',
31
30
  label: 'Gas',
32
- description:
33
- 'Energy, fuel, volatile/reactive — propulsion, thermal processing, chemical reactions',
31
+ description: 'Atmospheric volatile — propulsion, thermal processing, chemical reactions',
34
32
  color: categoryColors.gas,
35
33
  },
36
34
  {
37
- id: 'mineral',
38
- name: 'Minerals',
39
- label: 'Mineral',
40
- description:
41
- 'Crystalline, hard, precise — sensors, optics, energy storage, cutting surfaces',
42
- color: categoryColors.mineral,
35
+ id: 'regolith',
36
+ name: 'Regolith',
37
+ label: 'Regolith',
38
+ description: 'Surface mineral dust — sensors, optics, computation, cutting surfaces',
39
+ color: categoryColors.regolith,
43
40
  },
44
41
  {
45
- id: 'organic',
46
- name: 'Organics',
47
- label: 'Organic',
48
- description: 'Adaptive, biological, polymer — insulation, composites, bio-processes',
49
- color: categoryColors.organic,
42
+ id: 'biomass',
43
+ name: 'Biomass',
44
+ label: 'Biomass',
45
+ description: 'Organic polymer — insulation, composites, bio-processes',
46
+ color: categoryColors.biomass,
50
47
  },
51
48
  ]
52
49
 
@@ -1,11 +1,11 @@
1
1
  import type {ResourceCategory, ResourceTier} from '../types'
2
2
 
3
3
  export const categoryColors: Record<ResourceCategory, string> = {
4
- metal: '#5B9BD5',
5
- precious: '#D4A843',
6
- gas: '#7EC8E3',
7
- mineral: '#B8A9C9',
8
- organic: '#6B8E5A',
4
+ ore: '#C26D3F',
5
+ crystal: '#4ADBFF',
6
+ gas: '#B8E4A0',
7
+ regolith: '#C4A57B',
8
+ biomass: '#5A8B3E',
9
9
  }
10
10
 
11
11
  export const tierColors: Record<ResourceTier, string> = {
@@ -25,21 +25,21 @@ export const tierLabels: Record<ResourceTier, string> = {
25
25
  }
26
26
 
27
27
  export const categoryIcons: Record<ResourceCategory, string> = {
28
- metal: '⬡',
29
- precious: '◈',
28
+ ore: '⬡',
29
+ crystal: '◈',
30
30
  gas: '◎',
31
- mineral: '',
32
- organic: '❋',
31
+ regolith: '',
32
+ biomass: '❋',
33
33
  }
34
34
 
35
35
  export type CategoryIconShape = 'hex' | 'diamond' | 'star' | 'circle' | 'square'
36
36
 
37
37
  export const categoryIconShapes: Record<ResourceCategory, CategoryIconShape> = {
38
- metal: 'hex',
39
- precious: 'diamond',
38
+ ore: 'hex',
39
+ crystal: 'diamond',
40
40
  gas: 'circle',
41
- mineral: 'square',
42
- organic: 'star',
41
+ regolith: 'square',
42
+ biomass: 'star',
43
43
  }
44
44
 
45
45
  export const componentIcon = '▣'
@@ -1,17 +1,17 @@
1
1
  [
2
- {"id": 26, "name": "Iron", "description": "A versatile metal used in hulls and structures.", "mass": 30000, "category": "metal", "tier": "t1", "color": "#B7410E"},
3
- {"id": 13, "name": "Aluminum", "description": "A lightweight metal for structural components.", "mass": 27000, "category": "metal", "tier": "t2", "color": "#A8B5C2"},
4
- {"id": 24, "name": "Chromium", "description": "A hard, corrosion-resistant alloy metal.", "mass": 52000, "category": "metal", "tier": "t3", "color": "#D4E6F1"},
5
- {"id": 29, "name": "Copper", "description": "A conductive metal for electronics and wiring.", "mass": 40000, "category": "precious", "tier": "t1", "color": "#B87333"},
6
- {"id": 47, "name": "Silver", "description": "A high-conductivity metal for precision components.", "mass": 55000, "category": "precious", "tier": "t2", "color": "#C0C0C0"},
7
- {"id": 79, "name": "Gold", "description": "A corrosion-proof metal for advanced electronics.", "mass": 70000, "category": "precious", "tier": "t3", "color": "#FFD700"},
8
- {"id": 1, "name": "Hydrogen", "description": "A lightweight gas used for fuel cells and propulsion.", "mass": 15000, "category": "gas", "tier": "t1", "color": "#7EC8E3"},
9
- {"id": 2, "name": "Helium", "description": "An inert noble gas used in energy systems.", "mass": 2000, "category": "gas", "tier": "t2", "color": "#F5E6CC"},
10
- {"id": 18, "name": "Argon", "description": "A noble gas used in industrial and energy applications.", "mass": 8000, "category": "gas", "tier": "t3", "color": "#9B59B6"},
11
- {"id": 14, "name": "Silicon", "description": "A semiconductor used in sensors and computing.", "mass": 22000, "category": "mineral", "tier": "t1", "color": "#B8A9C9"},
12
- {"id": 1000, "name": "Quartz", "description": "A crystalline mineral for sensors and optics.", "mass": 35000, "category": "mineral", "tier": "t2", "color": "#E8D5B7"},
13
- {"id": 1001, "name": "Sapphire", "description": "A precious crystal for precision instruments.", "mass": 45000, "category": "mineral", "tier": "t3", "color": "#0F52BA"},
14
- {"id": 6, "name": "Carbon", "description": "A versatile element for life support and coatings.", "mass": 15000, "category": "organic", "tier": "t1", "color": "#4A4A4A"},
15
- {"id": 1003, "name": "Biomass", "description": "Organic matter for life support systems.", "mass": 30000, "category": "organic", "tier": "t2", "color": "#8B4513"},
16
- {"id": 1002, "name": "Resin", "description": "A fossilized organic compound for coatings and sealants.", "mass": 25000, "category": "organic", "tier": "t3", "color": "#DAA520"}
2
+ {"id": 101, "name": "", "description": "", "mass": 30000, "category": "ore", "tier": "t1", "color": "#C26D3F"},
3
+ {"id": 102, "name": "", "description": "", "mass": 27000, "category": "ore", "tier": "t2", "color": "#C26D3F"},
4
+ {"id": 103, "name": "", "description": "", "mass": 52000, "category": "ore", "tier": "t3", "color": "#C26D3F"},
5
+ {"id": 201, "name": "", "description": "", "mass": 40000, "category": "crystal", "tier": "t1", "color": "#4ADBFF"},
6
+ {"id": 202, "name": "", "description": "", "mass": 55000, "category": "crystal", "tier": "t2", "color": "#4ADBFF"},
7
+ {"id": 203, "name": "", "description": "", "mass": 70000, "category": "crystal", "tier": "t3", "color": "#4ADBFF"},
8
+ {"id": 301, "name": "", "description": "", "mass": 15000, "category": "gas", "tier": "t1", "color": "#B8E4A0"},
9
+ {"id": 302, "name": "", "description": "", "mass": 2000, "category": "gas", "tier": "t2", "color": "#B8E4A0"},
10
+ {"id": 303, "name": "", "description": "", "mass": 8000, "category": "gas", "tier": "t3", "color": "#B8E4A0"},
11
+ {"id": 401, "name": "", "description": "", "mass": 22000, "category": "regolith", "tier": "t1", "color": "#C4A57B"},
12
+ {"id": 402, "name": "", "description": "", "mass": 35000, "category": "regolith", "tier": "t2", "color": "#C4A57B"},
13
+ {"id": 403, "name": "", "description": "", "mass": 45000, "category": "regolith", "tier": "t3", "color": "#C4A57B"},
14
+ {"id": 501, "name": "", "description": "", "mass": 15000, "category": "biomass", "tier": "t1", "color": "#5A8B3E"},
15
+ {"id": 502, "name": "", "description": "", "mass": 30000, "category": "biomass", "tier": "t2", "color": "#5A8B3E"},
16
+ {"id": 503, "name": "", "description": "", "mass": 25000, "category": "biomass", "tier": "t3", "color": "#5A8B3E"}
17
17
  ]
@@ -96,39 +96,39 @@ export const components: ComponentDefinition[] = [
96
96
  {
97
97
  id: ITEM_HULL_PLATES,
98
98
  name: 'Hull Plates',
99
- description: 'Structural plating formed from metal. Used in hulls, containers, and frames.',
99
+ description: 'Structural plating formed from ore. Used in hulls, containers, and frames.',
100
100
  color: '#7B8D9E',
101
101
  mass: 50000,
102
102
  stats: [
103
- {key: 'strength', source: 'metal'},
104
- {key: 'density', source: 'metal'},
103
+ {key: 'strength', source: 'ore'},
104
+ {key: 'density', source: 'ore'},
105
105
  ],
106
- recipe: [{category: 'metal', quantity: 15}],
106
+ recipe: [{category: 'ore', quantity: 15}],
107
107
  usedIn: [
108
108
  {type: 'entity', name: 'Container'},
109
- {type: 'entity', name: 'Warehouse T1'},
110
- {type: 'entity', name: 'Ship T1'},
109
+ {type: 'entity', name: 'Warehouse'},
110
+ {type: 'entity', name: 'Ship'},
111
111
  ],
112
112
  },
113
113
  {
114
114
  id: ITEM_CARGO_LINING,
115
115
  name: 'Cargo Lining',
116
116
  description:
117
- 'Precision-formed composite lining for cargo storage. Combines precious metal shaping with organic sealing.',
118
- color: '#D4A843',
117
+ 'Composite lining formed from fine regolith bound in biomass polymer. Dense enough to seal cargo holds, flexible enough to absorb vibration.',
118
+ color: '#C4A57B',
119
119
  mass: 30000,
120
120
  stats: [
121
- {key: 'ductility', source: 'precious'},
122
- {key: 'purity', source: 'organic'},
121
+ {key: 'fineness', source: 'regolith'},
122
+ {key: 'saturation', source: 'biomass'},
123
123
  ],
124
124
  recipe: [
125
- {category: 'precious', quantity: 6},
126
- {category: 'organic', quantity: 14},
125
+ {category: 'regolith' as ResourceCategory, quantity: 10},
126
+ {category: 'biomass' as ResourceCategory, quantity: 20},
127
127
  ],
128
128
  usedIn: [
129
129
  {type: 'entity', name: 'Container'},
130
- {type: 'entity', name: 'Warehouse T1'},
131
- {type: 'entity', name: 'Ship T1'},
130
+ {type: 'module', name: 'Loader'},
131
+ {type: 'module', name: 'Storage'},
132
132
  ],
133
133
  },
134
134
  {
@@ -147,73 +147,76 @@ export const components: ComponentDefinition[] = [
147
147
  {
148
148
  id: ITEM_POWER_CELL,
149
149
  name: 'Power Cell',
150
- description: 'Crystalline energy storage matrix formed from resonant minerals.',
151
- color: '#7B5AE8',
150
+ description: 'Crystalline energy storage matrix. Resonant lattices retain and release charge.',
151
+ color: '#4ADBFF',
152
152
  mass: 30000,
153
153
  stats: [
154
- {key: 'resonance', source: 'mineral'},
155
- {key: 'clarity', source: 'mineral'},
154
+ {key: 'resonance', source: 'crystal'},
155
+ {key: 'reflectivity', source: 'crystal'},
156
+ ],
157
+ recipe: [{category: 'crystal' as ResourceCategory, quantity: 20}],
158
+ usedIn: [
159
+ {type: 'module', name: 'Generator'},
160
+ {type: 'module', name: 'Hauler'},
156
161
  ],
157
- recipe: [{category: 'mineral' as ResourceCategory, quantity: 20}],
158
- usedIn: [{type: 'module', name: 'Generator'}],
159
162
  },
160
163
  {
161
164
  id: ITEM_MATTER_CONDUIT,
162
165
  name: 'Matter Conduit',
163
- description: 'Heavy-duty metal shaft used in gathering equipment.',
166
+ description: 'Heavy-duty ore shaft used in gathering equipment.',
164
167
  color: '#7B8D9E',
165
168
  mass: 50000,
166
169
  stats: [
167
- {key: 'strength', source: 'metal'},
168
- {key: 'tolerance', source: 'metal'},
170
+ {key: 'strength', source: 'ore'},
171
+ {key: 'tolerance', source: 'ore'},
169
172
  ],
170
- recipe: [{category: 'metal' as ResourceCategory, quantity: 15}],
173
+ recipe: [{category: 'ore' as ResourceCategory, quantity: 15}],
171
174
  usedIn: [{type: 'module', name: 'Gatherer'}],
172
175
  },
173
176
  {
174
177
  id: ITEM_SURVEY_PROBE,
175
178
  name: 'Survey Probe',
176
- description: 'Precious metal sensor array for deep resource detection.',
177
- color: '#D4A843',
179
+ description: 'Crystal-lattice sensor array for deep resource detection.',
180
+ color: '#4ADBFF',
178
181
  mass: 30000,
179
182
  stats: [
180
- {key: 'conductivity', source: 'precious'},
181
- {key: 'reflectivity', source: 'precious'},
183
+ {key: 'conductivity', source: 'crystal'},
184
+ {key: 'reflectivity', source: 'crystal'},
182
185
  ],
183
- recipe: [{category: 'precious' as ResourceCategory, quantity: 10}],
186
+ recipe: [{category: 'crystal' as ResourceCategory, quantity: 10}],
184
187
  usedIn: [{type: 'module', name: 'Gatherer'}],
185
188
  },
186
189
  {
187
190
  id: ITEM_CARGO_ARM,
188
191
  name: 'Cargo Arm',
189
- description: 'Flexible organic composite arm for cargo handling.',
190
- color: '#6B8E5A',
192
+ description: 'Flexible biomass composite arm for cargo handling.',
193
+ color: '#5A8B3E',
191
194
  mass: 30000,
192
195
  stats: [
193
- {key: 'plasticity', source: 'organic'},
194
- {key: 'insulation', source: 'organic'},
196
+ {key: 'plasticity', source: 'biomass'},
197
+ {key: 'insulation', source: 'biomass'},
195
198
  ],
196
- recipe: [{category: 'organic' as ResourceCategory, quantity: 32}],
199
+ recipe: [{category: 'biomass' as ResourceCategory, quantity: 32}],
197
200
  usedIn: [{type: 'module', name: 'Loader'}],
198
201
  },
199
202
  {
200
203
  id: ITEM_TOOL_BIT,
201
204
  name: 'Tool Bit',
202
- description: 'Dense mineral cutting head for manufacturing operations.',
203
- color: '#B8A9C9',
205
+ description: 'Dense regolith cutting head for manufacturing operations.',
206
+ color: '#C4A57B',
204
207
  mass: 30000,
205
208
  stats: [
206
- {key: 'hardness', source: 'mineral'},
207
- {key: 'clarity', source: 'mineral'},
209
+ {key: 'hardness', source: 'regolith'},
210
+ {key: 'composition', source: 'regolith'},
208
211
  ],
209
- recipe: [{category: 'mineral' as ResourceCategory, quantity: 20}],
212
+ recipe: [{category: 'regolith' as ResourceCategory, quantity: 20}],
210
213
  usedIn: [{type: 'module', name: 'Manufacturing'}],
211
214
  },
212
215
  {
213
216
  id: ITEM_REACTION_CHAMBER,
214
217
  name: 'Reaction Chamber',
215
218
  description: 'Gas-pressurized vessel for controlled manufacturing reactions.',
216
- color: '#7EC8E3',
219
+ color: '#B8E4A0',
217
220
  mass: 50000,
218
221
  stats: [
219
222
  {key: 'reactivity', source: 'gas'},
@@ -226,48 +229,48 @@ export const components: ComponentDefinition[] = [
226
229
  id: ITEM_FOCUSING_ARRAY,
227
230
  name: 'Focusing Array',
228
231
  description:
229
- "Precision-formed precious-metal lens array. Routes the haul beam's energy efficiently to the target lock.",
230
- color: '#D4A843',
232
+ "Precision-formed crystal lens array. Routes the haul beam's energy efficiently to the target lock.",
233
+ color: '#4ADBFF',
231
234
  mass: 40000,
232
235
  stats: [
233
- {key: 'conductivity', source: 'precious'},
234
- {key: 'ductility', source: 'precious'},
236
+ {key: 'conductivity', source: 'crystal'},
237
+ {key: 'resonance', source: 'crystal'},
235
238
  ],
236
- recipe: [{category: 'precious' as ResourceCategory, quantity: 25}],
237
- usedIn: [{type: 'module', name: 'Hauler Module T1'}],
239
+ recipe: [{category: 'crystal' as ResourceCategory, quantity: 25}],
240
+ usedIn: [{type: 'module', name: 'Hauler'}],
238
241
  },
239
242
  {
240
243
  id: ITEM_HULL_PLATES_T2,
241
244
  name: 'Hull Plates T2',
242
- description: 'Advanced structural plating reinforced with tier 2 metals.',
245
+ description: 'Advanced structural plating reinforced with tier 2 ore.',
243
246
  color: '#9BADB8',
244
247
  mass: 50000,
245
248
  stats: [
246
- {key: 'strength', source: 'metal'},
247
- {key: 'density', source: 'metal'},
249
+ {key: 'strength', source: 'ore'},
250
+ {key: 'density', source: 'ore'},
248
251
  ],
249
252
  recipe: [
250
253
  {itemId: ITEM_HULL_PLATES, quantity: 2},
251
- {category: 'metal', quantity: 15},
254
+ {category: 'ore', quantity: 15},
252
255
  ],
253
- usedIn: [{type: 'entity', name: 'Container T2'}],
256
+ usedIn: [{type: 'entity', name: 'Container'}],
254
257
  },
255
258
  {
256
259
  id: ITEM_CARGO_LINING_T2,
257
- name: 'Cargo Lining T2',
258
- description: 'Advanced composite lining with improved storage properties.',
259
- color: '#E0B84D',
260
- mass: 30000,
260
+ name: 'Cargo Lining',
261
+ description: 'Advanced composite lining reinforced with tier 2 regolith and biomass polymer.',
262
+ color: '#C4A57B',
263
+ mass: 45000,
261
264
  stats: [
262
- {key: 'ductility', source: 'precious'},
263
- {key: 'purity', source: 'organic'},
265
+ {key: 'fineness', source: 'regolith'},
266
+ {key: 'saturation', source: 'biomass'},
264
267
  ],
265
268
  recipe: [
266
269
  {itemId: ITEM_CARGO_LINING, quantity: 2},
267
- {category: 'precious', quantity: 6},
268
- {category: 'organic', quantity: 14},
270
+ {category: 'regolith' as ResourceCategory, quantity: 5},
271
+ {category: 'biomass' as ResourceCategory, quantity: 10},
269
272
  ],
270
- usedIn: [{type: 'entity', name: 'Container T2'}],
273
+ usedIn: [{type: 'entity', name: 'Container'}],
271
274
  },
272
275
  ]
273
276
 
@@ -285,13 +288,13 @@ export const entityRecipes: EntityRecipe[] = [
285
288
  stats: [
286
289
  {key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength'},
287
290
  {key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density'},
288
- {key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility'},
289
- {key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity'},
291
+ {key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness'},
292
+ {key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation'},
290
293
  ],
291
294
  },
292
295
  {
293
296
  id: 'ship-t1',
294
- name: 'Ship T1',
297
+ name: 'Ship',
295
298
  description: 'General-purpose vessel with 5 module slots.',
296
299
  color: '#4AE898',
297
300
  packedItemId: ITEM_SHIP_T1_PACKED,
@@ -302,8 +305,8 @@ export const entityRecipes: EntityRecipe[] = [
302
305
  stats: [
303
306
  {key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength'},
304
307
  {key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density'},
305
- {key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility'},
306
- {key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity'},
308
+ {key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness'},
309
+ {key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation'},
307
310
  ],
308
311
  moduleSlots: [
309
312
  {type: MODULE_ANY},
@@ -315,7 +318,7 @@ export const entityRecipes: EntityRecipe[] = [
315
318
  },
316
319
  {
317
320
  id: 'warehouse-t1',
318
- name: 'Warehouse T1',
321
+ name: 'Warehouse',
319
322
  description: 'Massive stationary storage facility with a single loader module slot.',
320
323
  color: '#EAB308',
321
324
  packedItemId: ITEM_WAREHOUSE_T1_PACKED,
@@ -326,8 +329,8 @@ export const entityRecipes: EntityRecipe[] = [
326
329
  stats: [
327
330
  {key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength'},
328
331
  {key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density'},
329
- {key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility'},
330
- {key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity'},
332
+ {key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness'},
333
+ {key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation'},
331
334
  ],
332
335
  moduleSlots: [
333
336
  {type: MODULE_LOADER, label: 'Loader'},
@@ -339,7 +342,7 @@ export const entityRecipes: EntityRecipe[] = [
339
342
  },
340
343
  {
341
344
  id: 'container-t2',
342
- name: 'Container T2',
345
+ name: 'Container',
343
346
  description: 'Advanced cargo container with improved capacity formulas.',
344
347
  color: '#9BADB8',
345
348
  packedItemId: ITEM_CONTAINER_T2_PACKED,
@@ -350,8 +353,12 @@ export const entityRecipes: EntityRecipe[] = [
350
353
  stats: [
351
354
  {key: 'strength', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'strength'},
352
355
  {key: 'density', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'density'},
353
- {key: 'ductility', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'ductility'},
354
- {key: 'purity', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'purity'},
356
+ {key: 'fineness', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'fineness'},
357
+ {
358
+ key: 'saturation',
359
+ sourceComponentId: ITEM_CARGO_LINING_T2,
360
+ sourceStatKey: 'saturation',
361
+ },
355
362
  ],
356
363
  },
357
364
  ]
@@ -384,14 +391,14 @@ export const moduleRecipes: ModuleRecipe[] = [
384
391
  {
385
392
  id: 'generator-t1',
386
393
  name: 'Generator',
387
- description: 'Basic energy system. Stores and recharges energy from resonant minerals.',
388
- color: '#7B5AE8',
394
+ description: 'Basic energy system. Stores and recharges energy from resonant crystals.',
395
+ color: '#4ADBFF',
389
396
  itemId: ITEM_GENERATOR_T1,
390
397
  moduleType: MODULE_GENERATOR,
391
398
  recipe: [{itemId: ITEM_POWER_CELL, quantity: 5}],
392
399
  stats: [
393
400
  {key: 'resonance', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'resonance'},
394
- {key: 'clarity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'clarity'},
401
+ {key: 'reflectivity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'reflectivity'},
395
402
  ],
396
403
  },
397
404
  {
@@ -429,7 +436,7 @@ export const moduleRecipes: ModuleRecipe[] = [
429
436
  id: 'loader-t1',
430
437
  name: 'Loader',
431
438
  description: 'Basic cargo handling system. Loads and unloads cargo with articulated arms.',
432
- color: '#6B8E5A',
439
+ color: '#5A8B3E',
433
440
  itemId: ITEM_LOADER_T1,
434
441
  moduleType: MODULE_LOADER,
435
442
  recipe: [
@@ -437,7 +444,7 @@ export const moduleRecipes: ModuleRecipe[] = [
437
444
  {itemId: ITEM_CARGO_ARM, quantity: 3},
438
445
  ],
439
446
  stats: [
440
- {key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility'},
447
+ {key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness'},
441
448
  {key: 'plasticity', sourceComponentId: ITEM_CARGO_ARM, sourceStatKey: 'plasticity'},
442
449
  ],
443
450
  },
@@ -446,7 +453,7 @@ export const moduleRecipes: ModuleRecipe[] = [
446
453
  name: 'Manufacturing',
447
454
  description:
448
455
  'Basic crafting system. Processes materials using reaction chambers and cutting tools.',
449
- color: '#7EC8E3',
456
+ color: '#B8E4A0',
450
457
  itemId: ITEM_MANUFACTURING_T1,
451
458
  moduleType: MODULE_CRAFTER,
452
459
  recipe: [
@@ -459,7 +466,7 @@ export const moduleRecipes: ModuleRecipe[] = [
459
466
  sourceComponentId: ITEM_REACTION_CHAMBER,
460
467
  sourceStatKey: 'reactivity',
461
468
  },
462
- {key: 'clarity', sourceComponentId: ITEM_TOOL_BIT, sourceStatKey: 'clarity'},
469
+ {key: 'composition', sourceComponentId: ITEM_TOOL_BIT, sourceStatKey: 'composition'},
463
470
  ],
464
471
  },
465
472
  {
@@ -475,17 +482,17 @@ export const moduleRecipes: ModuleRecipe[] = [
475
482
  ],
476
483
  stats: [
477
484
  {key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength'},
478
- {key: 'ductility', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'ductility'},
479
- {key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity'},
480
- {key: 'density', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'density'},
485
+ {key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density'},
486
+ {key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness'},
487
+ {key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation'},
481
488
  ],
482
489
  },
483
490
  {
484
491
  id: 'hauler-t1',
485
- name: 'Hauler Module T1',
492
+ name: 'Hauler',
486
493
  description:
487
494
  'Projects a haul beam to lock onto and transport containers or warehouses through group travel.',
488
- color: '#D4A843',
495
+ color: '#4ADBFF',
489
496
  itemId: ITEM_HAULER_T1,
490
497
  moduleType: MODULE_HAULER,
491
498
  recipe: [
@@ -494,13 +501,12 @@ export const moduleRecipes: ModuleRecipe[] = [
494
501
  ],
495
502
  stats: [
496
503
  {key: 'resonance', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'resonance'},
504
+ {key: 'reflectivity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'reflectivity'},
497
505
  {
498
506
  key: 'conductivity',
499
507
  sourceComponentId: ITEM_FOCUSING_ARRAY,
500
508
  sourceStatKey: 'conductivity',
501
509
  },
502
- {key: 'clarity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'clarity'},
503
- {key: 'ductility', sourceComponentId: ITEM_FOCUSING_ARRAY, sourceStatKey: 'ductility'},
504
510
  ],
505
511
  },
506
512
  ]
@@ -135,11 +135,11 @@ function decodeStackStats(itemId: number, stats: UInt64): Record<string, number>
135
135
  }
136
136
 
137
137
  export const categoryItemMass: Record<string, number> = {
138
- metal: 30000,
139
- precious: 40000,
138
+ ore: 30000,
139
+ crystal: 40000,
140
140
  gas: 15000,
141
- mineral: 22000,
142
- organic: 15000,
141
+ regolith: 22000,
142
+ biomass: 15000,
143
143
  }
144
144
 
145
145
  export function computeInputMass(
@@ -24,21 +24,21 @@ interface ResourceEntry {
24
24
  }
25
25
 
26
26
  const RESOURCE_CATALOG: ResourceEntry[] = [
27
- {id: 26, tier: 't1'},
28
- {id: 13, tier: 't2'},
29
- {id: 24, tier: 't3'},
30
- {id: 29, tier: 't1'},
31
- {id: 47, tier: 't2'},
32
- {id: 79, tier: 't3'},
33
- {id: 1, tier: 't1'},
34
- {id: 2, tier: 't2'},
35
- {id: 18, tier: 't3'},
36
- {id: 14, tier: 't1'},
37
- {id: 1000, tier: 't2'},
38
- {id: 1001, tier: 't3'},
39
- {id: 6, tier: 't1'},
40
- {id: 1003, tier: 't2'},
41
- {id: 1002, tier: 't3'},
27
+ {id: 101, tier: 't1'},
28
+ {id: 102, tier: 't2'},
29
+ {id: 103, tier: 't3'},
30
+ {id: 201, tier: 't1'},
31
+ {id: 202, tier: 't2'},
32
+ {id: 203, tier: 't3'},
33
+ {id: 301, tier: 't1'},
34
+ {id: 302, tier: 't2'},
35
+ {id: 303, tier: 't3'},
36
+ {id: 401, tier: 't1'},
37
+ {id: 402, tier: 't2'},
38
+ {id: 403, tier: 't3'},
39
+ {id: 501, tier: 't1'},
40
+ {id: 502, tier: 't2'},
41
+ {id: 503, tier: 't3'},
42
42
  ]
43
43
 
44
44
  export function getDepthThreshold(tier: ResourceTier): number {
@@ -91,14 +91,14 @@ export function getResourceWeight(itemId: number, stratum: number): number {
91
91
  }
92
92
  }
93
93
 
94
- const ASTEROID_RESOURCES = [26, 13, 24, 29, 47]
95
- const NEBULA_RESOURCES = [47, 79, 1, 2, 18]
96
- const GAS_GIANT_RESOURCES = [1, 2, 18, 14, 6]
97
- const ROCKY_RESOURCES = [26, 13, 24, 14, 1000, 1001, 1002]
98
- const TERRESTRIAL_RESOURCES = [29, 47, 14, 1000, 6, 1003, 1002]
99
- const ICY_RESOURCES = [26, 1, 2, 14, 1001, 6, 1003]
100
- const OCEAN_RESOURCES = [29, 79, 1, 18, 6, 1003, 1002]
101
- const INDUSTRIAL_RESOURCES = [26, 13, 24, 29, 79, 1000, 1001]
94
+ const ASTEROID_RESOURCES = [101, 102, 103, 201, 202]
95
+ const NEBULA_RESOURCES = [202, 203, 301, 302, 303]
96
+ const GAS_GIANT_RESOURCES = [301, 302, 303, 401, 501]
97
+ const ROCKY_RESOURCES = [101, 102, 103, 401, 402, 403, 503]
98
+ const TERRESTRIAL_RESOURCES = [201, 202, 401, 402, 501, 502, 503]
99
+ const ICY_RESOURCES = [101, 301, 302, 401, 403, 501, 502]
100
+ const OCEAN_RESOURCES = [201, 203, 301, 303, 501, 502, 503]
101
+ const INDUSTRIAL_RESOURCES = [101, 102, 103, 201, 203, 402, 403]
102
102
 
103
103
  export function getLocationCandidates(locationType: number, subtype: number): number[] {
104
104
  if (locationType === 2) return ASTEROID_RESOURCES