@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.
@@ -21,14 +21,13 @@ import {
21
21
  ITEM_CRAFTER_T1,
22
22
  ITEM_LOADER_T1,
23
23
  ITEM_SHIP_T1_PACKED,
24
- ITEM_ROUSTABOUT_T1_PACKED,
25
- ITEM_PROSPECTOR_T1_PACKED,
26
- ITEM_TENDER_T1_PACKED,
27
- ITEM_TUG_T1_PACKED,
28
- ITEM_PORTER_T1_PACKED,
29
- ITEM_WRANGLER_T1_PACKED,
30
- ITEM_DREDGER_T1_PACKED,
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
- ITEM_ROUSTABOUT_T1_PACKED,
76
- ITEM_PROSPECTOR_T1_PACKED,
77
- ITEM_TENDER_T1_PACKED,
78
- ITEM_TUG_T1_PACKED,
79
- ITEM_PORTER_T1_PACKED,
80
- ITEM_WRANGLER_T1_PACKED,
81
- ITEM_DREDGER_T1_PACKED,
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({}, ITEM_ROUSTABOUT_T1_PACKED, modules, layout)
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
- ITEM_ROUSTABOUT_T1_PACKED,
19
- ITEM_PROSPECTOR_T1_PACKED,
20
- ITEM_TENDER_T1_PACKED,
21
- ITEM_TUG_T1_PACKED,
22
- ITEM_PORTER_T1_PACKED,
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
- ITEM_ROUSTABOUT_T1_PACKED,
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 nine recipes', () => {
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(9)
87
+ expect(resin?.consumerCount).toBe(8)
90
88
  })
@@ -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
- ITEM_PROSPECTOR_T1_PACKED,
33
- ITEM_PROSPECTOR_T2_PACKED,
34
- ITEM_ROUSTABOUT_T1_PACKED,
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
- ITEM_TENDER_T1_PACKED,
38
- ITEM_TUG_T1_PACKED,
39
- ITEM_PORTER_T1_PACKED,
40
- ITEM_WRANGLER_T1_PACKED,
41
- ITEM_WRIGHT_T1_PACKED,
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 ITEM_ROUSTABOUT_T1_PACKED:
152
+ case ITEM_ROUSTABOUT_T1A_PACKED:
153
153
  return 'Roustabout'
154
- case ITEM_PROSPECTOR_T1_PACKED:
154
+ case ITEM_PROSPECTOR_T1A_PACKED:
155
155
  return 'Prospector'
156
- case ITEM_TENDER_T1_PACKED:
156
+ case ITEM_TENDER_T1A_PACKED:
157
157
  return 'Tender'
158
- case ITEM_TUG_T1_PACKED:
158
+ case ITEM_TUG_T1A_PACKED:
159
159
  return 'Tug'
160
- case ITEM_PORTER_T1_PACKED:
160
+ case ITEM_PORTER_T1A_PACKED:
161
161
  return 'Porter'
162
- case ITEM_WRANGLER_T1_PACKED:
163
- return 'Wrangler'
164
- case ITEM_WRIGHT_T1_PACKED:
162
+ case ITEM_WRIGHT_T1A_PACKED:
165
163
  return 'Wright'
166
- case ITEM_DREDGER_T1_PACKED:
167
- return 'Dredger'
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 ITEM_PROSPECTOR_T2_PACKED:
178
+ case ITEM_PROSPECTOR_T2A_PACKED:
181
179
  return 'Prospector'
182
- case ITEM_HAULER_SHIP_T2_PACKED:
183
- return 'Tug'
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 {
package/src/types.ts CHANGED
@@ -152,6 +152,7 @@ export type ModuleType =
152
152
  | 'hauler'
153
153
  | 'battery'
154
154
  | 'catcher'
155
+ | 'aux'
155
156
 
156
157
  export const RESOURCE_TIER_ADJECTIVES: Record<number, string> = {
157
158
  1: 'Crude',