public static DungeonFlow CreateBranchingThesisFlow(Dungeon dungeon)
        {
            DungeonFlow dungeonFlow = SampleFlow.CreateNewFlow(dungeon);

            dungeonFlow.name = "thesis_flow_branching";

            DungeonFlowNode parent = null;

            if (Module.Debug)
            {
                parent = MakeNode(LoadRoom("lobby.room"), dungeonFlow);
            }
            else
            {
                parent = MakeNode(LoadRoom("lobby_.room"), dungeonFlow);
            }

            dungeonFlow.FirstNode = parent;
            dungeonFlow.AddNodeToFlow(parent, null);

            AppendBossRoom(dungeonFlow, parent);

            if (Module.Debug)
            {
                ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "a1_legendarychests.room");
            }

            AppendBossRoom(dungeonFlow, parent);

            AppendBossRoom(dungeonFlow, parent);

            dungeon = null;
            return(dungeonFlow);
        }
        public static DungeonFlow CreateSequentialThesisFlow(Dungeon dungeon)
        {
            DungeonFlow dungeonFlow = CreateEntranceFlow(dungeon);

            dungeonFlow.name = "thesis_flow_sequential";

            DungeonFlowNode parent = dungeonFlow.FirstNode;

            ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "a1_legendarychests.room");

            parent = ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "b1_bossroom_gullA_test.room");

            parent = ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "c1_bufferroom.room");

            parent = ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "b1_bossroom_gullA_test.room");

            parent = ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "c1_bufferroom.room");

            parent = ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "b1_bossroom_gullA_test.room");

            parent = ThesisFloorGenerator.AppendExitElevator(dungeonFlow, parent);

            dungeon = null;
            return(dungeonFlow);
        }
        public static void OnPreDungeonGen(LoopDungeonGenerator generator, Dungeon dungeon, DungeonFlow flow, int dungeonSeed)
        {
            bool notFoyer = flow.name != "Foyer Flow" && !GameManager.IsReturningToFoyerWithPlayer;

            if (notFoyer && flow.name != "Tutorial Flow")
            {
                Module.BossClone    = 0;
                dungeonSeed         = Module.Order;
                dungeon.DungeonSeed = Module.Order;
                GameManager.Instance.CurrentRunSeed = Module.Order;

                flow = ThesisFloorGenerator.CreateBranchingThesisFlow(dungeon);
                generator.AssignFlow(flow);
            }

            dungeon = null;
        }