@shipload/sdk 1.0.0-next.51 → 1.0.0-next.53

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 (60) hide show
  1. package/lib/shipload.d.ts +471 -158
  2. package/lib/shipload.js +2320 -485
  3. package/lib/shipload.js.map +1 -1
  4. package/lib/shipload.m.js +2290 -484
  5. package/lib/shipload.m.js.map +1 -1
  6. package/lib/testing.d.ts +123 -8
  7. package/lib/testing.js +450 -19
  8. package/lib/testing.js.map +1 -1
  9. package/lib/testing.m.js +451 -20
  10. package/lib/testing.m.js.map +1 -1
  11. package/package.json +1 -1
  12. package/src/capabilities/crafting.ts +10 -1
  13. package/src/capabilities/gathering.ts +1 -1
  14. package/src/capabilities/hauling.ts +0 -5
  15. package/src/capabilities/modules.ts +6 -0
  16. package/src/capabilities/movement.ts +1 -1
  17. package/src/contracts/server.ts +293 -13
  18. package/src/data/capabilities.ts +18 -2
  19. package/src/data/capability-formulas.ts +5 -0
  20. package/src/data/entities.json +235 -20
  21. package/src/data/item-ids.ts +10 -0
  22. package/src/data/items.json +61 -0
  23. package/src/data/kind-registry.json +53 -1
  24. package/src/data/kind-registry.ts +5 -0
  25. package/src/data/metadata.ts +74 -5
  26. package/src/data/recipes-runtime.ts +1 -0
  27. package/src/data/recipes.json +895 -119
  28. package/src/derivation/capabilities.test.ts +105 -4
  29. package/src/derivation/capabilities.ts +162 -57
  30. package/src/derivation/capability-mappings.ts +2 -0
  31. package/src/derivation/crafting.ts +2 -0
  32. package/src/derivation/recipe-usage.test.ts +10 -7
  33. package/src/derivation/rollups.ts +16 -0
  34. package/src/derivation/stat-scaling.ts +12 -0
  35. package/src/entities/makers.ts +10 -1
  36. package/src/index-module.ts +29 -3
  37. package/src/managers/actions.ts +77 -46
  38. package/src/managers/construction-types.ts +2 -2
  39. package/src/managers/construction.ts +15 -15
  40. package/src/managers/plot.ts +1 -1
  41. package/src/nft/buildImmutableData.ts +55 -9
  42. package/src/nft/description.ts +99 -36
  43. package/src/planner/planner.test.ts +50 -41
  44. package/src/resolution/resolve-item.test.ts +1 -1
  45. package/src/resolution/resolve-item.ts +26 -11
  46. package/src/scheduling/availability.ts +7 -6
  47. package/src/scheduling/cancel.test.ts +40 -6
  48. package/src/scheduling/cancel.ts +21 -29
  49. package/src/scheduling/jobs.ts +71 -0
  50. package/src/scheduling/lanes.ts +29 -0
  51. package/src/scheduling/projection.ts +42 -25
  52. package/src/scheduling/task-cargo.ts +1 -1
  53. package/src/testing/projection-parity.ts +2 -2
  54. package/src/travel/reach.ts +4 -6
  55. package/src/travel/route-planner.ts +60 -49
  56. package/src/travel/route-simulator.ts +3 -7
  57. package/src/travel/travel.ts +14 -5
  58. package/src/types/capabilities.ts +9 -3
  59. package/src/types.ts +5 -3
  60. package/src/managers/flatten-gather-plan.test.ts +0 -80
