@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.d.ts +16 -5
- package/lib/shipload.js +369 -302
- package/lib/shipload.js.map +1 -1
- package/lib/shipload.m.js +366 -303
- package/lib/shipload.m.js.map +1 -1
- package/package.json +1 -1
- package/src/data/categories.ts +22 -25
- package/src/data/colors.ts +13 -13
- package/src/data/items.json +15 -15
- package/src/data/recipes.ts +91 -85
- package/src/derivation/crafting.ts +4 -4
- package/src/derivation/resources.ts +23 -23
- package/src/derivation/stats.ts +29 -29
- package/src/entities/container.ts +6 -6
- package/src/entities/ship-deploy.ts +17 -17
- package/src/format.ts +12 -0
- package/src/index-module.ts +5 -0
- package/src/market/items.ts +1 -1
- package/src/nft/description.ts +22 -22
- package/src/resolution/display-name.ts +57 -0
- package/src/resolution/resolve-item.ts +8 -8
- package/src/types.ts +1 -1
package/lib/shipload.js
CHANGED
|
@@ -2281,21 +2281,21 @@ const PLANET_SUBTYPE_ICY = 3;
|
|
|
2281
2281
|
const PLANET_SUBTYPE_OCEAN = 4;
|
|
2282
2282
|
const PLANET_SUBTYPE_INDUSTRIAL = 5;
|
|
2283
2283
|
const RESOURCE_CATALOG = [
|
|
2284
|
-
{ id:
|
|
2285
|
-
{ id:
|
|
2286
|
-
{ id:
|
|
2287
|
-
{ id:
|
|
2288
|
-
{ id:
|
|
2289
|
-
{ id:
|
|
2290
|
-
{ id:
|
|
2291
|
-
{ id:
|
|
2292
|
-
{ id:
|
|
2293
|
-
{ id:
|
|
2294
|
-
{ id:
|
|
2295
|
-
{ id:
|
|
2296
|
-
{ id:
|
|
2297
|
-
{ id:
|
|
2298
|
-
{ id:
|
|
2284
|
+
{ id: 101, tier: 't1' },
|
|
2285
|
+
{ id: 102, tier: 't2' },
|
|
2286
|
+
{ id: 103, tier: 't3' },
|
|
2287
|
+
{ id: 201, tier: 't1' },
|
|
2288
|
+
{ id: 202, tier: 't2' },
|
|
2289
|
+
{ id: 203, tier: 't3' },
|
|
2290
|
+
{ id: 301, tier: 't1' },
|
|
2291
|
+
{ id: 302, tier: 't2' },
|
|
2292
|
+
{ id: 303, tier: 't3' },
|
|
2293
|
+
{ id: 401, tier: 't1' },
|
|
2294
|
+
{ id: 402, tier: 't2' },
|
|
2295
|
+
{ id: 403, tier: 't3' },
|
|
2296
|
+
{ id: 501, tier: 't1' },
|
|
2297
|
+
{ id: 502, tier: 't2' },
|
|
2298
|
+
{ id: 503, tier: 't3' },
|
|
2299
2299
|
];
|
|
2300
2300
|
function getDepthThreshold(tier) {
|
|
2301
2301
|
switch (tier) {
|
|
@@ -2352,14 +2352,14 @@ function getResourceWeight(itemId, stratum) {
|
|
|
2352
2352
|
return 10;
|
|
2353
2353
|
}
|
|
2354
2354
|
}
|
|
2355
|
-
const ASTEROID_RESOURCES = [
|
|
2356
|
-
const NEBULA_RESOURCES = [
|
|
2357
|
-
const GAS_GIANT_RESOURCES = [
|
|
2358
|
-
const ROCKY_RESOURCES = [
|
|
2359
|
-
const TERRESTRIAL_RESOURCES = [
|
|
2360
|
-
const ICY_RESOURCES = [
|
|
2361
|
-
const OCEAN_RESOURCES = [
|
|
2362
|
-
const INDUSTRIAL_RESOURCES = [
|
|
2355
|
+
const ASTEROID_RESOURCES = [101, 102, 103, 201, 202];
|
|
2356
|
+
const NEBULA_RESOURCES = [202, 203, 301, 302, 303];
|
|
2357
|
+
const GAS_GIANT_RESOURCES = [301, 302, 303, 401, 501];
|
|
2358
|
+
const ROCKY_RESOURCES = [101, 102, 103, 401, 402, 403, 503];
|
|
2359
|
+
const TERRESTRIAL_RESOURCES = [201, 202, 401, 402, 501, 502, 503];
|
|
2360
|
+
const ICY_RESOURCES = [101, 301, 302, 401, 403, 501, 502];
|
|
2361
|
+
const OCEAN_RESOURCES = [201, 203, 301, 303, 501, 502, 503];
|
|
2362
|
+
const INDUSTRIAL_RESOURCES = [101, 102, 103, 201, 203, 402, 403];
|
|
2363
2363
|
function getLocationCandidates(locationType, subtype) {
|
|
2364
2364
|
if (locationType === 2)
|
|
2365
2365
|
return ASTEROID_RESOURCES;
|
|
@@ -4780,139 +4780,139 @@ class BaseManager {
|
|
|
4780
4780
|
|
|
4781
4781
|
var itemsData = [
|
|
4782
4782
|
{
|
|
4783
|
-
id:
|
|
4784
|
-
name: "
|
|
4785
|
-
description: "
|
|
4783
|
+
id: 101,
|
|
4784
|
+
name: "",
|
|
4785
|
+
description: "",
|
|
4786
4786
|
mass: 30000,
|
|
4787
|
-
category: "
|
|
4787
|
+
category: "ore",
|
|
4788
4788
|
tier: "t1",
|
|
4789
|
-
color: "#
|
|
4789
|
+
color: "#C26D3F"
|
|
4790
4790
|
},
|
|
4791
4791
|
{
|
|
4792
|
-
id:
|
|
4793
|
-
name: "
|
|
4794
|
-
description: "
|
|
4792
|
+
id: 102,
|
|
4793
|
+
name: "",
|
|
4794
|
+
description: "",
|
|
4795
4795
|
mass: 27000,
|
|
4796
|
-
category: "
|
|
4796
|
+
category: "ore",
|
|
4797
4797
|
tier: "t2",
|
|
4798
|
-
color: "#
|
|
4798
|
+
color: "#C26D3F"
|
|
4799
4799
|
},
|
|
4800
4800
|
{
|
|
4801
|
-
id:
|
|
4802
|
-
name: "
|
|
4803
|
-
description: "
|
|
4801
|
+
id: 103,
|
|
4802
|
+
name: "",
|
|
4803
|
+
description: "",
|
|
4804
4804
|
mass: 52000,
|
|
4805
|
-
category: "
|
|
4805
|
+
category: "ore",
|
|
4806
4806
|
tier: "t3",
|
|
4807
|
-
color: "#
|
|
4807
|
+
color: "#C26D3F"
|
|
4808
4808
|
},
|
|
4809
4809
|
{
|
|
4810
|
-
id:
|
|
4811
|
-
name: "
|
|
4812
|
-
description: "
|
|
4810
|
+
id: 201,
|
|
4811
|
+
name: "",
|
|
4812
|
+
description: "",
|
|
4813
4813
|
mass: 40000,
|
|
4814
|
-
category: "
|
|
4814
|
+
category: "crystal",
|
|
4815
4815
|
tier: "t1",
|
|
4816
|
-
color: "#
|
|
4816
|
+
color: "#4ADBFF"
|
|
4817
4817
|
},
|
|
4818
4818
|
{
|
|
4819
|
-
id:
|
|
4820
|
-
name: "
|
|
4821
|
-
description: "
|
|
4819
|
+
id: 202,
|
|
4820
|
+
name: "",
|
|
4821
|
+
description: "",
|
|
4822
4822
|
mass: 55000,
|
|
4823
|
-
category: "
|
|
4823
|
+
category: "crystal",
|
|
4824
4824
|
tier: "t2",
|
|
4825
|
-
color: "#
|
|
4825
|
+
color: "#4ADBFF"
|
|
4826
4826
|
},
|
|
4827
4827
|
{
|
|
4828
|
-
id:
|
|
4829
|
-
name: "
|
|
4830
|
-
description: "
|
|
4828
|
+
id: 203,
|
|
4829
|
+
name: "",
|
|
4830
|
+
description: "",
|
|
4831
4831
|
mass: 70000,
|
|
4832
|
-
category: "
|
|
4832
|
+
category: "crystal",
|
|
4833
4833
|
tier: "t3",
|
|
4834
|
-
color: "#
|
|
4834
|
+
color: "#4ADBFF"
|
|
4835
4835
|
},
|
|
4836
4836
|
{
|
|
4837
|
-
id:
|
|
4838
|
-
name: "
|
|
4839
|
-
description: "
|
|
4837
|
+
id: 301,
|
|
4838
|
+
name: "",
|
|
4839
|
+
description: "",
|
|
4840
4840
|
mass: 15000,
|
|
4841
4841
|
category: "gas",
|
|
4842
4842
|
tier: "t1",
|
|
4843
|
-
color: "#
|
|
4843
|
+
color: "#B8E4A0"
|
|
4844
4844
|
},
|
|
4845
4845
|
{
|
|
4846
|
-
id:
|
|
4847
|
-
name: "
|
|
4848
|
-
description: "
|
|
4846
|
+
id: 302,
|
|
4847
|
+
name: "",
|
|
4848
|
+
description: "",
|
|
4849
4849
|
mass: 2000,
|
|
4850
4850
|
category: "gas",
|
|
4851
4851
|
tier: "t2",
|
|
4852
|
-
color: "#
|
|
4852
|
+
color: "#B8E4A0"
|
|
4853
4853
|
},
|
|
4854
4854
|
{
|
|
4855
|
-
id:
|
|
4856
|
-
name: "
|
|
4857
|
-
description: "
|
|
4855
|
+
id: 303,
|
|
4856
|
+
name: "",
|
|
4857
|
+
description: "",
|
|
4858
4858
|
mass: 8000,
|
|
4859
4859
|
category: "gas",
|
|
4860
4860
|
tier: "t3",
|
|
4861
|
-
color: "#
|
|
4861
|
+
color: "#B8E4A0"
|
|
4862
4862
|
},
|
|
4863
4863
|
{
|
|
4864
|
-
id:
|
|
4865
|
-
name: "
|
|
4866
|
-
description: "
|
|
4864
|
+
id: 401,
|
|
4865
|
+
name: "",
|
|
4866
|
+
description: "",
|
|
4867
4867
|
mass: 22000,
|
|
4868
|
-
category: "
|
|
4868
|
+
category: "regolith",
|
|
4869
4869
|
tier: "t1",
|
|
4870
|
-
color: "#
|
|
4870
|
+
color: "#C4A57B"
|
|
4871
4871
|
},
|
|
4872
4872
|
{
|
|
4873
|
-
id:
|
|
4874
|
-
name: "
|
|
4875
|
-
description: "
|
|
4873
|
+
id: 402,
|
|
4874
|
+
name: "",
|
|
4875
|
+
description: "",
|
|
4876
4876
|
mass: 35000,
|
|
4877
|
-
category: "
|
|
4877
|
+
category: "regolith",
|
|
4878
4878
|
tier: "t2",
|
|
4879
|
-
color: "#
|
|
4879
|
+
color: "#C4A57B"
|
|
4880
4880
|
},
|
|
4881
4881
|
{
|
|
4882
|
-
id:
|
|
4883
|
-
name: "
|
|
4884
|
-
description: "
|
|
4882
|
+
id: 403,
|
|
4883
|
+
name: "",
|
|
4884
|
+
description: "",
|
|
4885
4885
|
mass: 45000,
|
|
4886
|
-
category: "
|
|
4886
|
+
category: "regolith",
|
|
4887
4887
|
tier: "t3",
|
|
4888
|
-
color: "#
|
|
4888
|
+
color: "#C4A57B"
|
|
4889
4889
|
},
|
|
4890
4890
|
{
|
|
4891
|
-
id:
|
|
4892
|
-
name: "
|
|
4893
|
-
description: "
|
|
4891
|
+
id: 501,
|
|
4892
|
+
name: "",
|
|
4893
|
+
description: "",
|
|
4894
4894
|
mass: 15000,
|
|
4895
|
-
category: "
|
|
4895
|
+
category: "biomass",
|
|
4896
4896
|
tier: "t1",
|
|
4897
|
-
color: "#
|
|
4897
|
+
color: "#5A8B3E"
|
|
4898
4898
|
},
|
|
4899
4899
|
{
|
|
4900
|
-
id:
|
|
4901
|
-
name: "
|
|
4902
|
-
description: "
|
|
4900
|
+
id: 502,
|
|
4901
|
+
name: "",
|
|
4902
|
+
description: "",
|
|
4903
4903
|
mass: 30000,
|
|
4904
|
-
category: "
|
|
4904
|
+
category: "biomass",
|
|
4905
4905
|
tier: "t2",
|
|
4906
|
-
color: "#
|
|
4906
|
+
color: "#5A8B3E"
|
|
4907
4907
|
},
|
|
4908
4908
|
{
|
|
4909
|
-
id:
|
|
4910
|
-
name: "
|
|
4911
|
-
description: "
|
|
4909
|
+
id: 503,
|
|
4910
|
+
name: "",
|
|
4911
|
+
description: "",
|
|
4912
4912
|
mass: 25000,
|
|
4913
|
-
category: "
|
|
4913
|
+
category: "biomass",
|
|
4914
4914
|
tier: "t3",
|
|
4915
|
-
color: "#
|
|
4915
|
+
color: "#5A8B3E"
|
|
4916
4916
|
}
|
|
4917
4917
|
];
|
|
4918
4918
|
|
|
@@ -4980,38 +4980,38 @@ const components = [
|
|
|
4980
4980
|
{
|
|
4981
4981
|
id: ITEM_HULL_PLATES,
|
|
4982
4982
|
name: 'Hull Plates',
|
|
4983
|
-
description: 'Structural plating formed from
|
|
4983
|
+
description: 'Structural plating formed from ore. Used in hulls, containers, and frames.',
|
|
4984
4984
|
color: '#7B8D9E',
|
|
4985
4985
|
mass: 50000,
|
|
4986
4986
|
stats: [
|
|
4987
|
-
{ key: 'strength', source: '
|
|
4988
|
-
{ key: 'density', source: '
|
|
4987
|
+
{ key: 'strength', source: 'ore' },
|
|
4988
|
+
{ key: 'density', source: 'ore' },
|
|
4989
4989
|
],
|
|
4990
|
-
recipe: [{ category: '
|
|
4990
|
+
recipe: [{ category: 'ore', quantity: 15 }],
|
|
4991
4991
|
usedIn: [
|
|
4992
4992
|
{ type: 'entity', name: 'Container' },
|
|
4993
|
-
{ type: 'entity', name: 'Warehouse
|
|
4994
|
-
{ type: 'entity', name: 'Ship
|
|
4993
|
+
{ type: 'entity', name: 'Warehouse' },
|
|
4994
|
+
{ type: 'entity', name: 'Ship' },
|
|
4995
4995
|
],
|
|
4996
4996
|
},
|
|
4997
4997
|
{
|
|
4998
4998
|
id: ITEM_CARGO_LINING,
|
|
4999
4999
|
name: 'Cargo Lining',
|
|
5000
|
-
description: '
|
|
5001
|
-
color: '#
|
|
5000
|
+
description: 'Composite lining formed from fine regolith bound in biomass polymer. Dense enough to seal cargo holds, flexible enough to absorb vibration.',
|
|
5001
|
+
color: '#C4A57B',
|
|
5002
5002
|
mass: 30000,
|
|
5003
5003
|
stats: [
|
|
5004
|
-
{ key: '
|
|
5005
|
-
{ key: '
|
|
5004
|
+
{ key: 'fineness', source: 'regolith' },
|
|
5005
|
+
{ key: 'saturation', source: 'biomass' },
|
|
5006
5006
|
],
|
|
5007
5007
|
recipe: [
|
|
5008
|
-
{ category: '
|
|
5009
|
-
{ category: '
|
|
5008
|
+
{ category: 'regolith', quantity: 10 },
|
|
5009
|
+
{ category: 'biomass', quantity: 20 },
|
|
5010
5010
|
],
|
|
5011
5011
|
usedIn: [
|
|
5012
5012
|
{ type: 'entity', name: 'Container' },
|
|
5013
|
-
{ type: '
|
|
5014
|
-
{ type: '
|
|
5013
|
+
{ type: 'module', name: 'Loader' },
|
|
5014
|
+
{ type: 'module', name: 'Storage' },
|
|
5015
5015
|
],
|
|
5016
5016
|
},
|
|
5017
5017
|
{
|
|
@@ -5030,73 +5030,76 @@ const components = [
|
|
|
5030
5030
|
{
|
|
5031
5031
|
id: ITEM_POWER_CELL,
|
|
5032
5032
|
name: 'Power Cell',
|
|
5033
|
-
description: 'Crystalline energy storage matrix
|
|
5034
|
-
color: '#
|
|
5033
|
+
description: 'Crystalline energy storage matrix. Resonant lattices retain and release charge.',
|
|
5034
|
+
color: '#4ADBFF',
|
|
5035
5035
|
mass: 30000,
|
|
5036
5036
|
stats: [
|
|
5037
|
-
{ key: 'resonance', source: '
|
|
5038
|
-
{ key: '
|
|
5037
|
+
{ key: 'resonance', source: 'crystal' },
|
|
5038
|
+
{ key: 'reflectivity', source: 'crystal' },
|
|
5039
|
+
],
|
|
5040
|
+
recipe: [{ category: 'crystal', quantity: 20 }],
|
|
5041
|
+
usedIn: [
|
|
5042
|
+
{ type: 'module', name: 'Generator' },
|
|
5043
|
+
{ type: 'module', name: 'Hauler' },
|
|
5039
5044
|
],
|
|
5040
|
-
recipe: [{ category: 'mineral', quantity: 20 }],
|
|
5041
|
-
usedIn: [{ type: 'module', name: 'Generator' }],
|
|
5042
5045
|
},
|
|
5043
5046
|
{
|
|
5044
5047
|
id: ITEM_MATTER_CONDUIT,
|
|
5045
5048
|
name: 'Matter Conduit',
|
|
5046
|
-
description: 'Heavy-duty
|
|
5049
|
+
description: 'Heavy-duty ore shaft used in gathering equipment.',
|
|
5047
5050
|
color: '#7B8D9E',
|
|
5048
5051
|
mass: 50000,
|
|
5049
5052
|
stats: [
|
|
5050
|
-
{ key: 'strength', source: '
|
|
5051
|
-
{ key: 'tolerance', source: '
|
|
5053
|
+
{ key: 'strength', source: 'ore' },
|
|
5054
|
+
{ key: 'tolerance', source: 'ore' },
|
|
5052
5055
|
],
|
|
5053
|
-
recipe: [{ category: '
|
|
5056
|
+
recipe: [{ category: 'ore', quantity: 15 }],
|
|
5054
5057
|
usedIn: [{ type: 'module', name: 'Gatherer' }],
|
|
5055
5058
|
},
|
|
5056
5059
|
{
|
|
5057
5060
|
id: ITEM_SURVEY_PROBE,
|
|
5058
5061
|
name: 'Survey Probe',
|
|
5059
|
-
description: '
|
|
5060
|
-
color: '#
|
|
5062
|
+
description: 'Crystal-lattice sensor array for deep resource detection.',
|
|
5063
|
+
color: '#4ADBFF',
|
|
5061
5064
|
mass: 30000,
|
|
5062
5065
|
stats: [
|
|
5063
|
-
{ key: 'conductivity', source: '
|
|
5064
|
-
{ key: 'reflectivity', source: '
|
|
5066
|
+
{ key: 'conductivity', source: 'crystal' },
|
|
5067
|
+
{ key: 'reflectivity', source: 'crystal' },
|
|
5065
5068
|
],
|
|
5066
|
-
recipe: [{ category: '
|
|
5069
|
+
recipe: [{ category: 'crystal', quantity: 10 }],
|
|
5067
5070
|
usedIn: [{ type: 'module', name: 'Gatherer' }],
|
|
5068
5071
|
},
|
|
5069
5072
|
{
|
|
5070
5073
|
id: ITEM_CARGO_ARM,
|
|
5071
5074
|
name: 'Cargo Arm',
|
|
5072
|
-
description: 'Flexible
|
|
5073
|
-
color: '#
|
|
5075
|
+
description: 'Flexible biomass composite arm for cargo handling.',
|
|
5076
|
+
color: '#5A8B3E',
|
|
5074
5077
|
mass: 30000,
|
|
5075
5078
|
stats: [
|
|
5076
|
-
{ key: 'plasticity', source: '
|
|
5077
|
-
{ key: 'insulation', source: '
|
|
5079
|
+
{ key: 'plasticity', source: 'biomass' },
|
|
5080
|
+
{ key: 'insulation', source: 'biomass' },
|
|
5078
5081
|
],
|
|
5079
|
-
recipe: [{ category: '
|
|
5082
|
+
recipe: [{ category: 'biomass', quantity: 32 }],
|
|
5080
5083
|
usedIn: [{ type: 'module', name: 'Loader' }],
|
|
5081
5084
|
},
|
|
5082
5085
|
{
|
|
5083
5086
|
id: ITEM_TOOL_BIT,
|
|
5084
5087
|
name: 'Tool Bit',
|
|
5085
|
-
description: 'Dense
|
|
5086
|
-
color: '#
|
|
5088
|
+
description: 'Dense regolith cutting head for manufacturing operations.',
|
|
5089
|
+
color: '#C4A57B',
|
|
5087
5090
|
mass: 30000,
|
|
5088
5091
|
stats: [
|
|
5089
|
-
{ key: 'hardness', source: '
|
|
5090
|
-
{ key: '
|
|
5092
|
+
{ key: 'hardness', source: 'regolith' },
|
|
5093
|
+
{ key: 'composition', source: 'regolith' },
|
|
5091
5094
|
],
|
|
5092
|
-
recipe: [{ category: '
|
|
5095
|
+
recipe: [{ category: 'regolith', quantity: 20 }],
|
|
5093
5096
|
usedIn: [{ type: 'module', name: 'Manufacturing' }],
|
|
5094
5097
|
},
|
|
5095
5098
|
{
|
|
5096
5099
|
id: ITEM_REACTION_CHAMBER,
|
|
5097
5100
|
name: 'Reaction Chamber',
|
|
5098
5101
|
description: 'Gas-pressurized vessel for controlled manufacturing reactions.',
|
|
5099
|
-
color: '#
|
|
5102
|
+
color: '#B8E4A0',
|
|
5100
5103
|
mass: 50000,
|
|
5101
5104
|
stats: [
|
|
5102
5105
|
{ key: 'reactivity', source: 'gas' },
|
|
@@ -5108,48 +5111,48 @@ const components = [
|
|
|
5108
5111
|
{
|
|
5109
5112
|
id: ITEM_FOCUSING_ARRAY,
|
|
5110
5113
|
name: 'Focusing Array',
|
|
5111
|
-
description: "Precision-formed
|
|
5112
|
-
color: '#
|
|
5114
|
+
description: "Precision-formed crystal lens array. Routes the haul beam's energy efficiently to the target lock.",
|
|
5115
|
+
color: '#4ADBFF',
|
|
5113
5116
|
mass: 40000,
|
|
5114
5117
|
stats: [
|
|
5115
|
-
{ key: 'conductivity', source: '
|
|
5116
|
-
{ key: '
|
|
5118
|
+
{ key: 'conductivity', source: 'crystal' },
|
|
5119
|
+
{ key: 'resonance', source: 'crystal' },
|
|
5117
5120
|
],
|
|
5118
|
-
recipe: [{ category: '
|
|
5119
|
-
usedIn: [{ type: 'module', name: 'Hauler
|
|
5121
|
+
recipe: [{ category: 'crystal', quantity: 25 }],
|
|
5122
|
+
usedIn: [{ type: 'module', name: 'Hauler' }],
|
|
5120
5123
|
},
|
|
5121
5124
|
{
|
|
5122
5125
|
id: ITEM_HULL_PLATES_T2,
|
|
5123
5126
|
name: 'Hull Plates T2',
|
|
5124
|
-
description: 'Advanced structural plating reinforced with tier 2
|
|
5127
|
+
description: 'Advanced structural plating reinforced with tier 2 ore.',
|
|
5125
5128
|
color: '#9BADB8',
|
|
5126
5129
|
mass: 50000,
|
|
5127
5130
|
stats: [
|
|
5128
|
-
{ key: 'strength', source: '
|
|
5129
|
-
{ key: 'density', source: '
|
|
5131
|
+
{ key: 'strength', source: 'ore' },
|
|
5132
|
+
{ key: 'density', source: 'ore' },
|
|
5130
5133
|
],
|
|
5131
5134
|
recipe: [
|
|
5132
5135
|
{ itemId: ITEM_HULL_PLATES, quantity: 2 },
|
|
5133
|
-
{ category: '
|
|
5136
|
+
{ category: 'ore', quantity: 15 },
|
|
5134
5137
|
],
|
|
5135
|
-
usedIn: [{ type: 'entity', name: 'Container
|
|
5138
|
+
usedIn: [{ type: 'entity', name: 'Container' }],
|
|
5136
5139
|
},
|
|
5137
5140
|
{
|
|
5138
5141
|
id: ITEM_CARGO_LINING_T2,
|
|
5139
|
-
name: 'Cargo Lining
|
|
5140
|
-
description: 'Advanced composite lining with
|
|
5141
|
-
color: '#
|
|
5142
|
-
mass:
|
|
5142
|
+
name: 'Cargo Lining',
|
|
5143
|
+
description: 'Advanced composite lining reinforced with tier 2 regolith and biomass polymer.',
|
|
5144
|
+
color: '#C4A57B',
|
|
5145
|
+
mass: 45000,
|
|
5143
5146
|
stats: [
|
|
5144
|
-
{ key: '
|
|
5145
|
-
{ key: '
|
|
5147
|
+
{ key: 'fineness', source: 'regolith' },
|
|
5148
|
+
{ key: 'saturation', source: 'biomass' },
|
|
5146
5149
|
],
|
|
5147
5150
|
recipe: [
|
|
5148
5151
|
{ itemId: ITEM_CARGO_LINING, quantity: 2 },
|
|
5149
|
-
{ category: '
|
|
5150
|
-
{ category: '
|
|
5152
|
+
{ category: 'regolith', quantity: 5 },
|
|
5153
|
+
{ category: 'biomass', quantity: 10 },
|
|
5151
5154
|
],
|
|
5152
|
-
usedIn: [{ type: 'entity', name: 'Container
|
|
5155
|
+
usedIn: [{ type: 'entity', name: 'Container' }],
|
|
5153
5156
|
},
|
|
5154
5157
|
];
|
|
5155
5158
|
const entityRecipes = [
|
|
@@ -5166,13 +5169,13 @@ const entityRecipes = [
|
|
|
5166
5169
|
stats: [
|
|
5167
5170
|
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
|
|
5168
5171
|
{ key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
|
|
5169
|
-
{ key: '
|
|
5170
|
-
{ key: '
|
|
5172
|
+
{ key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness' },
|
|
5173
|
+
{ key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation' },
|
|
5171
5174
|
],
|
|
5172
5175
|
},
|
|
5173
5176
|
{
|
|
5174
5177
|
id: 'ship-t1',
|
|
5175
|
-
name: 'Ship
|
|
5178
|
+
name: 'Ship',
|
|
5176
5179
|
description: 'General-purpose vessel with 5 module slots.',
|
|
5177
5180
|
color: '#4AE898',
|
|
5178
5181
|
packedItemId: ITEM_SHIP_T1_PACKED,
|
|
@@ -5183,8 +5186,8 @@ const entityRecipes = [
|
|
|
5183
5186
|
stats: [
|
|
5184
5187
|
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
|
|
5185
5188
|
{ key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
|
|
5186
|
-
{ key: '
|
|
5187
|
-
{ key: '
|
|
5189
|
+
{ key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness' },
|
|
5190
|
+
{ key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation' },
|
|
5188
5191
|
],
|
|
5189
5192
|
moduleSlots: [
|
|
5190
5193
|
{ type: MODULE_ANY },
|
|
@@ -5196,7 +5199,7 @@ const entityRecipes = [
|
|
|
5196
5199
|
},
|
|
5197
5200
|
{
|
|
5198
5201
|
id: 'warehouse-t1',
|
|
5199
|
-
name: 'Warehouse
|
|
5202
|
+
name: 'Warehouse',
|
|
5200
5203
|
description: 'Massive stationary storage facility with a single loader module slot.',
|
|
5201
5204
|
color: '#EAB308',
|
|
5202
5205
|
packedItemId: ITEM_WAREHOUSE_T1_PACKED,
|
|
@@ -5207,8 +5210,8 @@ const entityRecipes = [
|
|
|
5207
5210
|
stats: [
|
|
5208
5211
|
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
|
|
5209
5212
|
{ key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
|
|
5210
|
-
{ key: '
|
|
5211
|
-
{ key: '
|
|
5213
|
+
{ key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness' },
|
|
5214
|
+
{ key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation' },
|
|
5212
5215
|
],
|
|
5213
5216
|
moduleSlots: [
|
|
5214
5217
|
{ type: MODULE_LOADER, label: 'Loader' },
|
|
@@ -5220,7 +5223,7 @@ const entityRecipes = [
|
|
|
5220
5223
|
},
|
|
5221
5224
|
{
|
|
5222
5225
|
id: 'container-t2',
|
|
5223
|
-
name: 'Container
|
|
5226
|
+
name: 'Container',
|
|
5224
5227
|
description: 'Advanced cargo container with improved capacity formulas.',
|
|
5225
5228
|
color: '#9BADB8',
|
|
5226
5229
|
packedItemId: ITEM_CONTAINER_T2_PACKED,
|
|
@@ -5231,8 +5234,12 @@ const entityRecipes = [
|
|
|
5231
5234
|
stats: [
|
|
5232
5235
|
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'strength' },
|
|
5233
5236
|
{ key: 'density', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'density' },
|
|
5234
|
-
{ key: '
|
|
5235
|
-
{
|
|
5237
|
+
{ key: 'fineness', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'fineness' },
|
|
5238
|
+
{
|
|
5239
|
+
key: 'saturation',
|
|
5240
|
+
sourceComponentId: ITEM_CARGO_LINING_T2,
|
|
5241
|
+
sourceStatKey: 'saturation',
|
|
5242
|
+
},
|
|
5236
5243
|
],
|
|
5237
5244
|
},
|
|
5238
5245
|
];
|
|
@@ -5253,14 +5260,14 @@ const moduleRecipes = [
|
|
|
5253
5260
|
{
|
|
5254
5261
|
id: 'generator-t1',
|
|
5255
5262
|
name: 'Generator',
|
|
5256
|
-
description: 'Basic energy system. Stores and recharges energy from resonant
|
|
5257
|
-
color: '#
|
|
5263
|
+
description: 'Basic energy system. Stores and recharges energy from resonant crystals.',
|
|
5264
|
+
color: '#4ADBFF',
|
|
5258
5265
|
itemId: ITEM_GENERATOR_T1,
|
|
5259
5266
|
moduleType: MODULE_GENERATOR,
|
|
5260
5267
|
recipe: [{ itemId: ITEM_POWER_CELL, quantity: 5 }],
|
|
5261
5268
|
stats: [
|
|
5262
5269
|
{ key: 'resonance', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'resonance' },
|
|
5263
|
-
{ key: '
|
|
5270
|
+
{ key: 'reflectivity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'reflectivity' },
|
|
5264
5271
|
],
|
|
5265
5272
|
},
|
|
5266
5273
|
{
|
|
@@ -5298,7 +5305,7 @@ const moduleRecipes = [
|
|
|
5298
5305
|
id: 'loader-t1',
|
|
5299
5306
|
name: 'Loader',
|
|
5300
5307
|
description: 'Basic cargo handling system. Loads and unloads cargo with articulated arms.',
|
|
5301
|
-
color: '#
|
|
5308
|
+
color: '#5A8B3E',
|
|
5302
5309
|
itemId: ITEM_LOADER_T1,
|
|
5303
5310
|
moduleType: MODULE_LOADER,
|
|
5304
5311
|
recipe: [
|
|
@@ -5306,7 +5313,7 @@ const moduleRecipes = [
|
|
|
5306
5313
|
{ itemId: ITEM_CARGO_ARM, quantity: 3 },
|
|
5307
5314
|
],
|
|
5308
5315
|
stats: [
|
|
5309
|
-
{ key: '
|
|
5316
|
+
{ key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness' },
|
|
5310
5317
|
{ key: 'plasticity', sourceComponentId: ITEM_CARGO_ARM, sourceStatKey: 'plasticity' },
|
|
5311
5318
|
],
|
|
5312
5319
|
},
|
|
@@ -5314,7 +5321,7 @@ const moduleRecipes = [
|
|
|
5314
5321
|
id: 'manufacturing-t1',
|
|
5315
5322
|
name: 'Manufacturing',
|
|
5316
5323
|
description: 'Basic crafting system. Processes materials using reaction chambers and cutting tools.',
|
|
5317
|
-
color: '#
|
|
5324
|
+
color: '#B8E4A0',
|
|
5318
5325
|
itemId: ITEM_MANUFACTURING_T1,
|
|
5319
5326
|
moduleType: MODULE_CRAFTER,
|
|
5320
5327
|
recipe: [
|
|
@@ -5327,7 +5334,7 @@ const moduleRecipes = [
|
|
|
5327
5334
|
sourceComponentId: ITEM_REACTION_CHAMBER,
|
|
5328
5335
|
sourceStatKey: 'reactivity',
|
|
5329
5336
|
},
|
|
5330
|
-
{ key: '
|
|
5337
|
+
{ key: 'composition', sourceComponentId: ITEM_TOOL_BIT, sourceStatKey: 'composition' },
|
|
5331
5338
|
],
|
|
5332
5339
|
},
|
|
5333
5340
|
{
|
|
@@ -5343,16 +5350,16 @@ const moduleRecipes = [
|
|
|
5343
5350
|
],
|
|
5344
5351
|
stats: [
|
|
5345
5352
|
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
|
|
5346
|
-
{ key: '
|
|
5347
|
-
{ key: '
|
|
5348
|
-
{ key: '
|
|
5353
|
+
{ key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
|
|
5354
|
+
{ key: 'fineness', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'fineness' },
|
|
5355
|
+
{ key: 'saturation', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'saturation' },
|
|
5349
5356
|
],
|
|
5350
5357
|
},
|
|
5351
5358
|
{
|
|
5352
5359
|
id: 'hauler-t1',
|
|
5353
|
-
name: 'Hauler
|
|
5360
|
+
name: 'Hauler',
|
|
5354
5361
|
description: 'Projects a haul beam to lock onto and transport containers or warehouses through group travel.',
|
|
5355
|
-
color: '#
|
|
5362
|
+
color: '#4ADBFF',
|
|
5356
5363
|
itemId: ITEM_HAULER_T1,
|
|
5357
5364
|
moduleType: MODULE_HAULER,
|
|
5358
5365
|
recipe: [
|
|
@@ -5361,13 +5368,12 @@ const moduleRecipes = [
|
|
|
5361
5368
|
],
|
|
5362
5369
|
stats: [
|
|
5363
5370
|
{ key: 'resonance', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'resonance' },
|
|
5371
|
+
{ key: 'reflectivity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'reflectivity' },
|
|
5364
5372
|
{
|
|
5365
5373
|
key: 'conductivity',
|
|
5366
5374
|
sourceComponentId: ITEM_FOCUSING_ARRAY,
|
|
5367
5375
|
sourceStatKey: 'conductivity',
|
|
5368
5376
|
},
|
|
5369
|
-
{ key: 'clarity', sourceComponentId: ITEM_POWER_CELL, sourceStatKey: 'clarity' },
|
|
5370
|
-
{ key: 'ductility', sourceComponentId: ITEM_FOCUSING_ARRAY, sourceStatKey: 'ductility' },
|
|
5371
5377
|
],
|
|
5372
5378
|
},
|
|
5373
5379
|
];
|
|
@@ -5428,7 +5434,7 @@ function getComponentsForStat(statKey) {
|
|
|
5428
5434
|
return components.filter((c) => c.stats.some((s) => s.key === statKey));
|
|
5429
5435
|
}
|
|
5430
5436
|
|
|
5431
|
-
const
|
|
5437
|
+
const ORE_STATS = [
|
|
5432
5438
|
{
|
|
5433
5439
|
key: 'strength',
|
|
5434
5440
|
label: 'Strength',
|
|
@@ -5449,24 +5455,24 @@ const METAL_STATS = [
|
|
|
5449
5455
|
inverted: true,
|
|
5450
5456
|
},
|
|
5451
5457
|
];
|
|
5452
|
-
const
|
|
5458
|
+
const CRYSTAL_STATS = [
|
|
5453
5459
|
{
|
|
5454
5460
|
key: 'conductivity',
|
|
5455
5461
|
label: 'Conductivity',
|
|
5456
5462
|
abbreviation: 'CON',
|
|
5457
|
-
purpose: 'Efficiency of energy/signal transfer',
|
|
5463
|
+
purpose: 'Efficiency of energy/signal transfer through crystalline lattice',
|
|
5458
5464
|
},
|
|
5459
5465
|
{
|
|
5460
|
-
key: '
|
|
5461
|
-
label: '
|
|
5462
|
-
abbreviation: '
|
|
5463
|
-
purpose: '
|
|
5466
|
+
key: 'resonance',
|
|
5467
|
+
label: 'Resonance',
|
|
5468
|
+
abbreviation: 'RES',
|
|
5469
|
+
purpose: 'Frequency tuning and piezoelectric response — storage and amplification',
|
|
5464
5470
|
},
|
|
5465
5471
|
{
|
|
5466
5472
|
key: 'reflectivity',
|
|
5467
5473
|
label: 'Reflectivity',
|
|
5468
5474
|
abbreviation: 'REF',
|
|
5469
|
-
purpose: '
|
|
5475
|
+
purpose: 'Optical refraction and reflection — lenses, mirrors, focus',
|
|
5470
5476
|
},
|
|
5471
5477
|
];
|
|
5472
5478
|
const GAS_STATS = [
|
|
@@ -5489,52 +5495,52 @@ const GAS_STATS = [
|
|
|
5489
5495
|
purpose: 'Heat capacity for thermal management',
|
|
5490
5496
|
},
|
|
5491
5497
|
];
|
|
5492
|
-
const
|
|
5498
|
+
const REGOLITH_STATS = [
|
|
5493
5499
|
{
|
|
5494
|
-
key: '
|
|
5495
|
-
label: '
|
|
5496
|
-
abbreviation: '
|
|
5497
|
-
purpose: '
|
|
5500
|
+
key: 'composition',
|
|
5501
|
+
label: 'Composition',
|
|
5502
|
+
abbreviation: 'COM',
|
|
5503
|
+
purpose: 'Mineral/metal mix — drives sensor, chip, and optic crafting quality',
|
|
5498
5504
|
},
|
|
5499
5505
|
{
|
|
5500
5506
|
key: 'hardness',
|
|
5501
5507
|
label: 'Hardness',
|
|
5502
5508
|
abbreviation: 'HRD',
|
|
5503
|
-
purpose: '
|
|
5509
|
+
purpose: 'Particle hardness — cutting surfaces, abrasives, wear resistance',
|
|
5504
5510
|
},
|
|
5505
5511
|
{
|
|
5506
|
-
key: '
|
|
5507
|
-
label: '
|
|
5508
|
-
abbreviation: '
|
|
5509
|
-
purpose: '
|
|
5512
|
+
key: 'fineness',
|
|
5513
|
+
label: 'Fineness',
|
|
5514
|
+
abbreviation: 'FIN',
|
|
5515
|
+
purpose: 'Grain size — fine powder for smooth composites and sintering',
|
|
5510
5516
|
},
|
|
5511
5517
|
];
|
|
5512
|
-
const
|
|
5518
|
+
const BIOMASS_STATS = [
|
|
5513
5519
|
{
|
|
5514
5520
|
key: 'plasticity',
|
|
5515
5521
|
label: 'Plasticity',
|
|
5516
5522
|
abbreviation: 'PLA',
|
|
5517
|
-
purpose: '
|
|
5523
|
+
purpose: 'Flexibility and deformation under load',
|
|
5518
5524
|
},
|
|
5519
5525
|
{
|
|
5520
5526
|
key: 'insulation',
|
|
5521
5527
|
label: 'Insulation',
|
|
5522
5528
|
abbreviation: 'INS',
|
|
5523
|
-
purpose: '
|
|
5529
|
+
purpose: 'Thermal and electrical blocking capacity',
|
|
5524
5530
|
},
|
|
5525
5531
|
{
|
|
5526
|
-
key: '
|
|
5527
|
-
label: '
|
|
5528
|
-
abbreviation: '
|
|
5529
|
-
purpose: '
|
|
5532
|
+
key: 'saturation',
|
|
5533
|
+
label: 'Saturation',
|
|
5534
|
+
abbreviation: 'SAT',
|
|
5535
|
+
purpose: 'Concentration of useful organic compounds per unit',
|
|
5530
5536
|
},
|
|
5531
5537
|
];
|
|
5532
5538
|
const STAT_MAP = {
|
|
5533
|
-
|
|
5534
|
-
|
|
5539
|
+
ore: ORE_STATS,
|
|
5540
|
+
crystal: CRYSTAL_STATS,
|
|
5535
5541
|
gas: GAS_STATS,
|
|
5536
|
-
|
|
5537
|
-
|
|
5542
|
+
regolith: REGOLITH_STATS,
|
|
5543
|
+
biomass: BIOMASS_STATS,
|
|
5538
5544
|
};
|
|
5539
5545
|
function getStatDefinitions(category) {
|
|
5540
5546
|
return STAT_MAP[category];
|
|
@@ -5773,11 +5779,11 @@ function decodeStackStats(itemId, stats) {
|
|
|
5773
5779
|
return { stat1: decodeStat(s, 0), stat2: decodeStat(s, 1), stat3: decodeStat(s, 2) };
|
|
5774
5780
|
}
|
|
5775
5781
|
const categoryItemMass = {
|
|
5776
|
-
|
|
5777
|
-
|
|
5782
|
+
ore: 30000,
|
|
5783
|
+
crystal: 40000,
|
|
5778
5784
|
gas: 15000,
|
|
5779
|
-
|
|
5780
|
-
|
|
5785
|
+
regolith: 22000,
|
|
5786
|
+
biomass: 15000,
|
|
5781
5787
|
};
|
|
5782
5788
|
function computeInputMass(itemId, itemType) {
|
|
5783
5789
|
if (itemType === 'component') {
|
|
@@ -5915,7 +5921,7 @@ function synthesizeItem(id, source) {
|
|
|
5915
5921
|
name: source.name,
|
|
5916
5922
|
description: source.description,
|
|
5917
5923
|
mass: source.mass,
|
|
5918
|
-
category: '
|
|
5924
|
+
category: 'ore',
|
|
5919
5925
|
tier: 't1',
|
|
5920
5926
|
color: source.color,
|
|
5921
5927
|
});
|
|
@@ -7097,10 +7103,10 @@ class Ship extends Types.entity_info {
|
|
|
7097
7103
|
function computeShipHullCapabilities(stats) {
|
|
7098
7104
|
const density = stats.density ?? 500;
|
|
7099
7105
|
const strength = stats.strength ?? 500;
|
|
7100
|
-
const
|
|
7101
|
-
const
|
|
7106
|
+
const fineness = stats.fineness ?? 500;
|
|
7107
|
+
const saturation = stats.saturation ?? 500;
|
|
7102
7108
|
const hullmass = 25000 + 75 * density;
|
|
7103
|
-
const statSum = strength +
|
|
7109
|
+
const statSum = strength + fineness + saturation;
|
|
7104
7110
|
const exponent = statSum / 2997.0;
|
|
7105
7111
|
const capacity = Math.floor(1000000 * Math.pow(10, exponent));
|
|
7106
7112
|
return { hullmass, capacity };
|
|
@@ -7115,10 +7121,10 @@ function computeEngineCapabilities(stats) {
|
|
|
7115
7121
|
}
|
|
7116
7122
|
function computeGeneratorCapabilities(stats) {
|
|
7117
7123
|
const res = stats.resonance ?? 500;
|
|
7118
|
-
const
|
|
7124
|
+
const ref = stats.reflectivity ?? 500;
|
|
7119
7125
|
return {
|
|
7120
7126
|
capacity: 300 + Math.floor(res / 6),
|
|
7121
|
-
recharge: 1 + Math.floor((
|
|
7127
|
+
recharge: 1 + Math.floor((ref * 3) / 1000),
|
|
7122
7128
|
};
|
|
7123
7129
|
}
|
|
7124
7130
|
function computeGathererCapabilities(stats) {
|
|
@@ -7134,47 +7140,47 @@ function computeGathererCapabilities(stats) {
|
|
|
7134
7140
|
};
|
|
7135
7141
|
}
|
|
7136
7142
|
function computeLoaderCapabilities(stats) {
|
|
7137
|
-
const
|
|
7143
|
+
const fin = stats.fineness ?? 500;
|
|
7138
7144
|
const pla = stats.plasticity ?? 500;
|
|
7139
7145
|
return {
|
|
7140
|
-
mass: Math.max(200, 2000 - Math.floor(
|
|
7146
|
+
mass: Math.max(200, 2000 - Math.floor(fin * 2)),
|
|
7141
7147
|
thrust: 1 + Math.floor(pla / 500),
|
|
7142
7148
|
quantity: 1,
|
|
7143
7149
|
};
|
|
7144
7150
|
}
|
|
7145
7151
|
function computeManufacturingCapabilities(stats) {
|
|
7146
7152
|
const rea = stats.reactivity ?? 500;
|
|
7147
|
-
const
|
|
7153
|
+
const com = stats.composition ?? 500;
|
|
7148
7154
|
return {
|
|
7149
7155
|
speed: 100 + Math.floor((rea * 4) / 5),
|
|
7150
|
-
drain: Math.max(5, 30 - Math.floor(
|
|
7156
|
+
drain: Math.max(5, 30 - Math.floor(com / 33)),
|
|
7151
7157
|
};
|
|
7152
7158
|
}
|
|
7153
7159
|
function computeHaulerCapabilities(stats) {
|
|
7154
7160
|
const res = stats.resonance ?? 500;
|
|
7155
7161
|
const con = stats.conductivity ?? 500;
|
|
7156
|
-
const
|
|
7162
|
+
const ref = stats.reflectivity ?? 500;
|
|
7157
7163
|
return {
|
|
7158
7164
|
capacity: Math.max(1, 1 + Math.floor(res / 400)),
|
|
7159
7165
|
efficiency: 2000 + con * 6,
|
|
7160
|
-
drain: Math.max(3, 15 - Math.floor(
|
|
7166
|
+
drain: Math.max(3, 15 - Math.floor(ref / 80)),
|
|
7161
7167
|
};
|
|
7162
7168
|
}
|
|
7163
7169
|
function computeStorageCapabilities(stats, baseCapacity) {
|
|
7164
7170
|
const strength = stats.strength ?? 500;
|
|
7165
|
-
const
|
|
7166
|
-
const
|
|
7167
|
-
const statSum = strength +
|
|
7171
|
+
const fineness = stats.fineness ?? 500;
|
|
7172
|
+
const saturation = stats.saturation ?? 500;
|
|
7173
|
+
const statSum = strength + fineness + saturation;
|
|
7168
7174
|
const capacityBonus = Math.floor((baseCapacity * (10 + Math.floor((statSum * 10) / 2997))) / 100);
|
|
7169
7175
|
return { capacityBonus };
|
|
7170
7176
|
}
|
|
7171
7177
|
function computeWarehouseHullCapabilities(stats) {
|
|
7172
7178
|
const density = stats.density ?? 500;
|
|
7173
7179
|
const strength = stats.strength ?? 500;
|
|
7174
|
-
const
|
|
7175
|
-
const
|
|
7180
|
+
const fineness = stats.fineness ?? 500;
|
|
7181
|
+
const saturation = stats.saturation ?? 500;
|
|
7176
7182
|
const hullmass = 25000 + 75 * density;
|
|
7177
|
-
const statSum = strength +
|
|
7183
|
+
const statSum = strength + fineness + saturation;
|
|
7178
7184
|
const exponent = statSum / 2997.0;
|
|
7179
7185
|
const capacity = Math.floor(20000000 * Math.pow(10, exponent));
|
|
7180
7186
|
return { hullmass, capacity };
|
|
@@ -7384,10 +7390,10 @@ class Container extends Types.entity_info {
|
|
|
7384
7390
|
function computeContainerCapabilities(stats) {
|
|
7385
7391
|
const density = stats['density'] ?? 500;
|
|
7386
7392
|
const strength = stats['strength'] ?? 500;
|
|
7387
|
-
const
|
|
7388
|
-
const
|
|
7393
|
+
const fineness = stats['fineness'] ?? 500;
|
|
7394
|
+
const saturation = stats['saturation'] ?? 500;
|
|
7389
7395
|
const hullmass = 25000 + 75 * density;
|
|
7390
|
-
const statSum = strength +
|
|
7396
|
+
const statSum = strength + fineness + saturation;
|
|
7391
7397
|
const exponent = statSum / 2997;
|
|
7392
7398
|
const capacity = Math.floor(1000000 * Math.pow(10, exponent));
|
|
7393
7399
|
return { hullmass, capacity };
|
|
@@ -7395,10 +7401,10 @@ function computeContainerCapabilities(stats) {
|
|
|
7395
7401
|
function computeContainerT2Capabilities(stats) {
|
|
7396
7402
|
const strength = stats['strength'] ?? 0;
|
|
7397
7403
|
const density = stats['density'] ?? 0;
|
|
7398
|
-
const
|
|
7399
|
-
const
|
|
7404
|
+
const fineness = stats['fineness'] ?? 0;
|
|
7405
|
+
const saturation = stats['saturation'] ?? 0;
|
|
7400
7406
|
const hullmass = 20000 + 50 * density;
|
|
7401
|
-
const statSum = strength +
|
|
7407
|
+
const statSum = strength + fineness + saturation;
|
|
7402
7408
|
const exponent = statSum / 2500;
|
|
7403
7409
|
const capacity = Math.floor(1500000 * Math.pow(10, exponent));
|
|
7404
7410
|
return { hullmass, capacity };
|
|
@@ -8127,11 +8133,11 @@ function computeHaulerDrain(distance, drain, haulCount) {
|
|
|
8127
8133
|
}
|
|
8128
8134
|
|
|
8129
8135
|
const categoryColors = {
|
|
8130
|
-
|
|
8131
|
-
|
|
8132
|
-
gas: '#
|
|
8133
|
-
|
|
8134
|
-
|
|
8136
|
+
ore: '#C26D3F',
|
|
8137
|
+
crystal: '#4ADBFF',
|
|
8138
|
+
gas: '#B8E4A0',
|
|
8139
|
+
regolith: '#C4A57B',
|
|
8140
|
+
biomass: '#5A8B3E',
|
|
8135
8141
|
};
|
|
8136
8142
|
const tierColors = {
|
|
8137
8143
|
t1: '#8b8b8b',
|
|
@@ -8148,18 +8154,18 @@ const tierLabels = {
|
|
|
8148
8154
|
t5: 'Legendary',
|
|
8149
8155
|
};
|
|
8150
8156
|
const categoryIcons = {
|
|
8151
|
-
|
|
8152
|
-
|
|
8157
|
+
ore: '⬡',
|
|
8158
|
+
crystal: '◈',
|
|
8153
8159
|
gas: '◎',
|
|
8154
|
-
|
|
8155
|
-
|
|
8160
|
+
regolith: '■',
|
|
8161
|
+
biomass: '❋',
|
|
8156
8162
|
};
|
|
8157
8163
|
const categoryIconShapes = {
|
|
8158
|
-
|
|
8159
|
-
|
|
8164
|
+
ore: 'hex',
|
|
8165
|
+
crystal: 'diamond',
|
|
8160
8166
|
gas: 'circle',
|
|
8161
|
-
|
|
8162
|
-
|
|
8167
|
+
regolith: 'square',
|
|
8168
|
+
biomass: 'star',
|
|
8163
8169
|
};
|
|
8164
8170
|
const componentIcon = '▣';
|
|
8165
8171
|
const moduleIcon = '⬢';
|
|
@@ -8233,39 +8239,39 @@ function isCraftedItem(id) {
|
|
|
8233
8239
|
|
|
8234
8240
|
const categories = [
|
|
8235
8241
|
{
|
|
8236
|
-
id: '
|
|
8237
|
-
name: '
|
|
8238
|
-
label: '
|
|
8239
|
-
description: 'Structural
|
|
8240
|
-
color: categoryColors.
|
|
8242
|
+
id: 'ore',
|
|
8243
|
+
name: 'Ore',
|
|
8244
|
+
label: 'Ore',
|
|
8245
|
+
description: 'Structural metal-bearing rock — hulls, frames, load-bearing components',
|
|
8246
|
+
color: categoryColors.ore,
|
|
8241
8247
|
},
|
|
8242
8248
|
{
|
|
8243
|
-
id: '
|
|
8244
|
-
name: '
|
|
8245
|
-
label: '
|
|
8246
|
-
description: '
|
|
8247
|
-
color: categoryColors.
|
|
8249
|
+
id: 'crystal',
|
|
8250
|
+
name: 'Crystal',
|
|
8251
|
+
label: 'Crystal',
|
|
8252
|
+
description: 'Crystalline lattice — conductors, energy storage, resonant systems',
|
|
8253
|
+
color: categoryColors.crystal,
|
|
8248
8254
|
},
|
|
8249
8255
|
{
|
|
8250
8256
|
id: 'gas',
|
|
8251
|
-
name: '
|
|
8257
|
+
name: 'Gas',
|
|
8252
8258
|
label: 'Gas',
|
|
8253
|
-
description: '
|
|
8259
|
+
description: 'Atmospheric volatile — propulsion, thermal processing, chemical reactions',
|
|
8254
8260
|
color: categoryColors.gas,
|
|
8255
8261
|
},
|
|
8256
8262
|
{
|
|
8257
|
-
id: '
|
|
8258
|
-
name: '
|
|
8259
|
-
label: '
|
|
8260
|
-
description: '
|
|
8261
|
-
color: categoryColors.
|
|
8263
|
+
id: 'regolith',
|
|
8264
|
+
name: 'Regolith',
|
|
8265
|
+
label: 'Regolith',
|
|
8266
|
+
description: 'Surface mineral dust — sensors, optics, computation, cutting surfaces',
|
|
8267
|
+
color: categoryColors.regolith,
|
|
8262
8268
|
},
|
|
8263
8269
|
{
|
|
8264
|
-
id: '
|
|
8265
|
-
name: '
|
|
8266
|
-
label: '
|
|
8267
|
-
description: '
|
|
8268
|
-
color: categoryColors.
|
|
8270
|
+
id: 'biomass',
|
|
8271
|
+
name: 'Biomass',
|
|
8272
|
+
label: 'Biomass',
|
|
8273
|
+
description: 'Organic polymer — insulation, composites, bio-processes',
|
|
8274
|
+
color: categoryColors.biomass,
|
|
8269
8275
|
},
|
|
8270
8276
|
];
|
|
8271
8277
|
function getCategoryInfo(id) {
|
|
@@ -8747,14 +8753,14 @@ function resolveComponent(id, stats) {
|
|
|
8747
8753
|
if (stats !== undefined) {
|
|
8748
8754
|
const decoded = decodeCraftedItemStats(id, toBigStats(stats));
|
|
8749
8755
|
resolvedStats = Object.entries(decoded).map(([key, value]) => {
|
|
8750
|
-
const allDefs = getStatDefinitions('
|
|
8751
|
-
.concat(getStatDefinitions('
|
|
8756
|
+
const allDefs = getStatDefinitions('ore')
|
|
8757
|
+
.concat(getStatDefinitions('crystal'))
|
|
8752
8758
|
.concat(getStatDefinitions('gas'))
|
|
8753
|
-
.concat(getStatDefinitions('
|
|
8754
|
-
.concat(getStatDefinitions('
|
|
8759
|
+
.concat(getStatDefinitions('regolith'))
|
|
8760
|
+
.concat(getStatDefinitions('biomass'));
|
|
8755
8761
|
const def = allDefs.find((d) => d.key === key);
|
|
8756
8762
|
const statDef = comp.stats.find((s) => s.key === key);
|
|
8757
|
-
const cat = (statDef?.source ?? '
|
|
8763
|
+
const cat = (statDef?.source ?? 'ore');
|
|
8758
8764
|
return {
|
|
8759
8765
|
key,
|
|
8760
8766
|
label: def?.label ?? key,
|
|
@@ -8845,9 +8851,9 @@ function computeCapabilityGroup(moduleType, stats) {
|
|
|
8845
8851
|
}
|
|
8846
8852
|
case MODULE_STORAGE: {
|
|
8847
8853
|
const str = stats.strength ?? 500;
|
|
8848
|
-
const
|
|
8849
|
-
const
|
|
8850
|
-
const statSum = str +
|
|
8854
|
+
const fin = stats.fineness ?? 500;
|
|
8855
|
+
const sat = stats.saturation ?? 500;
|
|
8856
|
+
const statSum = str + fin + sat;
|
|
8851
8857
|
const pct = 10 + Math.floor((statSum * 10) / 2997);
|
|
8852
8858
|
return { capability: 'Storage', attributes: [{ label: 'Capacity Bonus', value: pct }] };
|
|
8853
8859
|
}
|
|
@@ -9136,25 +9142,25 @@ function computeBaseCapacityWarehouse(stats) {
|
|
|
9136
9142
|
const computeEngineThrust = (vol) => 400 + idiv(vol * 3, 4);
|
|
9137
9143
|
const computeEngineDrain = (thm) => Math.max(30, 50 - idiv(thm, 70));
|
|
9138
9144
|
const computeGeneratorCap = (res) => 300 + idiv(res, 6);
|
|
9139
|
-
const computeGeneratorRech = (
|
|
9145
|
+
const computeGeneratorRech = (ref) => 1 + idiv(ref * 3, 1000);
|
|
9140
9146
|
const computeGathererYield = (str) => 200 + str;
|
|
9141
9147
|
const computeGathererDrain = (con) => Math.max(250, 1250 - idiv(con * 25, 20));
|
|
9142
9148
|
const computeGathererDepth = (tol) => 200 + idiv(tol * 3, 2);
|
|
9143
9149
|
const computeGathererSpeed = (ref) => 100 + idiv(ref * 4, 5);
|
|
9144
|
-
const computeLoaderMass = (
|
|
9150
|
+
const computeLoaderMass = (fin) => Math.max(200, 2000 - fin * 2);
|
|
9145
9151
|
const computeLoaderThrust = (pla) => 1 + idiv(pla, 500);
|
|
9146
9152
|
const computeCrafterSpeed = (rea) => 100 + idiv(rea * 4, 5);
|
|
9147
|
-
const computeCrafterDrain = (
|
|
9153
|
+
const computeCrafterDrain = (com) => Math.max(5, 30 - idiv(com, 33));
|
|
9148
9154
|
function entityDisplayName(itemId) {
|
|
9149
9155
|
switch (itemId) {
|
|
9150
9156
|
case ITEM_SHIP_T1_PACKED:
|
|
9151
|
-
return 'Ship
|
|
9157
|
+
return 'Ship';
|
|
9152
9158
|
case ITEM_WAREHOUSE_T1_PACKED:
|
|
9153
|
-
return 'Warehouse
|
|
9159
|
+
return 'Warehouse';
|
|
9154
9160
|
case ITEM_CONTAINER_T1_PACKED:
|
|
9155
|
-
return 'Container
|
|
9161
|
+
return 'Container';
|
|
9156
9162
|
case ITEM_CONTAINER_T2_PACKED:
|
|
9157
|
-
return 'Container
|
|
9163
|
+
return 'Container';
|
|
9158
9164
|
default:
|
|
9159
9165
|
return 'Entity';
|
|
9160
9166
|
}
|
|
@@ -9162,17 +9168,17 @@ function entityDisplayName(itemId) {
|
|
|
9162
9168
|
function moduleDisplayName(itemId) {
|
|
9163
9169
|
switch (itemId) {
|
|
9164
9170
|
case ITEM_ENGINE_T1:
|
|
9165
|
-
return 'Engine
|
|
9171
|
+
return 'Engine';
|
|
9166
9172
|
case ITEM_GENERATOR_T1:
|
|
9167
|
-
return 'Generator
|
|
9173
|
+
return 'Generator';
|
|
9168
9174
|
case ITEM_GATHERER_T1:
|
|
9169
|
-
return 'Gatherer
|
|
9175
|
+
return 'Gatherer';
|
|
9170
9176
|
case ITEM_LOADER_T1:
|
|
9171
|
-
return 'Loader
|
|
9177
|
+
return 'Loader';
|
|
9172
9178
|
case ITEM_MANUFACTURING_T1:
|
|
9173
|
-
return 'Manufacturing
|
|
9179
|
+
return 'Manufacturing';
|
|
9174
9180
|
case ITEM_STORAGE_T1:
|
|
9175
|
-
return 'Storage
|
|
9181
|
+
return 'Storage';
|
|
9176
9182
|
default:
|
|
9177
9183
|
return 'Module';
|
|
9178
9184
|
}
|
|
@@ -9194,8 +9200,8 @@ function formatModuleLine(slot, itemId, stats) {
|
|
|
9194
9200
|
}
|
|
9195
9201
|
case MODULE_GENERATOR: {
|
|
9196
9202
|
const res = decodeStat(stats, 0);
|
|
9197
|
-
const
|
|
9198
|
-
out += ` Capacity ${computeGeneratorCap(res)} Recharge ${computeGeneratorRech(
|
|
9203
|
+
const ref = decodeStat(stats, 1);
|
|
9204
|
+
out += ` Capacity ${computeGeneratorCap(res)} Recharge ${computeGeneratorRech(ref)}`;
|
|
9199
9205
|
break;
|
|
9200
9206
|
}
|
|
9201
9207
|
case MODULE_GATHERER: {
|
|
@@ -9207,22 +9213,22 @@ function formatModuleLine(slot, itemId, stats) {
|
|
|
9207
9213
|
break;
|
|
9208
9214
|
}
|
|
9209
9215
|
case MODULE_LOADER: {
|
|
9210
|
-
const
|
|
9216
|
+
const fin = decodeStat(stats, 0);
|
|
9211
9217
|
const pla = decodeStat(stats, 1);
|
|
9212
|
-
out += ` Mass ${computeLoaderMass(
|
|
9218
|
+
out += ` Mass ${computeLoaderMass(fin)} Thrust ${computeLoaderThrust(pla)}`;
|
|
9213
9219
|
break;
|
|
9214
9220
|
}
|
|
9215
9221
|
case MODULE_CRAFTER: {
|
|
9216
9222
|
const rea = decodeStat(stats, 0);
|
|
9217
|
-
const
|
|
9218
|
-
out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(
|
|
9223
|
+
const com = decodeStat(stats, 1);
|
|
9224
|
+
out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(com)}`;
|
|
9219
9225
|
break;
|
|
9220
9226
|
}
|
|
9221
9227
|
case MODULE_STORAGE: {
|
|
9222
9228
|
const str = decodeStat(stats, 0);
|
|
9223
|
-
const
|
|
9224
|
-
const
|
|
9225
|
-
const sum = str +
|
|
9229
|
+
const fin = decodeStat(stats, 2);
|
|
9230
|
+
const sat = decodeStat(stats, 3);
|
|
9231
|
+
const sum = str + fin + sat;
|
|
9226
9232
|
const pct = 10 + idiv(sum * 10, 2997);
|
|
9227
9233
|
out += ` +${pct}% capacity`;
|
|
9228
9234
|
break;
|
|
@@ -9282,6 +9288,63 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
9282
9288
|
buildEntityDescription: buildEntityDescription
|
|
9283
9289
|
});
|
|
9284
9290
|
|
|
9291
|
+
function formatMass(kg) {
|
|
9292
|
+
const t = kg / 1000;
|
|
9293
|
+
const fixed = t.toFixed(2);
|
|
9294
|
+
const trimmed = fixed.replace(/\.?0+$/, '');
|
|
9295
|
+
return `${trimmed} t`;
|
|
9296
|
+
}
|
|
9297
|
+
function formatMassDelta(kg) {
|
|
9298
|
+
if (kg === 0)
|
|
9299
|
+
return '0 t';
|
|
9300
|
+
const sign = kg > 0 ? '+' : '-';
|
|
9301
|
+
return `${sign}${formatMass(Math.abs(kg))}`;
|
|
9302
|
+
}
|
|
9303
|
+
|
|
9304
|
+
const TIER_ADJECTIVES = {
|
|
9305
|
+
1: 'Crude',
|
|
9306
|
+
2: 'Dense',
|
|
9307
|
+
3: 'Pure',
|
|
9308
|
+
4: 'Prime',
|
|
9309
|
+
5: 'Pristine',
|
|
9310
|
+
6: 'Radiant',
|
|
9311
|
+
7: 'Exotic',
|
|
9312
|
+
8: 'Mythic',
|
|
9313
|
+
9: 'Cosmic',
|
|
9314
|
+
10: 'Ascendant',
|
|
9315
|
+
};
|
|
9316
|
+
const CATEGORY_LABELS = {
|
|
9317
|
+
ore: 'Ore',
|
|
9318
|
+
crystal: 'Crystal',
|
|
9319
|
+
gas: 'Gas',
|
|
9320
|
+
regolith: 'Regolith',
|
|
9321
|
+
biomass: 'Biomass',
|
|
9322
|
+
};
|
|
9323
|
+
function tierNumber(tier) {
|
|
9324
|
+
return Number(String(tier).replace(/^t/i, ''));
|
|
9325
|
+
}
|
|
9326
|
+
function displayName(resolved) {
|
|
9327
|
+
if (resolved.itemType === 'resource') {
|
|
9328
|
+
const tierNum = tierNumber(resolved.tier);
|
|
9329
|
+
const adj = TIER_ADJECTIVES[tierNum] ?? 'Unknown';
|
|
9330
|
+
const cat = resolved.category ? CATEGORY_LABELS[resolved.category] : 'Resource';
|
|
9331
|
+
return `${adj} ${cat}`;
|
|
9332
|
+
}
|
|
9333
|
+
return resolved.name;
|
|
9334
|
+
}
|
|
9335
|
+
function describeItem(resolved, opts) {
|
|
9336
|
+
const massFmt = opts?.formatMass ?? formatMass;
|
|
9337
|
+
const mass = massFmt(resolved.mass);
|
|
9338
|
+
const tier = `T${tierNumber(resolved.tier)}`;
|
|
9339
|
+
if (resolved.itemType === 'resource') {
|
|
9340
|
+
const cat = resolved.category ? CATEGORY_LABELS[resolved.category] : 'Resource';
|
|
9341
|
+
const header = `${tier} ${cat}`;
|
|
9342
|
+
const stats = resolved.stats?.map((s) => `${s.label} ${s.value}`).join(', ');
|
|
9343
|
+
return [header, stats, mass].filter(Boolean).join(' · ');
|
|
9344
|
+
}
|
|
9345
|
+
return `${tier} ${resolved.name} · ${mass}`;
|
|
9346
|
+
}
|
|
9347
|
+
|
|
9285
9348
|
exports.ActionsManager = ActionsManager;
|
|
9286
9349
|
exports.BASE_ORBITAL_MASS = BASE_ORBITAL_MASS;
|
|
9287
9350
|
exports.COMMIT_ALREADY_SET = COMMIT_ALREADY_SET;
|
|
@@ -9511,6 +9574,7 @@ exports.deriveLocationSize = deriveLocationSize;
|
|
|
9511
9574
|
exports.deriveLocationStatic = deriveLocationStatic;
|
|
9512
9575
|
exports.deriveResourceStats = deriveResourceStats;
|
|
9513
9576
|
exports.deriveStratum = deriveStratum;
|
|
9577
|
+
exports.describeItem = describeItem;
|
|
9514
9578
|
exports.describeModule = describeModule;
|
|
9515
9579
|
exports.describeModuleForItem = describeModuleForItem;
|
|
9516
9580
|
exports.describeModuleForSlot = describeModuleForSlot;
|
|
@@ -9519,6 +9583,7 @@ exports.deserializeComponent = deserializeComponent;
|
|
|
9519
9583
|
exports.deserializeEntity = deserializeEntity;
|
|
9520
9584
|
exports.deserializeModule = deserializeModule;
|
|
9521
9585
|
exports.deserializeResource = deserializeResource;
|
|
9586
|
+
exports.displayName = displayName;
|
|
9522
9587
|
exports.distanceBetweenCoordinates = distanceBetweenCoordinates;
|
|
9523
9588
|
exports.distanceBetweenPoints = distanceBetweenPoints;
|
|
9524
9589
|
exports.encodeGatheredCargoStats = encodeGatheredCargoStats;
|
|
@@ -9529,6 +9594,8 @@ exports.entityRecipes = entityRecipes;
|
|
|
9529
9594
|
exports.estimateDealTravelTime = estimateDealTravelTime;
|
|
9530
9595
|
exports.estimateTravelTime = estimateTravelTime;
|
|
9531
9596
|
exports.findNearbyPlanets = findNearbyPlanets;
|
|
9597
|
+
exports.formatMass = formatMass;
|
|
9598
|
+
exports.formatMassDelta = formatMassDelta;
|
|
9532
9599
|
exports.formatModuleLine = formatModuleLine;
|
|
9533
9600
|
exports.getAllCraftableItems = getAllCraftableItems;
|
|
9534
9601
|
exports.getCapabilityAttributes = getCapabilityAttributes;
|