@shipload/sdk 2.0.0-rc14 → 2.0.0-rc15

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
@@ -2273,21 +2273,21 @@ const PLANET_SUBTYPE_ICY = 3;
2273
2273
  const PLANET_SUBTYPE_OCEAN = 4;
2274
2274
  const PLANET_SUBTYPE_INDUSTRIAL = 5;
2275
2275
  const RESOURCE_CATALOG = [
2276
- { id: 26, tier: 't1' },
2277
- { id: 13, tier: 't2' },
2278
- { id: 24, tier: 't3' },
2279
- { id: 29, tier: 't1' },
2280
- { id: 47, tier: 't2' },
2281
- { id: 79, tier: 't3' },
2282
- { id: 1, tier: 't1' },
2283
- { id: 2, tier: 't2' },
2284
- { id: 18, tier: 't3' },
2285
- { id: 14, tier: 't1' },
2286
- { id: 1000, tier: 't2' },
2287
- { id: 1001, tier: 't3' },
2288
- { id: 6, tier: 't1' },
2289
- { id: 1003, tier: 't2' },
2290
- { id: 1002, tier: 't3' },
2276
+ { id: 101, tier: 't1' },
2277
+ { id: 102, tier: 't2' },
2278
+ { id: 103, tier: 't3' },
2279
+ { id: 201, tier: 't1' },
2280
+ { id: 202, tier: 't2' },
2281
+ { id: 203, tier: 't3' },
2282
+ { id: 301, tier: 't1' },
2283
+ { id: 302, tier: 't2' },
2284
+ { id: 303, tier: 't3' },
2285
+ { id: 401, tier: 't1' },
2286
+ { id: 402, tier: 't2' },
2287
+ { id: 403, tier: 't3' },
2288
+ { id: 501, tier: 't1' },
2289
+ { id: 502, tier: 't2' },
2290
+ { id: 503, tier: 't3' },
2291
2291
  ];
