@shipload/sdk 1.0.0-next.57 → 1.0.0-next.59
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 +13 -12
- package/lib/shipload.js +236 -227
- package/lib/shipload.js.map +1 -1
- package/lib/shipload.m.js +226 -218
- package/lib/shipload.m.js.map +1 -1
- package/lib/testing.js +25 -25
- package/lib/testing.js.map +1 -1
- package/lib/testing.m.js +25 -25
- package/lib/testing.m.js.map +1 -1
- package/package.json +1 -1
- package/src/capabilities/modules.ts +10 -0
- package/src/data/entities.json +32 -42
- package/src/data/item-ids.ts +10 -10
- package/src/data/items.json +12 -12
- package/src/data/kind-registry.json +10 -10
- package/src/data/metadata.ts +17 -17
- package/src/data/recipes.json +111 -111
- package/src/derivation/capabilities.test.ts +15 -17
- package/src/derivation/recipe-usage.test.ts +8 -10
- package/src/nft/description.ts +23 -23
- package/src/resolution/resolve-item.ts +12 -0
- package/src/types.ts +1 -0
|
@@ -21,14 +21,13 @@ import {
|
|
|
21
21
|
ITEM_CRAFTER_T1,
|
|
22
22
|
ITEM_LOADER_T1,
|
|
23
23
|
ITEM_SHIP_T1_PACKED,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
ITEM_WRIGHT_T1_PACKED,
|
|
24
|
+
ITEM_ROUSTABOUT_T1A_PACKED,
|
|
25
|
+
ITEM_PROSPECTOR_T1A_PACKED,
|
|
26
|
+
ITEM_TENDER_T1A_PACKED,
|
|
27
|
+
ITEM_TUG_T1A_PACKED,
|
|
28
|
+
ITEM_PORTER_T1A_PACKED,
|
|
29
|
+
ITEM_SMITH_T1A_PACKED,
|
|
30
|
+
ITEM_WRIGHT_T1A_PACKED,
|
|
32
31
|
ITEM_ENGINE_T1,
|
|
33
32
|
ITEM_GENERATOR_T1,
|
|
34
33
|
ITEM_BUILDER_T1,
|
|
@@ -72,14 +71,13 @@ test('computeBaseCapacity uses ship-hull formula for every ship-class entity', (
|
|
|
72
71
|
const expected = computeBaseCapacity(ITEM_SHIP_T1_PACKED, stats)
|
|
73
72
|
expect(expected).toBeGreaterThan(0)
|
|
74
73
|
for (const itemId of [
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
ITEM_WRIGHT_T1_PACKED,
|
|
74
|
+
ITEM_ROUSTABOUT_T1A_PACKED,
|
|
75
|
+
ITEM_PROSPECTOR_T1A_PACKED,
|
|
76
|
+
ITEM_TENDER_T1A_PACKED,
|
|
77
|
+
ITEM_TUG_T1A_PACKED,
|
|
78
|
+
ITEM_PORTER_T1A_PACKED,
|
|
79
|
+
ITEM_SMITH_T1A_PACKED,
|
|
80
|
+
ITEM_WRIGHT_T1A_PACKED,
|
|
83
81
|
]) {
|
|
84
82
|
expect(computeBaseCapacity(itemId, stats)).toBe(expected)
|
|
85
83
|
}
|
|
@@ -223,7 +221,7 @@ test('engine and generator capabilities use tapered quality consistently', () =>
|
|
|
223
221
|
{type: 'generator', outputPct: 100, maxTier: 1},
|
|
224
222
|
]
|
|
225
223
|
|
|
226
|
-
const result = computeEntityCapabilities({},
|
|
224
|
+
const result = computeEntityCapabilities({}, ITEM_ROUSTABOUT_T1A_PACKED, modules, layout)
|
|
227
225
|
const engines = computeEngineCapabilities({volatility: 500, thermal: 500})
|
|
228
226
|
|
|
229
227
|
expect(result.engines).toEqual({
|
|
@@ -15,13 +15,11 @@ import {
|
|
|
15
15
|
ITEM_CRAFTER_T1,
|
|
16
16
|
ITEM_BUILDER_T1,
|
|
17
17
|
ITEM_EXTRACTOR_T1_PACKED,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
ITEM_WRANGLER_T1_PACKED,
|
|
24
|
-
ITEM_DREDGER_T1_PACKED,
|
|
18
|
+
ITEM_ROUSTABOUT_T1A_PACKED,
|
|
19
|
+
ITEM_PROSPECTOR_T1A_PACKED,
|
|
20
|
+
ITEM_TENDER_T1A_PACKED,
|
|
21
|
+
ITEM_TUG_T1A_PACKED,
|
|
22
|
+
ITEM_PORTER_T1A_PACKED,
|
|
25
23
|
} from '../data/item-ids'
|
|
26
24
|
|
|
27
25
|
test('getAllRecipes returns the full catalog including the gatherer', () => {
|
|
@@ -38,7 +36,7 @@ test('getRecipeConsumers lists every recipe that consumes Sensor', () => {
|
|
|
38
36
|
ITEM_CRAFTER_T1,
|
|
39
37
|
ITEM_BUILDER_T1,
|
|
40
38
|
ITEM_EXTRACTOR_T1_PACKED,
|
|
41
|
-
|
|
39
|
+
ITEM_ROUSTABOUT_T1A_PACKED,
|
|
42
40
|
].sort((a, b) => a - b)
|
|
43
41
|
)
|
|
44
42
|
})
|
|
@@ -82,9 +80,9 @@ test('getResourceDemand scales by quantity', () => {
|
|
|
82
80
|
expect(getResourceDemand(ITEM_PLATE, 3)).toEqual({ore: 30})
|
|
83
81
|
})
|
|
84
82
|
|
|
85
|
-
test('getComponentDemand reports Resin as consumed by
|
|
83
|
+
test('getComponentDemand reports Resin as consumed by eight recipes', () => {
|
|
86
84
|
const demand = getComponentDemand()
|
|
87
85
|
const resin = demand.find((d) => d.itemId === ITEM_RESIN)
|
|
88
86
|
expect(resin).toBeDefined()
|
|
89
|
-
expect(resin?.consumerCount).toBe(
|
|
87
|
+
expect(resin?.consumerCount).toBe(8)
|
|
90
88
|
})
|
package/src/nft/description.ts
CHANGED
|
@@ -23,23 +23,23 @@ import {
|
|
|
23
23
|
ITEM_GATHERER_T1,
|
|
24
24
|
ITEM_GATHERER_T2,
|
|
25
25
|
ITEM_GENERATOR_T1,
|
|
26
|
-
ITEM_HAULER_SHIP_T2_PACKED,
|
|
27
26
|
ITEM_HAULER_T1,
|
|
28
27
|
ITEM_HAULER_T2,
|
|
29
28
|
ITEM_BATTERY_T1,
|
|
30
29
|
ITEM_LAUNCHER_T1,
|
|
31
30
|
ITEM_LOADER_T1,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
ITEM_PROSPECTOR_T1A_PACKED,
|
|
32
|
+
ITEM_PROSPECTOR_T2A_PACKED,
|
|
33
|
+
ITEM_PROSPECTOR_T2B_PACKED,
|
|
34
|
+
ITEM_ROUSTABOUT_T1A_PACKED,
|
|
35
35
|
ITEM_SHIP_T1_PACKED,
|
|
36
|
+
ITEM_SMITH_T1A_PACKED,
|
|
36
37
|
ITEM_STORAGE_T1,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
ITEM_DREDGER_T1_PACKED,
|
|
38
|
+
ITEM_TENDER_T1A_PACKED,
|
|
39
|
+
ITEM_TUG_T1A_PACKED,
|
|
40
|
+
ITEM_PORTER_T1A_PACKED,
|
|
41
|
+
ITEM_WRIGHT_T1A_PACKED,
|
|
42
|
+
ITEM_DREDGER_T2A_PACKED,
|
|
43
43
|
ITEM_WAREHOUSE_T1_PACKED,
|
|
44
44
|
ITEM_WARP_T1,
|
|
45
45
|
} from '../data/item-ids'
|
|
@@ -149,22 +149,20 @@ export function entityDisplayName(itemId: number): string {
|
|
|
149
149
|
switch (itemId) {
|
|
150
150
|
case ITEM_SHIP_T1_PACKED:
|
|
151
151
|
return 'Ship'
|
|
152
|
-
case
|
|
152
|
+
case ITEM_ROUSTABOUT_T1A_PACKED:
|
|
153
153
|
return 'Roustabout'
|
|
154
|
-
case
|
|
154
|
+
case ITEM_PROSPECTOR_T1A_PACKED:
|
|
155
155
|
return 'Prospector'
|
|
156
|
-
case
|
|
156
|
+
case ITEM_TENDER_T1A_PACKED:
|
|
157
157
|
return 'Tender'
|
|
158
|
-
case
|
|
158
|
+
case ITEM_TUG_T1A_PACKED:
|
|
159
159
|
return 'Tug'
|
|
160
|
-
case
|
|
160
|
+
case ITEM_PORTER_T1A_PACKED:
|
|
161
161
|
return 'Porter'
|
|
162
|
-
case
|
|
163
|
-
return 'Wrangler'
|
|
164
|
-
case ITEM_WRIGHT_T1_PACKED:
|
|
162
|
+
case ITEM_WRIGHT_T1A_PACKED:
|
|
165
163
|
return 'Wright'
|
|
166
|
-
case
|
|
167
|
-
return '
|
|
164
|
+
case ITEM_SMITH_T1A_PACKED:
|
|
165
|
+
return 'Smith'
|
|
168
166
|
case ITEM_WAREHOUSE_T1_PACKED:
|
|
169
167
|
return 'Warehouse'
|
|
170
168
|
case ITEM_EXTRACTOR_T1_PACKED:
|
|
@@ -177,10 +175,12 @@ export function entityDisplayName(itemId: number): string {
|
|
|
177
175
|
return 'Container'
|
|
178
176
|
case ITEM_CONTAINER_T2_PACKED:
|
|
179
177
|
return 'Container'
|
|
180
|
-
case
|
|
178
|
+
case ITEM_PROSPECTOR_T2A_PACKED:
|
|
181
179
|
return 'Prospector'
|
|
182
|
-
case
|
|
183
|
-
return '
|
|
180
|
+
case ITEM_PROSPECTOR_T2B_PACKED:
|
|
181
|
+
return 'Prospector'
|
|
182
|
+
case ITEM_DREDGER_T2A_PACKED:
|
|
183
|
+
return 'Dredger'
|
|
184
184
|
default:
|
|
185
185
|
return 'Entity'
|
|
186
186
|
}
|
|
@@ -8,6 +8,7 @@ import {entityMetadata, itemMetadata} from '../data/metadata'
|
|
|
8
8
|
import {
|
|
9
9
|
getModuleCapabilityType,
|
|
10
10
|
isModuleItem,
|
|
11
|
+
MODULE_BUILDER,
|
|
11
12
|
MODULE_CRAFTER,
|
|
12
13
|
MODULE_ENGINE,
|
|
13
14
|
MODULE_BATTERY,
|
|
@@ -21,6 +22,7 @@ import {decodeCraftedItemStats, decodeStat} from '../derivation/crafting'
|
|
|
21
22
|
import {getStatDefinitions} from '../derivation/stats'
|
|
22
23
|
import {
|
|
23
24
|
computeCrafterCapabilities,
|
|
25
|
+
computeBuilderCapabilities,
|
|
24
26
|
computeBatteryCapabilities,
|
|
25
27
|
computeEngineCapabilities,
|
|
26
28
|
computeGathererCapabilities,
|
|
@@ -210,6 +212,16 @@ function computeCapabilityGroup(
|
|
|
210
212
|
],
|
|
211
213
|
}
|
|
212
214
|
}
|
|
215
|
+
case MODULE_BUILDER: {
|
|
216
|
+
const caps = computeBuilderCapabilities(stats)
|
|
217
|
+
return {
|
|
218
|
+
capability: 'Build',
|
|
219
|
+
attributes: [
|
|
220
|
+
{label: 'Speed', value: caps.speed},
|
|
221
|
+
{label: 'Drain', value: toWholeEnergy(caps.drain)},
|
|
222
|
+
],
|
|
223
|
+
}
|
|
224
|
+
}
|
|
213
225
|
case MODULE_HAULER: {
|
|
214
226
|
const caps = computeHaulerCapabilities(stats, tier)
|
|
215
227
|
return {
|