diff --git a/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs b/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs index f0d898e3f6..f5c2e85cdb 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs @@ -424,21 +424,22 @@ public sealed partial class CargoSystem var pads = GetCargoPallets(component); DebugTools.Assert(orders.Sum(o => o.Amount) <= pads.Count); - for (var i = 0; i < orders.Count; i++) + for (var i = 0; i < pads.Count; i++) { - var order = orders[i]; + if (orders.Count == 0) + break; + var order = orders[0]; var coordinates = new EntityCoordinates(component.Owner, xformQuery.GetComponent(_random.PickAndTake(pads).Owner).LocalPosition); - var item = Spawn(_protoMan.Index(order.ProductId).Product, coordinates); SpawnAndAttachOrderManifest(item, order, coordinates, component); order.Amount--; if (order.Amount == 0) { - orders.RemoveSwap(i); + // Yes this is functioning as a stack, I was too lazy to re-jig the shuttle state event. + orders.RemoveSwap(0); orderDatabase.Orders.Remove(order.OrderNumber); - i--; } else {