@shipload/sdk 1.0.0-next.56 → 1.0.0-next.59
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 +57 -36
- package/lib/shipload.js +385 -245
- package/lib/shipload.js.map +1 -1
- package/lib/shipload.m.js +371 -236
- package/lib/shipload.m.js.map +1 -1
- package/lib/testing.js +25 -25
- package/lib/testing.js.map +1 -1
- package/lib/testing.m.js +25 -25
- package/lib/testing.m.js.map +1 -1
- package/package.json +1 -1
- package/src/capabilities/craftable.test.ts +82 -0
- package/src/capabilities/craftable.ts +36 -5
- package/src/capabilities/modules.ts +10 -0
- package/src/data/entities.json +32 -42
- package/src/data/item-ids.ts +10 -10
- package/src/data/items.json +12 -12
- package/src/data/kind-registry.json +10 -10
- package/src/data/metadata.ts +17 -17
- package/src/data/recipes.json +111 -111
- package/src/derivation/capabilities.test.ts +15 -17
- package/src/derivation/crafting.test.ts +17 -0
- package/src/derivation/crafting.ts +18 -0
- package/src/derivation/recipe-usage.test.ts +8 -10
- package/src/index-module.ts +5 -0
- package/src/nft/description.ts +23 -23
- package/src/resolution/resolve-item.ts +12 -0
- package/src/scheduling/availability.test.ts +157 -0
- package/src/scheduling/availability.ts +94 -13
- package/src/scheduling/cancel.test.ts +161 -1
- package/src/scheduling/cancel.ts +58 -5
- package/src/types.ts +1 -0
package/lib/shipload.js
CHANGED
|
@@ -3860,14 +3860,13 @@ const ITEM_MASS_CATCHER_T1_PACKED = 10206;
|
|
|
3860
3860
|
const ITEM_HUB_T1_PACKED = 10207;
|
|
3861
3861
|
const ITEM_WORKSHOP_T1_PACKED = 10208;
|
|
3862
3862
|
const ITEM_CONSTRUCTION_DOCK_T1_PACKED = 10209;
|
|
3863
|
-
const
|
|
3864
|
-
const
|
|
3865
|
-
const
|
|
3866
|
-
const
|
|
3867
|
-
const
|
|
3868
|
-
const
|
|
3869
|
-
const
|
|
3870
|
-
const ITEM_DREDGER_T1_PACKED = 10217;
|
|
3863
|
+
const ITEM_ROUSTABOUT_T1A_PACKED = 10210;
|
|
3864
|
+
const ITEM_PROSPECTOR_T1A_PACKED = 10211;
|
|
3865
|
+
const ITEM_TENDER_T1A_PACKED = 10212;
|
|
3866
|
+
const ITEM_WRIGHT_T1A_PACKED = 10213;
|
|
3867
|
+
const ITEM_TUG_T1A_PACKED = 10214;
|
|
3868
|
+
const ITEM_PORTER_T1A_PACKED = 10215;
|
|
3869
|
+
const ITEM_SMITH_T1A_PACKED = 10218;
|
|
3871
3870
|
const ITEM_PLATE_T2 = 20001;
|
|
3872
3871
|
const ITEM_FRAME_T2 = 20002;
|
|
3873
3872
|
const ITEM_PLASMA_CELL_T2 = 20003;
|
|
@@ -3881,8 +3880,9 @@ const ITEM_RESIN_T2 = 20010;
|
|
|
3881
3880
|
const ITEM_GATHERER_T2 = 20102;
|
|
3882
3881
|
const ITEM_HAULER_T2 = 20106;
|
|
3883
3882
|
const ITEM_CONTAINER_T2_PACKED = 20200;
|
|
3884
|
-
const
|
|
3885
|
-
const
|
|
3883
|
+
const ITEM_PROSPECTOR_T2A_PACKED = 20212;
|
|
3884
|
+
const ITEM_PROSPECTOR_T2B_PACKED = 20213;
|
|
3885
|
+
const ITEM_DREDGER_T2A_PACKED = 20214;
|
|
3886
3886
|
|
|
3887
3887
|
var recipes = [
|
|
3888
3888
|
{
|
|
@@ -5512,126 +5512,31 @@ var recipes = [
|
|
|
5512
5512
|
sourceSubclass: 10210
|
|
5513
5513
|
},
|
|
5514
5514
|
{
|
|
5515
|
-
outputItemId:
|
|
5516
|
-
outputMass:
|
|
5517
|
-
inputs: [
|
|
5518
|
-
{
|
|
5519
|
-
itemId: 10005,
|
|
5520
|
-
quantity: 150
|
|
5521
|
-
},
|
|
5522
|
-
{
|
|
5523
|
-
itemId: 10002,
|
|
5524
|
-
quantity: 150
|
|
5525
|
-
},
|
|
5526
|
-
{
|
|
5527
|
-
itemId: 10010,
|
|
5528
|
-
quantity: 150
|
|
5529
|
-
},
|
|
5530
|
-
{
|
|
5531
|
-
itemId: 10009,
|
|
5532
|
-
quantity: 150
|
|
5533
|
-
},
|
|
5534
|
-
{
|
|
5535
|
-
itemId: 10004,
|
|
5536
|
-
quantity: 150
|
|
5537
|
-
},
|
|
5538
|
-
{
|
|
5539
|
-
itemId: 10211,
|
|
5540
|
-
quantity: 1
|
|
5541
|
-
}
|
|
5542
|
-
],
|
|
5543
|
-
statSlots: [
|
|
5544
|
-
{
|
|
5545
|
-
sources: [
|
|
5546
|
-
{
|
|
5547
|
-
inputIndex: 0,
|
|
5548
|
-
statIndex: 0
|
|
5549
|
-
},
|
|
5550
|
-
{
|
|
5551
|
-
inputIndex: 5,
|
|
5552
|
-
statIndex: 0
|
|
5553
|
-
}
|
|
5554
|
-
]
|
|
5555
|
-
},
|
|
5556
|
-
{
|
|
5557
|
-
sources: [
|
|
5558
|
-
{
|
|
5559
|
-
inputIndex: 1,
|
|
5560
|
-
statIndex: 0
|
|
5561
|
-
},
|
|
5562
|
-
{
|
|
5563
|
-
inputIndex: 5,
|
|
5564
|
-
statIndex: 1
|
|
5565
|
-
}
|
|
5566
|
-
]
|
|
5567
|
-
},
|
|
5568
|
-
{
|
|
5569
|
-
sources: [
|
|
5570
|
-
{
|
|
5571
|
-
inputIndex: 2,
|
|
5572
|
-
statIndex: 0
|
|
5573
|
-
},
|
|
5574
|
-
{
|
|
5575
|
-
inputIndex: 5,
|
|
5576
|
-
statIndex: 2
|
|
5577
|
-
}
|
|
5578
|
-
]
|
|
5579
|
-
},
|
|
5580
|
-
{
|
|
5581
|
-
sources: [
|
|
5582
|
-
{
|
|
5583
|
-
inputIndex: 3,
|
|
5584
|
-
statIndex: 0
|
|
5585
|
-
},
|
|
5586
|
-
{
|
|
5587
|
-
inputIndex: 5,
|
|
5588
|
-
statIndex: 3
|
|
5589
|
-
}
|
|
5590
|
-
]
|
|
5591
|
-
},
|
|
5592
|
-
{
|
|
5593
|
-
sources: [
|
|
5594
|
-
{
|
|
5595
|
-
inputIndex: 4,
|
|
5596
|
-
statIndex: 0
|
|
5597
|
-
},
|
|
5598
|
-
{
|
|
5599
|
-
inputIndex: 5,
|
|
5600
|
-
statIndex: 4
|
|
5601
|
-
}
|
|
5602
|
-
]
|
|
5603
|
-
}
|
|
5604
|
-
],
|
|
5605
|
-
blendWeights: [
|
|
5606
|
-
],
|
|
5607
|
-
sourceSubclass: 10211
|
|
5608
|
-
},
|
|
5609
|
-
{
|
|
5610
|
-
outputItemId: 10217,
|
|
5611
|
-
outputMass: 3600000,
|
|
5515
|
+
outputItemId: 10218,
|
|
5516
|
+
outputMass: 2400000,
|
|
5612
5517
|
inputs: [
|
|
5613
5518
|
{
|
|
5614
5519
|
itemId: 10005,
|
|
5615
|
-
quantity:
|
|
5520
|
+
quantity: 100
|
|
5616
5521
|
},
|
|
5617
5522
|
{
|
|
5618
5523
|
itemId: 10002,
|
|
5619
|
-
quantity:
|
|
5524
|
+
quantity: 100
|
|
5620
5525
|
},
|
|
5621
5526
|
{
|
|
5622
5527
|
itemId: 10010,
|
|
5623
|
-
quantity:
|
|
5528
|
+
quantity: 100
|
|
5624
5529
|
},
|
|
5625
5530
|
{
|
|
5626
5531
|
itemId: 10009,
|
|
5627
|
-
quantity:
|
|
5532
|
+
quantity: 100
|
|
5628
5533
|
},
|
|
5629
5534
|
{
|
|
5630
5535
|
itemId: 10004,
|
|
5631
|
-
quantity:
|
|
5536
|
+
quantity: 100
|
|
5632
5537
|
},
|
|
5633
5538
|
{
|
|
5634
|
-
itemId:
|
|
5539
|
+
itemId: 10210,
|
|
5635
5540
|
quantity: 1
|
|
5636
5541
|
}
|
|
5637
5542
|
],
|
|
@@ -5699,7 +5604,7 @@ var recipes = [
|
|
|
5699
5604
|
],
|
|
5700
5605
|
blendWeights: [
|
|
5701
5606
|
],
|
|
5702
|
-
sourceSubclass:
|
|
5607
|
+
sourceSubclass: 10210
|
|
5703
5608
|
},
|
|
5704
5609
|
{
|
|
5705
5610
|
outputItemId: 20001,
|
|
@@ -6297,8 +6202,103 @@ var recipes = [
|
|
|
6297
6202
|
sourceSubclass: 10200
|
|
6298
6203
|
},
|
|
6299
6204
|
{
|
|
6300
|
-
outputItemId:
|
|
6301
|
-
outputMass:
|
|
6205
|
+
outputItemId: 20212,
|
|
6206
|
+
outputMass: 4320000,
|
|
6207
|
+
inputs: [
|
|
6208
|
+
{
|
|
6209
|
+
itemId: 20001,
|
|
6210
|
+
quantity: 200
|
|
6211
|
+
},
|
|
6212
|
+
{
|
|
6213
|
+
itemId: 20008,
|
|
6214
|
+
quantity: 200
|
|
6215
|
+
},
|
|
6216
|
+
{
|
|
6217
|
+
itemId: 20007,
|
|
6218
|
+
quantity: 200
|
|
6219
|
+
},
|
|
6220
|
+
{
|
|
6221
|
+
itemId: 20003,
|
|
6222
|
+
quantity: 200
|
|
6223
|
+
},
|
|
6224
|
+
{
|
|
6225
|
+
itemId: 20006,
|
|
6226
|
+
quantity: 200
|
|
6227
|
+
},
|
|
6228
|
+
{
|
|
6229
|
+
itemId: 10211,
|
|
6230
|
+
quantity: 1
|
|
6231
|
+
}
|
|
6232
|
+
],
|
|
6233
|
+
statSlots: [
|
|
6234
|
+
{
|
|
6235
|
+
sources: [
|
|
6236
|
+
{
|
|
6237
|
+
inputIndex: 0,
|
|
6238
|
+
statIndex: 0
|
|
6239
|
+
},
|
|
6240
|
+
{
|
|
6241
|
+
inputIndex: 5,
|
|
6242
|
+
statIndex: 0
|
|
6243
|
+
}
|
|
6244
|
+
]
|
|
6245
|
+
},
|
|
6246
|
+
{
|
|
6247
|
+
sources: [
|
|
6248
|
+
{
|
|
6249
|
+
inputIndex: 1,
|
|
6250
|
+
statIndex: 0
|
|
6251
|
+
},
|
|
6252
|
+
{
|
|
6253
|
+
inputIndex: 5,
|
|
6254
|
+
statIndex: 1
|
|
6255
|
+
}
|
|
6256
|
+
]
|
|
6257
|
+
},
|
|
6258
|
+
{
|
|
6259
|
+
sources: [
|
|
6260
|
+
{
|
|
6261
|
+
inputIndex: 2,
|
|
6262
|
+
statIndex: 0
|
|
6263
|
+
},
|
|
6264
|
+
{
|
|
6265
|
+
inputIndex: 5,
|
|
6266
|
+
statIndex: 2
|
|
6267
|
+
}
|
|
6268
|
+
]
|
|
6269
|
+
},
|
|
6270
|
+
{
|
|
6271
|
+
sources: [
|
|
6272
|
+
{
|
|
6273
|
+
inputIndex: 3,
|
|
6274
|
+
statIndex: 0
|
|
6275
|
+
},
|
|
6276
|
+
{
|
|
6277
|
+
inputIndex: 5,
|
|
6278
|
+
statIndex: 3
|
|
6279
|
+
}
|
|
6280
|
+
]
|
|
6281
|
+
},
|
|
6282
|
+
{
|
|
6283
|
+
sources: [
|
|
6284
|
+
{
|
|
6285
|
+
inputIndex: 4,
|
|
6286
|
+
statIndex: 0
|
|
6287
|
+
},
|
|
6288
|
+
{
|
|
6289
|
+
inputIndex: 5,
|
|
6290
|
+
statIndex: 4
|
|
6291
|
+
}
|
|
6292
|
+
]
|
|
6293
|
+
}
|
|
6294
|
+
],
|
|
6295
|
+
blendWeights: [
|
|
6296
|
+
],
|
|
6297
|
+
sourceSubclass: 10211
|
|
6298
|
+
},
|
|
6299
|
+
{
|
|
6300
|
+
outputItemId: 20213,
|
|
6301
|
+
outputMass: 5760000,
|
|
6302
6302
|
inputs: [
|
|
6303
6303
|
{
|
|
6304
6304
|
itemId: 20005,
|
|
@@ -6321,7 +6321,7 @@ var recipes = [
|
|
|
6321
6321
|
quantity: 150
|
|
6322
6322
|
},
|
|
6323
6323
|
{
|
|
6324
|
-
itemId:
|
|
6324
|
+
itemId: 20212,
|
|
6325
6325
|
quantity: 1
|
|
6326
6326
|
}
|
|
6327
6327
|
],
|
|
@@ -6389,11 +6389,11 @@ var recipes = [
|
|
|
6389
6389
|
],
|
|
6390
6390
|
blendWeights: [
|
|
6391
6391
|
],
|
|
6392
|
-
sourceSubclass:
|
|
6392
|
+
sourceSubclass: 20212
|
|
6393
6393
|
},
|
|
6394
6394
|
{
|
|
6395
|
-
outputItemId:
|
|
6396
|
-
outputMass:
|
|
6395
|
+
outputItemId: 20214,
|
|
6396
|
+
outputMass: 5760000,
|
|
6397
6397
|
inputs: [
|
|
6398
6398
|
{
|
|
6399
6399
|
itemId: 20005,
|
|
@@ -6416,7 +6416,7 @@ var recipes = [
|
|
|
6416
6416
|
quantity: 150
|
|
6417
6417
|
},
|
|
6418
6418
|
{
|
|
6419
|
-
itemId:
|
|
6419
|
+
itemId: 20212,
|
|
6420
6420
|
quantity: 1
|
|
6421
6421
|
}
|
|
6422
6422
|
],
|
|
@@ -6484,7 +6484,7 @@ var recipes = [
|
|
|
6484
6484
|
],
|
|
6485
6485
|
blendWeights: [
|
|
6486
6486
|
],
|
|
6487
|
-
sourceSubclass:
|
|
6487
|
+
sourceSubclass: 20212
|
|
6488
6488
|
}
|
|
6489
6489
|
];
|
|
6490
6490
|
|
|
@@ -6719,7 +6719,7 @@ var entities = [
|
|
|
6719
6719
|
maxTier: 1
|
|
6720
6720
|
}
|
|
6721
6721
|
],
|
|
6722
|
-
baseHullmass:
|
|
6722
|
+
baseHullmass: 4000000
|
|
6723
6723
|
},
|
|
6724
6724
|
{
|
|
6725
6725
|
entityItemId: 10212,
|
|
@@ -6740,7 +6740,7 @@ var entities = [
|
|
|
6740
6740
|
maxTier: 1
|
|
6741
6741
|
}
|
|
6742
6742
|
],
|
|
6743
|
-
baseHullmass:
|
|
6743
|
+
baseHullmass: 4000000
|
|
6744
6744
|
},
|
|
6745
6745
|
{
|
|
6746
6746
|
entityItemId: 10213,
|
|
@@ -6761,7 +6761,7 @@ var entities = [
|
|
|
6761
6761
|
maxTier: 1
|
|
6762
6762
|
}
|
|
6763
6763
|
],
|
|
6764
|
-
baseHullmass:
|
|
6764
|
+
baseHullmass: 4000000
|
|
6765
6765
|
},
|
|
6766
6766
|
{
|
|
6767
6767
|
entityItemId: 10214,
|
|
@@ -6782,7 +6782,7 @@ var entities = [
|
|
|
6782
6782
|
maxTier: 1
|
|
6783
6783
|
}
|
|
6784
6784
|
],
|
|
6785
|
-
baseHullmass:
|
|
6785
|
+
baseHullmass: 4000000
|
|
6786
6786
|
},
|
|
6787
6787
|
{
|
|
6788
6788
|
entityItemId: 10215,
|
|
@@ -6803,28 +6803,23 @@ var entities = [
|
|
|
6803
6803
|
maxTier: 1
|
|
6804
6804
|
}
|
|
6805
6805
|
],
|
|
6806
|
-
baseHullmass:
|
|
6806
|
+
baseHullmass: 4000000
|
|
6807
6807
|
},
|
|
6808
6808
|
{
|
|
6809
|
-
entityItemId:
|
|
6809
|
+
entityItemId: 10218,
|
|
6810
6810
|
slots: [
|
|
6811
6811
|
{
|
|
6812
6812
|
type: "generator",
|
|
6813
|
-
outputPct:
|
|
6813
|
+
outputPct: 85,
|
|
6814
6814
|
maxTier: 1
|
|
6815
6815
|
},
|
|
6816
6816
|
{
|
|
6817
6817
|
type: "engine",
|
|
6818
|
-
outputPct:
|
|
6819
|
-
maxTier: 1
|
|
6820
|
-
},
|
|
6821
|
-
{
|
|
6822
|
-
type: "gatherer",
|
|
6823
|
-
outputPct: 100,
|
|
6818
|
+
outputPct: 85,
|
|
6824
6819
|
maxTier: 1
|
|
6825
6820
|
},
|
|
6826
6821
|
{
|
|
6827
|
-
type: "
|
|
6822
|
+
type: "crafter",
|
|
6828
6823
|
outputPct: 100,
|
|
6829
6824
|
maxTier: 1
|
|
6830
6825
|
}
|
|
@@ -6832,53 +6827,48 @@ var entities = [
|
|
|
6832
6827
|
baseHullmass: 4000000
|
|
6833
6828
|
},
|
|
6834
6829
|
{
|
|
6835
|
-
entityItemId:
|
|
6830
|
+
entityItemId: 20200,
|
|
6831
|
+
slots: [
|
|
6832
|
+
],
|
|
6833
|
+
baseHullmass: 100000
|
|
6834
|
+
},
|
|
6835
|
+
{
|
|
6836
|
+
entityItemId: 20212,
|
|
6836
6837
|
slots: [
|
|
6837
6838
|
{
|
|
6838
6839
|
type: "generator",
|
|
6839
6840
|
outputPct: 90,
|
|
6840
|
-
maxTier:
|
|
6841
|
+
maxTier: 2
|
|
6841
6842
|
},
|
|
6842
6843
|
{
|
|
6843
6844
|
type: "engine",
|
|
6844
6845
|
outputPct: 90,
|
|
6845
|
-
maxTier:
|
|
6846
|
+
maxTier: 2
|
|
6846
6847
|
},
|
|
6847
6848
|
{
|
|
6848
6849
|
type: "gatherer",
|
|
6849
6850
|
outputPct: 100,
|
|
6850
|
-
maxTier:
|
|
6851
|
-
},
|
|
6852
|
-
{
|
|
6853
|
-
type: "storage",
|
|
6854
|
-
outputPct: 100,
|
|
6855
|
-
maxTier: 1
|
|
6851
|
+
maxTier: 2
|
|
6856
6852
|
}
|
|
6857
6853
|
],
|
|
6858
|
-
baseHullmass:
|
|
6859
|
-
},
|
|
6860
|
-
{
|
|
6861
|
-
entityItemId: 20200,
|
|
6862
|
-
slots: [
|
|
6863
|
-
],
|
|
6864
|
-
baseHullmass: 100000
|
|
6854
|
+
baseHullmass: 5920000
|
|
6865
6855
|
},
|
|
6866
6856
|
{
|
|
6867
|
-
entityItemId:
|
|
6857
|
+
entityItemId: 20213,
|
|
6868
6858
|
slots: [
|
|
6869
6859
|
{
|
|
6870
6860
|
type: "generator",
|
|
6871
|
-
outputPct:
|
|
6861
|
+
outputPct: 95,
|
|
6872
6862
|
maxTier: 2
|
|
6873
6863
|
},
|
|
6874
6864
|
{
|
|
6875
|
-
type: "
|
|
6876
|
-
outputPct:
|
|
6865
|
+
type: "engine",
|
|
6866
|
+
outputPct: 95,
|
|
6877
6867
|
maxTier: 2
|
|
6878
6868
|
},
|
|
6879
6869
|
{
|
|
6880
|
-
type: "
|
|
6881
|
-
outputPct:
|
|
6870
|
+
type: "aux",
|
|
6871
|
+
outputPct: 95,
|
|
6882
6872
|
maxTier: 2
|
|
6883
6873
|
},
|
|
6884
6874
|
{
|
|
@@ -6887,33 +6877,33 @@ var entities = [
|
|
|
6887
6877
|
maxTier: 2
|
|
6888
6878
|
}
|
|
6889
6879
|
],
|
|
6890
|
-
baseHullmass:
|
|
6880
|
+
baseHullmass: 7360000
|
|
6891
6881
|
},
|
|
6892
6882
|
{
|
|
6893
|
-
entityItemId:
|
|
6883
|
+
entityItemId: 20214,
|
|
6894
6884
|
slots: [
|
|
6895
6885
|
{
|
|
6896
6886
|
type: "generator",
|
|
6897
|
-
outputPct:
|
|
6887
|
+
outputPct: 95,
|
|
6898
6888
|
maxTier: 2
|
|
6899
6889
|
},
|
|
6900
6890
|
{
|
|
6901
6891
|
type: "engine",
|
|
6902
|
-
outputPct:
|
|
6892
|
+
outputPct: 95,
|
|
6903
6893
|
maxTier: 2
|
|
6904
6894
|
},
|
|
6905
6895
|
{
|
|
6906
|
-
type: "
|
|
6896
|
+
type: "gatherer",
|
|
6907
6897
|
outputPct: 100,
|
|
6908
6898
|
maxTier: 2
|
|
6909
6899
|
},
|
|
6910
6900
|
{
|
|
6911
|
-
type: "
|
|
6901
|
+
type: "storage",
|
|
6912
6902
|
outputPct: 100,
|
|
6913
6903
|
maxTier: 2
|
|
6914
6904
|
}
|
|
6915
6905
|
],
|
|
6916
|
-
baseHullmass:
|
|
6906
|
+
baseHullmass: 7360000
|
|
6917
6907
|
}
|
|
6918
6908
|
];
|
|
6919
6909
|
|
|
@@ -7542,14 +7532,8 @@ var items = [
|
|
|
7542
7532
|
tier: 1
|
|
7543
7533
|
},
|
|
7544
7534
|
{
|
|
7545
|
-
id:
|
|
7546
|
-
mass:
|
|
7547
|
-
type: "entity",
|
|
7548
|
-
tier: 1
|
|
7549
|
-
},
|
|
7550
|
-
{
|
|
7551
|
-
id: 10217,
|
|
7552
|
-
mass: 3600000,
|
|
7535
|
+
id: 10218,
|
|
7536
|
+
mass: 2400000,
|
|
7553
7537
|
type: "entity",
|
|
7554
7538
|
tier: 1
|
|
7555
7539
|
},
|
|
@@ -7634,14 +7618,20 @@ var items = [
|
|
|
7634
7618
|
tier: 2
|
|
7635
7619
|
},
|
|
7636
7620
|
{
|
|
7637
|
-
id:
|
|
7638
|
-
mass:
|
|
7621
|
+
id: 20212,
|
|
7622
|
+
mass: 4320000,
|
|
7639
7623
|
type: "entity",
|
|
7640
7624
|
tier: 2
|
|
7641
7625
|
},
|
|
7642
7626
|
{
|
|
7643
|
-
id:
|
|
7644
|
-
mass:
|
|
7627
|
+
id: 20213,
|
|
7628
|
+
mass: 5760000,
|
|
7629
|
+
type: "entity",
|
|
7630
|
+
tier: 2
|
|
7631
|
+
},
|
|
7632
|
+
{
|
|
7633
|
+
id: 20214,
|
|
7634
|
+
mass: 5760000,
|
|
7645
7635
|
type: "entity",
|
|
7646
7636
|
tier: 2
|
|
7647
7637
|
}
|
|
@@ -7919,14 +7909,9 @@ const itemMetadata = {
|
|
|
7919
7909
|
description: 'A cargo ship built around a large storage hold. The extra mass makes it slower than a Roustabout.',
|
|
7920
7910
|
color: '#4AE898',
|
|
7921
7911
|
},
|
|
7922
|
-
|
|
7923
|
-
name: '
|
|
7924
|
-
description: 'A
|
|
7925
|
-
color: '#4AE898',
|
|
7926
|
-
},
|
|
7927
|
-
10217: {
|
|
7928
|
-
name: 'Dredger',
|
|
7929
|
-
description: 'A gathering ship with its own storage hold, so it can keep mining before it has to offload.',
|
|
7912
|
+
10218: {
|
|
7913
|
+
name: 'Smith',
|
|
7914
|
+
description: 'A crafting ship. One engine, one power core, and a fabricator for crafting away from home.',
|
|
7930
7915
|
color: '#4AE898',
|
|
7931
7916
|
},
|
|
7932
7917
|
20001: {
|
|
@@ -7994,14 +7979,19 @@ const itemMetadata = {
|
|
|
7994
7979
|
description: 'Advanced cargo container with improved capacity formulas.',
|
|
7995
7980
|
color: '#9BADB8',
|
|
7996
7981
|
},
|
|
7997
|
-
|
|
7982
|
+
20212: {
|
|
7998
7983
|
name: 'Prospector',
|
|
7999
|
-
description: '
|
|
7984
|
+
description: 'The tier 2 Prospector. The same three systems, ready for tier 2 modules.',
|
|
8000
7985
|
color: '#4AE898',
|
|
8001
7986
|
},
|
|
8002
|
-
|
|
8003
|
-
name: '
|
|
8004
|
-
description: '
|
|
7987
|
+
20213: {
|
|
7988
|
+
name: 'Prospector',
|
|
7989
|
+
description: 'A tier 2 Prospector with an auxiliary system for extra power, mobility, or endurance.',
|
|
7990
|
+
color: '#4AE898',
|
|
7991
|
+
},
|
|
7992
|
+
20214: {
|
|
7993
|
+
name: 'Dredger',
|
|
7994
|
+
description: 'A gathering ship that stores what it digs. Its limpet bay works alongside a cargo hold.',
|
|
8005
7995
|
color: '#4AE898',
|
|
8006
7996
|
},
|
|
8007
7997
|
};
|
|
@@ -8013,8 +8003,7 @@ const entityMetadata = {
|
|
|
8013
8003
|
10213: { moduleSlotLabels: ['Power Core', 'Engine', 'Assembly Arm'] },
|
|
8014
8004
|
10214: { moduleSlotLabels: ['Power Core', 'Engine', 'Tractor Beam'] },
|
|
8015
8005
|
10215: { moduleSlotLabels: ['Power Core', 'Engine', 'Cargo Hold'] },
|
|
8016
|
-
|
|
8017
|
-
10217: { moduleSlotLabels: ['Power Core', 'Engine', 'Limpet Bay', 'Cargo Hold'] },
|
|
8006
|
+
10218: { moduleSlotLabels: ['Power Core', 'Engine', 'Fabricator'] },
|
|
8018
8007
|
10202: {
|
|
8019
8008
|
moduleSlotLabels: ['Shuttle Bay', 'Cargo Hold', 'Cargo Hold', 'Cargo Hold', 'Cargo Hold'],
|
|
8020
8009
|
},
|
|
@@ -8026,8 +8015,9 @@ const entityMetadata = {
|
|
|
8026
8015
|
moduleSlotLabels: ['Fabricator', 'Fabricator', 'Fabricator', 'Fabricator', 'Fabricator'],
|
|
8027
8016
|
},
|
|
8028
8017
|
10209: { moduleSlotLabels: ['Power Core', 'Assembly Arm'] },
|
|
8029
|
-
|
|
8030
|
-
|
|
8018
|
+
20212: { moduleSlotLabels: ['Power Core', 'Engine', 'Limpet Bay'] },
|
|
8019
|
+
20213: { moduleSlotLabels: ['Power Core', 'Engine', 'Auxiliary System', 'Limpet Bay'] },
|
|
8020
|
+
20214: { moduleSlotLabels: ['Power Core', 'Engine', 'Limpet Bay', 'Cargo Hold'] },
|
|
8031
8021
|
};
|
|
8032
8022
|
for (const item of items) {
|
|
8033
8023
|
if (!itemMetadata[item.id]) {
|
|
@@ -10971,14 +10961,9 @@ var templates = [
|
|
|
10971
10961
|
displayLabel: "Porter"
|
|
10972
10962
|
},
|
|
10973
10963
|
{
|
|
10974
|
-
itemId:
|
|
10975
|
-
kind: "ship",
|
|
10976
|
-
displayLabel: "Wrangler"
|
|
10977
|
-
},
|
|
10978
|
-
{
|
|
10979
|
-
itemId: 10217,
|
|
10964
|
+
itemId: 10218,
|
|
10980
10965
|
kind: "ship",
|
|
10981
|
-
displayLabel: "
|
|
10966
|
+
displayLabel: "Smith"
|
|
10982
10967
|
},
|
|
10983
10968
|
{
|
|
10984
10969
|
itemId: 10202,
|
|
@@ -11031,14 +11016,19 @@ var templates = [
|
|
|
11031
11016
|
displayLabel: ""
|
|
11032
11017
|
},
|
|
11033
11018
|
{
|
|
11034
|
-
itemId:
|
|
11019
|
+
itemId: 20212,
|
|
11035
11020
|
kind: "ship",
|
|
11036
11021
|
displayLabel: "Prospector"
|
|
11037
11022
|
},
|
|
11038
11023
|
{
|
|
11039
|
-
itemId:
|
|
11024
|
+
itemId: 20213,
|
|
11040
11025
|
kind: "ship",
|
|
11041
|
-
displayLabel: "
|
|
11026
|
+
displayLabel: "Prospector"
|
|
11027
|
+
},
|
|
11028
|
+
{
|
|
11029
|
+
itemId: 20214,
|
|
11030
|
+
kind: "ship",
|
|
11031
|
+
displayLabel: "Dredger"
|
|
11042
11032
|
}
|
|
11043
11033
|
];
|
|
11044
11034
|
var kindRegistryJson = {
|
|
@@ -12632,6 +12622,24 @@ function keyForRecipeInputStat(recipe, inputIndex, statIndex) {
|
|
|
12632
12622
|
const innerKeys = getItemStatKeys(input.itemId);
|
|
12633
12623
|
return innerKeys[statIndex] ?? '';
|
|
12634
12624
|
}
|
|
12625
|
+
function usedInputStatKeys(outputItemId) {
|
|
12626
|
+
const recipe = getRecipe(outputItemId);
|
|
12627
|
+
if (!recipe)
|
|
12628
|
+
return [];
|
|
12629
|
+
const usedIdx = recipe.inputs.map(() => new Set());
|
|
12630
|
+
for (const slot of recipe.statSlots) {
|
|
12631
|
+
for (const src of slot.sources) {
|
|
12632
|
+
usedIdx[src.inputIndex]?.add(src.statIndex);
|
|
12633
|
+
}
|
|
12634
|
+
}
|
|
12635
|
+
return recipe.inputs.map((input, i) => {
|
|
12636
|
+
const keys = getItemStatKeys(input.itemId);
|
|
12637
|
+
return [...usedIdx[i]]
|
|
12638
|
+
.sort((a, b) => a - b)
|
|
12639
|
+
.map((idx) => keys[idx] ?? '')
|
|
12640
|
+
.filter(Boolean);
|
|
12641
|
+
});
|
|
12642
|
+
}
|
|
12635
12643
|
function decodeCraftedItemStats(itemId, stats) {
|
|
12636
12644
|
const keys = getItemStatKeys(itemId);
|
|
12637
12645
|
const result = {};
|
|
@@ -13425,7 +13433,13 @@ const MODULE_STORAGE = 8;
|
|
|
13425
13433
|
const MODULE_HAULER = 9;
|
|
13426
13434
|
const MODULE_BATTERY = 10;
|
|
13427
13435
|
const MODULE_BUILDER = 12;
|
|
13436
|
+
const MODULE_AUX = 13;
|
|
13428
13437
|
function moduleAccepts(slotType, moduleType) {
|
|
13438
|
+
if (slotType === MODULE_AUX) {
|
|
13439
|
+
return (moduleType === MODULE_GENERATOR ||
|
|
13440
|
+
moduleType === MODULE_ENGINE ||
|
|
13441
|
+
moduleType === MODULE_BATTERY);
|
|
13442
|
+
}
|
|
13429
13443
|
return slotType === MODULE_ANY || slotType === moduleType;
|
|
13430
13444
|
}
|
|
13431
13445
|
function getModuleCapabilityType(itemId) {
|
|
@@ -13487,6 +13501,8 @@ function moduleSlotTypeToCode(slotType) {
|
|
|
13487
13501
|
return MODULE_HAULER;
|
|
13488
13502
|
case 'battery':
|
|
13489
13503
|
return MODULE_BATTERY;
|
|
13504
|
+
case 'aux':
|
|
13505
|
+
return MODULE_AUX;
|
|
13490
13506
|
default:
|
|
13491
13507
|
return MODULE_ANY;
|
|
13492
13508
|
}
|
|
@@ -16477,22 +16493,20 @@ function entityDisplayName(itemId) {
|
|
|
16477
16493
|
switch (itemId) {
|
|
16478
16494
|
case ITEM_SHIP_T1_PACKED:
|
|
16479
16495
|
return 'Ship';
|
|
16480
|
-
case
|
|
16496
|
+
case ITEM_ROUSTABOUT_T1A_PACKED:
|
|
16481
16497
|
return 'Roustabout';
|
|
16482
|
-
case
|
|
16498
|
+
case ITEM_PROSPECTOR_T1A_PACKED:
|
|
16483
16499
|
return 'Prospector';
|
|
16484
|
-
case
|
|
16500
|
+
case ITEM_TENDER_T1A_PACKED:
|
|
16485
16501
|
return 'Tender';
|
|
16486
|
-
case
|
|
16502
|
+
case ITEM_TUG_T1A_PACKED:
|
|
16487
16503
|
return 'Tug';
|
|
16488
|
-
case
|
|
16504
|
+
case ITEM_PORTER_T1A_PACKED:
|
|
16489
16505
|
return 'Porter';
|
|
16490
|
-
case
|
|
16491
|
-
return 'Wrangler';
|
|
16492
|
-
case ITEM_WRIGHT_T1_PACKED:
|
|
16506
|
+
case ITEM_WRIGHT_T1A_PACKED:
|
|
16493
16507
|
return 'Wright';
|
|
16494
|
-
case
|
|
16495
|
-
return '
|
|
16508
|
+
case ITEM_SMITH_T1A_PACKED:
|
|
16509
|
+
return 'Smith';
|
|
16496
16510
|
case ITEM_WAREHOUSE_T1_PACKED:
|
|
16497
16511
|
return 'Warehouse';
|
|
16498
16512
|
case ITEM_EXTRACTOR_T1_PACKED:
|
|
@@ -16505,10 +16519,12 @@ function entityDisplayName(itemId) {
|
|
|
16505
16519
|
return 'Container';
|
|
16506
16520
|
case ITEM_CONTAINER_T2_PACKED:
|
|
16507
16521
|
return 'Container';
|
|
16508
|
-
case
|
|
16522
|
+
case ITEM_PROSPECTOR_T2A_PACKED:
|
|
16509
16523
|
return 'Prospector';
|
|
16510
|
-
case
|
|
16511
|
-
return '
|
|
16524
|
+
case ITEM_PROSPECTOR_T2B_PACKED:
|
|
16525
|
+
return 'Prospector';
|
|
16526
|
+
case ITEM_DREDGER_T2A_PACKED:
|
|
16527
|
+
return 'Dredger';
|
|
16512
16528
|
default:
|
|
16513
16529
|
return 'Entity';
|
|
16514
16530
|
}
|
|
@@ -18878,6 +18894,18 @@ function composeIdleResolve(blocker, action, actions, now, lookupCounterpart) {
|
|
|
18878
18894
|
return [...ids.map((id) => actions.resolve(id)), action];
|
|
18879
18895
|
}
|
|
18880
18896
|
|
|
18897
|
+
const INCOMING_COUPLING_KINDS = new Set([exports.HoldKind.PUSH, exports.HoldKind.GATHER, exports.HoldKind.FLIGHT]);
|
|
18898
|
+
function isIncomingCouplingKind(kind) {
|
|
18899
|
+
return INCOMING_COUPLING_KINDS.has(kind);
|
|
18900
|
+
}
|
|
18901
|
+
function calcCounterpartDelivery(task, coupling) {
|
|
18902
|
+
if (!isIncomingCouplingKind(coupling.kind.toNumber()))
|
|
18903
|
+
return [];
|
|
18904
|
+
if (task.type.toNumber() === exports.TaskType.CRAFT) {
|
|
18905
|
+
return task.cargo.length === 0 ? [] : [task.cargo[task.cargo.length - 1]];
|
|
18906
|
+
}
|
|
18907
|
+
return task.cargo;
|
|
18908
|
+
}
|
|
18881
18909
|
function taskCargoEffect(task) {
|
|
18882
18910
|
switch (task.type.toNumber()) {
|
|
18883
18911
|
case exports.TaskType.LOAD:
|
|
@@ -18885,6 +18913,7 @@ function taskCargoEffect(task) {
|
|
|
18885
18913
|
case exports.TaskType.UNDEPLOY:
|
|
18886
18914
|
return { added: task.cargo, removed: [] };
|
|
18887
18915
|
case exports.TaskType.UNLOAD:
|
|
18916
|
+
case exports.TaskType.UPGRADE:
|
|
18888
18917
|
return { added: [], removed: task.cargo };
|
|
18889
18918
|
case exports.TaskType.GATHER:
|
|
18890
18919
|
return task.couplings.length > 0
|
|
@@ -18901,19 +18930,23 @@ function taskCargoEffect(task) {
|
|
|
18901
18930
|
return { added: [], removed: [] };
|
|
18902
18931
|
}
|
|
18903
18932
|
}
|
|
18904
|
-
function
|
|
18905
|
-
const base = `${
|
|
18906
|
-
const
|
|
18907
|
-
const entityId = item.entity_id?.toString();
|
|
18908
|
-
const normalizedEntityId = entityId && entityId !== '0' ? entityId : '';
|
|
18933
|
+
function refKey(itemId, stats, modules, entityId) {
|
|
18934
|
+
const base = `${itemId}:${stats.toString()}`;
|
|
18935
|
+
const normalizedEntityId = entityId !== '0' ? entityId : '';
|
|
18909
18936
|
if (modules.length === 0 && normalizedEntityId === '')
|
|
18910
18937
|
return base;
|
|
18911
18938
|
return `${base}:modules=${JSON.stringify(modules)}:entity=${normalizedEntityId}`;
|
|
18912
18939
|
}
|
|
18940
|
+
function cargoKey(item) {
|
|
18941
|
+
return refKey(item.item_id.toNumber(), BigInt(item.stats.toString()), item.modules ?? [], item.entity_id?.toString() ?? '');
|
|
18942
|
+
}
|
|
18943
|
+
function cargoInputKey(input) {
|
|
18944
|
+
return refKey(input.itemId, input.stats, input.modules ?? [], '');
|
|
18945
|
+
}
|
|
18913
18946
|
function cargoQuantity(item) {
|
|
18914
18947
|
return BigInt(item.quantity.toString());
|
|
18915
18948
|
}
|
|
18916
|
-
function projectedCargoAvailableAt(entity, at) {
|
|
18949
|
+
function projectedCargoAvailableAt(entity, at, incoming = []) {
|
|
18917
18950
|
const avail = new Map();
|
|
18918
18951
|
for (const item of entity.cargo) {
|
|
18919
18952
|
const key = cargoKey(item);
|
|
@@ -18928,6 +18961,14 @@ function projectedCargoAvailableAt(entity, at) {
|
|
|
18928
18961
|
avail.set(key, (avail.get(key) ?? 0n) + cargoQuantity(item));
|
|
18929
18962
|
}
|
|
18930
18963
|
}
|
|
18964
|
+
for (const src of incoming) {
|
|
18965
|
+
if (src.until.getTime() >= at.getTime())
|
|
18966
|
+
continue;
|
|
18967
|
+
for (const item of src.items) {
|
|
18968
|
+
const key = cargoKey(item);
|
|
18969
|
+
avail.set(key, (avail.get(key) ?? 0n) + cargoQuantity(item));
|
|
18970
|
+
}
|
|
18971
|
+
}
|
|
18931
18972
|
for (const ordered of tasks) {
|
|
18932
18973
|
for (const item of taskCargoEffect(ordered.task).removed) {
|
|
18933
18974
|
const key = cargoKey(item);
|
|
@@ -18938,17 +18979,40 @@ function projectedCargoAvailableAt(entity, at) {
|
|
|
18938
18979
|
}
|
|
18939
18980
|
return avail;
|
|
18940
18981
|
}
|
|
18941
|
-
function cargoReadyAt(entity,
|
|
18942
|
-
|
|
18982
|
+
function cargoReadyAt(entity, inputs, incoming = []) {
|
|
18983
|
+
const demand = new Map();
|
|
18984
|
+
for (const input of inputs) {
|
|
18985
|
+
const key = cargoInputKey(input);
|
|
18986
|
+
demand.set(key, (demand.get(key) ?? 0n) + BigInt(input.quantity));
|
|
18987
|
+
}
|
|
18988
|
+
const candidates = [0];
|
|
18943
18989
|
for (const ordered of orderedTasks(entity)) {
|
|
18944
18990
|
for (const item of taskCargoEffect(ordered.task).added) {
|
|
18945
|
-
if (
|
|
18946
|
-
|
|
18991
|
+
if (demand.has(cargoKey(item))) {
|
|
18992
|
+
candidates.push(ordered.completesAt.getTime());
|
|
18947
18993
|
break;
|
|
18948
18994
|
}
|
|
18949
18995
|
}
|
|
18950
18996
|
}
|
|
18951
|
-
|
|
18997
|
+
for (const src of incoming) {
|
|
18998
|
+
if (src.items.some((item) => demand.has(cargoKey(item)))) {
|
|
18999
|
+
candidates.push(src.until.getTime());
|
|
19000
|
+
}
|
|
19001
|
+
}
|
|
19002
|
+
candidates.sort((a, b) => a - b);
|
|
19003
|
+
for (const candidateMs of candidates) {
|
|
19004
|
+
const available = projectedCargoAvailableAt(entity, new Date(candidateMs + 1), incoming);
|
|
19005
|
+
let sufficient = true;
|
|
19006
|
+
for (const [key, quantity] of demand) {
|
|
19007
|
+
if ((available.get(key) ?? 0n) < quantity) {
|
|
19008
|
+
sufficient = false;
|
|
19009
|
+
break;
|
|
19010
|
+
}
|
|
19011
|
+
}
|
|
19012
|
+
if (sufficient)
|
|
19013
|
+
return new Date(candidateMs);
|
|
19014
|
+
}
|
|
19015
|
+
return new Date(candidates[candidates.length - 1]);
|
|
18952
19016
|
}
|
|
18953
19017
|
function availableForItem(avail, itemId) {
|
|
18954
19018
|
const prefix = `${itemId}:`;
|
|
@@ -18967,6 +19031,7 @@ exports.CancelBlockReason = void 0;
|
|
|
18967
19031
|
CancelBlockReason["DONE"] = "DONE";
|
|
18968
19032
|
CancelBlockReason["CONTAINS_LINKED_TASK"] = "CONTAINS_LINKED_TASK";
|
|
18969
19033
|
CancelBlockReason["WOULD_STRAND"] = "WOULD_STRAND";
|
|
19034
|
+
CancelBlockReason["WOULD_STRAND_COUNTERPART"] = "WOULD_STRAND_COUNTERPART";
|
|
18970
19035
|
CancelBlockReason["WOULD_OVERFILL"] = "WOULD_OVERFILL";
|
|
18971
19036
|
CancelBlockReason["NOT_OWNER"] = "NOT_OWNER";
|
|
18972
19037
|
})(exports.CancelBlockReason || (exports.CancelBlockReason = {}));
|
|
@@ -18977,14 +19042,16 @@ function postCancelEntity(entity, laneKey, fromTaskIndex) {
|
|
|
18977
19042
|
lane.schedule.tasks = lane.schedule.tasks.slice(0, fromTaskIndex);
|
|
18978
19043
|
return clone;
|
|
18979
19044
|
}
|
|
18980
|
-
function
|
|
18981
|
-
const ordered = orderedTasks(
|
|
19045
|
+
function queueFeasible(entity, incoming = []) {
|
|
19046
|
+
const ordered = orderedTasks(entity);
|
|
18982
19047
|
const base = new Map();
|
|
18983
|
-
for (const c of
|
|
19048
|
+
for (const c of entity.cargo ?? []) {
|
|
18984
19049
|
const k = cargoKey(c);
|
|
18985
19050
|
base.set(k, (base.get(k) ?? 0) + c.quantity.toNumber());
|
|
18986
19051
|
}
|
|
18987
|
-
const isConsumer = (t) => t.type.toNumber() === exports.TaskType.CRAFT ||
|
|
19052
|
+
const isConsumer = (t) => t.type.toNumber() === exports.TaskType.CRAFT ||
|
|
19053
|
+
t.type.toNumber() === exports.TaskType.UNLOAD ||
|
|
19054
|
+
t.type.toNumber() === exports.TaskType.UPGRADE;
|
|
18988
19055
|
for (const self of ordered) {
|
|
18989
19056
|
if (!isConsumer(self.task))
|
|
18990
19057
|
continue;
|
|
@@ -18996,6 +19063,13 @@ function feasibleAfterCancel(post) {
|
|
|
18996
19063
|
map.set(cargoKey(out), (map.get(cargoKey(out)) ?? 0) + out.quantity.toNumber());
|
|
18997
19064
|
}
|
|
18998
19065
|
}
|
|
19066
|
+
for (const src of incoming) {
|
|
19067
|
+
if (src.until.getTime() >= self.completesAt.getTime())
|
|
19068
|
+
continue;
|
|
19069
|
+
for (const item of src.items) {
|
|
19070
|
+
map.set(cargoKey(item), (map.get(cargoKey(item)) ?? 0) + item.quantity.toNumber());
|
|
19071
|
+
}
|
|
19072
|
+
}
|
|
18999
19073
|
for (const other of ordered) {
|
|
19000
19074
|
if (other === self)
|
|
19001
19075
|
continue;
|
|
@@ -19009,6 +19083,11 @@ function feasibleAfterCancel(post) {
|
|
|
19009
19083
|
return false;
|
|
19010
19084
|
}
|
|
19011
19085
|
}
|
|
19086
|
+
return true;
|
|
19087
|
+
}
|
|
19088
|
+
function feasibleAfterCancel(post) {
|
|
19089
|
+
if (!queueFeasible(post))
|
|
19090
|
+
return false;
|
|
19012
19091
|
try {
|
|
19013
19092
|
validateSchedule(post);
|
|
19014
19093
|
}
|
|
@@ -19066,6 +19145,35 @@ function cancelEligibility(entity, laneKey, fromTaskIndex, input) {
|
|
|
19066
19145
|
const post = postCancelEntity(entity, laneKey, fromTaskIndex);
|
|
19067
19146
|
if (!feasibleAfterCancel(post))
|
|
19068
19147
|
return block(exports.CancelBlockReason.WOULD_STRAND);
|
|
19148
|
+
const releasedByCounterpart = new Map();
|
|
19149
|
+
for (const i of taskIndices) {
|
|
19150
|
+
for (const c of tasks[i].couplings ?? []) {
|
|
19151
|
+
if (!isIncomingCouplingKind(c.kind.toNumber()))
|
|
19152
|
+
continue;
|
|
19153
|
+
const id = c.counterpart.entity_id.toString();
|
|
19154
|
+
const entry = releasedByCounterpart.get(id) ?? {
|
|
19155
|
+
counterpart: c.counterpart,
|
|
19156
|
+
holdIds: new Set(),
|
|
19157
|
+
};
|
|
19158
|
+
entry.holdIds.add(c.hold.toString());
|
|
19159
|
+
releasedByCounterpart.set(id, entry);
|
|
19160
|
+
}
|
|
19161
|
+
}
|
|
19162
|
+
for (const [counterpartId, released] of releasedByCounterpart) {
|
|
19163
|
+
const counterpart = input.counterparts?.get(counterpartId);
|
|
19164
|
+
if (!counterpart)
|
|
19165
|
+
continue;
|
|
19166
|
+
const incoming = (input.counterpartIncoming?.get(counterpartId) ?? []).filter((src) => !released.holdIds.has(src.holdId));
|
|
19167
|
+
if (!queueFeasible(counterpart, incoming)) {
|
|
19168
|
+
return {
|
|
19169
|
+
ok: false,
|
|
19170
|
+
blockedReason: exports.CancelBlockReason.WOULD_STRAND_COUNTERPART,
|
|
19171
|
+
blockedByCounterpart: released.counterpart,
|
|
19172
|
+
range,
|
|
19173
|
+
effects: { ...EMPTY_EFFECTS },
|
|
19174
|
+
};
|
|
19175
|
+
}
|
|
19176
|
+
}
|
|
19069
19177
|
const effects = { refunds: [], releasedHolds: [], abandonsRunning: false };
|
|
19070
19178
|
let energyForfeited = 0;
|
|
19071
19179
|
for (const i of taskIndices) {
|
|
@@ -19215,7 +19323,24 @@ function receiveFits(dest, item, now) {
|
|
|
19215
19323
|
return peak <= capacity;
|
|
19216
19324
|
}
|
|
19217
19325
|
|
|
19218
|
-
function
|
|
19326
|
+
function itemReadyAt(entity, itemIds, incoming) {
|
|
19327
|
+
let readyMs = 0;
|
|
19328
|
+
for (const ordered of orderedTasks(entity)) {
|
|
19329
|
+
for (const item of taskCargoEffect(ordered.task).added) {
|
|
19330
|
+
if (itemIds.includes(item.item_id.toNumber())) {
|
|
19331
|
+
readyMs = Math.max(readyMs, ordered.completesAt.getTime());
|
|
19332
|
+
break;
|
|
19333
|
+
}
|
|
19334
|
+
}
|
|
19335
|
+
}
|
|
19336
|
+
for (const src of incoming) {
|
|
19337
|
+
if (src.items.some((item) => itemIds.includes(item.item_id.toNumber()))) {
|
|
19338
|
+
readyMs = Math.max(readyMs, src.until.getTime());
|
|
19339
|
+
}
|
|
19340
|
+
}
|
|
19341
|
+
return new Date(readyMs);
|
|
19342
|
+
}
|
|
19343
|
+
function maxCraftable(entity, recipe, crafterSpeed, now, incoming = []) {
|
|
19219
19344
|
if (recipe.inputs.length === 0)
|
|
19220
19345
|
return 0;
|
|
19221
19346
|
const perUnitMass = recipe.inputs.reduce((sum, input) => sum + getItem(input.itemId).mass * input.quantity, 0);
|
|
@@ -19223,9 +19348,9 @@ function maxCraftable(entity, recipe, crafterSpeed, now) {
|
|
|
19223
19348
|
const crafterLane = workerLaneKey(entity.modules, 'crafter', entity.lanes ?? []);
|
|
19224
19349
|
const naiveCompletesAt = candidateLaneCompletesAt(entity, crafterLane, perUnitDuration, now);
|
|
19225
19350
|
const laneStartMs = naiveCompletesAt.getTime() - perUnitDuration * 1000;
|
|
19226
|
-
const readyMs =
|
|
19351
|
+
const readyMs = itemReadyAt(entity, recipe.inputs.map((input) => input.itemId), incoming).getTime();
|
|
19227
19352
|
const completesAt = new Date(Math.max(laneStartMs, readyMs) + perUnitDuration * 1000);
|
|
19228
|
-
const availability = projectedCargoAvailableAt(entity, completesAt);
|
|
19353
|
+
const availability = projectedCargoAvailableAt(entity, completesAt, incoming);
|
|
19229
19354
|
let maxUnits;
|
|
19230
19355
|
for (const input of recipe.inputs) {
|
|
19231
19356
|
if (input.quantity <= 0)
|
|
@@ -20090,6 +20215,16 @@ function computeCapabilityGroup(moduleType, stats, tier, outputPct = 100) {
|
|
|
20090
20215
|
],
|
|
20091
20216
|
};
|
|
20092
20217
|
}
|
|
20218
|
+
case MODULE_BUILDER: {
|
|
20219
|
+
const caps = computeBuilderCapabilities(stats);
|
|
20220
|
+
return {
|
|
20221
|
+
capability: 'Build',
|
|
20222
|
+
attributes: [
|
|
20223
|
+
{ label: 'Speed', value: caps.speed },
|
|
20224
|
+
{ label: 'Drain', value: toWholeEnergy$1(caps.drain) },
|
|
20225
|
+
],
|
|
20226
|
+
};
|
|
20227
|
+
}
|
|
20093
20228
|
case MODULE_HAULER: {
|
|
20094
20229
|
const caps = computeHaulerCapabilities(stats, tier);
|
|
20095
20230
|
return {
|
|
@@ -21068,7 +21203,7 @@ exports.ITEM_CRYSTAL_T7 = ITEM_CRYSTAL_T7;
|
|
|
21068
21203
|
exports.ITEM_CRYSTAL_T8 = ITEM_CRYSTAL_T8;
|
|
21069
21204
|
exports.ITEM_CRYSTAL_T9 = ITEM_CRYSTAL_T9;
|
|
21070
21205
|
exports.ITEM_DOES_NOT_EXIST = ITEM_DOES_NOT_EXIST;
|
|
21071
|
-
exports.
|
|
21206
|
+
exports.ITEM_DREDGER_T2A_PACKED = ITEM_DREDGER_T2A_PACKED;
|
|
21072
21207
|
exports.ITEM_ENGINE_T1 = ITEM_ENGINE_T1;
|
|
21073
21208
|
exports.ITEM_EXTRACTOR_T1_PACKED = ITEM_EXTRACTOR_T1_PACKED;
|
|
21074
21209
|
exports.ITEM_FACTORY_T1_PACKED = ITEM_FACTORY_T1_PACKED;
|
|
@@ -21087,7 +21222,6 @@ exports.ITEM_GAS_T9 = ITEM_GAS_T9;
|
|
|
21087
21222
|
exports.ITEM_GATHERER_T1 = ITEM_GATHERER_T1;
|
|
21088
21223
|
exports.ITEM_GATHERER_T2 = ITEM_GATHERER_T2;
|
|
21089
21224
|
exports.ITEM_GENERATOR_T1 = ITEM_GENERATOR_T1;
|
|
21090
|
-
exports.ITEM_HAULER_SHIP_T2_PACKED = ITEM_HAULER_SHIP_T2_PACKED;
|
|
21091
21225
|
exports.ITEM_HAULER_T1 = ITEM_HAULER_T1;
|
|
21092
21226
|
exports.ITEM_HAULER_T2 = ITEM_HAULER_T2;
|
|
21093
21227
|
exports.ITEM_HUB_T1_PACKED = ITEM_HUB_T1_PACKED;
|
|
@@ -21114,9 +21248,10 @@ exports.ITEM_PLATE = ITEM_PLATE;
|
|
|
21114
21248
|
exports.ITEM_PLATE_T2 = ITEM_PLATE_T2;
|
|
21115
21249
|
exports.ITEM_POLYMER = ITEM_POLYMER;
|
|
21116
21250
|
exports.ITEM_POLYMER_T2 = ITEM_POLYMER_T2;
|
|
21117
|
-
exports.
|
|
21118
|
-
exports.
|
|
21119
|
-
exports.
|
|
21251
|
+
exports.ITEM_PORTER_T1A_PACKED = ITEM_PORTER_T1A_PACKED;
|
|
21252
|
+
exports.ITEM_PROSPECTOR_T1A_PACKED = ITEM_PROSPECTOR_T1A_PACKED;
|
|
21253
|
+
exports.ITEM_PROSPECTOR_T2A_PACKED = ITEM_PROSPECTOR_T2A_PACKED;
|
|
21254
|
+
exports.ITEM_PROSPECTOR_T2B_PACKED = ITEM_PROSPECTOR_T2B_PACKED;
|
|
21120
21255
|
exports.ITEM_REACTOR = ITEM_REACTOR;
|
|
21121
21256
|
exports.ITEM_REACTOR_T2 = ITEM_REACTOR_T2;
|
|
21122
21257
|
exports.ITEM_REGOLITH_T1 = ITEM_REGOLITH_T1;
|
|
@@ -21133,13 +21268,14 @@ exports.ITEM_RESIN = ITEM_RESIN;
|
|
|
21133
21268
|
exports.ITEM_RESIN_T2 = ITEM_RESIN_T2;
|
|
21134
21269
|
exports.ITEM_RESONATOR = ITEM_RESONATOR;
|
|
21135
21270
|
exports.ITEM_RESONATOR_T2 = ITEM_RESONATOR_T2;
|
|
21136
|
-
exports.
|
|
21271
|
+
exports.ITEM_ROUSTABOUT_T1A_PACKED = ITEM_ROUSTABOUT_T1A_PACKED;
|
|
21137
21272
|
exports.ITEM_SENSOR = ITEM_SENSOR;
|
|
21138
21273
|
exports.ITEM_SENSOR_T2 = ITEM_SENSOR_T2;
|
|
21139
21274
|
exports.ITEM_SHIP_T1_PACKED = ITEM_SHIP_T1_PACKED;
|
|
21275
|
+
exports.ITEM_SMITH_T1A_PACKED = ITEM_SMITH_T1A_PACKED;
|
|
21140
21276
|
exports.ITEM_STORAGE_T1 = ITEM_STORAGE_T1;
|
|
21141
|
-
exports.
|
|
21142
|
-
exports.
|
|
21277
|
+
exports.ITEM_TENDER_T1A_PACKED = ITEM_TENDER_T1A_PACKED;
|
|
21278
|
+
exports.ITEM_TUG_T1A_PACKED = ITEM_TUG_T1A_PACKED;
|
|
21143
21279
|
exports.ITEM_TYPE_COMPONENT = ITEM_TYPE_COMPONENT;
|
|
21144
21280
|
exports.ITEM_TYPE_ENTITY = ITEM_TYPE_ENTITY;
|
|
21145
21281
|
exports.ITEM_TYPE_MODULE = ITEM_TYPE_MODULE;
|
|
@@ -21147,8 +21283,7 @@ exports.ITEM_TYPE_RESOURCE = ITEM_TYPE_RESOURCE;
|
|
|
21147
21283
|
exports.ITEM_WAREHOUSE_T1_PACKED = ITEM_WAREHOUSE_T1_PACKED;
|
|
21148
21284
|
exports.ITEM_WARP_T1 = ITEM_WARP_T1;
|
|
21149
21285
|
exports.ITEM_WORKSHOP_T1_PACKED = ITEM_WORKSHOP_T1_PACKED;
|
|
21150
|
-
exports.
|
|
21151
|
-
exports.ITEM_WRIGHT_T1_PACKED = ITEM_WRIGHT_T1_PACKED;
|
|
21286
|
+
exports.ITEM_WRIGHT_T1A_PACKED = ITEM_WRIGHT_T1A_PACKED;
|
|
21152
21287
|
exports.InventoryAccessor = InventoryAccessor;
|
|
21153
21288
|
exports.JOB_QUEUE_CAP = JOB_QUEUE_CAP;
|
|
21154
21289
|
exports.LANE_BARRIER = LANE_BARRIER;
|
|
@@ -21166,6 +21301,7 @@ exports.MIN_ORBITAL_ALTITUDE = MIN_ORBITAL_ALTITUDE;
|
|
|
21166
21301
|
exports.MIN_TRANSFER_DISTANCE_ORBITAL_VESSEL = MIN_TRANSFER_DISTANCE_ORBITAL_VESSEL;
|
|
21167
21302
|
exports.MIN_TRANSFER_DISTANCE_PLANETARY_STRUCTURE = MIN_TRANSFER_DISTANCE_PLANETARY_STRUCTURE;
|
|
21168
21303
|
exports.MODULE_ANY = MODULE_ANY;
|
|
21304
|
+
exports.MODULE_AUX = MODULE_AUX;
|
|
21169
21305
|
exports.MODULE_BATTERY = MODULE_BATTERY;
|
|
21170
21306
|
exports.MODULE_BUILDER = MODULE_BUILDER;
|
|
21171
21307
|
exports.MODULE_CARGO_NOT_FOUND = MODULE_CARGO_NOT_FOUND;
|
|
@@ -21276,6 +21412,7 @@ exports.buildModuleImmutable = buildModuleImmutable;
|
|
|
21276
21412
|
exports.buildResourceImmutable = buildResourceImmutable;
|
|
21277
21413
|
exports.calcCargoItemMass = calcCargoItemMass;
|
|
21278
21414
|
exports.calcCargoMass = calcCargoMass;
|
|
21415
|
+
exports.calcCounterpartDelivery = calcCounterpartDelivery;
|
|
21279
21416
|
exports.calcEnergyUsage = calcEnergyUsage;
|
|
21280
21417
|
exports.calcStacksMass = calcStacksMass;
|
|
21281
21418
|
exports.calc_acceleration = calc_acceleration;
|
|
@@ -21319,8 +21456,10 @@ exports.capsHasLoaders = capsHasLoaders;
|
|
|
21319
21456
|
exports.capsHasMass = capsHasMass;
|
|
21320
21457
|
exports.capsHasMovement = capsHasMovement;
|
|
21321
21458
|
exports.capsHasStorage = capsHasStorage;
|
|
21459
|
+
exports.cargoInputKey = cargoInputKey;
|
|
21322
21460
|
exports.cargoItem = cargoItem;
|
|
21323
21461
|
exports.cargoItemToStack = cargoItemToStack;
|
|
21462
|
+
exports.cargoKey = cargoKey;
|
|
21324
21463
|
exports.cargoReadyAt = cargoReadyAt;
|
|
21325
21464
|
exports.cargoRef = cargoRef;
|
|
21326
21465
|
exports.cargoUtils = cargoUtils;
|
|
@@ -21601,6 +21740,7 @@ exports.toLocation = toLocation;
|
|
|
21601
21740
|
exports.typeLabel = typeLabel;
|
|
21602
21741
|
exports.unwrapLoadDuration = unwrapLoadDuration;
|
|
21603
21742
|
exports.unwrapTransitDuration = unwrapTransitDuration;
|
|
21743
|
+
exports.usedInputStatKeys = usedInputStatKeys;
|
|
21604
21744
|
exports.validateDisplayName = validateDisplayName;
|
|
21605
21745
|
exports.validateSchedule = validateSchedule;
|
|
21606
21746
|
exports.workerLaneKey = workerLaneKey;
|