private void Run_ForceVIPScene(On.RoR2.Run.orig_PickNextStageScene orig, Run self, WeightedSelection <SceneDef> choices) { Debug.Log("Forcing scene to 'limbo'"); self.nextStageScene = SceneCatalog.GetSceneDefFromSceneName("limbo"); // Remove ourselves On.RoR2.Run.PickNextStageScene -= Run_ForceVIPScene; }
private void PickValidScene(On.RoR2.Run.orig_PickNextStageScene orig, Run self, SceneDef[] choices) { if (Run.instance.stageClearCount > 0) { foreach (SceneDef scene in CurrentScene.destinations) { if (StagesToRemove.Contains(scene)) { foreach (SceneDef destinations in scene.destinations) { FailsafeSet.Add(destinations); } RemoveScenes(FailsafeSet, StagesToRemove); for (int i = 0; i < StageCategories.Count; i++) { if (Check(StageCategories[i], CompareList[i], out choices, CurrentScene)) { break; } } if (!choices.Any()) { if (!FailsafeSet.Any()) { Logger.LogError("ERROR: NO VALID SCENE, USING DEFAULT DESTINATIONS"); choices = CurrentScene.destinations; } else { choices = FailsafeSet.ToArray(); } } FailsafeSet.Clear(); } } } FailsafeSet.Clear(); orig(self, choices); }