Пример #1
0
 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;
 }
Пример #2
0
        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);
        }