public virtual void OrderShip(ShipOrder order, bool append = false) { if (append) { // Can't append orders after a Patrol/Build! if (CurrentOrder != null && (CurrentOrder is PatrolOrder || CurrentOrder is BuildOrder || (Orders.Count > 0 && (Orders.Last() is PatrolOrder || Orders.Last() is BuildOrder)))) { return; } // Don't add an order that is already complete (dock replaced) if (!order.OrderComplete) { Orders.Add(order); } } else { if (CurrentOrder != null) { CurrentOrder.Cancel(this); } if (!order.OrderComplete) { Orders.Clear(); CurrentOrder = order; } } }