2292
2292
  function getDepthThreshold(tier) {
2293
2293
  switch (tier) {
@@ -2344,14 +2344,14 @@ function getResourceWeight(itemId, stratum) {
2344
2344
  return 10;
2345
2345
  }
2346
2346
  }
2347
- const ASTEROID_RESOURCES = [26, 13, 24, 29, 47];
2348
- const NEBULA_RESOURCES = [47, 79, 1, 2, 18];
2349
- const GAS_GIANT_RESOURCES = [1, 2, 18, 14, 6];
2350
- const ROCKY_RESOURCES = [26, 13, 24, 14, 1000, 1001, 1002];
2351
- const TERRESTRIAL_RESOURCES = [29, 47, 14, 1000, 6, 1003, 1002];
2352
- const ICY_RESOURCES = [26, 1, 2, 14, 1001, 6, 1003];
2353
- const OCEAN_RESOURCES = [29, 79, 1, 18, 6, 1003, 1002];
2354
- const INDUSTRIAL_RESOURCES = [26, 13, 24, 29, 79, 1000, 1001];
2347
+ const ASTEROID_RESOURCES = [101, 102, 103, 201, 202];
2348
+ const NEBULA_RESOURCES = [202, 203, 301, 302, 303];
2349
+ const GAS_GIANT_RESOURCES = [301, 302, 303, 401, 501];
2350
+ const ROCKY_RESOURCES = [101, 102, 103, 401, 402, 403, 503];
2351
+ const TERRESTRIAL_RESOURCES = [201, 202, 401, 402, 501, 502, 503];
2352
+ const ICY_RESOURCES = [101, 301, 302, 401, 403, 501, 502];
2353
+ const OCEAN_RESOURCES = [201, 203, 301, 303, 501, 502, 503];
2354
+ const INDUSTRIAL_RESOURCES = [101, 102, 103, 201, 203, 402, 403];
2355
2355
  function getLocationCandidates(locationType, subtype) {
2356
2356
  if (locationType === 2)
2357
2357
  return ASTEROID_RESOURCES;
@@ -4772,139 +4772,139 @@ class BaseManager {
4772
4772
 
4773
4773
  var itemsData = [
4774
4774
  {
4775
- id: 26,
4776
- name: "Iron",
4777
- description: "A versatile metal used in hulls and structures.",
4775
+ id: 101,
4776
+ name: "",
4777
+ description: "",
4778
4778
  mass: 30000,
4779
- category: "metal",
4779
+ category: "ore",
4780
4780
  tier: "t1",
4781
- color: "#B7410E"
4781
+ color: "#C26D3F"
4782
4782
  },
4783
4783
  {
4784
- id: 13,
4785
- name: "Aluminum",
4786
- description: "A lightweight metal for structural components.",
4784
+ id: 102,
4785
+ name: "",
4786
+ description: "",
4787
4787
  mass: 27000,
4788
- category: "metal",
4788
+ category: "ore",
4789
4789
  tier: "t2",
4790
- color: "#A8B5C2"
4790
+ color: "#C26D3F"
4791
4791
  },
4792
4792
  {
4793
- id: 24,
4794
- name: "Chromium",
4795
- description: "A hard, corrosion-resistant alloy metal.",
4793
+ id: 103,
4794
+ name: "",
4795
+ description: "",
4796
4796
  mass: 52000,
4797
- category: "metal",
4797
+ category: "ore",
4798
4798
  tier: "t3",
4799
- color: "#D4E6F1"
4799
+ color: "#C26D3F"
4800
4800
  },
4801
4801
  {
4802
- id: 29,
4803
- name: "Copper",
4804
- description: "A conductive metal for electronics and wiring.",
4802
+ id: 201,
4803
+ name: "",
4804
+ description: "",
4805
4805
  mass: 40000,
4806
- category: "precious",
4806
+ category: "crystal",
4807
4807
  tier: "t1",
4808
- color: "#B87333"
4808
+ color: "#4ADBFF"
4809
4809
  },
4810
4810
  {
4811
- id: 47,
4812
- name: "Silver",
4813
- description: "A high-conductivity metal for precision components.",
4811
+ id: 202,
4812
+ name: "",
4813
+ description: "",
4814
4814
  mass: 55000,
4815
- category: "precious",
4815
+ category: "crystal",
4816
4816
  tier: "t2",
4817
- color: "#C0C0C0"
4817
+ color: "#4ADBFF"
4818
4818
  },
4819
4819
  {
4820
- id: 79,
4821
- name: "Gold",
4822
- description: "A corrosion-proof metal for advanced electronics.",
4820
+ id: 203,
4821
+ name: "",
4822
+ description: "",
4823
4823
  mass: 70000,
4824
- category: "precious",
4824
+ category: "crystal",
4825
4825
  tier: "t3",
4826
- color: "#FFD700"
4826
+ color: "#4ADBFF"
4827
4827
  },
4828
4828
  {
4829
- id: 1,
4830
- name: "Hydrogen",
4831
- description: "A lightweight gas used for fuel cells and propulsion.",
4829
+ id: 301,
4830
+ name: "",
4831
+ description: "",
4832
4832
  mass: 15000,
4833
4833
  category: "gas",
4834
4834
  tier: "t1",
4835
- color: "#7EC8E3"
4835
+ color: "#B8E4A0"
4836
4836
  },
4837
4837
  {
4838
- id: 2,
4839
- name: "Helium",
4840
- description: "An inert noble gas used in energy systems.",
4838
+ id: 302,
4839
+ name: "",
4840
+ description: "",
4841
4841
  mass: 2000,
4842
4842
  category: "gas",
4843
4843
  tier: "t2",
4844
- color: "#F5E6CC"
4844
+ color: "#B8E4A0"
4845
4845
  },
4846
4846
  {
4847
- id: 18,
4848
- name: "Argon",
4849
- description: "A noble gas used in industrial and energy applications.",
4847
+ id: 303,
4848
+ name: "",
4849
+ description: "",
4850
4850
  mass: 8000,
4851
4851
  category: "gas",
4852
4852
  tier: "t3",
4853
- color: "#9B59B6"
4853
+ color: "#B8E4A0"
4854
4854
  },
4855
4855
  {
4856
- id: 14,
4857
- name: "Silicon",
4858
- description: "A semiconductor used in sensors and computing.",
4856
+ id: 401,
4857
+ name: "",
4858
+ description: "",
4859
4859
  mass: 22000,
4860
- category: "mineral",
4860
+ category: "regolith",
4861
4861
  tier: "t1",
4862
- color: "#B8A9C9"
4862
+ color: "#C4A57B"
4863
4863
  },
4864
4864
  {
4865
- id: 1000,
4866
- name: "Quartz",
4867
- description: "A crystalline mineral for sensors and optics.",
4865
+ id: 402,
4866
+ name: "",
4867
+ description: "",
4868
4868
  mass: 35000,
4869
- category: "mineral",
4869
+ category: "regolith",
4870
4870
  tier: "t2",
4871
- color: "#E8D5B7"
4871
+ color: "#C4A57B"
4872
4872
  },
4873
4873
  {
4874
- id: 1001,
4875
- name: "Sapphire",
4876
- description: "A precious crystal for precision instruments.",
4874
+ id: 403,
4875
+ name: "",
4876
+ description: "",
4877
4877
  mass: 45000,
4878
- category: "mineral",
4878
+ category: "regolith",
4879
4879
  tier: "t3",
4880
- color: "#0F52BA"
4880
+ color: "#C4A57B"
4881
4881
  },
4882
4882
  {
4883
- id: 6,
4884
- name: "Carbon",
4885
- description: "A versatile element for life support and coatings.",
4883
+ id: 501,
4884
+ name: "",
4885
+ description: "",
4886
4886
  mass: 15000,
4887
- category: "organic",
4887
+ category: "biomass",
4888
4888
  tier: "t1",
4889
- color: "#4A4A4A"
4889
+ color: "#5A8B3E"
4890
4890
  },
4891
4891
  {
4892
- id: 1003,
4893
- name: "Biomass",
4894
- description: "Organic matter for life support systems.",
4892
+ id: 502,
4893
+ name: "",
4894
+ description: "",
4895
4895
  mass: 30000,
4896
- category: "organic",
4896
+ category: "biomass",
4897
4897
  tier: "t2",
4898
- color: "#8B4513"
4898
+ color: "#5A8B3E"
4899
4899
  },
4900
4900
  {
4901
- id: 1002,
4902
- name: "Resin",
4903
- description: "A fossilized organic compound for coatings and sealants.",
4901
+ id: 503,
4902
+ name: "",
4903
+ description: "",
4904
4904
  mass: 25000,
4905
- category: "organic",
4905
+ category: "biomass",
4906
4906
  tier: "t3",
4907
- color: "#DAA520"
4907
+ color: "#5A8B3E"
4908
4908
  }
4909
4909
  ];
4910
4910
 
@@ -4972,38 +4972,38 @@ const components = [
4972
4972
  {
4973
4973
  id: ITEM_HULL_PLATES,
4974
4974
  name: 'Hull Plates',
4975
- description: 'Structural plating formed from metal. Used in hulls, containers, and frames.',
4975
+ description: 'Structural plating formed from ore. Used in hulls, containers, and frames.',
4976
4976
  color: '#7B8D9E',
4977
4977
  mass: 50000,
4978
4978
  stats: [
4979
- { key: 'strength', source: 'metal' },
4980
- { key: 'density', source: 'metal' },
4979
+ { key: 'strength', source: 'ore' },
4980
+ { key: 'density', source: 'ore' },
4981
4981
  ],
4982
- recipe: [{ category: 'metal', quantity: 15 }],
4982
+ recipe: [{ category: 'ore', quantity: 15 }],
4983
4983
  usedIn: [
4984
4984
  { type: 'entity', name: 'Container' },
4985
- { type: 'entity', name: 'Warehouse T1' },
4986
- { type: 'entity', name: 'Ship T1' },
4985
+ { type: 'entity', name: 'Warehouse' },
4986
+ { type: 'entity', name: 'Ship' },
4987
4987
  ],
4988
4988
  },
4989
4989
  {
4990
4990
  id: ITEM_CARGO_LINING,
4991
4991
  name: 'Cargo Lining',
4992
- description: 'Precision-formed composite lining for cargo storage. Combines precious metal shaping with organic sealing.',
4993
- color: '#D4A843',
4992
+ description: 'Composite lining formed from fine regolith bound in biomass polymer. Dense enough to seal cargo holds, flexible enough to absorb vibration.',
4993
+ color: '#C4A57B',
4994
4994
  mass: 30000,
4995
4995
  stats: [
4996
- { key: 'ductility', source: 'precious' },
4997
- { key: 'purity', source: 'organic' },
4996
+ { key: 'fineness', source: 'regolith' },
4997
+ { key: 'saturation', source: 'biomass' },
4998
4998
  ],
4999
4999
  recipe: [
5000
- { category: 'precious', quantity: 6 },
5001
- { category: 'organic', quantity: 14 },
5000
+ { category: 'regolith', quantity: 10 },
5001
+ { category: 'biomass', quantity: 20 },
5002
5002
  ],
5003
5003
  usedIn: [
5004
5004
  { type: 'entity', name: 'Container' },
5005
- { type: 'entity', name: 'Warehouse T1' },
5006
- { type: 'entity', name: 'Ship T1' },
5005
+ { type: 'module', name: 'Loader' },
5006
+ { type: 'module', name: 'Storage' },
5007
5007
  ],
5008
5008
  },
5009
5009
  {
@@ -5022,73 +5022,76 @@ const components = [
5022
5022
  {
5023
5023
  id: ITEM_POWER_CELL,
5024
5024
  name: 'Power Cell',
5025
- description: 'Crystalline energy storage matrix formed from resonant minerals.',
5026
- color: '#7B5AE8',
5025
+ description: 'Crystalline energy storage matrix. Resonant lattices retain and release charge.',
5026
+ color: '#4ADBFF',
5027
5027
  mass: 30000,
5028
5028
  stats: [
5029
- { key: 'resonance', source: 'mineral' },
5030
- { key: 'clarity', source: 'mineral' },
5029
+ { key: 'resonance', source: 'crystal' },
5030
+ { key: 'reflectivity', source: 'crystal' },
5031
+ ],
5032
+ recipe: [{ category: 'crystal', quantity: 20 }],
5033
+ usedIn: [
5034
+ { type: 'module', name: 'Generator' },
5035
+ { type: 'module', name: 'Hauler' },
5031
5036
  ],
5032
- recipe: [{ category: 'mineral', quantity: 20 }],
5033
- usedIn: [{ type: 'module', name: 'Generator' }],
5034
5037
  },
5035
5038
  {
5036
5039
  id: ITEM_MATTER_CONDUIT,
5037
5040
  name: 'Matter Conduit',
5038
- description: 'Heavy-duty metal shaft used in gathering equipment.',
5041
+ description: 'Heavy-duty ore shaft used in gathering equipment.',
5039
5042
  color: '#7B8D9E',
5040
5043
  mass: 50000,
5041
5044
  stats: [
5042
- { key: 'strength', source: 'metal' },
5043
- { key: 'tolerance', source: 'metal' },
5045
+ { key: 'strength', source: 'ore' },
5046
+ { key: 'tolerance', source: 'ore' },
5044
5047
  ],
5045
- recipe: [{ category: 'metal', quantity: 15 }],
5048
+ recipe: [{ category: 'ore', quantity: 15 }],
5046
5049
  usedIn: [{ type: 'module', name: 'Gatherer' }],
5047
5050
  },
5048
5051
  {
5049
5052
  id: ITEM_SURVEY_PROBE,
5050
5053
  name: 'Survey Probe',
5051
- description: 'Precious metal sensor array for deep resource detection.',
5052
- color: '#D4A843',
5054
+ description: 'Crystal-lattice sensor array for deep resource detection.',
5055
+ color: '#4ADBFF',
5053
5056
  mass: 30000,
5054
5057
  stats: [
5055
- { key: 'conductivity', source: 'precious' },
5056
- { key: 'reflectivity', source: 'precious' },
5058
+ { key: 'conductivity', source: 'crystal' },
5059
+ { key: 'reflectivity', source: 'crystal' },
5057
5060
  ],
5058
- recipe: [{ category: 'precious', quantity: 10 }],
5061
+ recipe: [{ category: 'crystal', quantity: 10 }],
5059
5062
  usedIn: [{ type: 'module', name: 'Gatherer' }],
5060
5063
  },
5061
5064
  {
5062
5065
  id: ITEM_CARGO_ARM,
5063
5066
  name: 'Cargo Arm',
5064
- description: 'Flexible organic composite arm for cargo handling.',
5065
- color: '#6B8E5A',
5067
+ description: 'Flexible biomass composite arm for cargo handling.',
5068
+ color: '#5A8B3E',
5066
5069
  mass: 30000,
5067
5070
  stats: [
5068
- { key: 'plasticity', source: 'organic' },
5069
- { key: 'insulation', source: 'organic' },
5071
+ { key: 'plasticity', source: 'biomass' },
5072
+ { key: 'insulation', source: 'biomass' },
5070
5073
  ],
5071
- recipe: [{ category: 'organic', quantity: 32 }],
5074
+ recipe: [{ category: 'biomass', quantity: 32 }],
5072
5075
  usedIn: [{ type: 'module', name: 'Loader' }],
5073
5076
  },
5074
5077
  {
5075
5078
  id: ITEM_TOOL_BIT,
5076
5079
  name: 'Tool Bit',
5077
- description: 'Dense mineral cutting head for manufacturing operations.',
5078
- color: '#B8A9C9',
5080
+ description: 'Dense regolith cutting head for manufacturing operations.',
5081
+ color: '#C4A57B',
5079
5082
  mass: 30000,
5080
5083
  stats: [
5081
- { key: 'hardness', source: 'mineral' },
5082
- { key: 'clarity', source: 'mineral' },
5084
+ { key: 'hardness', source: 'regolith' },
5085
+ { key: 'composition', source: 'regolith' },
5083
5086
  ],
5084
- recipe: [{ category: 'mineral', quantity: 20 }],
5087
+ recipe: [{ category: 'regolith', quantity: 20 }],
5085
5088
  usedIn: [{ type: 'module', name: 'Manufacturing' }],
5086
5089
  },
5087
5090
  {
5088
5091
  id: ITEM_REACTION_CHAMBER,
5089
5092
  name: 'Reaction Chamber',
5090
5093
  description: 'Gas-pressurized vessel for controlled manufacturing reactions.',
5091
- color: '#7EC8E3',
5094
+ color: '#B8E4A0',
5092
5095
  mass: 50000,
5093
5096
  stats: [
5094
5097
  { key: 'reactivity', source: 'gas' },
@@ -5100,48 +5103,48 @@ const components = [
5100
5103
  {
5101
5104
  id: ITEM_FOCUSING_ARRAY,
5102
5105
  name: 'Focusing Array',
5103
- description: "Precision-formed precious-metal lens array. Routes the haul beam's energy efficiently to the target lock.",
5104
- color: '#D4A843',
5106
+ description: "Precision-formed crystal lens array. Routes the haul beam's energy efficiently to the target lock.",
5107
+ color: '#4ADBFF',
5105
5108
  mass: 40000,
5106
5109
  stats: [
5107
- { key: 'conductivity', source: 'precious' },
5108
- { key: 'ductility', source: 'precious' },
5110
+ { key: 'conductivity', source: 'crystal' },
5111
+ { key: 'resonance', source: 'crystal' },
5109
5112
  ],
5110
- recipe: [{ category: 'precious', quantity: 25 }],
5111
- usedIn: [{ type: 'module', name: 'Hauler Module T1' }],
5113
+ recipe: [{ category: 'crystal', quantity: 25 }],
5114
+ usedIn: [{ type: 'module', name: 'Hauler' }],
5112
5115
  },
5113
5116
  {
5114
5117
  id: ITEM_HULL_PLATES_T2,
5115
5118
  name: 'Hull Plates T2',
5116
- description: 'Advanced structural plating reinforced with tier 2 metals.',
5119
+ description: 'Advanced structural plating reinforced with tier 2 ore.',
5117
5120
  color: '#9BADB8',
5118
5121
  mass: 50000,
5119
5122
  stats: [
5120
- { key: 'strength', source: 'metal' },
5121
- { key: 'density', source: 'metal' },
5123
+ { key: 'strength', source: 'ore' },
5124
+ { key: 'density', source: 'ore' },
5122
5125
  ],
5123
5126
  recipe: [
5124
5127
  { itemId: ITEM_HULL_PLATES, quantity: 2 },
5125
- { category: 'metal', quantity: 15 },
5128
+ { category: 'ore', quantity: 15 },
5126
5129
  ],
5127
- usedIn: [{ type: 'entity', name: 'Container T2' }],
5130
+ usedIn: [{ type: 'entity', name: 'Container' }],
5128
5131
  },
5129
5132
  {
5130
5133
  id: ITEM_CARGO_LINING_T2,
5131
- name: 'Cargo Lining T2',
5132
- description: 'Advanced composite lining with improved storage properties.',
5133
- color: '#E0B84D',
5134
- mass: 30000,
5134
+ name: 'Cargo Lining',
5135
+ description: 'Advanced composite lining reinforced with tier 2 regolith and biomass polymer.',
5136
+ color: '#C4A57B',
5137
+ mass: 45000,
5135
5138
  stats: [
5136
- { key: 'ductility', source: 'precious' },
5137
- { key: 'purity', source: 'organic' },
5139
+ { key: 'fineness', source: 'regolith' },
5140
+ { key: 'saturation', source: 'biomass' },
5138
5141
  ],
5139
5142
  recipe: [
5140
5143
  { itemId: ITEM_CARGO_LINING, quantity: 2 },
5141
- { category: 'precious', quantity: 6 },
5142
- { category: 'organic', quantity: 14 },
5144
+ { category: 'regolith', quantity: 5 },
5145
+ { category: 'biomass', quantity: 10 },
5143
5146
  ],
5144
- usedIn: [{ type: 'entity', name: 'Container T2' }],
5147
+ usedIn: [{ type: 'entity', name: 'Container' }],
5145
5148
  },
5146
5149
  ];
5147
5150
  const entityRecipes = [
@@ -5158,13 +5161,13 @@ const entityRecipes = [
5158
5161
  stats: [
5159
5162
  { key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
5160
5163
  { key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
5161
- { key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility' },
5162
- { key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
5164
+ { key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness' },
5165
+ { key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation' },
5163
5166
  ],
5164
5167
  },
5165
5168
  {
5166
5169
  id: 'ship-t1',
5167
- name: 'Ship T1',
5170
+ name: 'Ship',
5168
5171
  description: 'General-purpose vessel with 5 module slots.',
5169
5172
  color: '#4AE898',
5170
5173
  packedItemId: ITEM_SHIP_T1_PACKED,
@@ -5175,8 +5178,8 @@ const entityRecipes = [
5175
5178
  stats: [
5176
5179
  { key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
5177
5180
  { key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
5178
- { key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility' },
5179
- { key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
5181
+ { key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness' },
5182
+ { key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation' },
5180
5183
  ],
5181
5184
  moduleSlots: [
5182
5185
  { type: MODULE_ANY },
@@ -5188,7 +5191,7 @@ const entityRecipes = [
5188
5191
  },
5189
5192
  {
5190
5193
  id: 'warehouse-t1',
5191
- name: 'Warehouse T1',
5194
+ name: 'Warehouse',
5192
5195
  description: 'Massive stationary storage facility with a single loader module slot.',
5193
5196
  color: '#EAB308',
5194
5197
  packedItemId: ITEM_WAREHOUSE_T1_PACKED,
@@ -5199,8 +5202,8 @@ const entityRecipes = [
5199
5202
  stats: [
5200
5203
  { key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
5201
5204
  { key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
5202
- { key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility' },
5203
- { key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
5205
+ { key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness' },
5206
+ { key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation' },
5204
5207
  ],
5205
5208
  moduleSlots: [
5206
5209
  { type: MODULE_LOADER, label: 'Loader' },
@@ -5212,7 +5215,7 @@ const entityRecipes = [
5212
5215
  },
5213
5216
  {
5214
5217
  id: 'container-t2',
5215
- name: 'Container T2',
5218
+ name: 'Container',
5216
5219
  description: 'Advanced cargo container with improved capacity formulas.',
5217
5220
  color: '#9BADB8',
5218
5221
  packedItemId: ITEM_CONTAINER_T2_PACKED,
@@ -5223,8 +5226,12 @@ const entityRecipes = [
5223
5226
  stats: [
5224
5227
  { key: 'strength', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'strength' },
5225
5228
  { key: 'density', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'density' },
5226
- { key: 'ductility', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'ductility' },
5227
- { key: 'purity', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'purity' },
5229
+ { key: 'fineness', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'fineness' },
5230
+ {
5231
+ key: 'saturation',
5232
+ sourceComponentId: ITEM_CARGO_LINING_T2,
5233
+ sourceStatKey: 'saturation',
5234
+ },
5228
5235
  ],
5229
5236
  },
5230
5237
  ];
@@ -5245,14 +5252,14 @@ const moduleRecipes = [
5245
5252
  {
5246
5253
  id: 'generator-t1',
5247
5254
  name: 'Generator',
5248
- description: 'Basic energy system. Stores and recharges energy from resonant minerals.',
5249
- color: '#7B5AE8',
5255
+ description: 'Basic energy system. Stores and recharges energy from resonant crystals.',
5256
+ color: '#4ADBFF',
5250
5257
  itemId: ITEM_GENERATOR_T1,
5251
5258
  moduleType: MODULE_GENERATOR,
5252
5259
  recipe: [{ itemId: ITEM_POWER_CELL, quantity: 5 }],
5253
5260
  stats: [
5254
5261
  { key: 'resonance', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'resonance' },
5255
- { key: 'clarity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'clarity' },
5262
+ { key: 'reflectivity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'reflectivity' },
5256
5263
  ],
5257
5264
  },
5258
5265
  {
@@ -5290,7 +5297,7 @@ const moduleRecipes = [
5290
5297
  id: 'loader-t1',
5291
5298
  name: 'Loader',
5292
5299
  description: 'Basic cargo handling system. Loads and unloads cargo with articulated arms.',
5293
- color: '#6B8E5A',
5300
+ color: '#5A8B3E',
5294
5301
  itemId: ITEM_LOADER_T1,
5295
5302
  moduleType: MODULE_LOADER,
5296
5303
  recipe: [
@@ -5298,7 +5305,7 @@ const moduleRecipes = [
5298
5305
  { itemId: ITEM_CARGO_ARM, quantity: 3 },
5299
5306
  ],
5300
5307
  stats: [
5301
- { key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility' },
5308
+ { key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness' },
5302
5309
  { key: 'plasticity', sourceComponentId: ITEM_CARGO_ARM, sourceStatKey: 'plasticity' },
5303
5310
  ],
5304
5311
  },
@@ -5306,7 +5313,7 @@ const moduleRecipes = [
5306
5313
  id: 'manufacturing-t1',
5307
5314
  name: 'Manufacturing',
5308
5315
  description: 'Basic crafting system. Processes materials using reaction chambers and cutting tools.',
5309
- color: '#7EC8E3',
5316
+ color: '#B8E4A0',
5310
5317
  itemId: ITEM_MANUFACTURING_T1,
5311
5318
  moduleType: MODULE_CRAFTER,
5312
5319
  recipe: [
@@ -5319,7 +5326,7 @@ const moduleRecipes = [
5319
5326
  sourceComponentId: ITEM_REACTION_CHAMBER,
5320
5327
  sourceStatKey: 'reactivity',
5321
5328
  },
5322
- { key: 'clarity', sourceComponentId: ITEM_TOOL_BIT, sourceStatKey: 'clarity' },
5329
+ { key: 'composition', sourceComponentId: ITEM_TOOL_BIT, sourceStatKey: 'composition' },
5323
5330
  ],
5324
5331
  },
5325
5332
  {
@@ -5335,16 +5342,16 @@ const moduleRecipes = [
5335
5342
  ],
5336
5343
  stats: [
5337
5344
  { key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
5338
- { key: 'ductility', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'ductility' },
5339
- { key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
5340
- { key: 'density', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'density' },
5345
+ { key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
5346
+ { key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness' },
5347
+ { key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation' },
5341
5348
  ],
5342
5349
  },
5343
5350
  {
5344
5351
  id: 'hauler-t1',
5345
- name: 'Hauler Module T1',
5352
+ name: 'Hauler',
5346
5353
  description: 'Projects a haul beam to lock onto and transport containers or warehouses through group travel.',
5347
- color: '#D4A843',
5354
+ color: '#4ADBFF',
5348
5355
  itemId: ITEM_HAULER_T1,
5349
5356
  moduleType: MODULE_HAULER,
5350
5357
  recipe: [
@@ -5353,13 +5360,12 @@ const moduleRecipes = [
5353
5360
  ],
5354
5361
  stats: [
5355
5362
  { key: 'resonance', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'resonance' },
5363
+ { key: 'reflectivity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'reflectivity' },
5356
5364
  {
5357
5365
  key: 'conductivity',
5358
5366
  sourceComponentId: ITEM_FOCUSING_ARRAY,
5359
5367
  sourceStatKey: 'conductivity',
5360
5368
  },
5361
- { key: 'clarity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'clarity' },
5362
- { key: 'ductility', sourceComponentId: ITEM_FOCUSING_ARRAY, sourceStatKey: 'ductility' },
5363
5369
  ],
5364
5370
  },
5365
5371
  ];
@@ -5420,7 +5426,7 @@ function getComponentsForStat(statKey) {
5420
5426
  return components.filter((c) => c.stats.some((s) => s.key === statKey));
5421
5427
  }
5422
5428
 
5423
- const METAL_STATS = [
5429
+ const ORE_STATS = [
5424
5430
  {
5425
5431
  key: 'strength',
5426
5432
  label: 'Strength',
@@ -5441,24 +5447,24 @@ const METAL_STATS = [
5441
5447
  inverted: true,
5442
5448
  },
5443
5449
  ];
5444
- const PRECIOUS_STATS = [
5450
+ const CRYSTAL_STATS = [
5445
5451
  {
5446
5452
  key: 'conductivity',
5447
5453
  label: 'Conductivity',
5448
5454
  abbreviation: 'CON',
5449
- purpose: 'Efficiency of energy/signal transfer',
5455
+ purpose: 'Efficiency of energy/signal transfer through crystalline lattice',
5450
5456
  },
5451
5457
  {
5452
- key: 'ductility',
5453
- label: 'Ductility',
5454
- abbreviation: 'DUC',
5455
- purpose: 'Ability to be worked into fine, precise shapes',
5458
+ key: 'resonance',
5459
+ label: 'Resonance',
5460
+ abbreviation: 'RES',
5461
+ purpose: 'Frequency tuning and piezoelectric response storage and amplification',
5456
5462
  },
5457
5463
  {
5458
5464
  key: 'reflectivity',
5459
5465
  label: 'Reflectivity',
5460
5466
  abbreviation: 'REF',
5461
- purpose: 'Surface quality for heat management and precision optics',
5467
+ purpose: 'Optical refraction and reflection lenses, mirrors, focus',
5462
5468
  },
5463
5469
  ];
5464
5470
  const GAS_STATS = [
@@ -5481,52 +5487,52 @@ const GAS_STATS = [
5481
5487
  purpose: 'Heat capacity for thermal management',
5482
5488
  },
5483
5489
  ];
5484
- const MINERAL_STATS = [
5490
+ const REGOLITH_STATS = [
5485
5491
  {
5486
- key: 'resonance',
5487
- label: 'Resonance',
5488
- abbreviation: 'RES',
5489
- purpose: 'Energy field interaction storage, focusing, projection',
5492
+ key: 'composition',
5493
+ label: 'Composition',
5494
+ abbreviation: 'COM',
5495
+ purpose: 'Mineral/metal mixdrives sensor, chip, and optic crafting quality',
5490
5496
  },
5491
5497
  {
5492
5498
  key: 'hardness',
5493
5499
  label: 'Hardness',
5494
5500
  abbreviation: 'HRD',
5495
- purpose: 'Resistance to wear — cutting surfaces, penetration',
5501
+ purpose: 'Particle hardness — cutting surfaces, abrasives, wear resistance',
5496
5502
  },
5497
5503
  {
5498
- key: 'clarity',
5499
- label: 'Clarity',
5500
- abbreviation: 'CLR',
5501
- purpose: 'Crystalline perfectionprecision optics',
5504
+ key: 'fineness',
5505
+ label: 'Fineness',
5506
+ abbreviation: 'FIN',
5507
+ purpose: 'Grain sizefine powder for smooth composites and sintering',
5502
5508
  },
5503
5509
  ];
5504
- const ORGANIC_STATS = [
5510
+ const BIOMASS_STATS = [
5505
5511
  {
5506
5512
  key: 'plasticity',
5507
5513
  label: 'Plasticity',
5508
5514
  abbreviation: 'PLA',
5509
- purpose: 'Ease of reshaping speeds processing',
5515
+ purpose: 'Flexibility and deformation under load',
5510
5516
  },
5511
5517
  {
5512
5518
  key: 'insulation',
5513
5519
  label: 'Insulation',
5514
5520
  abbreviation: 'INS',
5515
- purpose: 'Energy containment reduces energy loss',
5521
+ purpose: 'Thermal and electrical blocking capacity',
5516
5522
  },
5517
5523
  {
5518
- key: 'purity',
5519
- label: 'Purity',
5520
- abbreviation: 'PUR',
5521
- purpose: 'Biological cleanliness better composites and lubricants',
5524
+ key: 'saturation',
5525
+ label: 'Saturation',
5526
+ abbreviation: 'SAT',
5527
+ purpose: 'Concentration of useful organic compounds per unit',
5522
5528
  },
5523
5529
  ];
5524
5530
  const STAT_MAP = {
5525
- metal: METAL_STATS,
5526
- precious: PRECIOUS_STATS,
5531
+ ore: ORE_STATS,
5532
+ crystal: CRYSTAL_STATS,
5527
5533
  gas: GAS_STATS,
5528
- mineral: MINERAL_STATS,
5529
- organic: ORGANIC_STATS,
5534
+ regolith: REGOLITH_STATS,
5535
+ biomass: BIOMASS_STATS,
5530
5536
  };
5531
5537
  function getStatDefinitions(category) {
5532
5538
  return STAT_MAP[category];
@@ -5765,11 +5771,11 @@ function decodeStackStats(itemId, stats) {
5765
5771
  return { stat1: decodeStat(s, 0), stat2: decodeStat(s, 1), stat3: decodeStat(s, 2) };
5766
5772
  }
5767
5773
  const categoryItemMass = {
5768
- metal: 30000,
5769
- precious: 40000,
5774
+ ore: 30000,
5775
+ crystal: 40000,
5770
5776
  gas: 15000,
5771
- mineral: 22000,
5772
- organic: 15000,
5777
+ regolith: 22000,
5778
+ biomass: 15000,
5773
5779
  };
5774
5780
  function computeInputMass(itemId, itemType) {
5775
5781
  if (itemType === 'component') {
@@ -5907,7 +5913,7 @@ function synthesizeItem(id, source) {
5907
5913
  name: source.name,
5908
5914
  description: source.description,
5909
5915
  mass: source.mass,
5910
- category: 'metal',
5916
+ category: 'ore',
5911
5917
  tier: 't1',
5912
5918
  color: source.color,
5913
5919
  });
@@ -7089,10 +7095,10 @@ class Ship extends Types.entity_info {
7089
7095
  function computeShipHullCapabilities(stats) {
7090
7096
  const density = stats.density ?? 500;
7091
7097
  const strength = stats.strength ?? 500;
7092
- const ductility = stats.ductility ?? 500;
7093
- const purity = stats.purity ?? 500;
7098
+ const fineness = stats.fineness ?? 500;
7099
+ const saturation = stats.saturation ?? 500;
7094
7100
  const hullmass = 25000 + 75 * density;
7095
- const statSum = strength + ductility + purity;
7101
+ const statSum = strength + fineness + saturation;
7096
7102
  const exponent = statSum / 2997.0;
7097
7103
  const capacity = Math.floor(1000000 * Math.pow(10, exponent));
7098
7104
  return { hullmass, capacity };
@@ -7107,10 +7113,10 @@ function computeEngineCapabilities(stats) {
7107
7113
  }
7108
7114
  function computeGeneratorCapabilities(stats) {
7109
7115
  const res = stats.resonance ?? 500;
7110
- const clr = stats.clarity ?? 500;
7116
+ const ref = stats.reflectivity ?? 500;
7111
7117
  return {
7112
7118
  capacity: 300 + Math.floor(res / 6),
7113
- recharge: 1 + Math.floor((clr * 3) / 1000),
7119
+ recharge: 1 + Math.floor((ref * 3) / 1000),
7114
7120
  };
7115
7121
  }
7116
7122
  function computeGathererCapabilities(stats) {
@@ -7126,47 +7132,47 @@ function computeGathererCapabilities(stats) {
7126
7132
  };
7127
7133
  }
7128
7134
  function computeLoaderCapabilities(stats) {
7129
- const duc = stats.ductility ?? 500;
7135
+ const fin = stats.fineness ?? 500;
7130
7136
  const pla = stats.plasticity ?? 500;
7131
7137
  return {
7132
- mass: Math.max(200, 2000 - Math.floor(duc * 2)),
7138
+ mass: Math.max(200, 2000 - Math.floor(fin * 2)),
7133
7139
  thrust: 1 + Math.floor(pla / 500),
7134
7140
  quantity: 1,
7135
7141
  };
7136
7142
  }
7137
7143
  function computeManufacturingCapabilities(stats) {
7138
7144
  const rea = stats.reactivity ?? 500;
7139
- const clr = stats.clarity ?? 500;
7145
+ const com = stats.composition ?? 500;
7140
7146
  return {
7141
7147
  speed: 100 + Math.floor((rea * 4) / 5),
7142
- drain: Math.max(5, 30 - Math.floor(clr / 33)),
7148
+ drain: Math.max(5, 30 - Math.floor(com / 33)),
7143
7149
  };
7144
7150
  }
7145
7151
  function computeHaulerCapabilities(stats) {
7146
7152
  const res = stats.resonance ?? 500;
7147
7153
  const con = stats.conductivity ?? 500;
7148
- const clr = stats.clarity ?? 500;
7154
+ const ref = stats.reflectivity ?? 500;
7149
7155
  return {
7150
7156
  capacity: Math.max(1, 1 + Math.floor(res / 400)),
7151
7157
  efficiency: 2000 + con * 6,
7152
- drain: Math.max(3, 15 - Math.floor(clr / 80)),
7158
+ drain: Math.max(3, 15 - Math.floor(ref / 80)),
7153
7159
  };
7154
7160
  }
7155
7161
  function computeStorageCapabilities(stats, baseCapacity) {
7156
7162
  const strength = stats.strength ?? 500;
7157
- const ductility = stats.ductility ?? 500;
7158
- const purity = stats.purity ?? 500;
7159
- const statSum = strength + ductility + purity;
7163
+ const fineness = stats.fineness ?? 500;
7164
+ const saturation = stats.saturation ?? 500;
7165
+ const statSum = strength + fineness + saturation;
7160
7166
  const capacityBonus = Math.floor((baseCapacity * (10 + Math.floor((statSum * 10) / 2997))) / 100);
7161
7167
  return { capacityBonus };
7162
7168
  }
7163
7169
  function computeWarehouseHullCapabilities(stats) {
7164
7170
  const density = stats.density ?? 500;
7165
7171
  const strength = stats.strength ?? 500;
7166
- const ductility = stats.ductility ?? 500;
7167
- const purity = stats.purity ?? 500;
7172
+ const fineness = stats.fineness ?? 500;
7173
+ const saturation = stats.saturation ?? 500;
7168
7174
  const hullmass = 25000 + 75 * density;
7169
- const statSum = strength + ductility + purity;
7175
+ const statSum = strength + fineness + saturation;
7170
7176
  const exponent = statSum / 2997.0;
7171
7177
  const capacity = Math.floor(20000000 * Math.pow(10, exponent));
7172
7178
  return { hullmass, capacity };
@@ -7376,10 +7382,10 @@ class Container extends Types.entity_info {
7376
7382
  function computeContainerCapabilities(stats) {
7377
7383
  const density = stats['density'] ?? 500;
7378
7384
  const strength = stats['strength'] ?? 500;
7379
- const ductility = stats['ductility'] ?? 500;
7380
- const purity = stats['purity'] ?? 500;
7385
+ const fineness = stats['fineness'] ?? 500;
7386
+ const saturation = stats['saturation'] ?? 500;
7381
7387
  const hullmass = 25000 + 75 * density;
7382
- const statSum = strength + ductility + purity;
7388
+ const statSum = strength + fineness + saturation;
7383
7389
  const exponent = statSum / 2997;
7384
7390
  const capacity = Math.floor(1000000 * Math.pow(10, exponent));
7385
7391
  return { hullmass, capacity };
@@ -7387,10 +7393,10 @@ function computeContainerCapabilities(stats) {
7387
7393
  function computeContainerT2Capabilities(stats) {
7388
7394
  const strength = stats['strength'] ?? 0;
7389
7395
  const density = stats['density'] ?? 0;
7390
- const ductility = stats['ductility'] ?? 0;
7391
- const purity = stats['purity'] ?? 0;
7396
+ const fineness = stats['fineness'] ?? 0;
7397
+ const saturation = stats['saturation'] ?? 0;
7392
7398
  const hullmass = 20000 + 50 * density;
7393
- const statSum = strength + ductility + purity;
7399
+ const statSum = strength + fineness + saturation;
7394
7400
  const exponent = statSum / 2500;
7395
7401
  const capacity = Math.floor(1500000 * Math.pow(10, exponent));
7396
7402
  return { hullmass, capacity };
@@ -8119,11 +8125,11 @@ function computeHaulerDrain(distance, drain, haulCount) {
8119
8125
  }
8120
8126
 
8121
8127
  const categoryColors = {
8122
- metal: '#5B9BD5',
8123
- precious: '#D4A843',
8124
- gas: '#7EC8E3',
8125
- mineral: '#B8A9C9',
8126
- organic: '#6B8E5A',
8128
+ ore: '#C26D3F',
8129
+ crystal: '#4ADBFF',
8130
+ gas: '#B8E4A0',
8131
+ regolith: '#C4A57B',
8132
+ biomass: '#5A8B3E',
8127
8133
  };
8128
8134
  const tierColors = {
8129
8135
  t1: '#8b8b8b',
@@ -8140,18 +8146,18 @@ const tierLabels = {
8140
8146
  t5: 'Legendary',
8141
8147
  };
8142
8148
  const categoryIcons = {
8143
- metal: '⬡',
8144
- precious: '◈',
8149
+ ore: '⬡',
8150
+ crystal: '◈',
8145
8151
  gas: '◎',
8146
- mineral: '',
8147
- organic: '❋',
8152
+ regolith: '',
8153
+ biomass: '❋',
8148
8154
  };
8149
8155
  const categoryIconShapes = {
8150
- metal: 'hex',
8151
- precious: 'diamond',
8156
+ ore: 'hex',
8157
+ crystal: 'diamond',
8152
8158
  gas: 'circle',
8153
- mineral: 'square',
8154
- organic: 'star',
8159
+ regolith: 'square',
8160
+ biomass: 'star',
8155
8161
  };
8156
8162
  const componentIcon = '▣';
8157
8163
  const moduleIcon = '⬢';
@@ -8225,39 +8231,39 @@ function isCraftedItem(id) {
8225
8231
 
8226
8232
  const categories = [
8227
8233
  {
8228
- id: 'metal',
8229
- name: 'Metals',
8230
- label: 'Metal',
8231
- description: 'Structural, strong, heavy — hulls, frames, load-bearing components',
8232
- color: categoryColors.metal,
8234
+ id: 'ore',
8235
+ name: 'Ore',
8236
+ label: 'Ore',
8237
+ description: 'Structural metal-bearing rock — hulls, frames, load-bearing components',
8238
+ color: categoryColors.ore,
8233
8239
  },
8234
8240
  {
8235
- id: 'precious',
8236
- name: 'Precious Metals',
8237
- label: 'Precious Metal',
8238
- description: 'Conductive, corrosion-resistantelectronics, energy systems, precision components',
8239
- color: categoryColors.precious,
8241
+ id: 'crystal',
8242
+ name: 'Crystal',
8243
+ label: 'Crystal',
8244
+ description: 'Crystalline latticeconductors, energy storage, resonant systems',
8245
+ color: categoryColors.crystal,
8240
8246
  },
8241
8247
  {
8242
8248
  id: 'gas',
8243
- name: 'Gases',
8249
+ name: 'Gas',
8244
8250
  label: 'Gas',
8245
- description: 'Energy, fuel, volatile/reactive — propulsion, thermal processing, chemical reactions',
8251
+ description: 'Atmospheric volatile — propulsion, thermal processing, chemical reactions',
8246
8252
  color: categoryColors.gas,
8247
8253
  },
8248
8254
  {
8249
- id: 'mineral',
8250
- name: 'Minerals',
8251
- label: 'Mineral',
8252
- description: 'Crystalline, hard, precise — sensors, optics, energy storage, cutting surfaces',
8253
- color: categoryColors.mineral,
8255
+ id: 'regolith',
8256
+ name: 'Regolith',
8257
+ label: 'Regolith',
8258
+ description: 'Surface mineral dust — sensors, optics, computation, cutting surfaces',
8259
+ color: categoryColors.regolith,
8254
8260
  },
8255
8261
  {
8256
- id: 'organic',
8257
- name: 'Organics',
8258
- label: 'Organic',
8259
- description: 'Adaptive, biological, polymer — insulation, composites, bio-processes',
8260
- color: categoryColors.organic,
8262
+ id: 'biomass',
8263
+ name: 'Biomass',
8264
+ label: 'Biomass',
8265
+ description: 'Organic polymer — insulation, composites, bio-processes',
8266
+ color: categoryColors.biomass,
8261
8267
  },
8262
8268
  ];
8263
8269
  function getCategoryInfo(id) {
@@ -8739,14 +8745,14 @@ function resolveComponent(id, stats) {
8739
8745
  if (stats !== undefined) {
8740
8746
  const decoded = decodeCraftedItemStats(id, toBigStats(stats));
8741
8747
  resolvedStats = Object.entries(decoded).map(([key, value]) => {
8742
- const allDefs = getStatDefinitions('metal')
8743
- .concat(getStatDefinitions('precious'))
8748
+ const allDefs = getStatDefinitions('ore')
8749
+ .concat(getStatDefinitions('crystal'))
8744
8750
  .concat(getStatDefinitions('gas'))
8745
- .concat(getStatDefinitions('mineral'))
8746
- .concat(getStatDefinitions('organic'));
8751
+ .concat(getStatDefinitions('regolith'))
8752
+ .concat(getStatDefinitions('biomass'));
8747
8753
  const def = allDefs.find((d) => d.key === key);
8748
8754
  const statDef = comp.stats.find((s) => s.key === key);
8749
- const cat = (statDef?.source ?? 'metal');
8755
+ const cat = (statDef?.source ?? 'ore');
8750
8756
  return {
8751
8757
  key,
8752
8758
  label: def?.label ?? key,
@@ -8837,9 +8843,9 @@ function computeCapabilityGroup(moduleType, stats) {
8837
8843
  }
8838
8844
  case MODULE_STORAGE: {
8839
8845
  const str = stats.strength ?? 500;
8840
- const duc = stats.ductility ?? 500;
8841
- const pur = stats.purity ?? 500;
8842
- const statSum = str + duc + pur;
8846
+ const fin = stats.fineness ?? 500;
8847
+ const sat = stats.saturation ?? 500;
8848
+ const statSum = str + fin + sat;
8843
8849
  const pct = 10 + Math.floor((statSum * 10) / 2997);
8844
8850
  return { capability: 'Storage', attributes: [{ label: 'Capacity Bonus', value: pct }] };
8845
8851
  }
@@ -9128,25 +9134,25 @@ function computeBaseCapacityWarehouse(stats) {
9128
9134
  const computeEngineThrust = (vol) => 400 + idiv(vol * 3, 4);
9129
9135
  const computeEngineDrain = (thm) => Math.max(30, 50 - idiv(thm, 70));
9130
9136
  const computeGeneratorCap = (res) => 300 + idiv(res, 6);
9131
- const computeGeneratorRech = (clr) => 1 + idiv(clr * 3, 1000);
9137
+ const computeGeneratorRech = (ref) => 1 + idiv(ref * 3, 1000);
9132
9138
  const computeGathererYield = (str) => 200 + str;
9133
9139
  const computeGathererDrain = (con) => Math.max(250, 1250 - idiv(con * 25, 20));
9134
9140
  const computeGathererDepth = (tol) => 200 + idiv(tol * 3, 2);
9135
9141
  const computeGathererSpeed = (ref) => 100 + idiv(ref * 4, 5);
9136
- const computeLoaderMass = (duc) => Math.max(200, 2000 - duc * 2);
9142
+ const computeLoaderMass = (fin) => Math.max(200, 2000 - fin * 2);
9137
9143
  const computeLoaderThrust = (pla) => 1 + idiv(pla, 500);
9138
9144
  const computeCrafterSpeed = (rea) => 100 + idiv(rea * 4, 5);
9139
- const computeCrafterDrain = (clr) => Math.max(5, 30 - idiv(clr, 33));
9145
+ const computeCrafterDrain = (com) => Math.max(5, 30 - idiv(com, 33));
9140
9146
  function entityDisplayName(itemId) {
9141
9147
  switch (itemId) {
9142
9148
  case ITEM_SHIP_T1_PACKED:
9143
- return 'Ship T1';
9149
+ return 'Ship';
9144
9150
  case ITEM_WAREHOUSE_T1_PACKED:
9145
- return 'Warehouse T1';
9151
+ return 'Warehouse';
9146
9152
  case ITEM_CONTAINER_T1_PACKED:
9147
- return 'Container T1';
9153
+ return 'Container';
9148
9154
  case ITEM_CONTAINER_T2_PACKED:
9149
- return 'Container T2';
9155
+ return 'Container';
9150
9156
  default:
9151
9157
  return 'Entity';
9152
9158
  }
@@ -9154,17 +9160,17 @@ function entityDisplayName(itemId) {
9154
9160
  function moduleDisplayName(itemId) {
9155
9161
  switch (itemId) {
9156
9162
  case ITEM_ENGINE_T1:
9157
- return 'Engine T1';
9163
+ return 'Engine';
9158
9164
  case ITEM_GENERATOR_T1:
9159
- return 'Generator T1';
9165
+ return 'Generator';
9160
9166
  case ITEM_GATHERER_T1:
9161
- return 'Gatherer T1';
9167
+ return 'Gatherer';
9162
9168
  case ITEM_LOADER_T1:
9163
- return 'Loader T1';
9169
+ return 'Loader';
9164
9170
  case ITEM_MANUFACTURING_T1:
9165
- return 'Manufacturing T1';
9171
+ return 'Manufacturing';
9166
9172
  case ITEM_STORAGE_T1:
9167
- return 'Storage T1';
9173
+ return 'Storage';
9168
9174
  default:
9169
9175
  return 'Module';
9170
9176
  }
@@ -9186,8 +9192,8 @@ function formatModuleLine(slot, itemId, stats) {
9186
9192
  }
9187
9193
  case MODULE_GENERATOR: {
9188
9194
  const res = decodeStat(stats, 0);
9189
- const clr = decodeStat(stats, 1);
9190
- out += ` Capacity ${computeGeneratorCap(res)} Recharge ${computeGeneratorRech(clr)}`;
9195
+ const ref = decodeStat(stats, 1);
9196
+ out += ` Capacity ${computeGeneratorCap(res)} Recharge ${computeGeneratorRech(ref)}`;
9191
9197
  break;
9192
9198
  }
9193
9199
  case MODULE_GATHERER: {
@@ -9199,22 +9205,22 @@ function formatModuleLine(slot, itemId, stats) {
9199
9205
  break;
9200
9206
  }
9201
9207
  case MODULE_LOADER: {
9202
- const duc = decodeStat(stats, 0);
9208
+ const fin = decodeStat(stats, 0);
9203
9209
  const pla = decodeStat(stats, 1);
9204
- out += ` Mass ${computeLoaderMass(duc)} Thrust ${computeLoaderThrust(pla)}`;
9210
+ out += ` Mass ${computeLoaderMass(fin)} Thrust ${computeLoaderThrust(pla)}`;
9205
9211
  break;
9206
9212
  }
9207
9213
  case MODULE_CRAFTER: {
9208
9214
  const rea = decodeStat(stats, 0);
9209
- const clr = decodeStat(stats, 1);
9210
- out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(clr)}`;
9215
+ const com = decodeStat(stats, 1);
9216
+ out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(com)}`;
9211
9217
  break;
9212
9218
  }
9213
9219
  case MODULE_STORAGE: {
9214
9220
  const str = decodeStat(stats, 0);
9215
- const duc = decodeStat(stats, 1);
9216
- const pur = decodeStat(stats, 2);
9217
- const sum = str + duc + pur;
9221
+ const fin = decodeStat(stats, 2);
9222
+ const sat = decodeStat(stats, 3);
9223
+ const sum = str + fin + sat;
9218
9224
  const pct = 10 + idiv(sum * 10, 2997);
9219
9225
  out += ` +${pct}% capacity`;
9220
9226
  break;
@@ -9274,5 +9280,62 @@ var index = /*#__PURE__*/Object.freeze({
9274
9280
  buildEntityDescription: buildEntityDescription
9275
9281
  });
9276
9282
 
9277
- export { ActionsManager, BASE_ORBITAL_MASS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_Z, CRAFT_ENERGY_DIVISOR, Container, Coordinates, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, ENTITY_CAPACITY_EXCEEDED, 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, GameState, INITIAL_CONTAINER_CAPACITY, INITIAL_CONTAINER_HULLMASS, INITIAL_WAREHOUSE_CAPACITY, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_CARGO_ARM, ITEM_CARGO_LINING, ITEM_CARGO_LINING_T2, ITEM_CONTAINER_T1_PACKED, ITEM_CONTAINER_T2_PACKED, ITEM_DOES_NOT_EXIST, ITEM_ENGINE_T1, ITEM_FOCUSING_ARRAY, ITEM_GATHERER_T1, ITEM_GENERATOR_T1, ITEM_HAULER_T1, ITEM_HULL_PLATES, ITEM_HULL_PLATES_T2, ITEM_LOADER_T1, ITEM_MANUFACTURING_T1, ITEM_MATTER_CONDUIT, ITEM_NOT_AVAILABLE_AT_LOCATION, ITEM_POWER_CELL, ITEM_REACTION_CHAMBER, 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, InventoryAccessor, Item, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, MODULE_ANY, MODULE_CRAFTER, MODULE_ENGINE, MODULE_GATHERER, MODULE_GENERATOR, MODULE_HAULER, MODULE_LAUNCHER, MODULE_LOADER, MODULE_STORAGE, 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, PRECISION$1 as PRECISION, platform as PlatformContract, Player, PlayersManager, RECIPE_INPUTS_EXCESS, RECIPE_INPUTS_INSUFFICIENT, RECIPE_INPUTS_INVALID, RECIPE_INPUTS_MIXED, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, RESERVE_TIERS, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, 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, ScheduleAccessor, server as ServerContract, Ship, Shipload, TIER_ROLL_MAX, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, Warehouse, 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, categoryIconShapes, categoryIcons, categoryItemMass, componentIcon, components, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass, computeComponentStats, computeContainerCapabilities, computeContainerT2Capabilities, computeCraftedOutputStats, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityStats, computeGathererCapabilities, computeGathererDepth, computeGathererDrain, computeGathererSpeed, computeGathererYield, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeHaulPenalty, computeHaulerCapabilities, computeHaulerDrain, computeInputMass, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeManufacturingCapabilities, computeShipCapabilities, computeShipHullCapabilities, computeStorageCapabilities, computeWarehouseCapabilities, computeWarehouseHullCapabilities, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeCraftedItemStats, decodeStat, decodeStats, Shipload as default, deriveLocation, deriveLocationEpoch, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStratum, describeModule, describeModuleForItem, describeModuleForSlot, deserializeAsset, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, distanceBetweenCoordinates, distanceBetweenPoints, encodeGatheredCargoStats, encodeStats, energyPercent, entityDisplayName, entityRecipes, estimateDealTravelTime, estimateTravelTime, findNearbyPlanets, formatModuleLine, getAllCraftableItems, getCapabilityAttributes, getCategoryInfo, getComponentById, getComponentsForCategory, getComponentsForStat, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEligibleResources, getEntityRecipe, getEntityRecipeByItemId, getEntitySlotLayout, getEpochInfo, getFlightOrigin, getItem, getItems, getLocationCandidates, getLocationType, getLocationTypeName, getModuleCapabilityType, getModuleRecipe, getModuleRecipeByItemId, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getResourceTier, getResourceWeight, 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, itemAbbreviations, itemCategory, itemIds, itemOffset, itemTier, itemTypeCode, lerp, makeContainer, makeShip, makeWarehouse, maxTravelDistance, mergeStacks, moduleAccepts, moduleDisplayName, moduleIcon, moduleRecipes, needsRecharge, projectEntity, projectEntityAt, readCommonBase, removeFromStacks, renderDescription, resolveItem, resolveStats, rollTier, rollWithinTier, rotation, schedule, stackKey, stackToCargoItem, stacksEqual, statMappings, tierColors, tierLabels, toLocation, validateSchedule };
9283
+ function formatMass(kg) {
9284
+ const t = kg / 1000;
9285
+ const fixed = t.toFixed(2);
9286
+ const trimmed = fixed.replace(/\.?0+$/, '');
9287
+ return `${trimmed} t`;
9288
+ }
9289
+ function formatMassDelta(kg) {
9290
+ if (kg === 0)
9291
+ return '0 t';
9292
+ const sign = kg > 0 ? '+' : '-';
9293
+ return `${sign}${formatMass(Math.abs(kg))}`;
9294
+ }
9295
+
9296
+ const TIER_ADJECTIVES = {
9297
+ 1: 'Crude',
9298
+ 2: 'Dense',
9299
+ 3: 'Pure',
9300
+ 4: 'Prime',
9301
+ 5: 'Pristine',
9302
+ 6: 'Radiant',
9303
+ 7: 'Exotic',
9304
+ 8: 'Mythic',
9305
+ 9: 'Cosmic',
9306
+ 10: 'Ascendant',
9307
+ };
9308
+ const CATEGORY_LABELS = {
9309
+ ore: 'Ore',
9310
+ crystal: 'Crystal',
9311
+ gas: 'Gas',
9312
+ regolith: 'Regolith',
9313
+ biomass: 'Biomass',
9314
+ };
9315
+ function tierNumber(tier) {
9316
+ return Number(String(tier).replace(/^t/i, ''));
9317
+ }
9318
+ function displayName(resolved) {
9319
+ if (resolved.itemType === 'resource') {
9320
+ const tierNum = tierNumber(resolved.tier);
9321
+ const adj = TIER_ADJECTIVES[tierNum] ?? 'Unknown';
9322
+ const cat = resolved.category ? CATEGORY_LABELS[resolved.category] : 'Resource';
9323
+ return `${adj} ${cat}`;
9324
+ }
9325
+ return resolved.name;
9326
+ }
9327
+ function describeItem(resolved, opts) {
9328
+ const massFmt = opts?.formatMass ?? formatMass;
9329
+ const mass = massFmt(resolved.mass);
9330
+ const tier = `T${tierNumber(resolved.tier)}`;
9331
+ if (resolved.itemType === 'resource') {
9332
+ const cat = resolved.category ? CATEGORY_LABELS[resolved.category] : 'Resource';
9333
+ const header = `${tier} ${cat}`;
9334
+ const stats = resolved.stats?.map((s) => `${s.label} ${s.value}`).join(', ');
9335
+ return [header, stats, mass].filter(Boolean).join(' · ');
9336
+ }
9337
+ return `${tier} ${resolved.name} · ${mass}`;
9338
+ }
9339
+
9340
+ export { ActionsManager, BASE_ORBITAL_MASS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_Z, CRAFT_ENERGY_DIVISOR, Container, Coordinates, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, ENTITY_CAPACITY_EXCEEDED, 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, GameState, INITIAL_CONTAINER_CAPACITY, INITIAL_CONTAINER_HULLMASS, INITIAL_WAREHOUSE_CAPACITY, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_CARGO_ARM, ITEM_CARGO_LINING, ITEM_CARGO_LINING_T2, ITEM_CONTAINER_T1_PACKED, ITEM_CONTAINER_T2_PACKED, ITEM_DOES_NOT_EXIST, ITEM_ENGINE_T1, ITEM_FOCUSING_ARRAY, ITEM_GATHERER_T1, ITEM_GENERATOR_T1, ITEM_HAULER_T1, ITEM_HULL_PLATES, ITEM_HULL_PLATES_T2, ITEM_LOADER_T1, ITEM_MANUFACTURING_T1, ITEM_MATTER_CONDUIT, ITEM_NOT_AVAILABLE_AT_LOCATION, ITEM_POWER_CELL, ITEM_REACTION_CHAMBER, 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, InventoryAccessor, Item, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, MODULE_ANY, MODULE_CRAFTER, MODULE_ENGINE, MODULE_GATHERER, MODULE_GENERATOR, MODULE_HAULER, MODULE_LAUNCHER, MODULE_LOADER, MODULE_STORAGE, 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, PRECISION$1 as PRECISION, platform as PlatformContract, Player, PlayersManager, RECIPE_INPUTS_EXCESS, RECIPE_INPUTS_INSUFFICIENT, RECIPE_INPUTS_INVALID, RECIPE_INPUTS_MIXED, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, RESERVE_TIERS, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, 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, ScheduleAccessor, server as ServerContract, Ship, Shipload, TIER_ROLL_MAX, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, Warehouse, 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, categoryIconShapes, categoryIcons, categoryItemMass, componentIcon, components, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass, computeComponentStats, computeContainerCapabilities, computeContainerT2Capabilities, computeCraftedOutputStats, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityStats, computeGathererCapabilities, computeGathererDepth, computeGathererDrain, computeGathererSpeed, computeGathererYield, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeHaulPenalty, computeHaulerCapabilities, computeHaulerDrain, computeInputMass, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeManufacturingCapabilities, computeShipCapabilities, computeShipHullCapabilities, computeStorageCapabilities, computeWarehouseCapabilities, computeWarehouseHullCapabilities, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeCraftedItemStats, decodeStat, decodeStats, Shipload as default, deriveLocation, deriveLocationEpoch, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStratum, describeItem, describeModule, describeModuleForItem, describeModuleForSlot, deserializeAsset, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, displayName, distanceBetweenCoordinates, distanceBetweenPoints, encodeGatheredCargoStats, encodeStats, energyPercent, entityDisplayName, entityRecipes, estimateDealTravelTime, estimateTravelTime, findNearbyPlanets, formatMass, formatMassDelta, formatModuleLine, getAllCraftableItems, getCapabilityAttributes, getCategoryInfo, getComponentById, getComponentsForCategory, getComponentsForStat, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEligibleResources, getEntityRecipe, getEntityRecipeByItemId, getEntitySlotLayout, getEpochInfo, getFlightOrigin, getItem, getItems, getLocationCandidates, getLocationType, getLocationTypeName, getModuleCapabilityType, getModuleRecipe, getModuleRecipeByItemId, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getResourceTier, getResourceWeight, 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, itemAbbreviations, itemCategory, itemIds, itemOffset, itemTier, itemTypeCode, lerp, makeContainer, makeShip, makeWarehouse, maxTravelDistance, mergeStacks, moduleAccepts, moduleDisplayName, moduleIcon, moduleRecipes, needsRecharge, projectEntity, projectEntityAt, readCommonBase, removeFromStacks, renderDescription, resolveItem, resolveStats, rollTier, rollWithinTier, rotation, schedule, stackKey, stackToCargoItem, stacksEqual, statMappings, tierColors, tierLabels, toLocation, validateSchedule };
9278
9341
  //# sourceMappingURL=shipload.m.js.map