public static async Task<bool> StartAllOrder(Building building)
        {
            var lua = @"C_Garrison.RequestShipmentCreation(GarrisonCapacitiveDisplayFrame.available);";

            Lua.DoString(lua);
            await CommonCoroutines.SleepForLagDuration();

            if (await Buddy.Coroutines.Coroutine.Wait(5000, () =>
            {
                building.Refresh();
                return building.ShipmentCapacity != building.ShipmentsTotal;
            }))
            {
                return true;
            }

            GarrisonButler.Warning("Failed to start all work order at {0}.", building.Name);

            return false;
        }
        public static async Task<bool> ClickStartOrderButton(Building building, bool all = false)
        {
            var currentStarted = building.ShipmentsTotal;
            var lua = @"C_Garrison.RequestShipmentCreation();";
            for (int tryCount = 1; tryCount <= Building.StartWorkOrderMaxTries; tryCount++)
            {
                Lua.DoString(lua);
                await CommonCoroutines.SleepForRandomReactionTime();
                if (await Buddy.Coroutines.Coroutine.Wait(2000, () =>
                {
                    building.Refresh();
                    return currentStarted != building.ShipmentsTotal;
                }))
                {
                    GarrisonButler.Log("Successfully started a work order at {0}.", building.Name);
                    return true;
                }

                GarrisonButler.Warning("Failed to start a work order at {0}, try #{1}/{2}.", building.Name, tryCount,
                    Building.StartWorkOrderMaxTries);
            }
            return false;
        }