public void CheckOrUpdateGameOver() { if (Find.TickManager.TicksGame < 300) { return; } if (ShipCountdown.CountingDown) { gameEnding = false; return; } List <Map> maps = Find.Maps; for (int i = 0; i < maps.Count; i++) { if (maps[i].mapPawns.FreeColonistsSpawnedOrInPlayerEjectablePodsCount >= 1) { gameEnding = false; return; } } for (int j = 0; j < maps.Count; j++) { List <Pawn> allPawnsSpawned = maps[j].mapPawns.AllPawnsSpawned; for (int k = 0; k < allPawnsSpawned.Count; k++) { if (allPawnsSpawned[k].carryTracker != null) { Pawn pawn = allPawnsSpawned[k].carryTracker.CarriedThing as Pawn; if (pawn != null && pawn.IsFreeColonist) { gameEnding = false; return; } } } } List <Caravan> caravans = Find.WorldObjects.Caravans; for (int l = 0; l < caravans.Count; l++) { if (IsPlayerControlledWithFreeColonist(caravans[l])) { gameEnding = false; return; } } List <TravelingTransportPods> travelingTransportPods = Find.WorldObjects.TravelingTransportPods; for (int m = 0; m < travelingTransportPods.Count; m++) { if (travelingTransportPods[m].PodsHaveAnyFreeColonist) { gameEnding = false; return; } } if (QuestUtility.TotalBorrowedColonistCount() <= 0 && !gameEnding) { gameEnding = true; ticksToGameOver = 400; } }