@@ -204,7 +204,7 @@ export const itemMetadata: Record<number, ItemMetadata> = {
204
204
  10106: {
205
205
  name: 'Tractor Beam',
206
206
  description:
207
- 'Projects a haul beam to lock onto and transport containers or warehouses through group travel.',
207
+ 'Projects a haul beam to lock onto and transport containers through group travel.',
208
208
  color: '#4ADBFF',
209
209
  },
210
210
  10107: {
@@ -223,6 +223,12 @@ export const itemMetadata: Record<number, ItemMetadata> = {
223
223
  description: 'Accelerates and launches cargo payloads toward a remote mass catcher.',
224
224
  color: '#E86344',
225
225
  },
226
+ 10110: {
227
+ name: 'Assembly Arm',
228
+ description:
229
+ 'Heavy manipulator arms for on-site construction work. Claims build sites, builds them out, and upgrades ships in place.',
230
+ color: '#FFB347',
231
+ },
226
232
 
227
233
  // === Entities (packed, T1) ===
228
234
  10200: {
@@ -231,7 +237,7 @@ export const itemMetadata: Record<number, ItemMetadata> = {
231
237
  color: '#7B8D9E',
232
238
  },
233
239
  10201: {
234
- name: 'Roustabout',
240
+ name: 'Ship',
235
241
  description: 'General-purpose vessel with 5 module slots.',
236
242
  color: '#4AE898',
237
243
  },
@@ -267,6 +273,58 @@ export const itemMetadata: Record<number, ItemMetadata> = {
267
273
  description: 'Orbital command structure. Anchors a player station cluster.',
268
274
  color: '#A0B8D0',
269
275
  },
276
+ 10208: {
277
+ name: 'Workshop',
278
+ description:
279
+ 'A station workshop with five independent workers. Visiting ships bring materials and power, and the workshop does the crafting.',
280
+ color: '#B877FF',
281
+ },
282
+ 10210: {
283
+ name: 'Roustabout',
284
+ description:
285
+ 'A basic starter ship. One engine, one power core, and one open slot to fit as you like.',
286
+ color: '#4AE898',
287
+ },
288
+ 10211: {
289
+ name: 'Prospector',
290
+ description: 'A light gathering ship. One engine, one power core, one gathering rig.',
291
+ color: '#4AE898',
292
+ },
293
+ 10212: {
294
+ name: 'Tender',
295
+ description:
296
+ 'A logistics ship with a shuttle bay for moving cargo between ships and stations.',
297
+ color: '#4AE898',
298
+ },
299
+ 10213: {
300
+ name: 'Wright',
301
+ description:
302
+ 'A construction ship with an assembly arm for building structures and upgrading ships.',
303
+ color: '#4AE898',
304
+ },
305
+ 10214: {
306
+ name: 'Tug',
307
+ description:
308
+ 'A logistics ship with a tractor beam for towing containers from place to place.',
309
+ color: '#4AE898',
310
+ },
311
+ 10215: {
312
+ name: 'Porter',
313
+ description:
314
+ 'A cargo ship built around a large storage hold. The extra mass makes it slower than a Roustabout.',
315
+ color: '#4AE898',
316
+ },
317
+ 10216: {
318
+ name: 'Wrangler',
319
+ description: 'A heavy gathering ship with two gathering rigs, so it mines faster.',
320
+ color: '#4AE898',
321
+ },
322
+ 10217: {
323
+ name: 'Dredger',
324
+ description:
325
+ 'A gathering ship with its own storage hold, so it can keep mining before it has to offload.',
326
+ color: '#4AE898',
327
+ },
270
328
 
271
329
  // === Components (T2) ===
272
330
  20001: {
@@ -348,7 +406,7 @@ export const itemMetadata: Record<number, ItemMetadata> = {
348
406
  color: '#4AE898',
349
407
  },
350
408
  20211: {
351
- name: 'Hauler',
409
+ name: 'Tug',
352
410
  description:
353
411
  'Advanced towing vessel with tiered engine, generator, and tractor beam slots.',
354
412
  color: '#4AE898',
@@ -357,6 +415,14 @@ export const itemMetadata: Record<number, ItemMetadata> = {
357
415
 
358
416
  export const entityMetadata: Record<number, EntityMetadata> = {
359
417
  10201: {moduleSlotLabels: ['Engine', 'Power Core', 'Limpet Bay', 'Shuttle Bay', 'Cargo Hold']},
418
+ 10210: {moduleSlotLabels: ['Power Core', 'Engine', 'Utility Bay']},
419
+ 10211: {moduleSlotLabels: ['Power Core', 'Engine', 'Limpet Bay']},
420
+ 10212: {moduleSlotLabels: ['Power Core', 'Engine', 'Shuttle Bay']},
421
+ 10213: {moduleSlotLabels: ['Power Core', 'Engine', 'Assembly Arm']},
422
+ 10214: {moduleSlotLabels: ['Power Core', 'Engine', 'Tractor Beam']},
423
+ 10215: {moduleSlotLabels: ['Power Core', 'Engine', 'Cargo Hold']},
424
+ 10216: {moduleSlotLabels: ['Power Core', 'Engine', 'Limpet Bay', 'Limpet Bay']},
425
+ 10217: {moduleSlotLabels: ['Power Core', 'Engine', 'Limpet Bay', 'Cargo Hold']},
360
426
  10202: {
361
427
  moduleSlotLabels: ['Shuttle Bay', 'Cargo Hold', 'Cargo Hold', 'Cargo Hold', 'Cargo Hold'],
362
428
  },
@@ -364,8 +430,11 @@ export const entityMetadata: Record<number, EntityMetadata> = {
364
430
  10204: {moduleSlotLabels: ['Power Core', 'Fabricator']},
365
431
  10205: {moduleSlotLabels: ['Power Core', 'Drive Coil']},
366
432
  10206: {moduleSlotLabels: ['Cargo Hold', 'Cargo Hold', 'Cargo Hold']},
367
- 20210: {moduleSlotLabels: ['Engine', 'Power Core', 'Limpet Bay', 'Limpet Bay', 'Flex Slot']},
368
- 20211: {moduleSlotLabels: ['Engine', 'Power Core', 'Tractor Beam', 'Tractor Beam']},
433
+ 10208: {
434
+ moduleSlotLabels: ['Fabricator', 'Fabricator', 'Fabricator', 'Fabricator', 'Fabricator'],
435
+ },
436
+ 20210: {moduleSlotLabels: ['Power Core', 'Power Core', 'Engine', 'Limpet Bay']},
437
+ 20211: {moduleSlotLabels: ['Power Core', 'Engine', 'Tractor Beam', 'Tractor Beam']},
369
438
  }
370
439
 
371
440
  for (const item of items as Array<{id: number}>) {
@@ -30,6 +30,7 @@ export interface EntitySlot {
30
30
  export interface EntityLayout {
31
31
  entityItemId: number
32
32
  slots: EntitySlot[]
33
+ baseHullmass: number
33
34
  }
34
35
 
35
36
  const recipesById = new Map<number, Recipe>()