// Initialize KnownFlows array with custom + official flows. public static void InitDungeonFlows(AssetBundle sharedAssets2, bool refreshFlows = false) { Dungeon TutorialPrefab = DungeonDatabase.GetOrLoadByName("Base_Tutorial"); Dungeon CastlePrefab = DungeonDatabase.GetOrLoadByName("Base_Castle"); Dungeon SewerPrefab = DungeonDatabase.GetOrLoadByName("Base_Sewer"); Dungeon GungeonPrefab = DungeonDatabase.GetOrLoadByName("Base_Gungeon"); Dungeon CathedralPrefab = DungeonDatabase.GetOrLoadByName("Base_Cathedral"); Dungeon MinesPrefab = DungeonDatabase.GetOrLoadByName("Base_Mines"); Dungeon ResourcefulRatPrefab = DungeonDatabase.GetOrLoadByName("Base_ResourcefulRat"); Dungeon CatacombsPrefab = DungeonDatabase.GetOrLoadByName("Base_Catacombs"); Dungeon NakatomiPrefab = DungeonDatabase.GetOrLoadByName("Base_Nakatomi"); Dungeon ForgePrefab = DungeonDatabase.GetOrLoadByName("Base_Forge"); Dungeon BulletHellPrefab = DungeonDatabase.GetOrLoadByName("Base_BulletHell"); BaseSharedInjectionData = sharedAssets2.LoadAsset <SharedInjectionData>("Base Shared Injection Data"); GungeonInjectionData = GungeonPrefab.PatternSettings.flows[0].sharedInjectionData[1]; SewersInjectionData = SewerPrefab.PatternSettings.flows[0].sharedInjectionData[1]; HollowsInjectionData = CatacombsPrefab.PatternSettings.flows[0].sharedInjectionData[1]; CastleInjectionData = CastlePrefab.PatternSettings.flows[0].sharedInjectionData[0]; JunkSecretRoomInjector = new ProceduralFlowModifierData() { annotation = "Tiny Secret Room", DEBUG_FORCE_SPAWN = false, OncePerRun = false, placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>() { ProceduralFlowModifierData.FlowModifierPlacementType.RANDOM_NODE_CHILD }, roomTable = null, exactRoom = ExpandRoomPrefabs.Expand_TinySecret, IsWarpWing = false, RequiresMasteryToken = false, chanceToLock = 0, selectionWeight = 1, chanceToSpawn = 1, RequiredValidPlaceable = null, prerequisites = new DungeonPrerequisite[0], CanBeForcedSecret = true, RandomNodeChildMinDistanceFromEntrance = 0, exactSecondaryRoom = null, framedCombatNodes = 0, }; BellySpecialEntranceRoomInjector = new ProceduralFlowModifierData() { annotation = "Secret Belly Entrance Room", DEBUG_FORCE_SPAWN = false, OncePerRun = false, placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>() { ProceduralFlowModifierData.FlowModifierPlacementType.END_OF_CHAIN }, roomTable = null, exactRoom = ExpandRoomPrefabs.Expand_Gungeon_BellyEntranceRoom, IsWarpWing = false, RequiresMasteryToken = false, chanceToLock = 0, selectionWeight = 1, chanceToSpawn = 1, RequiredValidPlaceable = null, prerequisites = new DungeonPrerequisite[] { new DungeonPrerequisite() { prerequisiteOperation = DungeonPrerequisite.PrerequisiteOperation.EQUAL_TO, prerequisiteType = DungeonPrerequisite.PrerequisiteType.TILESET, requiredTileset = GlobalDungeonData.ValidTilesets.GUNGEON, requireTileset = true, comparisonValue = 1, encounteredObjectGuid = string.Empty, maxToCheck = TrackedMaximums.MOST_KEYS_HELD, requireDemoMode = false, requireCharacter = false, requiredCharacter = PlayableCharacters.Pilot, requireFlag = false, useSessionStatValue = false, encounteredRoom = null, requiredNumberOfEncounters = -1, saveFlagToCheck = GungeonFlags.TUTORIAL_COMPLETED, statToCheck = TrackedStats.GUNBERS_MUNCHED } }, CanBeForcedSecret = true, RandomNodeChildMinDistanceFromEntrance = 0, exactSecondaryRoom = null, framedCombatNodes = 0, }; BellySpecialMonsterRoomInjector = new ProceduralFlowModifierData() { annotation = "Secret Belly Monster Room", DEBUG_FORCE_SPAWN = false, OncePerRun = false, placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>() { ProceduralFlowModifierData.FlowModifierPlacementType.NO_LINKS }, roomTable = null, exactRoom = ExpandRoomPrefabs.Expand_Gungeon_HiddenMonsterRoom, IsWarpWing = true, RequiresMasteryToken = false, chanceToLock = 0, selectionWeight = 1, chanceToSpawn = 1, RequiredValidPlaceable = null, prerequisites = new DungeonPrerequisite[] { new DungeonPrerequisite() { prerequisiteOperation = DungeonPrerequisite.PrerequisiteOperation.EQUAL_TO, prerequisiteType = DungeonPrerequisite.PrerequisiteType.TILESET, requiredTileset = GlobalDungeonData.ValidTilesets.GUNGEON, requireTileset = true, comparisonValue = 1, encounteredObjectGuid = string.Empty, maxToCheck = TrackedMaximums.MOST_KEYS_HELD, requireDemoMode = false, requireCharacter = false, requiredCharacter = PlayableCharacters.Pilot, requireFlag = false, useSessionStatValue = false, encounteredRoom = null, requiredNumberOfEncounters = -1, saveFlagToCheck = GungeonFlags.TUTORIAL_COMPLETED, statToCheck = TrackedStats.GUNBERS_MUNCHED } }, CanBeForcedSecret = true, RandomNodeChildMinDistanceFromEntrance = 0, exactSecondaryRoom = null, framedCombatNodes = 0, }; GungeonInjectionData.InjectionData.Add(BellySpecialEntranceRoomInjector); GungeonInjectionData.InjectionData.Add(BellySpecialMonsterRoomInjector); SewersInjectionData.InjectionData.Add(JunkSecretRoomInjector); SecretFloorEntranceInjector = new ProceduralFlowModifierData() { annotation = "Secret Floor Entrance Room", DEBUG_FORCE_SPAWN = false, OncePerRun = false, placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>() { ProceduralFlowModifierData.FlowModifierPlacementType.NO_LINKS }, roomTable = null, // exactRoom = SewersInjectionData.InjectionData[0].exactRoom, exactRoom = ExpandRoomPrefabs.SecretExitRoom2, IsWarpWing = true, RequiresMasteryToken = false, chanceToLock = 0, selectionWeight = 1, chanceToSpawn = 1, RequiredValidPlaceable = null, prerequisites = new DungeonPrerequisite[0], CanBeForcedSecret = true, RandomNodeChildMinDistanceFromEntrance = 0, exactSecondaryRoom = null, framedCombatNodes = 0, }; SecretMiniElevatorInjector = new ProceduralFlowModifierData() { annotation = "Secret MiniElevator Room with Glitched Rats", DEBUG_FORCE_SPAWN = false, OncePerRun = false, placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>() { ProceduralFlowModifierData.FlowModifierPlacementType.RANDOM_NODE_CHILD }, roomTable = null, exactRoom = ExpandRoomPrefabs.SecretRatEntranceRoom, IsWarpWing = false, RequiresMasteryToken = false, chanceToLock = 0.25f, selectionWeight = 1, chanceToSpawn = 1, RequiredValidPlaceable = null, prerequisites = new DungeonPrerequisite[0], CanBeForcedSecret = true, RandomNodeChildMinDistanceFromEntrance = 0, exactSecondaryRoom = null, framedCombatNodes = 0, }; m_KeepJungleEntranceRooms = ScriptableObject.CreateInstance <GenericRoomTable>(); m_KeepJungleEntranceRooms.includedRoomTables = new List <GenericRoomTable>(0); m_KeepJungleEntranceRooms.includedRooms = new WeightedRoomCollection() { elements = new List <WeightedRoom>() { ExpandRoomPrefabs.GenerateWeightedRoom(ExpandRoomPrefabs.Expand_Keep_TreeRoom, Weight: 0.5f), ExpandRoomPrefabs.GenerateWeightedRoom(ExpandRoomPrefabs.Expand_Keep_TreeRoom2) } }; SecretJungleEntranceInjector = new ProceduralFlowModifierData() { annotation = "Secret Jungle Entrance Room", DEBUG_FORCE_SPAWN = false, OncePerRun = false, placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>() { ProceduralFlowModifierData.FlowModifierPlacementType.RANDOM_NODE_CHILD }, roomTable = m_KeepJungleEntranceRooms, exactRoom = null, IsWarpWing = false, RequiresMasteryToken = false, chanceToLock = 0, selectionWeight = 1, chanceToSpawn = 1, RequiredValidPlaceable = null, prerequisites = new DungeonPrerequisite[] { new DungeonPrerequisite() { prerequisiteOperation = DungeonPrerequisite.PrerequisiteOperation.EQUAL_TO, prerequisiteType = DungeonPrerequisite.PrerequisiteType.TILESET, requiredTileset = GlobalDungeonData.ValidTilesets.CASTLEGEON, requireTileset = true, comparisonValue = 1, encounteredObjectGuid = string.Empty, maxToCheck = TrackedMaximums.MOST_KEYS_HELD, requireDemoMode = false, requireCharacter = false, requiredCharacter = PlayableCharacters.Pilot, requireFlag = false, useSessionStatValue = false, encounteredRoom = null, requiredNumberOfEncounters = -1, saveFlagToCheck = GungeonFlags.TUTORIAL_COMPLETED, statToCheck = TrackedStats.GUNBERS_MUNCHED } }, CanBeForcedSecret = true, RandomNodeChildMinDistanceFromEntrance = 0, exactSecondaryRoom = null, framedCombatNodes = 0, }; HollowsInjectionData.InjectionData.Add(SecretFloorEntranceInjector); HollowsInjectionData.InjectionData.Add(SecretMiniElevatorInjector); CastleInjectionData.InjectionData.Add(SecretJungleEntranceInjector); RickRollSecretRoomInjector = new ProceduralFlowModifierData() { annotation = "RickRoll Secret Room", DEBUG_FORCE_SPAWN = false, OncePerRun = false, placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>() { ProceduralFlowModifierData.FlowModifierPlacementType.END_OF_CHAIN }, roomTable = null, exactRoom = ExpandRoomPrefabs.Expand_RickRollSecret, IsWarpWing = false, RequiresMasteryToken = false, chanceToLock = 0, selectionWeight = 1, chanceToSpawn = 0.25f, RequiredValidPlaceable = null, prerequisites = new DungeonPrerequisite[0], CanBeForcedSecret = true, RandomNodeChildMinDistanceFromEntrance = 1, exactSecondaryRoom = null, framedCombatNodes = 0 }; CustomSecretFloorSharedInjectionData = ScriptableObject.CreateInstance <SharedInjectionData>(); CustomSecretFloorSharedInjectionData.name = "Rick Roll Secret Room Injection Data"; CustomSecretFloorSharedInjectionData.InjectionData = new List <ProceduralFlowModifierData>() { RickRollSecretRoomInjector }; CustomSecretFloorSharedInjectionData.UseInvalidWeightAsNoInjection = true; CustomSecretFloorSharedInjectionData.IsNPCCell = false; CustomSecretFloorSharedInjectionData.PreventInjectionOfFailedPrerequisites = false; CustomSecretFloorSharedInjectionData.OnlyOne = false; CustomSecretFloorSharedInjectionData.ChanceToSpawnOne = 1; CustomSecretFloorSharedInjectionData.AttachedInjectionData = new List <SharedInjectionData>(0); // Don't build/add flows until injection data is created! Foyer_Flow = FlowHelpers.DuplicateDungeonFlow(sharedAssets2.LoadAsset <DungeonFlow>("Foyer Flow")); // List<DungeonFlow> m_knownFlows = new List<DungeonFlow>(); KnownFlows = new List <DungeonFlow>(); // Build and add custom flows to list. BossrushFlows.InitBossrushFlows(); KnownFlows.Add(custom_glitchchest_flow.Custom_GlitchChest_Flow()); KnownFlows.Add(test_west_floor_03a_flow.TEST_West_Floor_03a_Flow()); KnownFlows.Add(demo_stage_flow.DEMO_STAGE_FLOW()); KnownFlows.Add(complex_flow_test.Complex_Flow_Test()); KnownFlows.Add(custom_glitch_flow.Custom_Glitch_Flow()); KnownFlows.Add(really_big_flow.Really_Big_Flow()); KnownFlows.Add(fruit_loops.Fruit_Loops()); KnownFlows.Add(custom_glitchchestalt_flow.Custom_GlitchChestAlt_Flow()); KnownFlows.Add(test_traproom_flow.Test_TrapRoom_Flow()); KnownFlows.Add(test_customroom_flow.Test_CustomRoom_Flow()); KnownFlows.Add(apache_fucking_around_flow.Apache_Fucking_Around_Flow()); KnownFlows.Add(f1b_jungle_flow_01.F1b_Jungle_Flow_01()); KnownFlows.Add(f1b_jungle_flow_02.F1b_Jungle_Flow_02()); KnownFlows.Add(f2b_belly_flow_01.F2b_Belly_Flow_01()); KnownFlows.Add(f4c_west_flow_01.F4c_West_Flow_01()); // Fix issues with nodes so that things other then MainMenu can load Foyer flow Foyer_Flow.name = "Foyer_Flow"; Foyer_Flow.AllNodes[1].handlesOwnWarping = true; Foyer_Flow.AllNodes[2].handlesOwnWarping = true; Foyer_Flow.AllNodes[3].handlesOwnWarping = true; KnownFlows.Add(Foyer_Flow); KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(LoadOfficialFlow("npcparadise"))); KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(LoadOfficialFlow("secret_doublebeholster_flow"))); KnownFlows.Add(BossrushFlows.Bossrush_01_Castle); KnownFlows.Add(BossrushFlows.Bossrush_01a_Sewer); KnownFlows.Add(BossrushFlows.Bossrush_02_Gungeon); KnownFlows.Add(BossrushFlows.Bossrush_02a_Cathedral); KnownFlows.Add(BossrushFlows.Bossrush_03_Mines); KnownFlows.Add(BossrushFlows.Bossrush_04_Catacombs); KnownFlows.Add(BossrushFlows.Bossrush_05_Forge); KnownFlows.Add(BossrushFlows.Bossrush_06_BulletHell); KnownFlows.Add(BossrushFlows.MiniBossrush_01); // Add official flows to list (flows found in Dungeon asset bundles after AG&D) for (int i = 0; i < TutorialPrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(TutorialPrefab.PatternSettings.flows[i])); } for (int i = 0; i < CastlePrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(CastlePrefab.PatternSettings.flows[i])); } for (int i = 0; i < SewerPrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(SewerPrefab.PatternSettings.flows[i])); } for (int i = 0; i < GungeonPrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(GungeonPrefab.PatternSettings.flows[i])); } for (int i = 0; i < CathedralPrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(CathedralPrefab.PatternSettings.flows[i])); } for (int i = 0; i < MinesPrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(MinesPrefab.PatternSettings.flows[i])); } for (int i = 0; i < ResourcefulRatPrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(ResourcefulRatPrefab.PatternSettings.flows[i])); } for (int i = 0; i < CatacombsPrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(CatacombsPrefab.PatternSettings.flows[i])); } for (int i = 0; i < NakatomiPrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(NakatomiPrefab.PatternSettings.flows[i])); } for (int i = 0; i < ForgePrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(ForgePrefab.PatternSettings.flows[i])); } for (int i = 0; i < BulletHellPrefab.PatternSettings.flows.Count; i++) { KnownFlows.Add(FlowHelpers.DuplicateDungeonFlow(BulletHellPrefab.PatternSettings.flows[i])); } // Let's make things look cool and give all boss rush flows my new tiny exit room. :D BossrushFlows.Bossrush_01a_Sewer.AllNodes[2].overrideExactRoom = ExpandPrefabs.tiny_exit; BossrushFlows.Bossrush_02_Gungeon.AllNodes[6].overrideExactRoom = ExpandPrefabs.tiny_exit; BossrushFlows.Bossrush_02a_Cathedral.AllNodes[2].overrideExactRoom = ExpandPrefabs.oldbulletking_room_01; BossrushFlows.Bossrush_02a_Cathedral.AllNodes[3].overrideExactRoom = ExpandPrefabs.tiny_exit; BossrushFlows.Bossrush_03_Mines.AllNodes[6].overrideExactRoom = ExpandPrefabs.tiny_exit; BossrushFlows.Bossrush_04_Catacombs.AllNodes[6].overrideExactRoom = ExpandPrefabs.tiny_exit; // Fix Forge Bossrush so it uses the correct boss foyer room for Dragun. // Using the same foyer room for previous floors looks odd so I fixed it. :P BossrushFlows.Bossrush_05_Forge.AllNodes[1].overrideExactRoom = ExpandPrefabs.DragunBossFoyerRoom; BossrushFlows.Bossrush_05_Forge.AllNodes[3].overrideExactRoom = ExpandPrefabs.tiny_exit; TutorialPrefab = null; CastlePrefab = null; SewerPrefab = null; GungeonPrefab = null; CathedralPrefab = null; MinesPrefab = null; ResourcefulRatPrefab = null; CatacombsPrefab = null; NakatomiPrefab = null; ForgePrefab = null; BulletHellPrefab = null; }
// Initialize KnownFlows array with custom + official flows. public static void InitDungeonFlows() { Dungeon TutorialPrefab = DungeonDatabase.GetOrLoadByName("Base_Tutorial"); Dungeon CastlePrefab = DungeonDatabase.GetOrLoadByName("Base_Castle"); Dungeon SewerPrefab = DungeonDatabase.GetOrLoadByName("Base_Sewer"); Dungeon GungeonPrefab = DungeonDatabase.GetOrLoadByName("Base_Gungeon"); Dungeon CathedralPrefab = DungeonDatabase.GetOrLoadByName("Base_Cathedral"); Dungeon MinesPrefab = DungeonDatabase.GetOrLoadByName("Base_Mines"); Dungeon ResourcefulRatPrefab = DungeonDatabase.GetOrLoadByName("Base_ResourcefulRat"); Dungeon CatacombsPrefab = DungeonDatabase.GetOrLoadByName("Base_Catacombs"); Dungeon NakatomiPrefab = DungeonDatabase.GetOrLoadByName("Base_Nakatomi"); Dungeon ForgePrefab = DungeonDatabase.GetOrLoadByName("Base_Forge"); Dungeon BulletHellPrefab = DungeonDatabase.GetOrLoadByName("Base_BulletHell"); List <DungeonFlow> m_knownFlows = new List <DungeonFlow>(); // Build custom flows test_west_floor_03a_flow.InitFlow(); custom_glitchchest_flow.InitFlow(); demo_stage_flow.InitFlow(); complex_flow_test.InitFlow(); custom_glitch_flow.InitFlow(); really_big_flow.InitFlow(); fruit_loops.InitFlow(); custom_glitchchestalt_flow.InitFlow(); secretglitchfloor_flow.InitFlow(); test_traproom_flow.InitFlow(); BossrushFlows.InitBossrushFlows(); m_knownFlows.Add(Custom_GlitchChest_Flow); m_knownFlows.Add(TEST_West_Floor_03a_Flow); m_knownFlows.Add(DEMO_STAGE_FLOW); m_knownFlows.Add(Complex_Flow_Test); m_knownFlows.Add(Custom_Glitch_Flow); m_knownFlows.Add(Really_Big_Flow); m_knownFlows.Add(Fruit_Loops); m_knownFlows.Add(Custom_GlitchChestAlt_Flow); m_knownFlows.Add(SecretGlitchFloor_Flow); m_knownFlows.Add(Test_TrapRoom_Flow); // Fix issues with nodes so that things other then MainMenu can load Foyer flow Foyer_Flow.name = "Foyer_Flow"; Foyer_Flow.AllNodes[1].handlesOwnWarping = true; Foyer_Flow.AllNodes[2].handlesOwnWarping = true; Foyer_Flow.AllNodes[3].handlesOwnWarping = true; m_knownFlows.Add(Foyer_Flow); m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(LoadOfficialFlow("npcparadise"))); m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(LoadOfficialFlow("secret_doublebeholster_flow"))); m_knownFlows.Add(BossrushFlows.Bossrush_01_Castle); m_knownFlows.Add(BossrushFlows.Bossrush_01a_Sewer); m_knownFlows.Add(BossrushFlows.Bossrush_02_Gungeon); m_knownFlows.Add(BossrushFlows.Bossrush_02a_Cathedral); m_knownFlows.Add(BossrushFlows.Bossrush_03_Mines); m_knownFlows.Add(BossrushFlows.Bossrush_04_Catacombs); m_knownFlows.Add(BossrushFlows.Bossrush_05_Forge); m_knownFlows.Add(BossrushFlows.Bossrush_06_BulletHell); m_knownFlows.Add(BossrushFlows.MiniBossrush_01); // Add official flows to list (flows found in Dungeon asset bundles after AG&D) for (int i = 0; i < TutorialPrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(TutorialPrefab.PatternSettings.flows[i])); } for (int i = 0; i < CastlePrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(CastlePrefab.PatternSettings.flows[i])); } for (int i = 0; i < SewerPrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(SewerPrefab.PatternSettings.flows[i])); } for (int i = 0; i < GungeonPrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(GungeonPrefab.PatternSettings.flows[i])); } for (int i = 0; i < CathedralPrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(CathedralPrefab.PatternSettings.flows[i])); } for (int i = 0; i < MinesPrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(MinesPrefab.PatternSettings.flows[i])); } for (int i = 0; i < ResourcefulRatPrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(ResourcefulRatPrefab.PatternSettings.flows[i])); } for (int i = 0; i < CatacombsPrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(CatacombsPrefab.PatternSettings.flows[i])); } for (int i = 0; i < NakatomiPrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(NakatomiPrefab.PatternSettings.flows[i])); } for (int i = 0; i < ForgePrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(ForgePrefab.PatternSettings.flows[i])); } for (int i = 0; i < BulletHellPrefab.PatternSettings.flows.Count; i++) { m_knownFlows.Add(FlowHelpers.DuplicateDungeonFlow(BulletHellPrefab.PatternSettings.flows[i])); } // Let's make things look cool and give all boss rush flows my new tiny exit room. :D BossrushFlows.Bossrush_01a_Sewer.AllNodes[2].overrideExactRoom = ChaosPrefabs.tiny_exit; BossrushFlows.Bossrush_02_Gungeon.AllNodes[6].overrideExactRoom = ChaosPrefabs.tiny_exit; BossrushFlows.Bossrush_02a_Cathedral.AllNodes[2].overrideExactRoom = ChaosPrefabs.oldbulletking_room_01; BossrushFlows.Bossrush_02a_Cathedral.AllNodes[3].overrideExactRoom = ChaosPrefabs.tiny_exit; BossrushFlows.Bossrush_03_Mines.AllNodes[6].overrideExactRoom = ChaosPrefabs.tiny_exit; BossrushFlows.Bossrush_04_Catacombs.AllNodes[6].overrideExactRoom = ChaosPrefabs.tiny_exit; // Fix Forge Bossrush so it uses the correct boss foyer room for Dragun. // Using the same foyer room for previous floors looks odd so I fixed it. :P BossrushFlows.Bossrush_05_Forge.AllNodes[1].overrideExactRoom = ChaosPrefabs.DragunBossFoyerRoom; BossrushFlows.Bossrush_05_Forge.AllNodes[3].overrideExactRoom = ChaosPrefabs.tiny_exit; KnownFlows = m_knownFlows.ToArray(); sharedAssets2 = null; TutorialPrefab = null; CastlePrefab = null; SewerPrefab = null; GungeonPrefab = null; CathedralPrefab = null; MinesPrefab = null; ResourcefulRatPrefab = null; CatacombsPrefab = null; NakatomiPrefab = null; ForgePrefab = null; BulletHellPrefab = null; }