@shipload/sdk 1.0.0-next.36 → 1.0.0-next.38

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
@@ -3719,11 +3719,11 @@ var recipes = [
3719
3719
  outputMass: 960000,
3720
3720
  inputs: [
3721
3721
  {
3722
- itemId: 10008,
3722
+ itemId: 10009,
3723
3723
  quantity: 300
3724
3724
  },
3725
3725
  {
3726
- itemId: 10009,
3726
+ itemId: 10006,
3727
3727
  quantity: 300
3728
3728
  }
3729
3729
  ],
@@ -3731,7 +3731,7 @@ var recipes = [
3731
3731
  {
3732
3732
  sources: [
3733
3733
  {
3734
- inputIndex: 1,
3734
+ inputIndex: 0,
3735
3735
  statIndex: 0
3736
3736
  }
3737
3737
  ]
@@ -3739,8 +3739,8 @@ var recipes = [
3739
3739
  {
3740
3740
  sources: [
3741
3741
  {
3742
- inputIndex: 0,
3743
- statIndex: 1
3742
+ inputIndex: 1,
3743
+ statIndex: 0
3744
3744
  }
3745
3745
  ]
3746
3746
  }
@@ -5121,8 +5121,8 @@ const itemMetadata = {
5121
5121
  color: '#B877FF',
5122
5122
  },
5123
5123
  10105: {
5124
- name: 'Storage',
5125
- description: 'Expands cargo capacity based on hull material quality.',
5124
+ name: 'Cargo Bay',
5125
+ description: 'Expanded cargo storage with reinforced internal holds.',
5126
5126
  color: '#8B7355',
5127
5127
  },
5128
5128
  10106: {
@@ -5136,8 +5136,8 @@ const itemMetadata = {
5136
5136
  color: '#9be4ff',
5137
5137
  },
5138
5138
  10108: {
5139
- name: 'Battery',
5140
- description: 'Extends energy capacity. Stores additional charge produced by generators, letting builds chain more high-drain actions between recharges.',
5139
+ name: 'Battery Bank',
5140
+ description: 'Stores additional charge produced by generators.',
5141
5141
  color: '#4ADBFF',
5142
5142
  },
5143
5143
  10200: {
@@ -5556,7 +5556,7 @@ function endpointInRegion(seed, R, key) {
5556
5556
  const oy = ((h[4] << 24) | (h[5] << 16) | (h[6] << 8) | h[7]) >>> 0;
5557
5557
  return { x: R.rx * WH.RSIZE + (ox % WH.RSIZE), y: R.ry * WH.RSIZE + (oy % WH.RSIZE) };
5558
5558
  }
5559
- function dist(a, b) {
5559
+ function dist$1(a, b) {
5560
5560
  return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
5561
5561
  }
5562
5562
  function wormholeOfRegion(seed, R) {
@@ -5568,7 +5568,7 @@ function wormholeOfRegion(seed, R) {
5568
5568
  return null;
5569
5569
  const A = endpointInRegion(seed, R, key);
5570
5570
  const B = endpointInRegion(seed, P, key);
5571
- if (dist(A, B) < WH.MIN_REACH)
5571
+ if (dist$1(A, B) < WH.MIN_REACH)
5572
5572
  return null;
5573
5573
  return { A, B };
5574
5574
  }
@@ -13010,6 +13010,9 @@ const clampUint32 = (v) => Math.min(Math.max(Math.floor(v), 0), 4294967295);
13010
13010
  function applySlotMultiplier(value, outputPct) {
13011
13011
  return clampUint16(Math.floor((value * outputPct) / 100));
13012
13012
  }
13013
+ function applySlotMultiplierUint32(value, outputPct) {
13014
+ return clampUint32(Math.floor((value * outputPct) / 100));
13015
+ }
13013
13016
  function getSlotAmp(layout, slotIndex) {
13014
13017
  return layout[slotIndex]?.outputPct ?? 100;
13015
13018
  }
@@ -13082,10 +13085,10 @@ function computeLoaderCapabilities(stats) {
13082
13085
  }
13083
13086
  function computeCrafterCapabilities(stats) {
13084
13087
  const rea = stats.reactivity;
13085
- const fin = stats.fineness;
13088
+ const con = stats.conductivity;
13086
13089
  return {
13087
13090
  speed: 100 + Math.floor((rea * 4) / 5),
13088
- drain: Math.max(5, 30 - Math.floor(fin / 33)),
13091
+ drain: Math.max(5, 30 - Math.floor(con / 33)),
13089
13092
  };
13090
13093
  }
13091
13094
  function computeHaulerCapabilities(stats) {
@@ -13098,14 +13101,21 @@ function computeHaulerCapabilities(stats) {
13098
13101
  drain: Math.max(3, 15 - Math.floor(reflectivity / 80)),
13099
13102
  };
13100
13103
  }
13101
- function computeStorageCapabilities(stats, baseCapacity) {
13102
- const strength = stats.strength;
13103
- const density = stats.density;
13104
- const hardness = stats.hardness;
13105
- const cohesion = stats.cohesion;
13104
+ function computeStorageCapabilities(stats) {
13105
+ const strength = stats.strength ?? 0;
13106
+ const density = stats.density ?? 0;
13107
+ const hardness = stats.hardness ?? 0;
13108
+ const cohesion = stats.cohesion ?? 0;
13106
13109
  const statSum = strength + density + hardness + cohesion;
13107
- const capacityBonus = Math.floor((baseCapacity * (10 + Math.floor((statSum * 10) / 2997))) / 100);
13108
- return { capacityBonus };
13110
+ return { capacity: 10000000 + Math.floor((statSum * 50000000) / 3996) };
13111
+ }
13112
+ function computeBatteryCapabilities(stats) {
13113
+ const volatility = stats.volatility ?? 0;
13114
+ const thermal = stats.thermal ?? 0;
13115
+ const plasticity = stats.plasticity ?? 0;
13116
+ const insulation = stats.insulation ?? 0;
13117
+ const statSum = volatility + thermal + plasticity + insulation;
13118
+ return { capacity: 2500 + Math.floor((statSum * 7500) / 3996) };
13109
13119
  }
13110
13120
  function computeBaseCapacity(itemId, stats) {
13111
13121
  switch (itemId) {
@@ -13150,7 +13160,7 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
13150
13160
  let totalGathDrain = 0;
13151
13161
  let maxGathDepth = 0;
13152
13162
  let hasGatherer = false;
13153
- let totalStorageBonus = 0;
13163
+ let totalStorageCapacity = 0;
13154
13164
  const baseCapacity = computeBaseCapacity(itemId, stats);
13155
13165
  let installedModuleMass = 0;
13156
13166
  let totalCrafterSpeed = 0;
@@ -13162,8 +13172,7 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
13162
13172
  let hasHauler = false;
13163
13173
  let totalWarpRange = 0;
13164
13174
  let hasWarp = false;
13165
- let totalBatteryStatSum = 0;
13166
- let batteryCount = 0;
13175
+ let totalBatteryCapacity = 0;
13167
13176
  const gathererLanes = [];
13168
13177
  const crafterLanes = [];
13169
13178
  const loaderLanes = [];
@@ -13216,8 +13225,8 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
13216
13225
  });
13217
13226
  }
13218
13227
  else if (modType === MODULE_STORAGE) {
13219
- const caps = computeStorageCapabilities(decodedStats, baseCapacity);
13220
- totalStorageBonus += caps.capacityBonus;
13228
+ const caps = computeStorageCapabilities(decodedStats);
13229
+ totalStorageCapacity += applySlotMultiplierUint32(caps.capacity, amp);
13221
13230
  }
13222
13231
  else if (modType === MODULE_CRAFTER) {
13223
13232
  hasCrafter = true;
@@ -13246,22 +13255,16 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
13246
13255
  totalWarpRange += applySlotMultiplier(caps.range, amp);
13247
13256
  }
13248
13257
  else if (modType === MODULE_BATTERY) {
13249
- batteryCount++;
13250
- const vol = decodedStats.volatility ?? 0;
13251
- const thm = decodedStats.thermal ?? 0;
13252
- const pla = decodedStats.plasticity ?? 0;
13253
- const ins = decodedStats.insulation ?? 0;
13254
- totalBatteryStatSum += vol + thm + pla + ins;
13258
+ const caps = computeBatteryCapabilities(decodedStats);
13259
+ totalBatteryCapacity += applySlotMultiplierUint32(caps.capacity, amp);
13255
13260
  }
13256
13261
  }
13257
- if (hasGenerator && batteryCount > 0) {
13258
- const genCapBase = totalGenCapacity;
13259
- const bonusPctNum = 10 * batteryCount + Math.floor((totalBatteryStatSum * 10) / 2997);
13260
- totalGenCapacity += Math.floor((genCapBase * bonusPctNum) / 100);
13262
+ if (hasGenerator && totalBatteryCapacity > 0) {
13263
+ totalGenCapacity += totalBatteryCapacity;
13261
13264
  }
13262
13265
  const result = {
13263
13266
  hullmass: computeBaseHullmass$1(stats) + installedModuleMass,
13264
- capacity: baseCapacity + totalStorageBonus,
13267
+ capacity: clampUint32(baseCapacity + totalStorageCapacity),
13265
13268
  };
13266
13269
  if (hasEngine) {
13267
13270
  result.engines = { thrust: totalThrust, drain: totalEngineDrain };
@@ -13911,6 +13914,145 @@ function validateDisplayName(input, opts = {}) {
13911
13914
  return { valid: true, name };
13912
13915
  }
13913
13916
 
13917
+ const key = (c) => `${c.x},${c.y}`;
13918
+ const sameCoord = (a, b) => a.x === b.x && a.y === b.y;
13919
+ const dist = (a, b) => Math.hypot(a.x - b.x, a.y - b.y);
13920
+ const MAX_LEGS = 12;
13921
+ function planRoute(params) {
13922
+ const { origin, dest, perLegReach, graph } = params;
13923
+ const corridorSlack = params.corridorSlack ?? perLegReach;
13924
+ const nodeBudget = params.nodeBudget ?? 5000;
13925
+ const maxLegs = params.maxLegs ?? MAX_LEGS;
13926
+ if (!graph.hasSystem(dest)) {
13927
+ return { ok: false, reason: 'empty-destination' };
13928
+ }
13929
+ const straightLine = dist(origin, dest);
13930
+ const heuristic = (c) => Math.ceil(dist(c, dest) / perLegReach);
13931
+ const gScore = new Map([[key(origin), 0]]);
13932
+ const cameFrom = new Map();
13933
+ const frontier = [
13934
+ { coord: origin, g: 0, f: heuristic(origin), remaining: straightLine },
13935
+ ];
13936
+ let furthest = origin;
13937
+ let furthestRemaining = dist(origin, dest);
13938
+ let expansions = 0;
13939
+ let cappedByMaxLegs = false;
13940
+ while (frontier.length > 0) {
13941
+ let bestIdx = 0;
13942
+ for (let i = 1; i < frontier.length; i++) {
13943
+ const a = frontier[i];
13944
+ const b = frontier[bestIdx];
13945
+ if (a.f < b.f || (a.f === b.f && a.remaining < b.remaining)) {
13946
+ bestIdx = i;
13947
+ }
13948
+ }
13949
+ const current = frontier.splice(bestIdx, 1)[0];
13950
+ if (sameCoord(current.coord, dest)) {
13951
+ return reconstruct(cameFrom, origin, dest);
13952
+ }
13953
+ if (current.remaining < furthestRemaining) {
13954
+ furthestRemaining = current.remaining;
13955
+ furthest = current.coord;
13956
+ }
13957
+ if (++expansions > nodeBudget)
13958
+ break;
13959
+ for (const n of graph.nearby(current.coord, perLegReach)) {
13960
+ const inCorridor = dist(origin, n.coord) + dist(n.coord, dest) <= straightLine + corridorSlack;
13961
+ if (!inCorridor)
13962
+ continue;
13963
+ const tentativeG = current.g + 1;
13964
+ if (tentativeG > maxLegs) {
13965
+ cappedByMaxLegs = true;
13966
+ continue;
13967
+ }
13968
+ const nk = key(n.coord);
13969
+ if (tentativeG < (gScore.get(nk) ?? Infinity)) {
13970
+ gScore.set(nk, tentativeG);
13971
+ cameFrom.set(nk, current.coord);
13972
+ const remaining = dist(n.coord, dest);
13973
+ frontier.push({
13974
+ coord: n.coord,
13975
+ g: tentativeG,
13976
+ f: tentativeG + Math.ceil(remaining / perLegReach),
13977
+ remaining,
13978
+ });
13979
+ }
13980
+ }
13981
+ }
13982
+ if (cappedByMaxLegs) {
13983
+ return {
13984
+ ok: false,
13985
+ reason: 'max-legs',
13986
+ furthest,
13987
+ partialWaypoints: reconstructWaypoints(cameFrom, origin, furthest),
13988
+ };
13989
+ }
13990
+ return {
13991
+ ok: false,
13992
+ reason: 'no-path',
13993
+ furthest,
13994
+ partialWaypoints: reconstructWaypoints(cameFrom, origin, furthest),
13995
+ };
13996
+ }
13997
+ function reconstructWaypoints(cameFrom, origin, target) {
13998
+ if (sameCoord(target, origin))
13999
+ return [];
14000
+ const path = [target];
14001
+ let cur = target;
14002
+ while (!sameCoord(cur, origin)) {
14003
+ const prev = cameFrom.get(key(cur));
14004
+ if (!prev)
14005
+ break;
14006
+ path.unshift(prev);
14007
+ cur = prev;
14008
+ }
14009
+ return path.slice(1);
14010
+ }
14011
+ function reconstruct(cameFrom, origin, dest) {
14012
+ const path = [dest];
14013
+ let cur = dest;
14014
+ let totalDistance = 0;
14015
+ while (!sameCoord(cur, origin)) {
14016
+ const prev = cameFrom.get(key(cur));
14017
+ if (!prev)
14018
+ break;
14019
+ totalDistance += dist(prev, cur);
14020
+ path.unshift(prev);
14021
+ cur = prev;
14022
+ }
14023
+ const waypoints = path.slice(1);
14024
+ return { ok: true, waypoints, legs: waypoints.length, totalDistance };
14025
+ }
14026
+ function sdkSystemGraph(seed) {
14027
+ const s = Checksum256.from(seed);
14028
+ return {
14029
+ hasSystem: (c) => hasSystem(s, { x: c.x, y: c.y }),
14030
+ nearby: (c, reachTiles) => findNearbyPlanets(s, { x: c.x, y: c.y }, reachTiles * PRECISION$1)
14031
+ .map((d) => ({
14032
+ coord: { x: Number(d.destination.x), y: Number(d.destination.y) },
14033
+ dist: Number(d.distance) / PRECISION$1,
14034
+ }))
14035
+ .filter((n) => !(n.coord.x === c.x && n.coord.y === c.y)),
14036
+ };
14037
+ }
14038
+
14039
+ function computePerLegReach(s, haulCount = 0) {
14040
+ const capacity = s.generator?.capacity;
14041
+ const drain = s.engines?.drain;
14042
+ if (capacity === undefined || drain === undefined || drain === 0n) {
14043
+ throw new Error('entity has no usable engine/generator (cannot compute per-leg reach)');
14044
+ }
14045
+ const haulDrain = s.hauler && haulCount > 0 ? s.hauler.drain * BigInt(haulCount) : 0n;
14046
+ return Number(capacity) / Number(drain + haulDrain);
14047
+ }
14048
+ function computeGroupPerLegReach(participants, haulCount) {
14049
+ const movers = participants.filter((p) => p.engines !== undefined && p.engines.drain !== 0n);
14050
+ if (movers.length === 0) {
14051
+ throw new Error('group has no moving entity (cannot compute per-leg reach)');
14052
+ }
14053
+ return Math.min(...movers.map((p) => computePerLegReach(p, haulCount)));
14054
+ }
14055
+
13914
14056
  function idiv(a, b) {
13915
14057
  return Math.floor(a / b);
13916
14058
  }
@@ -13949,6 +14091,8 @@ const computeHaulerCapacity = (fin) => Math.max(1, 1 + idiv(fin, 400));
13949
14091
  const computeHaulerEfficiency = (con) => 2000 + con * 6;
13950
14092
  const computeHaulerDrain$1 = (com) => Math.max(3, 15 - idiv(com, 80));
13951
14093
  const computeWarpRange = (stat) => 100 + stat * 3;
14094
+ const computeCargoBayCapacity = (strength, density, hardness, cohesion) => 10000000 + idiv((strength + density + hardness + cohesion) * 50000000, 3996);
14095
+ const computeBatteryBankCapacity = (volatility, thermal, plasticity, insulation) => 2500 + idiv((volatility + thermal + plasticity + insulation) * 7500, 3996);
13952
14096
  function entityDisplayName(itemId) {
13953
14097
  switch (itemId) {
13954
14098
  case ITEM_SHIP_T1_PACKED:
@@ -13980,11 +14124,13 @@ function moduleDisplayName(itemId) {
13980
14124
  case ITEM_CRAFTER_T1:
13981
14125
  return 'Crafter';
13982
14126
  case ITEM_STORAGE_T1:
13983
- return 'Storage';
14127
+ return 'Cargo Bay';
13984
14128
  case ITEM_HAULER_T1:
13985
14129
  return 'Hauler';
13986
14130
  case ITEM_WARP_T1:
13987
14131
  return 'Warp';
14132
+ case ITEM_BATTERY_T1:
14133
+ return 'Battery Bank';
13988
14134
  default:
13989
14135
  return 'Module';
13990
14136
  }
@@ -14026,17 +14172,16 @@ function formatModuleLine(slot, itemId, stats) {
14026
14172
  }
14027
14173
  case MODULE_CRAFTER: {
14028
14174
  const rea = decodeStat(stats, 0);
14029
- const com = decodeStat(stats, 1);
14030
- out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(com)}`;
14175
+ const con = decodeStat(stats, 1);
14176
+ out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(con)}`;
14031
14177
  break;
14032
14178
  }
14033
14179
  case MODULE_STORAGE: {
14034
14180
  const str = decodeStat(stats, 0);
14035
- const fin = decodeStat(stats, 2);
14036
- const sat = decodeStat(stats, 3);
14037
- const sum = str + fin + sat;
14038
- const pct = 10 + idiv(sum * 10, 2997);
14039
- out += ` +${pct}% capacity`;
14181
+ const den = decodeStat(stats, 1);
14182
+ const hrd = decodeStat(stats, 2);
14183
+ const com = decodeStat(stats, 3);
14184
+ out += ` Cargo Capacity ${computeCargoBayCapacity(str, den, hrd, com)}`;
14040
14185
  break;
14041
14186
  }
14042
14187
  case MODULE_HAULER: {
@@ -14051,6 +14196,14 @@ function formatModuleLine(slot, itemId, stats) {
14051
14196
  out += ` Range ${computeWarpRange(stat)}`;
14052
14197
  break;
14053
14198
  }
14199
+ case MODULE_BATTERY: {
14200
+ const vol = decodeStat(stats, 0);
14201
+ const thm = decodeStat(stats, 1);
14202
+ const pla = decodeStat(stats, 2);
14203
+ const ins = decodeStat(stats, 3);
14204
+ out += ` Energy Capacity ${computeBatteryBankCapacity(vol, thm, pla, ins)}`;
14205
+ break;
14206
+ }
14054
14207
  }
14055
14208
  return out;
14056
14209
  }
@@ -15373,19 +15526,21 @@ const capabilityNames = [
15373
15526
  'Crafter',
15374
15527
  'Launch',
15375
15528
  'Hauler',
15376
- 'Battery',
15377
15529
  ];
15378
15530
  const capabilityAttributes = [
15379
15531
  { capability: 'Hull', attribute: 'mass', description: 'Total mass of the hull' },
15380
- { capability: 'Storage', attribute: 'capacity', description: 'Maximum mass that can be stored' },
15381
15532
  {
15382
15533
  capability: 'Storage',
15383
- attribute: 'bonus',
15384
- description: 'Capacity bonus added by an installed Storage module',
15534
+ attribute: 'capacity',
15535
+ description: 'Cargo capacity added by hulls and installed Cargo Bay modules',
15385
15536
  },
15386
15537
  { capability: 'Movement', attribute: 'thrust', description: 'Propulsion force' },
15387
15538
  { capability: 'Movement', attribute: 'drain', description: 'Energy consumed per movement' },
15388
- { capability: 'Energy', attribute: 'capacity', description: 'Maximum energy storage' },
15539
+ {
15540
+ capability: 'Energy',
15541
+ attribute: 'capacity',
15542
+ description: 'Energy capacity from Generators and installed Battery Bank modules',
15543
+ },
15389
15544
  { capability: 'Energy', attribute: 'recharge', description: 'Energy regeneration rate' },
15390
15545
  { capability: 'Loader', attribute: 'mass', description: 'Weight of the loader unit itself' },
15391
15546
  { capability: 'Loader', attribute: 'thrust', description: 'Loading speed/force' },
@@ -15423,11 +15578,6 @@ const capabilityAttributes = [
15423
15578
  attribute: 'drain',
15424
15579
  description: 'Energy consumed per target during haul-beam operation',
15425
15580
  },
15426
- {
15427
- capability: 'Battery',
15428
- attribute: 'bonus',
15429
- description: 'Energy capacity bonus added by an installed Battery module',
15430
- },
15431
15581
  ];
15432
15582
  const invertedAttributes = new Set(['drain', 'mass']);
15433
15583
  function isInvertedAttribute(attribute) {
@@ -15468,10 +15618,10 @@ const SLOT_FORMULAS = {
15468
15618
  1: { capability: 'Crafter', attribute: 'drain' },
15469
15619
  },
15470
15620
  storage: {
15471
- 0: { capability: 'Storage', attribute: 'bonus' },
15472
- 1: { capability: 'Storage', attribute: 'bonus' },
15473
- 2: { capability: 'Storage', attribute: 'bonus' },
15474
- 3: { capability: 'Storage', attribute: 'bonus' },
15621
+ 0: { capability: 'Storage', attribute: 'capacity' },
15622
+ 1: { capability: 'Storage', attribute: 'capacity' },
15623
+ 2: { capability: 'Storage', attribute: 'capacity' },
15624
+ 3: { capability: 'Storage', attribute: 'capacity' },
15475
15625
  },
15476
15626
  hauler: {
15477
15627
  0: { capability: 'Hauler', attribute: 'capacity' },
@@ -15482,10 +15632,10 @@ const SLOT_FORMULAS = {
15482
15632
  0: { capability: 'Warp', attribute: 'range' },
15483
15633
  },
15484
15634
  battery: {
15485
- 0: { capability: 'Battery', attribute: 'bonus' },
15486
- 1: { capability: 'Battery', attribute: 'bonus' },
15487
- 2: { capability: 'Battery', attribute: 'bonus' },
15488
- 3: { capability: 'Battery', attribute: 'bonus' },
15635
+ 0: { capability: 'Energy', attribute: 'capacity' },
15636
+ 1: { capability: 'Energy', attribute: 'capacity' },
15637
+ 2: { capability: 'Energy', attribute: 'capacity' },
15638
+ 3: { capability: 'Energy', attribute: 'capacity' },
15489
15639
  },
15490
15640
  'ship-t1': ENTITY_HULL_SLOTS,
15491
15641
  'container-t1': ENTITY_HULL_SLOTS,
@@ -15729,7 +15879,7 @@ function resolveComponent(id, stats) {
15729
15879
  stats: resolvedStats,
15730
15880
  };
15731
15881
  }
15732
- function computeCapabilityGroup(moduleType, stats, tier) {
15882
+ function computeCapabilityGroup(moduleType, stats, tier, outputPct = 100) {
15733
15883
  switch (moduleType) {
15734
15884
  case MODULE_ENGINE: {
15735
15885
  const caps = computeEngineCapabilities(stats);
@@ -15795,13 +15945,28 @@ function computeCapabilityGroup(moduleType, stats, tier) {
15795
15945
  };
15796
15946
  }
15797
15947
  case MODULE_STORAGE: {
15798
- const str = stats.strength;
15799
- const den = stats.density;
15800
- const hrd = stats.hardness;
15801
- const com = stats.cohesion;
15802
- const statSum = str + den + hrd + com;
15803
- const pct = 10 + Math.floor((statSum * 10) / 2997);
15804
- return { capability: 'Storage', attributes: [{ label: 'Capacity Bonus', value: pct }] };
15948
+ const caps = computeStorageCapabilities(stats);
15949
+ return {
15950
+ capability: 'Storage',
15951
+ attributes: [
15952
+ {
15953
+ label: 'Cargo Capacity',
15954
+ value: applySlotMultiplierUint32(caps.capacity, outputPct),
15955
+ },
15956
+ ],
15957
+ };
15958
+ }
15959
+ case MODULE_BATTERY: {
15960
+ const caps = computeBatteryCapabilities(stats);
15961
+ return {
15962
+ capability: 'Energy',
15963
+ attributes: [
15964
+ {
15965
+ label: 'Energy Capacity',
15966
+ value: applySlotMultiplierUint32(caps.capacity, outputPct),
15967
+ },
15968
+ ],
15969
+ };
15805
15970
  }
15806
15971
  default:
15807
15972
  return undefined;
@@ -15886,9 +16051,10 @@ function resolveEntity(id, stats, modules) {
15886
16051
  catch {
15887
16052
  modName = itemMetadata[modItemId]?.name ?? 'Module';
15888
16053
  }
15889
- const group = computeCapabilityGroup(modType, decodedStats, modTier);
16054
+ const group = computeCapabilityGroup(modType, decodedStats, modTier, slot.outputPct);
15890
16055
  return {
15891
16056
  name: modName,
16057
+ capability: group?.capability,
15892
16058
  installed: true,
15893
16059
  attributes: group?.attributes,
15894
16060
  };
@@ -15972,9 +16138,15 @@ const TEMPLATES = {
15972
16138
  },
15973
16139
  storage: {
15974
16140
  id: 'module.storage.description',
15975
- template: 'boosts cargo capacity by {bonus}%',
15976
- params: [['bonus', 'Capacity Bonus']],
15977
- highlightKeys: ['bonus'],
16141
+ template: 'adds {capacity} cargo capacity',
16142
+ params: [['capacity', 'Cargo Capacity']],
16143
+ highlightKeys: ['capacity'],
16144
+ },
16145
+ energy: {
16146
+ id: 'module.energy-capacity.description',
16147
+ template: 'adds {capacity} energy capacity',
16148
+ params: [['capacity', 'Energy Capacity']],
16149
+ highlightKeys: ['capacity'],
15978
16150
  },
15979
16151
  hauler: {
15980
16152
  id: 'module.hauler.description',
@@ -16016,9 +16188,12 @@ function describeModuleForItem(resolved) {
16016
16188
  return describeModule({ capability: group.capability, attributes: group.attributes });
16017
16189
  }
16018
16190
  function describeModuleForSlot(slot) {
16019
- if (!slot.installed || !slot.name || !slot.attributes)
16191
+ if (!slot.installed || !slot.attributes)
16020
16192
  return null;
16021
- return describeModule({ capability: slot.name, attributes: slot.attributes });
16193
+ const capability = slot.capability ?? slot.name;
16194
+ if (!capability)
16195
+ return null;
16196
+ return describeModule({ capability, attributes: slot.attributes });
16022
16197
  }
16023
16198
  function renderDescription(desc, options) {
16024
16199
  const translate = options?.translate ?? ((_id, fallback) => fallback);
@@ -16173,11 +16348,11 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
16173
16348
  }
16174
16349
  case MODULE_CRAFTER: {
16175
16350
  const rea = decodeStat(stats, 0);
16176
- const fin = decodeStat(stats, 1);
16351
+ const con = decodeStat(stats, 1);
16177
16352
  base.push({ first: 'reactivity', second: ['uint16', rea] });
16178
- base.push({ first: 'fineness', second: ['uint16', fin] });
16353
+ base.push({ first: 'conductivity', second: ['uint16', con] });
16179
16354
  base.push({ first: 'speed', second: ['uint16', computeCrafterSpeed(rea)] });
16180
- base.push({ first: 'drain', second: ['uint16', computeCrafterDrain(fin)] });
16355
+ base.push({ first: 'drain', second: ['uint16', computeCrafterDrain(con)] });
16181
16356
  break;
16182
16357
  }
16183
16358
  case MODULE_STORAGE: {
@@ -16185,14 +16360,28 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
16185
16360
  const den = decodeStat(stats, 1);
16186
16361
  const hrd = decodeStat(stats, 2);
16187
16362
  const com = decodeStat(stats, 3);
16188
- const sum = str + den + hrd + com;
16189
16363
  base.push({ first: 'strength', second: ['uint16', str] });
16190
16364
  base.push({ first: 'density', second: ['uint16', den] });
16191
16365
  base.push({ first: 'hardness', second: ['uint16', hrd] });
16192
16366
  base.push({ first: 'cohesion', second: ['uint16', com] });
16193
16367
  base.push({
16194
- first: 'capacity_bonus_pct',
16195
- second: ['uint16', 10 + Math.floor((sum * 10) / 2997)],
16368
+ first: 'capacity',
16369
+ second: ['uint32', computeCargoBayCapacity(str, den, hrd, com)],
16370
+ });
16371
+ break;
16372
+ }
16373
+ case MODULE_BATTERY: {
16374
+ const vol = decodeStat(stats, 0);
16375
+ const thm = decodeStat(stats, 1);
16376
+ const pla = decodeStat(stats, 2);
16377
+ const ins = decodeStat(stats, 3);
16378
+ base.push({ first: 'volatility', second: ['uint16', vol] });
16379
+ base.push({ first: 'thermal', second: ['uint16', thm] });
16380
+ base.push({ first: 'plasticity', second: ['uint16', pla] });
16381
+ base.push({ first: 'insulation', second: ['uint16', ins] });
16382
+ base.push({
16383
+ first: 'capacity',
16384
+ second: ['uint32', computeBatteryBankCapacity(vol, thm, pla, ins)],
16196
16385
  });
16197
16386
  break;
16198
16387
  }
@@ -16278,6 +16467,8 @@ var index = /*#__PURE__*/Object.freeze({
16278
16467
  computeHaulerEfficiency: computeHaulerEfficiency,
16279
16468
  computeHaulerDrain: computeHaulerDrain$1,
16280
16469
  computeWarpRange: computeWarpRange,
16470
+ computeCargoBayCapacity: computeCargoBayCapacity,
16471
+ computeBatteryBankCapacity: computeBatteryBankCapacity,
16281
16472
  entityDisplayName: entityDisplayName,
16282
16473
  moduleDisplayName: moduleDisplayName,
16283
16474
  formatModuleLine: formatModuleLine,
@@ -16447,5 +16638,5 @@ function planParallelTransfer(entity, target) {
16447
16638
  return allocateProportional(laneWeights, requestedQty).filter((e) => e.quantity > 0);
16448
16639
  }
16449
16640
 
16450
- export { ALL_ENTITY_TYPES, ATOMICASSETS_ACCOUNT, ActionsManager, BASE_ORBITAL_MASS, BLEND_INPUTS_MUST_MATCH, BLEND_REQUIRES_MULTIPLE, BLEND_STAT_LESS_NOT_SUPPORTED, CANCEL_CONTAINS_GROUPED_TASK, CAP_DEMOLISH, CAP_MODULES, CAP_UNDEPLOY, CAP_WRAP, CATEGORY_LABELS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, COMPONENT_TIER_PREFIXES, CONTAINER_NOT_FOUND, CONTAINER_Z, COORD_MAX, COORD_MIN, COORD_OFFSET, CRAFT_ENERGY_DIVISOR, CRAFT_EXCEEDS_ENERGY_CAPACITY, CRAFT_NOT_ENOUGH_ENERGY, CancelBlockReason, ConstructionManager, Coordinates, DEPLOY_ENTITY_HAS_SCHEDULE, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, DESTINATION_CAPACITY_EXCEEDED, ENTITY_ALREADY_THERE, ENTITY_CAPACITY_EXCEEDED, ENTITY_CARGO_NOT_LOADED, ENTITY_CARGO_NOT_OWNED, ENTITY_CONTAINER, ENTITY_EXTRACTOR, ENTITY_FACTORY, ENTITY_INVALID_CARGO, ENTITY_INVALID_DESTINATION, ENTITY_INVALID_TRAVEL_DURATION, ENTITY_NEXUS, ENTITY_NOT_ENOUGH_ENERGY, ENTITY_NOT_ENOUGH_ENERGY_CAPACITY, ENTITY_NO_CRAFTER, ENTITY_SHIP, ENTITY_WAREHOUSE, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, Entity, EntityClass, EntityInventory, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GATHERER_DEPTH_MAX_TIER, GATHERER_DEPTH_TABLE, GATHER_EXCEEDS_ENERGY_CAPACITY, GATHER_MASS_DIVISOR, 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, HoldKind, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_BATTERY_T1, ITEM_BEAM, 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_CERAMIC, 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_EXTRACTOR_T1_PACKED, ITEM_FACTORY_T1_PACKED, ITEM_FRAME, ITEM_FRAME_T2, 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_LOADER_T1, 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_PLASMA_CELL, ITEM_PLATE, ITEM_PLATE_T2, ITEM_POLYMER, ITEM_REACTOR, 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_RESIN, ITEM_RESONATOR, ITEM_SENSOR, ITEM_SHIP_T1_PACKED, ITEM_STORAGE_T1, ITEM_TYPE_COMPONENT, ITEM_TYPE_ENTITY, ITEM_TYPE_MODULE, ITEM_TYPE_RESOURCE, ITEM_WAREHOUSE_T1_PACKED, ITEM_WARP_T1, InventoryAccessor, LANE_BARRIER, LANE_MOBILITY, LOCAL_HALF, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MAX_STARS_PER_STAT, MAX_STAR_RATING, MIN_ORBITAL_ALTITUDE, MIN_TRANSFER_DISTANCE_ORBITAL_VESSEL, MIN_TRANSFER_DISTANCE_PLANETARY_STRUCTURE, MODULE_ANY, MODULE_BATTERY, 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_TIER_PREFIXES, MODULE_TYPE_MISMATCH, MODULE_WARP, index as NFT, NO_SCHEDULE, NftManager, PLANETARY_STRUCTURE_Z, 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, REGION_DIV, REGION_PER_AXIS, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, RESERVE_TIERS, RESOLVE_COUNT_EXCEEDS_COMPLETED, RESOURCE_TIER_ADJECTIVES, SECTORS_PER_AXIS, SECTOR_DIV, SHIPLOAD_COLLECTION, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_NOT_ARRIVED, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, SLOT_FORMULAS, STAR_STEP, ScheduleAccessor, server as ServerContract, Types as ServerTypes, Shipload, SubscriptionsManager, TIER_ROLL_MAX, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_NOT_FOUND, WARP_HAS_CARGO, WARP_HAS_SCHEDULE, WARP_NOT_FULL_ENERGY, WARP_NO_CAPABILITY, WARP_OUT_OF_RANGE, WH, WOULD_OVERFILL, WOULD_STRAND, WebSocketConnection, YIELD_FRACTION_DEEP, YIELD_FRACTION_SHALLOW, addressFromCoordinates, allBuildableItems, allPlotBuildableItems, availableBuildMethods, availableCapacity, availableCapacityFromMass, availableForItem, baseName, blendCargoStacks, blendComponentStacks, blendCrossGroup, blendStacks, buildComponentImmutable, buildEntityDescription, buildEntityImmutable, buildImmutableData, buildMintAssetAction, buildModuleImmutable, buildResourceImmutable, calcCargoItemMass, calcCargoMass, calcEnergyUsage, calcStacksMass, calc_acceleration, calc_craft_duration, calc_craft_energy, calc_energyusage, calc_flighttime, calc_gather_duration, calc_gather_energy, calc_gather_rate, calc_loader_acceleration, calc_loader_flighttime, calc_onesided_duration, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calc_transit_duration, calculateFlightTime, calculateLoadTimeBreakdown, calculateRefuelingTime, calculateTransferTime, canMove, cancelEligibility, candidateLaneCompletesAt, capabilityAttributes, capabilityNames, capsHasCrafter, capsHasGatherer, capsHasHauler, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, cargoItem, cargoItemToStack, cargoReadyAt, cargoRef, cargoUtils, categoryColors, categoryFromIndex, categoryLabel, categoryLabelFromIndex, componentIcon, composeIdleResolve, computeBaseCapacity, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass, computeComponentStats, computeContainerCapabilities, computeContainerT2Capabilities, computeCraftedOutputStats, computeCrafterCapabilities, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityCapabilities, computeEntityStats, computeGathererCapabilities, computeGathererDepth, computeGathererDrain, computeGathererYield, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeHaulPenalty, computeHaulerCapabilities, computeHaulerCapacity, computeHaulerDrain, computeHaulerEfficiency, computeInputMass, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeNftImageUrl, computeShipHullCapabilities, computeStorageCapabilities, computeWarehouseHullCapabilities, computeWarpCapabilities, computeWarpRange, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeAddress, decodeAtomicAsset, decodeCraftedItemStats, decodeRegion, decodeSector, decodeStat, decodeStats, Shipload as default, deriveLocation, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStatMappings, deriveStrata, deriveStratum, describeItem, describeModule, describeModuleForItem, describeModuleForSlot, deserializeAsset, deserializeAtomicData, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, displayName, distanceBetweenCoordinates, distanceBetweenPoints, easeFlightProgress, encodeAddress, encodeAddressMemo, encodeGatheredCargoStats, encodeRegion, encodeSector, encodeStats, energyAtTime, energyPercent, entityDisplayName, estimateDealTravelTime, estimateTravelTime, feistel, feistelInv, fetchAtomicAssetsForOwner, fetchAtomicSchemas, filterByBuildMethod, findNearbyPlanets, flightSpeedFactor, formatLocation, formatMass, formatMassDelta, formatMassScaled, formatModuleLine, formatTier, gathererDepthForTier, getCapabilityAttributes, getCategoryInfo, getComponents, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEffectiveReserve, getEligibleResources, getEntityClass, getEntityItems, getEntityLayout, getEpochInfo, getFlightOrigin, getInterpolatedPosition, getItem, getItems, getKindMeta, getLocationCandidates, getLocationKind, getLocationProfile, getLocationType, getLocationTypeName, getModuleCapabilityType, getModules, getPackedEntityType, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getRecipe, getResourceTier, getResourceWeight, getResources, getStatDefinitions, getStatMappings, getStatMappingsForCapability, getStatMappingsForStat, getStatName, getSystemName, getTemplateMeta, hasEnergy, hasEnergyForDistance, hasGatherer, hasLoaders, hasMass, hasSchedule, hasSpace, hasSpaceForMass, hasStorage, hasSystem, hash, hash512, interpolateFlightPosition, isBuildable, isContainer, isCraftedItem, isExtractor, isFactory, isFull, isFullFromMass, isGatherableLocation, isInvertedAttribute, isLocationBuildable, isModuleItem, isNexus, isPlot, isPlotBuildable, isRelatedItem, isShip, isSubscriptionsDebugEnabled, isValidWormholePair, isWarehouse, itemAbbreviations, itemCategory, itemIds, itemOffset, itemTier, itemTypeCode, kindCan, laneKeyForModule, lerp$1 as lerp, makeEntity, mapEntity, maxCraftable, maxTravelDistance, mergeStacks, moduleAccepts, moduleDisplayName, moduleIcon, moduleSlotTypeToCode, needsRecharge, normalizeDisplayName, parseWireEntity, partnerRegion, planParallelGather, planParallelTransfer, projectEntity, projectEntityAt, projectRemainingAt, projectedCargoAvailableAt, rawScheduleEnd, readCommonBase, regionOf, removeFromStacks, renderDescription, resolveItem, resolveItemCategory, resolveLaneCrafter, resolveLaneGatherer, resolveLaneLoader, resolveLockedAmount, resolveStats, rollTier, rollWithinTier, rollupCrafter, rollupGatherer, rollupLoaders, rotation, schedule, selectGatherLane, setSubscriptionsDebug, stackKey, stackToCargoItem, stacksEqual, starRating, starsForStat, statMagnitude, subtractFromStacks, taskCargoChanges, taskCargoEffect, tierAdjective, tierColors, tierOfReserve, toLocation, typeLabel, validateDisplayName, validateSchedule, workerLaneKey, wormholeAt, wormholeAtRegionEndpoint, yieldThresholdAt };
16641
+ export { ALL_ENTITY_TYPES, ATOMICASSETS_ACCOUNT, ActionsManager, BASE_ORBITAL_MASS, BLEND_INPUTS_MUST_MATCH, BLEND_REQUIRES_MULTIPLE, BLEND_STAT_LESS_NOT_SUPPORTED, CANCEL_CONTAINS_GROUPED_TASK, CAP_DEMOLISH, CAP_MODULES, CAP_UNDEPLOY, CAP_WRAP, CATEGORY_LABELS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, COMPONENT_TIER_PREFIXES, CONTAINER_NOT_FOUND, CONTAINER_Z, COORD_MAX, COORD_MIN, COORD_OFFSET, CRAFT_ENERGY_DIVISOR, CRAFT_EXCEEDS_ENERGY_CAPACITY, CRAFT_NOT_ENOUGH_ENERGY, CancelBlockReason, ConstructionManager, Coordinates, DEPLOY_ENTITY_HAS_SCHEDULE, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, DESTINATION_CAPACITY_EXCEEDED, ENTITY_ALREADY_THERE, ENTITY_CAPACITY_EXCEEDED, ENTITY_CARGO_NOT_LOADED, ENTITY_CARGO_NOT_OWNED, ENTITY_CONTAINER, ENTITY_EXTRACTOR, ENTITY_FACTORY, ENTITY_INVALID_CARGO, ENTITY_INVALID_DESTINATION, ENTITY_INVALID_TRAVEL_DURATION, ENTITY_NEXUS, ENTITY_NOT_ENOUGH_ENERGY, ENTITY_NOT_ENOUGH_ENERGY_CAPACITY, ENTITY_NO_CRAFTER, ENTITY_SHIP, ENTITY_WAREHOUSE, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, Entity, EntityClass, EntityInventory, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GATHERER_DEPTH_MAX_TIER, GATHERER_DEPTH_TABLE, GATHER_EXCEEDS_ENERGY_CAPACITY, GATHER_MASS_DIVISOR, 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, HoldKind, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_BATTERY_T1, ITEM_BEAM, 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_CERAMIC, 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_EXTRACTOR_T1_PACKED, ITEM_FACTORY_T1_PACKED, ITEM_FRAME, ITEM_FRAME_T2, 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_LOADER_T1, 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_PLASMA_CELL, ITEM_PLATE, ITEM_PLATE_T2, ITEM_POLYMER, ITEM_REACTOR, 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_RESIN, ITEM_RESONATOR, ITEM_SENSOR, ITEM_SHIP_T1_PACKED, ITEM_STORAGE_T1, ITEM_TYPE_COMPONENT, ITEM_TYPE_ENTITY, ITEM_TYPE_MODULE, ITEM_TYPE_RESOURCE, ITEM_WAREHOUSE_T1_PACKED, ITEM_WARP_T1, InventoryAccessor, LANE_BARRIER, LANE_MOBILITY, LOCAL_HALF, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_LEGS, MAX_ORBITAL_ALTITUDE, MAX_STARS_PER_STAT, MAX_STAR_RATING, MIN_ORBITAL_ALTITUDE, MIN_TRANSFER_DISTANCE_ORBITAL_VESSEL, MIN_TRANSFER_DISTANCE_PLANETARY_STRUCTURE, MODULE_ANY, MODULE_BATTERY, 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_TIER_PREFIXES, MODULE_TYPE_MISMATCH, MODULE_WARP, index as NFT, NO_SCHEDULE, NftManager, PLANETARY_STRUCTURE_Z, 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, REGION_DIV, REGION_PER_AXIS, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, RESERVE_TIERS, RESOLVE_COUNT_EXCEEDS_COMPLETED, RESOURCE_TIER_ADJECTIVES, SECTORS_PER_AXIS, SECTOR_DIV, SHIPLOAD_COLLECTION, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_NOT_ARRIVED, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, SLOT_FORMULAS, STAR_STEP, ScheduleAccessor, server as ServerContract, Types as ServerTypes, Shipload, SubscriptionsManager, TIER_ROLL_MAX, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_NOT_FOUND, WARP_HAS_CARGO, WARP_HAS_SCHEDULE, WARP_NOT_FULL_ENERGY, WARP_NO_CAPABILITY, WARP_OUT_OF_RANGE, WH, WOULD_OVERFILL, WOULD_STRAND, WebSocketConnection, YIELD_FRACTION_DEEP, YIELD_FRACTION_SHALLOW, addressFromCoordinates, allBuildableItems, allPlotBuildableItems, availableBuildMethods, availableCapacity, availableCapacityFromMass, availableForItem, baseName, blendCargoStacks, blendComponentStacks, blendCrossGroup, blendStacks, buildComponentImmutable, buildEntityDescription, buildEntityImmutable, buildImmutableData, buildMintAssetAction, buildModuleImmutable, buildResourceImmutable, calcCargoItemMass, calcCargoMass, calcEnergyUsage, calcStacksMass, calc_acceleration, calc_craft_duration, calc_craft_energy, calc_energyusage, calc_flighttime, calc_gather_duration, calc_gather_energy, calc_gather_rate, calc_loader_acceleration, calc_loader_flighttime, calc_onesided_duration, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calc_transit_duration, calculateFlightTime, calculateLoadTimeBreakdown, calculateRefuelingTime, calculateTransferTime, canMove, cancelEligibility, candidateLaneCompletesAt, capabilityAttributes, capabilityNames, capsHasCrafter, capsHasGatherer, capsHasHauler, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, cargoItem, cargoItemToStack, cargoReadyAt, cargoRef, cargoUtils, categoryColors, categoryFromIndex, categoryLabel, categoryLabelFromIndex, componentIcon, composeIdleResolve, computeBaseCapacity, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass, computeBatteryCapabilities, computeComponentStats, computeContainerCapabilities, computeContainerT2Capabilities, computeCraftedOutputStats, computeCrafterCapabilities, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityCapabilities, computeEntityStats, computeGathererCapabilities, computeGathererDepth, computeGathererDrain, computeGathererYield, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeGroupPerLegReach, computeHaulPenalty, computeHaulerCapabilities, computeHaulerCapacity, computeHaulerDrain, computeHaulerEfficiency, computeInputMass, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeNftImageUrl, computePerLegReach, computeShipHullCapabilities, computeStorageCapabilities, computeWarehouseHullCapabilities, computeWarpCapabilities, computeWarpRange, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeAddress, decodeAtomicAsset, decodeCraftedItemStats, decodeRegion, decodeSector, decodeStat, decodeStats, Shipload as default, deriveLocation, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStatMappings, deriveStrata, deriveStratum, describeItem, describeModule, describeModuleForItem, describeModuleForSlot, deserializeAsset, deserializeAtomicData, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, displayName, distanceBetweenCoordinates, distanceBetweenPoints, easeFlightProgress, encodeAddress, encodeAddressMemo, encodeGatheredCargoStats, encodeRegion, encodeSector, encodeStats, energyAtTime, energyPercent, entityDisplayName, estimateDealTravelTime, estimateTravelTime, feistel, feistelInv, fetchAtomicAssetsForOwner, fetchAtomicSchemas, filterByBuildMethod, findNearbyPlanets, flightSpeedFactor, formatLocation, formatMass, formatMassDelta, formatMassScaled, formatModuleLine, formatTier, gathererDepthForTier, getCapabilityAttributes, getCategoryInfo, getComponents, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEffectiveReserve, getEligibleResources, getEntityClass, getEntityItems, getEntityLayout, getEpochInfo, getFlightOrigin, getInterpolatedPosition, getItem, getItems, getKindMeta, getLocationCandidates, getLocationKind, getLocationProfile, getLocationType, getLocationTypeName, getModuleCapabilityType, getModules, getPackedEntityType, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getRecipe, getResourceTier, getResourceWeight, getResources, getStatDefinitions, getStatMappings, getStatMappingsForCapability, getStatMappingsForStat, getStatName, getSystemName, getTemplateMeta, hasEnergy, hasEnergyForDistance, hasGatherer, hasLoaders, hasMass, hasSchedule, hasSpace, hasSpaceForMass, hasStorage, hasSystem, hash, hash512, interpolateFlightPosition, isBuildable, isContainer, isCraftedItem, isExtractor, isFactory, isFull, isFullFromMass, isGatherableLocation, isInvertedAttribute, isLocationBuildable, isModuleItem, isNexus, isPlot, isPlotBuildable, isRelatedItem, isShip, isSubscriptionsDebugEnabled, isValidWormholePair, isWarehouse, itemAbbreviations, itemCategory, itemIds, itemOffset, itemTier, itemTypeCode, kindCan, laneKeyForModule, lerp$1 as lerp, makeEntity, mapEntity, maxCraftable, maxTravelDistance, mergeStacks, moduleAccepts, moduleDisplayName, moduleIcon, moduleSlotTypeToCode, needsRecharge, normalizeDisplayName, parseWireEntity, partnerRegion, planParallelGather, planParallelTransfer, planRoute, projectEntity, projectEntityAt, projectRemainingAt, projectedCargoAvailableAt, rawScheduleEnd, readCommonBase, regionOf, removeFromStacks, renderDescription, resolveItem, resolveItemCategory, resolveLaneCrafter, resolveLaneGatherer, resolveLaneLoader, resolveLockedAmount, resolveStats, rollTier, rollWithinTier, rollupCrafter, rollupGatherer, rollupLoaders, rotation, schedule, sdkSystemGraph, selectGatherLane, setSubscriptionsDebug, stackKey, stackToCargoItem, stacksEqual, starRating, starsForStat, statMagnitude, subtractFromStacks, taskCargoChanges, taskCargoEffect, tierAdjective, tierColors, tierOfReserve, toLocation, typeLabel, validateDisplayName, validateSchedule, workerLaneKey, wormholeAt, wormholeAtRegionEndpoint, yieldThresholdAt };
16451
16642
  //# sourceMappingURL=shipload.m.js.map