private static void PlaceIsolatedTransitions() { if (randomizationError) { return; } List <string> isolatedTransitions = tm.unplacedTransitions.Where(transition => LogicManager.GetTransitionDef(transition).isolated).ToList(); List <string> nonisolatedTransitions = tm.unplacedTransitions.Where(transition => !LogicManager.GetTransitionDef(transition).isolated).ToList(); DirectedTransitions directed = new DirectedTransitions(rand); isolatedTransitions.Remove(startTransition); nonisolatedTransitions.Remove(startTransition); directed.Add(nonisolatedTransitions); bool connectAreas = RandomizerMod.Instance.Settings.ConnectAreas; while (isolatedTransitions.Any()) { string transition1 = isolatedTransitions[rand.Next(isolatedTransitions.Count)]; string transition2 = directed.GetNextTransition(transition1, favorSameArea: connectAreas); if (transition2 is null) { Log("Ran out of nonisolated transitions during preplacement!"); randomizationError = true; return; } tm.PlaceStandbyPair(transition1, transition2); isolatedTransitions.Remove(transition1); directed.Remove(transition2); } }