@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/lib/shipload.d.ts +16 -5
- package/lib/shipload.js +369 -302
- package/lib/shipload.js.map +1 -1
- package/lib/shipload.m.js +366 -303
- package/lib/shipload.m.js.map +1 -1
- package/package.json +1 -1
- package/src/data/categories.ts +22 -25
- package/src/data/colors.ts +13 -13
- package/src/data/items.json +15 -15
- package/src/data/recipes.ts +91 -85
- package/src/derivation/crafting.ts +4 -4
- package/src/derivation/resources.ts +23 -23
- package/src/derivation/stats.ts +29 -29
- package/src/entities/container.ts +6 -6
- package/src/entities/ship-deploy.ts +17 -17
- package/src/format.ts +12 -0
- package/src/index-module.ts +5 -0
- package/src/market/items.ts +1 -1
- package/src/nft/description.ts +22 -22
- package/src/resolution/display-name.ts +57 -0
- package/src/resolution/resolve-item.ts +8 -8
- package/src/types.ts +1 -1
package/package.json
CHANGED
package/src/data/categories.ts
CHANGED
|
@@ -11,42 +11,39 @@ export interface CategoryInfo {
|
|
|
11
11
|
|
|
12
12
|
const categories: CategoryInfo[] = [
|
|
13
13
|
{
|
|
14
|
-
id: '
|
|
15
|
-
name: '
|
|
16
|
-
label: '
|
|
17
|
-
description: 'Structural
|
|
18
|
-
color: categoryColors.
|
|
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: '
|
|
22
|
-
name: '
|
|
23
|
-
label: '
|
|
24
|
-
description:
|
|
25
|
-
|
|
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: '
|
|
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: '
|
|
38
|
-
name: '
|
|
39
|
-
label: '
|
|
40
|
-
description:
|
|
41
|
-
|
|
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: '
|
|
46
|
-
name: '
|
|
47
|
-
label: '
|
|
48
|
-
description: '
|
|
49
|
-
color: categoryColors.
|
|
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
|
|
package/src/data/colors.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type {ResourceCategory, ResourceTier} from '../types'
|
|
2
2
|
|
|
3
3
|
export const categoryColors: Record<ResourceCategory, string> = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
gas: '#
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
29
|
-
|
|
28
|
+
ore: '⬡',
|
|
29
|
+
crystal: '◈',
|
|
30
30
|
gas: '◎',
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
39
|
-
|
|
38
|
+
ore: 'hex',
|
|
39
|
+
crystal: 'diamond',
|
|
40
40
|
gas: 'circle',
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
regolith: 'square',
|
|
42
|
+
biomass: 'star',
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
export const componentIcon = '▣'
|
package/src/data/items.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
[
|
|
2
|
-
{"id":
|
|
3
|
-
{"id":
|
|
4
|
-
{"id":
|
|
5
|
-
{"id":
|
|
6
|
-
{"id":
|
|
7
|
-
{"id":
|
|
8
|
-
{"id":
|
|
9
|
-
{"id":
|
|
10
|
-
{"id":
|
|
11
|
-
{"id":
|
|
12
|
-
{"id":
|
|
13
|
-
{"id":
|
|
14
|
-
{"id":
|
|
15
|
-
{"id":
|
|
16
|
-
{"id":
|
|
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
|
]
|
package/src/data/recipes.ts
CHANGED
|
@@ -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
|
|
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: '
|
|
104
|
-
{key: 'density', source: '
|
|
103
|
+
{key: 'strength', source: 'ore'},
|
|
104
|
+
{key: 'density', source: 'ore'},
|
|
105
105
|
],
|
|
106
|
-
recipe: [{category: '
|
|
106
|
+
recipe: [{category: 'ore', quantity: 15}],
|
|
107
107
|
usedIn: [
|
|
108
108
|
{type: 'entity', name: 'Container'},
|
|
109
|
-
{type: 'entity', name: 'Warehouse
|
|
110
|
-
{type: 'entity', name: 'Ship
|
|
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
|
-
'
|
|
118
|
-
color: '#
|
|
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: '
|
|
122
|
-
{key: '
|
|
121
|
+
{key: 'fineness', source: 'regolith'},
|
|
122
|
+
{key: 'saturation', source: 'biomass'},
|
|
123
123
|
],
|
|
124
124
|
recipe: [
|
|
125
|
-
{category: '
|
|
126
|
-
{category: '
|
|
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: '
|
|
131
|
-
{type: '
|
|
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
|
|
151
|
-
color: '#
|
|
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: '
|
|
155
|
-
{key: '
|
|
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
|
|
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: '
|
|
168
|
-
{key: 'tolerance', source: '
|
|
170
|
+
{key: 'strength', source: 'ore'},
|
|
171
|
+
{key: 'tolerance', source: 'ore'},
|
|
169
172
|
],
|
|
170
|
-
recipe: [{category: '
|
|
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: '
|
|
177
|
-
color: '#
|
|
179
|
+
description: 'Crystal-lattice sensor array for deep resource detection.',
|
|
180
|
+
color: '#4ADBFF',
|
|
178
181
|
mass: 30000,
|
|
179
182
|
stats: [
|
|
180
|
-
{key: 'conductivity', source: '
|
|
181
|
-
{key: 'reflectivity', source: '
|
|
183
|
+
{key: 'conductivity', source: 'crystal'},
|
|
184
|
+
{key: 'reflectivity', source: 'crystal'},
|
|
182
185
|
],
|
|
183
|
-
recipe: [{category: '
|
|
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
|
|
190
|
-
color: '#
|
|
192
|
+
description: 'Flexible biomass composite arm for cargo handling.',
|
|
193
|
+
color: '#5A8B3E',
|
|
191
194
|
mass: 30000,
|
|
192
195
|
stats: [
|
|
193
|
-
{key: 'plasticity', source: '
|
|
194
|
-
{key: 'insulation', source: '
|
|
196
|
+
{key: 'plasticity', source: 'biomass'},
|
|
197
|
+
{key: 'insulation', source: 'biomass'},
|
|
195
198
|
],
|
|
196
|
-
recipe: [{category: '
|
|
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
|
|
203
|
-
color: '#
|
|
205
|
+
description: 'Dense regolith cutting head for manufacturing operations.',
|
|
206
|
+
color: '#C4A57B',
|
|
204
207
|
mass: 30000,
|
|
205
208
|
stats: [
|
|
206
|
-
{key: 'hardness', source: '
|
|
207
|
-
{key: '
|
|
209
|
+
{key: 'hardness', source: 'regolith'},
|
|
210
|
+
{key: 'composition', source: 'regolith'},
|
|
208
211
|
],
|
|
209
|
-
recipe: [{category: '
|
|
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: '#
|
|
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
|
|
230
|
-
color: '#
|
|
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: '
|
|
234
|
-
{key: '
|
|
236
|
+
{key: 'conductivity', source: 'crystal'},
|
|
237
|
+
{key: 'resonance', source: 'crystal'},
|
|
235
238
|
],
|
|
236
|
-
recipe: [{category: '
|
|
237
|
-
usedIn: [{type: 'module', name: 'Hauler
|
|
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
|
|
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: '
|
|
247
|
-
{key: 'density', source: '
|
|
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: '
|
|
254
|
+
{category: 'ore', quantity: 15},
|
|
252
255
|
],
|
|
253
|
-
usedIn: [{type: 'entity', name: 'Container
|
|
256
|
+
usedIn: [{type: 'entity', name: 'Container'}],
|
|
254
257
|
},
|
|
255
258
|
{
|
|
256
259
|
id: ITEM_CARGO_LINING_T2,
|
|
257
|
-
name: 'Cargo Lining
|
|
258
|
-
description: 'Advanced composite lining with
|
|
259
|
-
color: '#
|
|
260
|
-
mass:
|
|
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: '
|
|
263
|
-
{key: '
|
|
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: '
|
|
268
|
-
{category: '
|
|
270
|
+
{category: 'regolith' as ResourceCategory, quantity: 5},
|
|
271
|
+
{category: 'biomass' as ResourceCategory, quantity: 10},
|
|
269
272
|
],
|
|
270
|
-
usedIn: [{type: 'entity', name: 'Container
|
|
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: '
|
|
289
|
-
{key: '
|
|
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
|
|
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: '
|
|
306
|
-
{key: '
|
|
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
|
|
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: '
|
|
330
|
-
{key: '
|
|
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
|
|
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: '
|
|
354
|
-
{
|
|
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
|
|
388
|
-
color: '#
|
|
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: '
|
|
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: '#
|
|
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: '
|
|
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: '#
|
|
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: '
|
|
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: '
|
|
479
|
-
{key: '
|
|
480
|
-
{key: '
|
|
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
|
|
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: '#
|
|
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
|
-
|
|
139
|
-
|
|
138
|
+
ore: 30000,
|
|
139
|
+
crystal: 40000,
|
|
140
140
|
gas: 15000,
|
|
141
|
-
|
|
142
|
-
|
|
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:
|
|
28
|
-
{id:
|
|
29
|
-
{id:
|
|
30
|
-
{id:
|
|
31
|
-
{id:
|
|
32
|
-
{id:
|
|
33
|
-
{id:
|
|
34
|
-
{id:
|
|
35
|
-
{id:
|
|
36
|
-
{id:
|
|
37
|
-
{id:
|
|
38
|
-
{id:
|
|
39
|
-
{id:
|
|
40
|
-
{id:
|
|
41
|
-
{id:
|
|
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 = [
|
|
95
|
-
const NEBULA_RESOURCES = [
|
|
96
|
-
const GAS_GIANT_RESOURCES = [
|
|
97
|
-
const ROCKY_RESOURCES = [
|
|
98
|
-
const TERRESTRIAL_RESOURCES = [
|
|
99
|
-
const ICY_RESOURCES = [
|
|
100
|
-
const OCEAN_RESOURCES = [
|
|
101
|
-
const INDUSTRIAL_RESOURCES = [
|
|
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
|