@shipload/sdk 1.0.0-next.3 → 1.0.0-next.4

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.m.js CHANGED
@@ -3176,10 +3176,6 @@ var recipes = [
3176
3176
  },
3177
3177
  {
3178
3178
  sources: [
3179
- {
3180
- inputIndex: 1,
3181
- statIndex: 1
3182
- }
3183
3179
  ]
3184
3180
  },
3185
3181
  {
@@ -3219,8 +3215,8 @@ var recipes = [
3219
3215
  {
3220
3216
  sources: [
3221
3217
  {
3222
- inputIndex: 0,
3223
- statIndex: 0
3218
+ inputIndex: 1,
3219
+ statIndex: 1
3224
3220
  }
3225
3221
  ]
3226
3222
  },
@@ -3338,7 +3334,7 @@ var recipes = [
3338
3334
  sources: [
3339
3335
  {
3340
3336
  inputIndex: 0,
3341
- statIndex: 0
3337
+ statIndex: 1
3342
3338
  }
3343
3339
  ]
3344
3340
  },
@@ -3354,16 +3350,12 @@ var recipes = [
3354
3350
  sources: [
3355
3351
  {
3356
3352
  inputIndex: 0,
3357
- statIndex: 1
3353
+ statIndex: 0
3358
3354
  }
3359
3355
  ]
3360
3356
  },
3361
3357
  {
3362
3358
  sources: [
3363
- {
3364
- inputIndex: 1,
3365
- statIndex: 1
3366
- }
3367
3359
  ]
3368
3360
  }
3369
3361
  ],
@@ -8491,10 +8483,10 @@ function moduleSlotTypeToCode(slotType) {
8491
8483
  }
8492
8484
 
8493
8485
  function computeShipHullCapabilities(stats) {
8494
- const density = stats.density ?? 500;
8495
- const strength = stats.strength ?? 500;
8496
- const hardness = stats.hardness ?? 500;
8497
- const saturation = stats.saturation ?? 500;
8486
+ const density = stats.density;
8487
+ const strength = stats.strength;
8488
+ const hardness = stats.hardness;
8489
+ const saturation = stats.saturation;
8498
8490
  const hullmass = 25000 + 75 * density;
8499
8491
  const statSum = strength + hardness + saturation;
8500
8492
  const exponent = statSum / 2997.0;
@@ -8502,26 +8494,26 @@ function computeShipHullCapabilities(stats) {
8502
8494
  return { hullmass, capacity };
8503
8495
  }
8504
8496
  function computeEngineCapabilities(stats) {
8505
- const vol = stats.volatility ?? 500;
8506
- const thm = stats.thermal ?? 500;
8497
+ const vol = stats.volatility;
8498
+ const thm = stats.thermal;
8507
8499
  return {
8508
8500
  thrust: 400 + Math.floor((vol * 3) / 4),
8509
8501
  drain: Math.max(30, 50 - Math.floor(thm / 70)),
8510
8502
  };
8511
8503
  }
8512
8504
  function computeGeneratorCapabilities(stats) {
8513
- const res = stats.resonance ?? 500;
8514
- const ref = stats.reflectivity ?? 500;
8505
+ const com = stats.composition;
8506
+ const fin = stats.fineness;
8515
8507
  return {
8516
- capacity: 300 + Math.floor(res / 6),
8517
- recharge: 1 + Math.floor((ref * 3) / 1000),
8508
+ capacity: 300 + Math.floor(com / 6),
8509
+ recharge: 1 + Math.floor((fin * 3) / 1000),
8518
8510
  };
8519
8511
  }
8520
8512
  function computeGathererCapabilities(stats) {
8521
- const str = stats.strength ?? 500;
8522
- const con = stats.conductivity ?? 500;
8523
- const ref = stats.reflectivity ?? 500;
8524
- const tol = stats.tolerance ?? 500;
8513
+ const str = stats.strength;
8514
+ const con = stats.conductivity;
8515
+ const ref = stats.reflectivity;
8516
+ const tol = stats.tolerance;
8525
8517
  return {
8526
8518
  yield: 200 + str,
8527
8519
  drain: Math.max(250, 1250 - Math.floor((con * 25) / 20)),
@@ -8530,45 +8522,46 @@ function computeGathererCapabilities(stats) {
8530
8522
  };
8531
8523
  }
8532
8524
  function computeLoaderCapabilities(stats) {
8533
- const hrd = stats.hardness ?? 500;
8534
- const pla = stats.plasticity ?? 500;
8525
+ const insulation = stats.insulation;
8526
+ const plasticity = stats.plasticity;
8535
8527
  return {
8536
- mass: Math.max(200, 2000 - Math.floor(hrd * 2)),
8537
- thrust: 1 + Math.floor(pla / 500),
8528
+ mass: Math.max(200, 2000 - Math.floor(insulation * 2)),
8529
+ thrust: 1 + Math.floor(plasticity / 500),
8538
8530
  quantity: 1,
8539
8531
  };
8540
8532
  }
8541
8533
  function computeCrafterCapabilities(stats) {
8542
- const rea = stats.reactivity ?? 500;
8543
- const com = stats.composition ?? 500;
8534
+ const rea = stats.reactivity;
8535
+ const fin = stats.fineness;
8544
8536
  return {
8545
8537
  speed: 100 + Math.floor((rea * 4) / 5),
8546
- drain: Math.max(5, 30 - Math.floor(com / 33)),
8538
+ drain: Math.max(5, 30 - Math.floor(fin / 33)),
8547
8539
  };
8548
8540
  }
8549
8541
  function computeHaulerCapabilities(stats) {
8550
- const res = stats.resonance ?? 500;
8551
- const con = stats.conductivity ?? 500;
8552
- const ref = stats.reflectivity ?? 500;
8542
+ const fineness = stats.fineness;
8543
+ const conductivity = stats.conductivity;
8544
+ const composition = stats.composition;
8553
8545
  return {
8554
- capacity: Math.max(1, 1 + Math.floor(res / 400)),
8555
- efficiency: 2000 + con * 6,
8556
- drain: Math.max(3, 15 - Math.floor(ref / 80)),
8546
+ capacity: Math.max(1, 1 + Math.floor(fineness / 400)),
8547
+ efficiency: 2000 + conductivity * 6,
8548
+ drain: Math.max(3, 15 - Math.floor(composition / 80)),
8557
8549
  };
8558
8550
  }
8559
8551
  function computeStorageCapabilities(stats, baseCapacity) {
8560
- const strength = stats.strength ?? 500;
8561
- const hardness = stats.hardness ?? 500;
8562
- const saturation = stats.saturation ?? 500;
8563
- const statSum = strength + hardness + saturation;
8552
+ const strength = stats.strength;
8553
+ const density = stats.density;
8554
+ const hardness = stats.hardness;
8555
+ const saturation = stats.saturation;
8556
+ const statSum = strength + density + hardness + saturation;
8564
8557
  const capacityBonus = Math.floor((baseCapacity * (10 + Math.floor((statSum * 10) / 2997))) / 100);
8565
8558
  return { capacityBonus };
8566
8559
  }
8567
8560
  function computeWarehouseHullCapabilities(stats) {
8568
- const density = stats.density ?? 500;
8569
- const strength = stats.strength ?? 500;
8570
- const hardness = stats.hardness ?? 500;
8571
- const saturation = stats.saturation ?? 500;
8561
+ const density = stats.density;
8562
+ const strength = stats.strength;
8563
+ const hardness = stats.hardness;
8564
+ const saturation = stats.saturation;
8572
8565
  const hullmass = 25000 + 75 * density;
8573
8566
  const statSum = strength + hardness + saturation;
8574
8567
  const exponent = statSum / 2997.0;
@@ -8771,10 +8764,10 @@ class Container extends Types.entity_info {
8771
8764
  }
8772
8765
  }
8773
8766
  function computeContainerCapabilities(stats) {
8774
- const density = stats['density'] ?? 500;
8775
- const strength = stats['strength'] ?? 500;
8776
- const hardness = stats['hardness'] ?? 500;
8777
- const saturation = stats['saturation'] ?? 500;
8767
+ const density = stats.density;
8768
+ const strength = stats.strength;
8769
+ const hardness = stats.hardness;
8770
+ const saturation = stats.saturation;
8778
8771
  const hullmass = 25000 + 75 * density;
8779
8772
  const statSum = strength + hardness + saturation;
8780
8773
  const exponent = statSum / 2997;
@@ -8782,10 +8775,10 @@ function computeContainerCapabilities(stats) {
8782
8775
  return { hullmass, capacity };
8783
8776
  }
8784
8777
  function computeContainerT2Capabilities(stats) {
8785
- const strength = stats['strength'] ?? 0;
8786
- const density = stats['density'] ?? 0;
8787
- const hardness = stats['hardness'] ?? 0;
8788
- const saturation = stats['saturation'] ?? 0;
8778
+ const strength = stats.strength;
8779
+ const density = stats.density;
8780
+ const hardness = stats.hardness;
8781
+ const saturation = stats.saturation;
8789
8782
  const hullmass = 20000 + 50 * density;
8790
8783
  const statSum = strength + hardness + saturation;
8791
8784
  const exponent = statSum / 2500;
@@ -10122,6 +10115,11 @@ const capabilityNames = [
10122
10115
  const capabilityAttributes = [
10123
10116
  { capability: 'Hull', attribute: 'mass', description: 'Total mass of the hull' },
10124
10117
  { capability: 'Storage', attribute: 'capacity', description: 'Maximum mass that can be stored' },
10118
+ {
10119
+ capability: 'Storage',
10120
+ attribute: 'bonus',
10121
+ description: 'Capacity bonus added by an installed Storage module',
10122
+ },
10125
10123
  { capability: 'Movement', attribute: 'thrust', description: 'Propulsion force' },
10126
10124
  { capability: 'Movement', attribute: 'drain', description: 'Energy consumed per movement' },
10127
10125
  { capability: 'Energy', attribute: 'capacity', description: 'Maximum energy storage' },
@@ -10159,338 +10157,149 @@ const capabilityAttributes = [
10159
10157
  description: 'Energy consumed per target during haul-beam operation',
10160
10158
  },
10161
10159
  ];
10162
- const statMappings = [
10163
- {
10164
- stat: 'Strength',
10165
- capability: 'Gathering',
10166
- attribute: 'yield',
10167
- rationale: 'Raw mechanical force drives faster gathering',
10168
- },
10169
- {
10170
- stat: 'Strength',
10171
- capability: 'Storage',
10172
- attribute: 'capacity',
10173
- rationale: 'Stronger walls hold more capacity per mass',
10174
- },
10175
- {
10176
- stat: 'Strength',
10177
- capability: 'Launch',
10178
- attribute: 'capacity',
10179
- rationale: 'Stronger housing handles larger launch loads',
10180
- },
10181
- {
10182
- stat: 'Tolerance',
10183
- capability: 'Movement',
10184
- attribute: 'thrust',
10185
- rationale: 'Engine components that tolerate more can push harder',
10186
- },
10187
- {
10188
- stat: 'Tolerance',
10189
- capability: 'Energy',
10190
- attribute: 'recharge',
10191
- rationale: 'Generator housing withstands stress for faster recharge',
10192
- },
10193
- {
10194
- stat: 'Tolerance',
10195
- capability: 'Gathering',
10196
- attribute: 'depth',
10197
- rationale: 'Housing withstands pressure/heat at extreme depths',
10198
- },
10199
- {
10200
- stat: 'Tolerance',
10201
- capability: 'Warp',
10202
- attribute: 'range',
10203
- rationale: 'Warp drive housing withstands extreme forces',
10204
- },
10205
- {
10206
- stat: 'Density',
10207
- capability: 'Hull',
10208
- attribute: 'mass',
10209
- rationale: 'Lighter metal = lighter hull',
10210
- },
10211
- {
10212
- stat: 'Density',
10213
- capability: 'Loader',
10214
- attribute: 'mass',
10215
- rationale: 'Lighter metal = lighter loader units',
10216
- },
10217
- {
10218
- stat: 'Density',
10219
- capability: 'Movement',
10220
- attribute: 'drain',
10221
- rationale: 'Lighter components require less energy to move',
10222
- },
10223
- {
10224
- stat: 'Conductivity',
10225
- capability: 'Movement',
10226
- attribute: 'drain',
10227
- rationale: 'Efficient energy transfer reduces movement energy cost',
10228
- },
10229
- {
10230
- stat: 'Conductivity',
10231
- capability: 'Gathering',
10232
- attribute: 'drain',
10233
- rationale: 'Efficient energy transfer reduces gathering energy cost',
10234
- },
10235
- {
10236
- stat: 'Conductivity',
10237
- capability: 'Crafter',
10238
- attribute: 'drain',
10239
- rationale: 'Efficient energy transfer reduces crafting energy cost',
10240
- },
10241
- {
10242
- stat: 'Conductivity',
10243
- capability: 'Energy',
10244
- attribute: 'recharge',
10245
- rationale: 'Better conductivity speeds energy flow during recharge',
10246
- },
10247
- {
10248
- stat: 'Ductility',
10249
- capability: 'Crafter',
10250
- attribute: 'quality',
10251
- rationale: 'Precise shaping enables tighter crafting tolerances',
10252
- },
10253
- {
10254
- stat: 'Ductility',
10255
- capability: 'Gathering',
10256
- attribute: 'yield',
10257
- rationale: 'Precisely shaped conduit components gather faster',
10258
- },
10259
- {
10260
- stat: 'Ductility',
10261
- capability: 'Storage',
10262
- attribute: 'capacity',
10263
- rationale: 'Precision-formed container walls maximize volume',
10264
- },
10265
- {
10266
- stat: 'Ductility',
10267
- capability: 'Loader',
10268
- attribute: 'mass',
10269
- rationale: 'Precision-formed precious metal reduces loader unit mass',
10270
- },
10271
- {
10272
- stat: 'Reflectivity',
10273
- capability: 'Gathering',
10274
- attribute: 'depth',
10275
- rationale: 'Reflective heat shielding protects equipment at depth',
10276
- },
10277
- {
10278
- stat: 'Reflectivity',
10279
- capability: 'Launch',
10280
- attribute: 'range',
10281
- rationale: 'Reflective surfaces focus electromagnetic launch energy',
10282
- },
10283
- {
10284
- stat: 'Volatility',
10285
- capability: 'Gathering',
10286
- attribute: 'yield',
10287
- rationale: 'Energy release powers faster gathering',
10288
- },
10289
- {
10290
- stat: 'Volatility',
10291
- capability: 'Movement',
10292
- attribute: 'thrust',
10293
- rationale: 'Energy release drives propulsion force',
10294
- },
10295
- {
10296
- stat: 'Volatility',
10297
- capability: 'Loader',
10298
- attribute: 'thrust',
10299
- rationale: 'Energy release powers loader motors',
10300
- },
10301
- {
10302
- stat: 'Volatility',
10303
- capability: 'Launch',
10304
- attribute: 'capacity',
10305
- rationale: 'Energy release enables launching heavier payloads',
10306
- },
10307
- {
10308
- stat: 'Reactivity',
10309
- capability: 'Crafter',
10310
- attribute: 'speed',
10311
- rationale: 'Reactive gases accelerate chemical/thermal processing',
10312
- },
10313
- {
10314
- stat: 'Reactivity',
10315
- capability: 'Gathering',
10316
- attribute: 'speed',
10317
- rationale: 'Reactive gases manage heat/friction during gathering',
10318
- },
10319
- {
10320
- stat: 'Reactivity',
10321
- capability: 'Launch',
10322
- attribute: 'drain',
10323
- rationale: 'Reactive gas medium reduces electromagnetic resistance',
10324
- },
10325
- {
10326
- stat: 'Thermal',
10327
- capability: 'Crafter',
10328
- attribute: 'quality',
10329
- rationale: 'Precise thermal control during fabrication',
10330
- },
10331
- {
10332
- stat: 'Thermal',
10333
- capability: 'Gathering',
10334
- attribute: 'drain',
10335
- rationale: 'Thermal management reduces energy waste during gathering',
10336
- },
10337
- {
10338
- stat: 'Thermal',
10339
- capability: 'Energy',
10340
- attribute: 'capacity',
10341
- rationale: 'Thermal management enables denser energy storage',
10342
- },
10343
- {
10344
- stat: 'Resonance',
10345
- capability: 'Energy',
10346
- attribute: 'capacity',
10347
- rationale: 'Resonating crystals store energy in fields',
10348
- },
10349
- {
10350
- stat: 'Resonance',
10351
- capability: 'Warp',
10352
- attribute: 'range',
10353
- rationale: 'Resonant crystals amplify warp field projection',
10354
- },
10355
- {
10356
- stat: 'Resonance',
10357
- capability: 'Launch',
10358
- attribute: 'range',
10359
- rationale: 'Resonant crystals focus electromagnetic launch field',
10360
- },
10361
- {
10362
- stat: 'Resonance',
10363
- capability: 'Launch',
10364
- attribute: 'capacity',
10365
- rationale: 'Stronger resonant field launches heavier payloads',
10366
- },
10367
- {
10368
- stat: 'Hardness',
10369
- capability: 'Crafter',
10370
- attribute: 'speed',
10371
- rationale: 'Hard tooling surfaces cut and shape materials faster',
10372
- },
10373
- {
10374
- stat: 'Hardness',
10375
- capability: 'Launch',
10376
- attribute: 'drain',
10377
- rationale: 'Hard rail surfaces reduce friction, less energy wasted',
10378
- },
10379
- {
10380
- stat: 'Clarity',
10381
- capability: 'Energy',
10382
- attribute: 'recharge',
10383
- rationale: 'Flawless crystals enable smoother energy flow during recharge',
10384
- },
10385
- {
10386
- stat: 'Clarity',
10387
- capability: 'Crafter',
10388
- attribute: 'quality',
10389
- rationale: 'Precision optics for calibration during fabrication',
10390
- },
10391
- {
10392
- stat: 'Clarity',
10393
- capability: 'Crafter',
10394
- attribute: 'drain',
10395
- rationale: 'Precision computing optimizes energy routing in factory',
10396
- },
10397
- {
10398
- stat: 'Plasticity',
10399
- capability: 'Crafter',
10400
- attribute: 'speed',
10401
- rationale: 'Easily reshaped materials speed up processing',
10402
- },
10403
- {
10404
- stat: 'Plasticity',
10405
- capability: 'Movement',
10406
- attribute: 'thrust',
10407
- rationale: 'Flexible polymer seals reduce friction in propulsion',
10408
- },
10409
- {
10410
- stat: 'Plasticity',
10411
- capability: 'Loader',
10412
- attribute: 'thrust',
10413
- rationale: 'Flexible joints improve loader force transfer',
10414
- },
10415
- {
10416
- stat: 'Insulation',
10417
- capability: 'Movement',
10418
- attribute: 'drain',
10419
- rationale: 'Better insulation reduces energy loss during movement',
10420
- },
10421
- {
10422
- stat: 'Insulation',
10423
- capability: 'Gathering',
10424
- attribute: 'drain',
10425
- rationale: 'Better insulation reduces energy loss during gathering',
10426
- },
10427
- {
10428
- stat: 'Insulation',
10429
- capability: 'Crafter',
10430
- attribute: 'drain',
10431
- rationale: 'Better insulation reduces energy loss during crafting',
10160
+ const invertedAttributes = new Set(['drain', 'mass']);
10161
+ function isInvertedAttribute(attribute) {
10162
+ return invertedAttributes.has(attribute);
10163
+ }
10164
+ function getCapabilityAttributes(capability) {
10165
+ if (capability) {
10166
+ return capabilityAttributes.filter((a) => a.capability === capability);
10167
+ }
10168
+ return capabilityAttributes;
10169
+ }
10170
+
10171
+ const ENTITY_HULL_SLOTS = {
10172
+ 0: { capability: 'Storage', attribute: 'capacity' },
10173
+ 1: { capability: 'Hull', attribute: 'mass' },
10174
+ 2: { capability: 'Storage', attribute: 'capacity' },
10175
+ 3: { capability: 'Storage', attribute: 'capacity' },
10176
+ };
10177
+ const SLOT_FORMULAS = {
10178
+ engine: {
10179
+ 0: { capability: 'Movement', attribute: 'thrust' },
10180
+ 1: { capability: 'Movement', attribute: 'drain' },
10432
10181
  },
10433
- {
10434
- stat: 'Insulation',
10435
- capability: 'Launch',
10436
- attribute: 'drain',
10437
- rationale: 'Better insulation reduces energy loss during launch',
10182
+ generator: {
10183
+ 0: { capability: 'Energy', attribute: 'capacity' },
10184
+ 1: { capability: 'Energy', attribute: 'recharge' },
10438
10185
  },
10439
- {
10440
- stat: 'Purity',
10441
- capability: 'Storage',
10442
- attribute: 'capacity',
10443
- rationale: 'Purer composites make better containers',
10186
+ gatherer: {
10187
+ 0: { capability: 'Gathering', attribute: 'yield' },
10188
+ 1: { capability: 'Gathering', attribute: 'depth' },
10189
+ 3: { capability: 'Gathering', attribute: 'drain' },
10190
+ 4: { capability: 'Gathering', attribute: 'speed' },
10444
10191
  },
10445
- {
10446
- stat: 'Purity',
10447
- capability: 'Gathering',
10448
- attribute: 'speed',
10449
- rationale: 'Purer bio-lubricants reduce friction during gathering',
10192
+ loader: {
10193
+ 0: { capability: 'Loader', attribute: 'mass' },
10194
+ 1: { capability: 'Loader', attribute: 'thrust' },
10450
10195
  },
10451
- {
10452
- stat: 'Purity',
10453
- capability: 'Energy',
10454
- attribute: 'capacity',
10455
- rationale: 'Purer organic electrolytes store more charge',
10196
+ crafter: {
10197
+ 0: { capability: 'Crafter', attribute: 'speed' },
10198
+ 1: { capability: 'Crafter', attribute: 'drain' },
10456
10199
  },
10457
- {
10458
- stat: 'Resonance',
10459
- capability: 'Hauler',
10460
- attribute: 'capacity',
10461
- rationale: 'Resonant field strength determines how many targets the haul beam can lock onto simultaneously.',
10200
+ storage: {
10201
+ 0: { capability: 'Storage', attribute: 'bonus' },
10202
+ 1: { capability: 'Storage', attribute: 'bonus' },
10203
+ 2: { capability: 'Storage', attribute: 'bonus' },
10204
+ 3: { capability: 'Storage', attribute: 'bonus' },
10462
10205
  },
10463
- {
10464
- stat: 'Conductivity',
10465
- capability: 'Hauler',
10466
- attribute: 'efficiency',
10467
- rationale: 'Energy-transfer efficiency reduces the thrust penalty from each hauled target.',
10206
+ hauler: {
10207
+ 0: { capability: 'Hauler', attribute: 'capacity' },
10208
+ 1: { capability: 'Hauler', attribute: 'efficiency' },
10209
+ 2: { capability: 'Hauler', attribute: 'drain' },
10468
10210
  },
10469
- {
10470
- stat: 'Clarity',
10471
- capability: 'Hauler',
10472
- attribute: 'drain',
10473
- rationale: 'Clarity-focused energy routing reduces per-target drain during haul-beam operation.',
10211
+ warp: {
10212
+ 0: { capability: 'Warp', attribute: 'range' },
10474
10213
  },
10475
- ];
10476
- const invertedAttributes = new Set(['drain', 'mass']);
10477
- function isInvertedAttribute(attribute) {
10478
- return invertedAttributes.has(attribute);
10214
+ 'ship-t1': ENTITY_HULL_SLOTS,
10215
+ 'container-t1': ENTITY_HULL_SLOTS,
10216
+ 'warehouse-t1': ENTITY_HULL_SLOTS,
10217
+ 'container-t2': ENTITY_HULL_SLOTS,
10218
+ };
10219
+
10220
+ const KIND_TO_ITEM_ID = {
10221
+ engine: ITEM_ENGINE_T1,
10222
+ generator: ITEM_GENERATOR_T1,
10223
+ gatherer: ITEM_GATHERER_T1,
10224
+ loader: ITEM_LOADER_T1,
10225
+ crafter: ITEM_CRAFTER_T1,
10226
+ storage: ITEM_STORAGE_T1,
10227
+ hauler: ITEM_HAULER_T1,
10228
+ warp: ITEM_WARP_T1,
10229
+ 'ship-t1': ITEM_SHIP_T1_PACKED,
10230
+ 'container-t1': ITEM_CONTAINER_T1_PACKED,
10231
+ 'warehouse-t1': ITEM_WAREHOUSE_T1_PACKED,
10232
+ 'container-t2': ITEM_CONTAINER_T2_PACKED,
10233
+ };
10234
+ function isCategoryInput(input) {
10235
+ return 'category' in input;
10479
10236
  }
10480
- function getCapabilityAttributes(capability) {
10481
- if (capability) {
10482
- return capabilityAttributes.filter((a) => a.capability === capability);
10237
+ function traceToRawCategoryStat(recipe, source, visited = new Set()) {
10238
+ const input = recipe.inputs[source.inputIndex];
10239
+ if (!input)
10240
+ return undefined;
10241
+ if (isCategoryInput(input)) {
10242
+ const defs = getStatDefinitions(input.category);
10243
+ return defs[source.statIndex];
10483
10244
  }
10484
- return capabilityAttributes;
10245
+ if (visited.has(input.itemId))
10246
+ return undefined;
10247
+ const subRecipe = getRecipe(input.itemId);
10248
+ if (!subRecipe)
10249
+ return undefined;
10250
+ const subSlot = subRecipe.statSlots[source.statIndex];
10251
+ if (!subSlot)
10252
+ return undefined;
10253
+ const subSource = subSlot.sources[0];
10254
+ if (!subSource)
10255
+ return undefined;
10256
+ const nextVisited = new Set(visited);
10257
+ nextVisited.add(input.itemId);
10258
+ return traceToRawCategoryStat(subRecipe, subSource, nextVisited);
10259
+ }
10260
+ let cached;
10261
+ function deriveStatMappings() {
10262
+ if (cached)
10263
+ return cached;
10264
+ const out = [];
10265
+ const seen = new Set();
10266
+ for (const [kind, slots] of Object.entries(SLOT_FORMULAS)) {
10267
+ const itemId = KIND_TO_ITEM_ID[kind];
10268
+ const recipe = getRecipe(itemId);
10269
+ if (!recipe)
10270
+ continue;
10271
+ for (const [slotIdxStr, consumer] of Object.entries(slots)) {
10272
+ const slotIdx = Number(slotIdxStr);
10273
+ const slot = recipe.statSlots[slotIdx];
10274
+ if (!slot)
10275
+ continue;
10276
+ for (const source of slot.sources) {
10277
+ const stat = traceToRawCategoryStat(recipe, source);
10278
+ if (!stat)
10279
+ continue;
10280
+ const key = `${stat.label}|${consumer.capability}|${consumer.attribute}`;
10281
+ if (seen.has(key))
10282
+ continue;
10283
+ seen.add(key);
10284
+ out.push({
10285
+ stat: stat.label,
10286
+ capability: consumer.capability,
10287
+ attribute: consumer.attribute,
10288
+ });
10289
+ }
10290
+ }
10291
+ }
10292
+ cached = out;
10293
+ return out;
10485
10294
  }
10486
10295
  function getStatMappings() {
10487
- return statMappings;
10296
+ return deriveStatMappings();
10488
10297
  }
10489
10298
  function getStatMappingsForStat(stat) {
10490
- return statMappings.filter((m) => m.stat === stat);
10299
+ return deriveStatMappings().filter((m) => m.stat === stat);
10491
10300
  }
10492
10301
  function getStatMappingsForCapability(capability) {
10493
- return statMappings.filter((m) => m.capability === capability);
10302
+ return deriveStatMappings().filter((m) => m.capability === capability);
10494
10303
  }
10495
10304
 
10496
10305
  function toNum(v) {
@@ -10629,10 +10438,11 @@ function computeCapabilityGroup(moduleType, stats) {
10629
10438
  };
10630
10439
  }
10631
10440
  case MODULE_STORAGE: {
10632
- const str = stats.strength ?? 500;
10633
- const hrd = stats.hardness ?? 500;
10634
- const sat = stats.saturation ?? 500;
10635
- const statSum = str + hrd + sat;
10441
+ const str = stats.strength;
10442
+ const den = stats.density;
10443
+ const hrd = stats.hardness;
10444
+ const sat = stats.saturation;
10445
+ const statSum = str + den + hrd + sat;
10636
10446
  const pct = 10 + Math.floor((statSum * 10) / 2997);
10637
10447
  return { capability: 'Storage', attributes: [{ label: 'Capacity Bonus', value: pct }] };
10638
10448
  }
@@ -10937,16 +10747,16 @@ function computeBaseCapacityWarehouse(stats) {
10937
10747
  }
10938
10748
  const computeEngineThrust = (vol) => 400 + idiv(vol * 3, 4);
10939
10749
  const computeEngineDrain = (thm) => Math.max(30, 50 - idiv(thm, 70));
10940
- const computeGeneratorCap = (res) => 300 + idiv(res, 6);
10941
- const computeGeneratorRech = (ref) => 1 + idiv(ref * 3, 1000);
10750
+ const computeGeneratorCap = (com) => 300 + idiv(com, 6);
10751
+ const computeGeneratorRech = (fin) => 1 + idiv(fin * 3, 1000);
10942
10752
  const computeGathererYield = (str) => 200 + str;
10943
10753
  const computeGathererDrain = (con) => Math.max(250, 1250 - idiv(con * 25, 20));
10944
10754
  const computeGathererDepth = (tol) => 200 + idiv(tol * 3, 2);
10945
10755
  const computeGathererSpeed = (ref) => 100 + idiv(ref * 4, 5);
10946
- const computeLoaderMass = (fin) => Math.max(200, 2000 - fin * 2);
10756
+ const computeLoaderMass = (ins) => Math.max(200, 2000 - ins * 2);
10947
10757
  const computeLoaderThrust = (pla) => 1 + idiv(pla, 500);
10948
10758
  const computeCrafterSpeed = (rea) => 100 + idiv(rea * 4, 5);
10949
- const computeCrafterDrain = (com) => Math.max(5, 30 - idiv(com, 33));
10759
+ const computeCrafterDrain = (fin) => Math.max(5, 30 - idiv(fin, 33));
10950
10760
  const computeWarpRange = (stat) => 100 + stat * 3;
10951
10761
  function entityDisplayName(itemId) {
10952
10762
  switch (itemId) {
@@ -11127,5 +10937,5 @@ function describeItem(resolved, opts) {
11127
10937
  return `${tier} ${resolved.name} · ${mass}`;
11128
10938
  }
11129
10939
 
11130
- export { ActionsManager, BASE_ORBITAL_MASS, BLEND_INPUTS_MUST_MATCH, BLEND_REQUIRES_MULTIPLE, BLEND_STAT_LESS_NOT_SUPPORTED, CANCEL_CONTAINS_GROUPED_TASK, CANCEL_PAIRED_HAS_PENDING, CATEGORY_LABELS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_CAPACITY_EXCEEDED, CONTAINER_NOT_FOUND, CONTAINER_Z, CRAFT_ENERGY_DIVISOR, CRAFT_EXCEEDS_ENERGY_CAPACITY, CRAFT_NOT_ENOUGH_ENERGY, Container, Coordinates, DEPLOY_ENTITY_HAS_SCHEDULE, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, DESTINATION_CAPACITY_EXCEEDED, ENTITY_CAPACITY_EXCEEDED, ENTITY_NO_CRAFTER, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, EntityInventory, EntityType, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GATHER_EXCEEDS_ENERGY_CAPACITY, GATHER_NOT_ENOUGH_ENERGY, GROUP_DUPLICATE_ENTITY, GROUP_EMPTY, GROUP_ENTITY_NOT_MOVABLE, GROUP_HAUL_CAPACITY_EXCEEDED, GROUP_NOT_FOUND, GROUP_NOT_SAME_LOCATION, GROUP_NOT_SAME_OWNER, GROUP_NO_THRUST, GameState, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_BIOMASS_T1, ITEM_BIOMASS_T10, ITEM_BIOMASS_T2, ITEM_BIOMASS_T3, ITEM_BIOMASS_T4, ITEM_BIOMASS_T5, ITEM_BIOMASS_T6, ITEM_BIOMASS_T7, ITEM_BIOMASS_T8, ITEM_BIOMASS_T9, ITEM_CARGO_ARM, ITEM_CARGO_LINING, ITEM_CARGO_LINING_T2, ITEM_CONTAINER_T1_PACKED, ITEM_CONTAINER_T2_PACKED, ITEM_CRAFTER_T1, ITEM_CRYSTAL_T1, ITEM_CRYSTAL_T10, ITEM_CRYSTAL_T2, ITEM_CRYSTAL_T3, ITEM_CRYSTAL_T4, ITEM_CRYSTAL_T5, ITEM_CRYSTAL_T6, ITEM_CRYSTAL_T7, ITEM_CRYSTAL_T8, ITEM_CRYSTAL_T9, ITEM_DOES_NOT_EXIST, ITEM_ENGINE_T1, ITEM_FOCUSING_ARRAY, ITEM_GAS_T1, ITEM_GAS_T10, ITEM_GAS_T2, ITEM_GAS_T3, ITEM_GAS_T4, ITEM_GAS_T5, ITEM_GAS_T6, ITEM_GAS_T7, ITEM_GAS_T8, ITEM_GAS_T9, ITEM_GATHERER_T1, ITEM_GENERATOR_T1, ITEM_HAULER_T1, ITEM_HULL_PLATES, ITEM_HULL_PLATES_T2, ITEM_LOADER_T1, ITEM_MATTER_CONDUIT, ITEM_NOT_AVAILABLE_AT_LOCATION, ITEM_NOT_DEPLOYABLE, ITEM_NOT_PACKED_ENTITY, ITEM_ORE_T1, ITEM_ORE_T10, ITEM_ORE_T2, ITEM_ORE_T3, ITEM_ORE_T4, ITEM_ORE_T5, ITEM_ORE_T6, ITEM_ORE_T7, ITEM_ORE_T8, ITEM_ORE_T9, ITEM_POWER_CELL, ITEM_REACTION_CHAMBER, ITEM_REGOLITH_T1, ITEM_REGOLITH_T10, ITEM_REGOLITH_T2, ITEM_REGOLITH_T3, ITEM_REGOLITH_T4, ITEM_REGOLITH_T5, ITEM_REGOLITH_T6, ITEM_REGOLITH_T7, ITEM_REGOLITH_T8, ITEM_REGOLITH_T9, ITEM_SHIP_T1_PACKED, ITEM_STORAGE_T1, ITEM_SURVEY_PROBE, ITEM_THRUSTER_CORE, ITEM_TOOL_BIT, ITEM_TYPE_COMPONENT, ITEM_TYPE_ENTITY, ITEM_TYPE_MODULE, ITEM_TYPE_RESOURCE, ITEM_WAREHOUSE_T1_PACKED, ITEM_WARP_T1, InventoryAccessor, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, MODULE_ANY, MODULE_CARGO_NOT_FOUND, MODULE_CRAFTER, MODULE_ENGINE, MODULE_ENTITY_BUSY, MODULE_GATHERER, MODULE_GENERATOR, MODULE_HAULER, MODULE_LAUNCHER, MODULE_LOADER, MODULE_NOT_MODULE, MODULE_SLOT_EMPTY, MODULE_SLOT_INVALID, MODULE_SLOT_OCCUPIED, MODULE_STORAGE, MODULE_TYPE_MISMATCH, MODULE_WARP, index as NFT, NO_SCHEDULE, PLANET_SUBTYPE_GAS_GIANT, PLANET_SUBTYPE_ICY, PLANET_SUBTYPE_INDUSTRIAL, PLANET_SUBTYPE_OCEAN, PLANET_SUBTYPE_ROCKY, PLANET_SUBTYPE_TERRESTRIAL, PLAYER_ALREADY_JOINED, PLAYER_NOT_FOUND, PLAYER_NOT_JOINED, PRECISION$1 as PRECISION, platform as PlatformContract, Types$1 as PlatformTypes, Player, PlayersManager, RECIPE_INPUTS_EXCESS, RECIPE_INPUTS_INSUFFICIENT, RECIPE_INPUTS_INVALID, RECIPE_INPUTS_MIXED, RECIPE_NOT_FOUND, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, RESERVE_TIERS, RESOLVE_COUNT_EXCEEDS_COMPLETED, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_CAPACITY_EXCEEDED, SHIP_CARGO_NOT_LOADED, SHIP_CARGO_NOT_OWNED, SHIP_INVALID_CARGO, SHIP_INVALID_DESTINATION, SHIP_INVALID_TRAVEL_DURATION, SHIP_NOT_ARRIVED, SHIP_NOT_ENOUGH_ENERGY, SHIP_NOT_ENOUGH_ENERGY_CAPACITY, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, STARTER_ALREADY_CLAIMED, ScheduleAccessor, server as ServerContract, Types as ServerTypes, Ship, Shipload, SubscriptionsManager, TIER_ADJECTIVES, TIER_ROLL_MAX, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, WARP_HAS_CARGO, WARP_HAS_SCHEDULE, WARP_NOT_FULL_ENERGY, WARP_NO_CAPABILITY, WARP_OUT_OF_RANGE, Warehouse, WebSocketConnection, availableCapacity$1 as availableCapacity, availableCapacityFromMass, blendCargoStacks, blendComponentStacks, blendCrossGroup, blendStacks, buildEntityDescription, calcCargoItemMass, calcCargoMass, calcEnergyUsage, calcLoadDuration, calcStacksMass, calc_acceleration, calc_craft_duration, calc_craft_energy, calc_energyusage, calc_flighttime, calc_gather_duration, calc_gather_energy, calc_loader_acceleration, calc_loader_flighttime, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calculateFlightTime, calculateLoadTimeBreakdown, calculateRefuelingTime, calculateTransferTime, canMove, capabilityAttributes, capabilityNames, capsHasCrafter, capsHasGatherer, capsHasHauler, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, cargoItemToStack, cargoUtils, categoryColors, categoryFromIndex, categoryIconShapes, categoryIcons, categoryLabel, categoryLabelFromIndex, componentIcon, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass, computeComponentStats, computeContainerCapabilities, computeContainerT2Capabilities, computeCraftedOutputStats, computeCrafterCapabilities, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityStats, computeGathererCapabilities, computeGathererDepth, computeGathererDrain, computeGathererSpeed, computeGathererYield, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeHaulPenalty, computeHaulerCapabilities, computeHaulerDrain, computeInputMass, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeShipCapabilities, computeShipHullCapabilities, computeStorageCapabilities, computeWarehouseCapabilities, computeWarehouseHullCapabilities, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeCraftedItemStats, decodeStat, decodeStats, Shipload as default, deriveLocation, deriveLocationEpoch, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStrata, deriveStratum, describeItem, describeModule, describeModuleForItem, describeModuleForSlot, deserializeAsset, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, displayName, distanceBetweenCoordinates, distanceBetweenPoints, encodeGatheredCargoStats, encodeStats, energyPercent, entityDisplayName, estimateDealTravelTime, estimateTravelTime, findItemByCategoryAndTier, findNearbyPlanets, formatMass, formatMassDelta, formatModuleLine, formatTier, getCapabilityAttributes, getCategoryInfo, getComponents, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEligibleResources, getEntityItems, getEntityLayout, getEpochInfo, getFlightOrigin, getItem, getItems, getLocationCandidates, getLocationType, getLocationTypeName, getModuleCapabilityType, getModules, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getRecipe, getResourceTier, getResourceWeight, getResources, getStatDefinitions, getStatMappings, getStatMappingsForCapability, getStatMappingsForStat, getStatName, getSystemName, hasEnergy, hasEnergyForDistance$1 as hasEnergyForDistance, hasGatherer, hasLoaders, hasMass, hasSchedule, hasSpace$1 as hasSpace, hasSpaceForMass, hasStorage, hasSystem, hash, hash512, isCraftedItem, isFull$1 as isFull, isFullFromMass, isGatherableLocation, isInvertedAttribute, isModuleItem, isRelatedItem, isSubscriptionsDebugEnabled, itemAbbreviations, itemCategory, itemIds, itemOffset, itemTier, itemTypeCode, lerp$1 as lerp, makeContainer, makeShip, makeWarehouse, mapEntity, maxTravelDistance, mergeStacks, moduleAccepts, moduleDisplayName, moduleIcon, moduleSlotTypeToCode, needsRecharge, parseWireEntity, projectEntity, projectEntityAt, projectFromCurrentState, projectFromCurrentStateAt, readCommonBase, removeFromStacks, renderDescription, resolveItem, resolveItemCategory, resolveStats, rollTier, rollWithinTier, rotation, schedule, setSubscriptionsDebug, stackKey, stackToCargoItem, stacksEqual, statMappings, tierColors, tierLabel, tierLabels, toLocation, typeLabel, validateSchedule };
10940
+ export { ActionsManager, BASE_ORBITAL_MASS, BLEND_INPUTS_MUST_MATCH, BLEND_REQUIRES_MULTIPLE, BLEND_STAT_LESS_NOT_SUPPORTED, CANCEL_CONTAINS_GROUPED_TASK, CANCEL_PAIRED_HAS_PENDING, CATEGORY_LABELS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_CAPACITY_EXCEEDED, CONTAINER_NOT_FOUND, CONTAINER_Z, CRAFT_ENERGY_DIVISOR, CRAFT_EXCEEDS_ENERGY_CAPACITY, CRAFT_NOT_ENOUGH_ENERGY, Container, Coordinates, DEPLOY_ENTITY_HAS_SCHEDULE, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, DESTINATION_CAPACITY_EXCEEDED, ENTITY_CAPACITY_EXCEEDED, ENTITY_NO_CRAFTER, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, EntityInventory, EntityType, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GATHER_EXCEEDS_ENERGY_CAPACITY, GATHER_NOT_ENOUGH_ENERGY, GROUP_DUPLICATE_ENTITY, GROUP_EMPTY, GROUP_ENTITY_NOT_MOVABLE, GROUP_HAUL_CAPACITY_EXCEEDED, GROUP_NOT_FOUND, GROUP_NOT_SAME_LOCATION, GROUP_NOT_SAME_OWNER, GROUP_NO_THRUST, GameState, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_BIOMASS_T1, ITEM_BIOMASS_T10, ITEM_BIOMASS_T2, ITEM_BIOMASS_T3, ITEM_BIOMASS_T4, ITEM_BIOMASS_T5, ITEM_BIOMASS_T6, ITEM_BIOMASS_T7, ITEM_BIOMASS_T8, ITEM_BIOMASS_T9, ITEM_CARGO_ARM, ITEM_CARGO_LINING, ITEM_CARGO_LINING_T2, ITEM_CONTAINER_T1_PACKED, ITEM_CONTAINER_T2_PACKED, ITEM_CRAFTER_T1, ITEM_CRYSTAL_T1, ITEM_CRYSTAL_T10, ITEM_CRYSTAL_T2, ITEM_CRYSTAL_T3, ITEM_CRYSTAL_T4, ITEM_CRYSTAL_T5, ITEM_CRYSTAL_T6, ITEM_CRYSTAL_T7, ITEM_CRYSTAL_T8, ITEM_CRYSTAL_T9, ITEM_DOES_NOT_EXIST, ITEM_ENGINE_T1, ITEM_FOCUSING_ARRAY, ITEM_GAS_T1, ITEM_GAS_T10, ITEM_GAS_T2, ITEM_GAS_T3, ITEM_GAS_T4, ITEM_GAS_T5, ITEM_GAS_T6, ITEM_GAS_T7, ITEM_GAS_T8, ITEM_GAS_T9, ITEM_GATHERER_T1, ITEM_GENERATOR_T1, ITEM_HAULER_T1, ITEM_HULL_PLATES, ITEM_HULL_PLATES_T2, ITEM_LOADER_T1, ITEM_MATTER_CONDUIT, ITEM_NOT_AVAILABLE_AT_LOCATION, ITEM_NOT_DEPLOYABLE, ITEM_NOT_PACKED_ENTITY, ITEM_ORE_T1, ITEM_ORE_T10, ITEM_ORE_T2, ITEM_ORE_T3, ITEM_ORE_T4, ITEM_ORE_T5, ITEM_ORE_T6, ITEM_ORE_T7, ITEM_ORE_T8, ITEM_ORE_T9, ITEM_POWER_CELL, ITEM_REACTION_CHAMBER, ITEM_REGOLITH_T1, ITEM_REGOLITH_T10, ITEM_REGOLITH_T2, ITEM_REGOLITH_T3, ITEM_REGOLITH_T4, ITEM_REGOLITH_T5, ITEM_REGOLITH_T6, ITEM_REGOLITH_T7, ITEM_REGOLITH_T8, ITEM_REGOLITH_T9, ITEM_SHIP_T1_PACKED, ITEM_STORAGE_T1, ITEM_SURVEY_PROBE, ITEM_THRUSTER_CORE, ITEM_TOOL_BIT, ITEM_TYPE_COMPONENT, ITEM_TYPE_ENTITY, ITEM_TYPE_MODULE, ITEM_TYPE_RESOURCE, ITEM_WAREHOUSE_T1_PACKED, ITEM_WARP_T1, InventoryAccessor, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, MODULE_ANY, MODULE_CARGO_NOT_FOUND, MODULE_CRAFTER, MODULE_ENGINE, MODULE_ENTITY_BUSY, MODULE_GATHERER, MODULE_GENERATOR, MODULE_HAULER, MODULE_LAUNCHER, MODULE_LOADER, MODULE_NOT_MODULE, MODULE_SLOT_EMPTY, MODULE_SLOT_INVALID, MODULE_SLOT_OCCUPIED, MODULE_STORAGE, MODULE_TYPE_MISMATCH, MODULE_WARP, index as NFT, NO_SCHEDULE, PLANET_SUBTYPE_GAS_GIANT, PLANET_SUBTYPE_ICY, PLANET_SUBTYPE_INDUSTRIAL, PLANET_SUBTYPE_OCEAN, PLANET_SUBTYPE_ROCKY, PLANET_SUBTYPE_TERRESTRIAL, PLAYER_ALREADY_JOINED, PLAYER_NOT_FOUND, PLAYER_NOT_JOINED, PRECISION$1 as PRECISION, platform as PlatformContract, Types$1 as PlatformTypes, Player, PlayersManager, RECIPE_INPUTS_EXCESS, RECIPE_INPUTS_INSUFFICIENT, RECIPE_INPUTS_INVALID, RECIPE_INPUTS_MIXED, RECIPE_NOT_FOUND, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, RESERVE_TIERS, RESOLVE_COUNT_EXCEEDS_COMPLETED, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_CAPACITY_EXCEEDED, SHIP_CARGO_NOT_LOADED, SHIP_CARGO_NOT_OWNED, SHIP_INVALID_CARGO, SHIP_INVALID_DESTINATION, SHIP_INVALID_TRAVEL_DURATION, SHIP_NOT_ARRIVED, SHIP_NOT_ENOUGH_ENERGY, SHIP_NOT_ENOUGH_ENERGY_CAPACITY, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, SLOT_FORMULAS, STARTER_ALREADY_CLAIMED, ScheduleAccessor, server as ServerContract, Types as ServerTypes, Ship, Shipload, SubscriptionsManager, TIER_ADJECTIVES, TIER_ROLL_MAX, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, WARP_HAS_CARGO, WARP_HAS_SCHEDULE, WARP_NOT_FULL_ENERGY, WARP_NO_CAPABILITY, WARP_OUT_OF_RANGE, Warehouse, WebSocketConnection, availableCapacity$1 as availableCapacity, availableCapacityFromMass, blendCargoStacks, blendComponentStacks, blendCrossGroup, blendStacks, buildEntityDescription, calcCargoItemMass, calcCargoMass, calcEnergyUsage, calcLoadDuration, calcStacksMass, calc_acceleration, calc_craft_duration, calc_craft_energy, calc_energyusage, calc_flighttime, calc_gather_duration, calc_gather_energy, calc_loader_acceleration, calc_loader_flighttime, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calculateFlightTime, calculateLoadTimeBreakdown, calculateRefuelingTime, calculateTransferTime, canMove, capabilityAttributes, capabilityNames, capsHasCrafter, capsHasGatherer, capsHasHauler, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, cargoItemToStack, cargoUtils, categoryColors, categoryFromIndex, categoryIconShapes, categoryIcons, categoryLabel, categoryLabelFromIndex, componentIcon, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass, computeComponentStats, computeContainerCapabilities, computeContainerT2Capabilities, computeCraftedOutputStats, computeCrafterCapabilities, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityStats, computeGathererCapabilities, computeGathererDepth, computeGathererDrain, computeGathererSpeed, computeGathererYield, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeHaulPenalty, computeHaulerCapabilities, computeHaulerDrain, computeInputMass, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeShipCapabilities, computeShipHullCapabilities, computeStorageCapabilities, computeWarehouseCapabilities, computeWarehouseHullCapabilities, computeWarpRange, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeCraftedItemStats, decodeStat, decodeStats, Shipload as default, deriveLocation, deriveLocationEpoch, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStatMappings, deriveStrata, deriveStratum, describeItem, describeModule, describeModuleForItem, describeModuleForSlot, deserializeAsset, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, displayName, distanceBetweenCoordinates, distanceBetweenPoints, encodeGatheredCargoStats, encodeStats, energyPercent, entityDisplayName, estimateDealTravelTime, estimateTravelTime, findItemByCategoryAndTier, findNearbyPlanets, formatMass, formatMassDelta, formatModuleLine, formatTier, getCapabilityAttributes, getCategoryInfo, getComponents, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEligibleResources, getEntityItems, getEntityLayout, getEpochInfo, getFlightOrigin, getItem, getItems, getLocationCandidates, getLocationType, getLocationTypeName, getModuleCapabilityType, getModules, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getRecipe, getResourceTier, getResourceWeight, getResources, getStatDefinitions, getStatMappings, getStatMappingsForCapability, getStatMappingsForStat, getStatName, getSystemName, hasEnergy, hasEnergyForDistance$1 as hasEnergyForDistance, hasGatherer, hasLoaders, hasMass, hasSchedule, hasSpace$1 as hasSpace, hasSpaceForMass, hasStorage, hasSystem, hash, hash512, isCraftedItem, isFull$1 as isFull, isFullFromMass, isGatherableLocation, isInvertedAttribute, isModuleItem, isRelatedItem, isSubscriptionsDebugEnabled, itemAbbreviations, itemCategory, itemIds, itemOffset, itemTier, itemTypeCode, lerp$1 as lerp, makeContainer, makeShip, makeWarehouse, mapEntity, maxTravelDistance, mergeStacks, moduleAccepts, moduleDisplayName, moduleIcon, moduleSlotTypeToCode, needsRecharge, parseWireEntity, projectEntity, projectEntityAt, projectFromCurrentState, projectFromCurrentStateAt, readCommonBase, removeFromStacks, renderDescription, resolveItem, resolveItemCategory, resolveStats, rollTier, rollWithinTier, rotation, schedule, setSubscriptionsDebug, stackKey, stackToCargoItem, stacksEqual, tierColors, tierLabel, tierLabels, toLocation, typeLabel, validateSchedule };
11131
10941
  //# sourceMappingURL=shipload.m.js.map