public static DungeonFlow F1b_Jungle_Flow_02() { DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance <DungeonFlow>(); if (!ExpandDungeonFlow.JungleInjectionData) { ExpandDungeonFlow.JungleInjectionData = ScriptableObject.CreateInstance <SharedInjectionData>(); ExpandDungeonFlow.JungleInjectionData.name = "Jungle Common Injection Data"; ExpandDungeonFlow.JungleInjectionData.UseInvalidWeightAsNoInjection = true; ExpandDungeonFlow.JungleInjectionData.PreventInjectionOfFailedPrerequisites = false; ExpandDungeonFlow.JungleInjectionData.IsNPCCell = false; ExpandDungeonFlow.JungleInjectionData.IgnoreUnmetPrerequisiteEntries = false; ExpandDungeonFlow.JungleInjectionData.OnlyOne = false; ExpandDungeonFlow.JungleInjectionData.ChanceToSpawnOne = 0.5f; ExpandDungeonFlow.JungleInjectionData.AttachedInjectionData = new List <SharedInjectionData>(0); ExpandDungeonFlow.JungleInjectionData.InjectionData = new List <ProceduralFlowModifierData>() { new ProceduralFlowModifierData() { annotation = "Cathedral Crest Room", DEBUG_FORCE_SPAWN = false, OncePerRun = false, placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>() { ProceduralFlowModifierData.FlowModifierPlacementType.END_OF_CHAIN }, roomTable = null, exactRoom = ExpandRoomPrefabs.Expand_Jungle_OldCrest, IsWarpWing = false, RequiresMasteryToken = false, chanceToLock = 0.5f, selectionWeight = 1, chanceToSpawn = 1, RequiredValidPlaceable = null, CanBeForcedSecret = true, RandomNodeChildMinDistanceFromEntrance = 0, exactSecondaryRoom = null, framedCombatNodes = 0, prerequisites = new DungeonPrerequisite[] { new DungeonPrerequisite() { prerequisiteType = DungeonPrerequisite.PrerequisiteType.DEMO_MODE, prerequisiteOperation = DungeonPrerequisite.PrerequisiteOperation.GREATER_THAN, statToCheck = TrackedStats.TIMES_REACHED_GUNGEON, maxToCheck = 0, comparisonValue = 0, encounteredObjectGuid = string.Empty, encounteredRoom = null, requiredNumberOfEncounters = 0, requiredCharacter = PlayableCharacters.Pilot, requireCharacter = false, requiredTileset = 0, requireTileset = false, saveFlagToCheck = 0, requireFlag = false, requireDemoMode = false }, } }, new ProceduralFlowModifierData() { annotation = "Lost Baby Dragun", DEBUG_FORCE_SPAWN = false, OncePerRun = false, placementRules = new List <ProceduralFlowModifierData.FlowModifierPlacementType>() { ProceduralFlowModifierData.FlowModifierPlacementType.RANDOM_NODE_CHILD }, roomTable = null, exactRoom = ExpandRoomPrefabs.Expand_Jungle_SecretDragun, IsWarpWing = false, RequiresMasteryToken = false, chanceToLock = 1, selectionWeight = 1, chanceToSpawn = 1, RequiredValidPlaceable = null, CanBeForcedSecret = true, RandomNodeChildMinDistanceFromEntrance = 0, exactSecondaryRoom = null, framedCombatNodes = 0, prerequisites = new DungeonPrerequisite[] { new DungeonPrerequisite() { prerequisiteType = DungeonPrerequisite.PrerequisiteType.TILESET, prerequisiteOperation = DungeonPrerequisite.PrerequisiteOperation.EQUAL_TO, statToCheck = TrackedStats.TIMES_REACHED_GUNGEON, maxToCheck = 0, comparisonValue = 0, encounteredObjectGuid = string.Empty, encounteredRoom = null, requiredNumberOfEncounters = 0, requiredCharacter = PlayableCharacters.Pilot, requireCharacter = false, requiredTileset = GlobalDungeonData.ValidTilesets.JUNGLEGEON, requireTileset = true, saveFlagToCheck = 0, requireFlag = false, requireDemoMode = false } } } }; } DungeonFlowNode entranceNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ExpandRoomPrefabs.Expand_Jungle_Entrance); DungeonFlowNode exitNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandRoomPrefabs.Expand_Jungle_Exit); DungeonFlowNode bossfoyerNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.boss_foyertable); DungeonFlowNode bossNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandRoomPrefabs.Expand_Jungle_Boss); DungeonFlowNode JungleShopNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, ExpandPrefabs.shop02.category, overrideTable: ExpandPrefabs.shop_room_table); DungeonFlowNode JungleRewardNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.gungeon_rewardroom_1); DungeonFlowNode JungleRewardNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.gungeon_rewardroom_1); DungeonFlowNode JungleRoomNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB, oneWayLoopTarget: true); DungeonFlowNode JungleRoomNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_04 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_05 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_06 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB, oneWayLoopTarget: true); DungeonFlowNode JungleRoomNode_07 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_09 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_10 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_11 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB); DungeonFlowNode JungleRoomNode_12 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_13 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_14 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_16 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_17 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode JungleRoomNode_18 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); m_CachedFlow.name = "F1b_Jungle_Flow_02"; m_CachedFlow.fallbackRoomTable = ExpandPrefabs.JungleRoomTable; m_CachedFlow.phantomRoomTable = null; m_CachedFlow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>(0); m_CachedFlow.flowInjectionData = new List <ProceduralFlowModifierData>(0); m_CachedFlow.sharedInjectionData = new List <SharedInjectionData>() { ExpandDungeonFlow.BaseSharedInjectionData, ExpandDungeonFlow.JungleInjectionData }; m_CachedFlow.Initialize(); m_CachedFlow.AddNodeToFlow(entranceNode, null); // First Looping branch m_CachedFlow.AddNodeToFlow(JungleRoomNode_16, entranceNode); m_CachedFlow.AddNodeToFlow(JungleRoomNode_01, JungleRoomNode_16); // Dead End m_CachedFlow.AddNodeToFlow(JungleRoomNode_05, JungleRoomNode_01); // Start of Loop m_CachedFlow.AddNodeToFlow(JungleRoomNode_02, JungleRoomNode_01); m_CachedFlow.AddNodeToFlow(JungleRoomNode_04, JungleRoomNode_02); m_CachedFlow.AddNodeToFlow(JungleRewardNode_01, JungleRoomNode_04); // Connect End of Loop to first in chain m_CachedFlow.LoopConnectNodes(JungleRewardNode_01, JungleRoomNode_01); // Second Looping branch m_CachedFlow.AddNodeToFlow(JungleRoomNode_17, entranceNode); m_CachedFlow.AddNodeToFlow(JungleRoomNode_06, JungleRoomNode_17); // Dead End m_CachedFlow.AddNodeToFlow(JungleRoomNode_10, JungleRoomNode_06); // Start of Loop m_CachedFlow.AddNodeToFlow(JungleRoomNode_07, JungleRoomNode_06); m_CachedFlow.AddNodeToFlow(JungleRoomNode_09, JungleRoomNode_07); m_CachedFlow.AddNodeToFlow(JungleRewardNode_02, JungleRoomNode_09); // Connect End of Loop to first in chain m_CachedFlow.LoopConnectNodes(JungleRewardNode_02, JungleRoomNode_06); // Splitting path to Shop or Boss m_CachedFlow.AddNodeToFlow(JungleRoomNode_18, entranceNode); m_CachedFlow.AddNodeToFlow(JungleRoomNode_11, JungleRoomNode_18); // Path To Boss m_CachedFlow.AddNodeToFlow(JungleRoomNode_12, JungleRoomNode_11); // Path to Shop m_CachedFlow.AddNodeToFlow(JungleRoomNode_13, JungleRoomNode_11); m_CachedFlow.AddNodeToFlow(JungleShopNode, JungleRoomNode_13); // Dead End m_CachedFlow.AddNodeToFlow(JungleRoomNode_14, JungleRoomNode_11); m_CachedFlow.AddNodeToFlow(bossfoyerNode, JungleRoomNode_12); m_CachedFlow.AddNodeToFlow(bossNode, bossfoyerNode); m_CachedFlow.AddNodeToFlow(exitNode, bossNode); m_CachedFlow.FirstNode = entranceNode; return(m_CachedFlow); }
public static DungeonFlow Test_TrapRoom_Flow() { DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance <DungeonFlow>(); DungeonFlowNode entranceNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ExpandPrefabs.tiny_entrance); DungeonFlowNode exitNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandRoomPrefabs.SecretExitRoom); DungeonFlowNode firstConnectorNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Utiliroom); DungeonFlowNode lastConnectorNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Utiliroom); DungeonFlowNode TrapRoomNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_04 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_05 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_06 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_07 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_08 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_09 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_10 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_11 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_12 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_13 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_14 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_15 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_16 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_17 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_18 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_19 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_20 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_21 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_22 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_23 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_24 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_25 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); TrapRoomTable.name = "Test Trap Room Table"; TrapRoomTable.includedRooms = new WeightedRoomCollection(); TrapRoomTable.includedRooms.elements = new List <WeightedRoom>(); TrapRoomTable.includedRoomTables = new List <GenericRoomTable>(0); foreach (WeightedRoom weightedRoom in ExpandPrefabs.CustomRoomTable.includedRooms.elements) { if (weightedRoom.room != null && weightedRoom.room.category == PrototypeDungeonRoom.RoomCategory.NORMAL && weightedRoom.room.subCategoryNormal == PrototypeDungeonRoom.RoomNormalSubCategory.TRAP) { TrapRoomTable.includedRooms.elements.Add(weightedRoom); } } m_CachedFlow.name = "Test_TrapRoom_Flow"; m_CachedFlow.fallbackRoomTable = TrapRoomTable; m_CachedFlow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>(0); m_CachedFlow.flowInjectionData = new List <ProceduralFlowModifierData>(0); m_CachedFlow.sharedInjectionData = new List <SharedInjectionData>(0); m_CachedFlow.Initialize(); m_CachedFlow.AddNodeToFlow(entranceNode, null); m_CachedFlow.AddNodeToFlow(firstConnectorNode, entranceNode); m_CachedFlow.AddNodeToFlow(TrapRoomNode_01, firstConnectorNode); m_CachedFlow.AddNodeToFlow(TrapRoomNode_02, TrapRoomNode_01); m_CachedFlow.AddNodeToFlow(TrapRoomNode_03, TrapRoomNode_02); m_CachedFlow.AddNodeToFlow(TrapRoomNode_04, TrapRoomNode_03); m_CachedFlow.AddNodeToFlow(TrapRoomNode_05, TrapRoomNode_04); m_CachedFlow.AddNodeToFlow(TrapRoomNode_06, TrapRoomNode_05); m_CachedFlow.AddNodeToFlow(TrapRoomNode_07, TrapRoomNode_06); m_CachedFlow.AddNodeToFlow(TrapRoomNode_08, TrapRoomNode_07); m_CachedFlow.AddNodeToFlow(TrapRoomNode_09, TrapRoomNode_08); m_CachedFlow.AddNodeToFlow(TrapRoomNode_10, TrapRoomNode_09); m_CachedFlow.AddNodeToFlow(TrapRoomNode_11, TrapRoomNode_10); m_CachedFlow.AddNodeToFlow(TrapRoomNode_12, TrapRoomNode_11); m_CachedFlow.AddNodeToFlow(TrapRoomNode_13, TrapRoomNode_12); m_CachedFlow.AddNodeToFlow(TrapRoomNode_14, TrapRoomNode_13); m_CachedFlow.AddNodeToFlow(TrapRoomNode_15, TrapRoomNode_14); m_CachedFlow.AddNodeToFlow(TrapRoomNode_16, TrapRoomNode_15); m_CachedFlow.AddNodeToFlow(TrapRoomNode_17, TrapRoomNode_16); m_CachedFlow.AddNodeToFlow(TrapRoomNode_18, TrapRoomNode_17); m_CachedFlow.AddNodeToFlow(TrapRoomNode_19, TrapRoomNode_18); m_CachedFlow.AddNodeToFlow(TrapRoomNode_20, TrapRoomNode_19); m_CachedFlow.AddNodeToFlow(TrapRoomNode_21, TrapRoomNode_20); m_CachedFlow.AddNodeToFlow(TrapRoomNode_22, TrapRoomNode_21); m_CachedFlow.AddNodeToFlow(TrapRoomNode_23, TrapRoomNode_22); m_CachedFlow.AddNodeToFlow(TrapRoomNode_24, TrapRoomNode_23); m_CachedFlow.AddNodeToFlow(TrapRoomNode_25, TrapRoomNode_24); m_CachedFlow.AddNodeToFlow(lastConnectorNode, TrapRoomNode_25); m_CachedFlow.AddNodeToFlow(exitNode, lastConnectorNode); m_CachedFlow.FirstNode = entranceNode; return(m_CachedFlow); }
public static DungeonFlow Apache_Fucking_Around_Flow() { DungeonFlowSubtypeRestriction m_SubTypeRestrictions = new DungeonFlowSubtypeRestriction() { baseCategoryRestriction = PrototypeDungeonRoom.RoomCategory.NORMAL, normalSubcategoryRestriction = PrototypeDungeonRoom.RoomNormalSubCategory.TRAP, bossSubcategoryRestriction = PrototypeDungeonRoom.RoomBossSubCategory.FLOOR_BOSS, specialSubcategoryRestriction = PrototypeDungeonRoom.RoomSpecialSubCategory.UNSPECIFIED_SPECIAL, secretSubcategoryRestriction = PrototypeDungeonRoom.RoomSecretSubCategory.UNSPECIFIED_SECRET, maximumRoomsOfSubtype = 1 }; DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance <DungeonFlow>(); bool SecretRoomSelector = BraveUtility.RandomBool(); m_CachedFlow.name = "Apache_Fucking_Around_Flow"; m_CachedFlow.fallbackRoomTable = ExpandPrefabs.CustomRoomTable2; m_CachedFlow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>() { m_SubTypeRestrictions }; m_CachedFlow.flowInjectionData = new List <ProceduralFlowModifierData>(0); m_CachedFlow.sharedInjectionData = new List <SharedInjectionData>(0); m_CachedFlow.Initialize(); DungeonFlowNode m_EntranceNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ExpandPrefabs.elevator_entrance); DungeonFlowNode m_ExitNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandPrefabs.tiny_exit); DungeonFlowNode m_BossNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandPrefabs.doublebeholsterroom01); DungeonFlowNode m_BossFoyerNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.boss_foyer); // First chain of nodes starting off Entrance DungeonFlowNode m_ConnectorNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR); DungeonFlowNode m_ConnectorNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR); DungeonFlowNode m_ConnectorNode_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR); DungeonFlowNode m_ConnectorNode_04 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR); DungeonFlowNode m_ShopNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.shop_room_table); DungeonFlowNode m_HubNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB); DungeonFlowNode m_RewardNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.reward_room); DungeonFlowNode m_RewardNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.reward_room); DungeonFlowNode m_RewardNode_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.gungeon_rewardroom_1); DungeonFlowNode m_NormalNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_NormalNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_NormalNode_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_NormalNode_04 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_NormalNode_05 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_NormalNode_06 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_NormalNode_07 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_NormalNode_08 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_NormalNode_09 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_NormalNode_10 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_SecretNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET); DungeonFlowNode m_SecretNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET); DungeonFlowNode m_LoopTargetNormalNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, oneWayLoopTarget: true); // Warp Wing chain DungeonFlowNode m_WarpWingConnectorNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_SecretElevatorDestinationRoom, isWarpWingNode: true); DungeonFlowNode m_WarpWingConnectorNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR); DungeonFlowNode m_WarpWingConnectorNode_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR); DungeonFlowNode m_WarpWingConnectorNode_04 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR); DungeonFlowNode m_WarpWingNormalNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_WarpWingNormalNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_WarpWingNormalNode_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode m_WarpWingRewardNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.reward_room); // Assign special elevator entrance room to one of the two guranteed secret rooms on this flow. if (SecretRoomSelector) { m_SecretNode_01.overrideExactRoom = ExpandRoomPrefabs.Expand_SecretElevatorEntranceRoom; } else { m_SecretNode_02.overrideExactRoom = ExpandRoomPrefabs.Expand_SecretElevatorEntranceRoom; } m_CachedFlow.AddNodeToFlow(m_EntranceNode, null); m_CachedFlow.AddNodeToFlow(m_ConnectorNode_01, m_EntranceNode); m_CachedFlow.AddNodeToFlow(m_ConnectorNode_02, m_ConnectorNode_01); m_CachedFlow.AddNodeToFlow(m_ConnectorNode_03, m_ConnectorNode_02); // Shop node branching off first connector node m_CachedFlow.AddNodeToFlow(m_ShopNode, m_ConnectorNode_01); // Huh node. A chest node then normal node leading to boss room/exit with a normal node and loop nodes connected to exit. m_CachedFlow.AddNodeToFlow(m_HubNode, m_ConnectorNode_01); m_CachedFlow.AddNodeToFlow(m_RewardNode_01, m_HubNode); m_CachedFlow.AddNodeToFlow(m_NormalNode_01, m_HubNode); m_CachedFlow.AddNodeToFlow(m_BossFoyerNode, m_NormalNode_01); m_CachedFlow.AddNodeToFlow(m_BossNode, m_BossFoyerNode); m_CachedFlow.AddNodeToFlow(m_ExitNode, m_BossNode); m_CachedFlow.AddNodeToFlow(m_NormalNode_02, m_ExitNode); m_CachedFlow.AddNodeToFlow(m_LoopTargetNormalNode, m_ExitNode); m_CachedFlow.AddNodeToFlow(m_NormalNode_03, m_LoopTargetNormalNode); m_CachedFlow.AddNodeToFlow(m_RewardNode_02, m_NormalNode_03); // Connect end of this chain back to first node in loop chain. m_CachedFlow.LoopConnectNodes(m_RewardNode_02, m_LoopTargetNormalNode); // Branch of nodes that leads off hub to mainly normal rooms, a chest and a couple secret rooms. m_CachedFlow.AddNodeToFlow(m_NormalNode_04, m_HubNode); m_CachedFlow.AddNodeToFlow(m_NormalNode_05, m_NormalNode_04); m_CachedFlow.AddNodeToFlow(m_NormalNode_06, m_NormalNode_05); m_CachedFlow.AddNodeToFlow(m_NormalNode_07, m_NormalNode_06); m_CachedFlow.AddNodeToFlow(m_SecretNode_01, m_NormalNode_06); m_CachedFlow.AddNodeToFlow(m_NormalNode_08, m_NormalNode_05); m_CachedFlow.AddNodeToFlow(m_NormalNode_09, m_NormalNode_08); m_CachedFlow.AddNodeToFlow(m_NormalNode_10, m_NormalNode_09); m_CachedFlow.AddNodeToFlow(m_SecretNode_02, m_NormalNode_10); m_CachedFlow.AddNodeToFlow(m_RewardNode_03, m_NormalNode_10); // Warpwing CHain of nodes with 1 reward room m_CachedFlow.AddNodeToFlow(m_WarpWingConnectorNode_01, m_HubNode); m_CachedFlow.AddNodeToFlow(m_WarpWingNormalNode_01, m_WarpWingConnectorNode_01); m_CachedFlow.AddNodeToFlow(m_WarpWingRewardNode_01, m_WarpWingNormalNode_01); m_CachedFlow.AddNodeToFlow(m_WarpWingConnectorNode_02, m_WarpWingConnectorNode_01); m_CachedFlow.AddNodeToFlow(m_WarpWingNormalNode_02, m_WarpWingConnectorNode_02); m_CachedFlow.AddNodeToFlow(m_WarpWingConnectorNode_03, m_WarpWingNormalNode_02); m_CachedFlow.AddNodeToFlow(m_WarpWingConnectorNode_04, m_WarpWingConnectorNode_03); m_CachedFlow.AddNodeToFlow(m_WarpWingNormalNode_03, m_WarpWingConnectorNode_04); m_CachedFlow.FirstNode = m_EntranceNode; return(m_CachedFlow); }
public static DungeonFlow Custom_GlitchChestAlt_Flow() { DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance <DungeonFlow>(); List <DungeonFlowNode> m_cachedNodes_01 = new List <DungeonFlowNode>(); List <DungeonFlowNode> m_cachedNodes_02 = new List <DungeonFlowNode>(); List <DungeonFlowNode> m_cachedNodes_03 = new List <DungeonFlowNode>(); List <DungeonFlowNode> m_cachedNodes_04 = new List <DungeonFlowNode>(); DungeonFlowNode m_EntranceNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ExpandPrefabs.big_entrance); DungeonFlowNode m_HubNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB); DungeonFlowNode m_ShopNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.shop_room_table); DungeonFlowNode m_ChestRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.reward_room, oneWayLoopTarget: true); DungeonFlowNode m_ChestRoom_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.REWARD, ExpandPrefabs.gungeon_rewardroom_1); DungeonFlowNode m_ChestRoom_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.REWARD, ExpandPrefabs.gungeon_rewardroom_1); DungeonFlowNode m_ChestRoom_04 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.reward_room, oneWayLoopTarget: true); DungeonFlowNode m_ExitNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandPrefabs.tiny_exit); DungeonFlowNode m_BossFoyerNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.boss_foyer); DungeonFlowNode m_BossNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandPrefabs.doublebeholsterroom01); DungeonFlowNode m_FakeBossNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandPrefabs.tutorial_minibossroom); DungeonFlowNode m_FakeBossFoyerNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.boss_foyer); for (int i = 0; i < LoopRoomCount + 1; i++) { m_cachedNodes_01.Add(ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL)); m_cachedNodes_04.Add(ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL)); } for (int i = 0; i < SingleChainRoomCount + 1; i++) { m_cachedNodes_02.Add(ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL)); m_cachedNodes_03.Add(ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL)); } m_cachedNodes_01[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_01[LoopRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_02[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_02[SingleChainRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_03[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_03[SingleChainRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_04[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_04[LoopRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; bool bossShuffle = BraveUtility.RandomBool(); m_CachedFlow.name = "Custom_GlitchChestAlt_Flow"; m_CachedFlow.fallbackRoomTable = ExpandPrefabs.CustomRoomTable2; m_CachedFlow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>() { ExpandDungeonFlow.BaseSubTypeRestrictions }; m_CachedFlow.flowInjectionData = new List <ProceduralFlowModifierData>(0); m_CachedFlow.sharedInjectionData = new List <SharedInjectionData>() { ExpandDungeonFlow.BaseSharedInjectionData }; m_CachedFlow.Initialize(); // Hub area m_CachedFlow.AddNodeToFlow(m_HubNode, null); // Big Entrance with first loop. m_CachedFlow.AddNodeToFlow(m_EntranceNode, m_HubNode); m_CachedFlow.AddNodeToFlow(m_cachedNodes_01[0], m_HubNode); for (int i = 1; i < LoopRoomCount + 1; i++) { m_CachedFlow.AddNodeToFlow(m_cachedNodes_01[i], m_cachedNodes_01[i - 1]); } m_CachedFlow.AddNodeToFlow(m_ShopNode_01, m_cachedNodes_01[LoopRoomCount]); m_CachedFlow.AddNodeToFlow(m_ChestRoom_01, m_ShopNode_01); m_CachedFlow.LoopConnectNodes(m_HubNode, m_ChestRoom_01); // Maybe boss path. :P m_CachedFlow.AddNodeToFlow(m_cachedNodes_02[0], m_HubNode); for (int i = 1; i < SingleChainRoomCount + 1; i++) { m_CachedFlow.AddNodeToFlow(m_cachedNodes_02[i], m_cachedNodes_02[i - 1]); } m_CachedFlow.AddNodeToFlow(m_ChestRoom_02, m_cachedNodes_02[SingleChainRoomCount]); if (bossShuffle) { m_CachedFlow.AddNodeToFlow(m_BossFoyerNode, m_ChestRoom_02); m_CachedFlow.AddNodeToFlow(m_BossNode, m_BossFoyerNode); m_CachedFlow.AddNodeToFlow(m_ExitNode, m_BossNode); } else { m_CachedFlow.AddNodeToFlow(m_FakeBossFoyerNode, m_ChestRoom_02); m_CachedFlow.AddNodeToFlow(m_FakeBossNode, m_FakeBossFoyerNode); } // Maybe boss path. :P m_CachedFlow.AddNodeToFlow(m_cachedNodes_03[0], m_EntranceNode); for (int i = 1; i < SingleChainRoomCount + 1; i++) { m_CachedFlow.AddNodeToFlow(m_cachedNodes_03[i], m_cachedNodes_03[i - 1]); } m_CachedFlow.AddNodeToFlow(m_ChestRoom_03, m_cachedNodes_03[SingleChainRoomCount]); if (bossShuffle) { m_CachedFlow.AddNodeToFlow(m_FakeBossFoyerNode, m_ChestRoom_03); m_CachedFlow.AddNodeToFlow(m_FakeBossNode, m_FakeBossFoyerNode); } else { m_CachedFlow.AddNodeToFlow(m_BossFoyerNode, m_ChestRoom_03); m_CachedFlow.AddNodeToFlow(m_BossNode, m_BossFoyerNode); m_CachedFlow.AddNodeToFlow(m_ExitNode, m_BossNode); } // Second Loop m_CachedFlow.AddNodeToFlow(m_cachedNodes_04[0], m_EntranceNode); for (int i = 1; i < LoopRoomCount + 1; i++) { m_CachedFlow.AddNodeToFlow(m_cachedNodes_04[i], m_cachedNodes_04[i - 1]); } m_CachedFlow.AddNodeToFlow(m_ChestRoom_04, m_cachedNodes_04[LoopRoomCount]); m_CachedFlow.LoopConnectNodes(m_ChestRoom_04, m_EntranceNode); m_CachedFlow.FirstNode = m_HubNode; return(m_CachedFlow); }
public static DungeonFlow F4c_West_Flow_01() { DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance <DungeonFlow>(); m_CachedFlow.name = "F4c_West_Flow_01"; m_CachedFlow.fallbackRoomTable = ExpandPrefabs.CustomRoomTableSecretGlitchFloor; m_CachedFlow.phantomRoomTable = null; m_CachedFlow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>(0); m_CachedFlow.flowInjectionData = new List <ProceduralFlowModifierData>(0); m_CachedFlow.sharedInjectionData = new List <SharedInjectionData>() { ExpandDungeonFlow.CustomSecretFloorSharedInjectionData }; m_CachedFlow.Initialize(); DungeonFlowNode entranceNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ExpandRoomPrefabs.Expand_West_Entrance); DungeonFlowNode exitNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandRoomPrefabs.SecretExitRoom); DungeonFlowNode fakebossFoyerNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.boss_foyertable); DungeonFlowNode fakebossNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandRoomPrefabs.FakeBossRoom); DungeonFlowNode westBossfoyerNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.boss_foyertable); DungeonFlowNode westBossNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandRoomPrefabs.Expand_West_WestBrosBossRoom); DungeonFlowNode WestWinchesterNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); List <PrototypeDungeonRoom> m_WinchesterRoomList = new List <PrototypeDungeonRoom>(); foreach (WeightedRoom weightedRoom in ExpandPrefabs.winchesterroomtable.includedRooms.elements) { if (weightedRoom.room != null) { m_WinchesterRoomList.Add(weightedRoom.room); } } if (m_WinchesterRoomList.Count > 0) { m_WinchesterRoomList = m_WinchesterRoomList.Shuffle(); WestWinchesterNode.overrideExactRoom = BraveUtility.RandomElement(m_WinchesterRoomList); } DungeonFlowNode WestGunMuncherNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, ExpandPrefabs.subshop_muncher_01); DungeonFlowNode WestShopNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.shop_room_table); DungeonFlowNode WestShopBackRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_SecretShopWarp, handlesOwnWarping: false); DungeonFlowNode WestChestRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.REWARD, ExpandRoomPrefabs.Expand_West_ChestRoom); DungeonFlowNode WestChestRoom_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.REWARD, ExpandRoomPrefabs.Expand_West_ChestRoom); DungeonFlowNode WestSecretRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET, ExpandRoomPrefabs.Expand_West_SecretKeyShop); DungeonFlowNode WestSecretSpacerRoom_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET, ExpandRoomPrefabs.Expand_TinySecretEmpty); DungeonFlowNode WestSecretWarp_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_West_SecretWarp, handlesOwnWarping: false); DungeonFlowNode WestSecretHub_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB, ExpandRoomPrefabs.Expand_West_SecretHub, isWarpWingNode: true, handlesOwnWarping: false); DungeonFlowNode WestSecretHub_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB, ExpandRoomPrefabs.Expand_West_SecretHub2, isWarpWingNode: true, handlesOwnWarping: false); DungeonFlowNode WestRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestTinyCanyonRoomTable); DungeonFlowNode WestRoom_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestCanyonRoomTable); DungeonFlowNode WestRoom_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestTinyCanyonRoomTable); DungeonFlowNode WestRoom_04 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestTinyCanyonRoomTable); DungeonFlowNode WestRoom_05 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestTinyCanyonRoomTable); DungeonFlowNode WestRoom_06 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestTinyCanyonRoomTable); DungeonFlowNode WestRoom_07 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestTinyCanyonRoomTable); DungeonFlowNode WestRoom_08 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestCanyonRoomTable); DungeonFlowNode WestRoom_09 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestTinyCanyonRoomTable); DungeonFlowNode WestRoom_10 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestCanyonRoomTable); DungeonFlowNode WestRoom_11 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestTinyCanyonRoomTable); DungeonFlowNode WestRoom_12 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestTinyCanyonRoomTable); DungeonFlowNode WestRoom_13 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestInterior1RoomTable); DungeonFlowNode WestRoom_14 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestInterior1RoomTable); DungeonFlowNode WestRoom_15 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestInterior1RoomTable); DungeonFlowNode WestRoom_16 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.WestInterior1RoomTable); DungeonFlowNode MinibossRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.MegaMiniBossRoomTable); DungeonFlowNode ChallengeShrineRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.MegaChallengeShrineTable); DungeonFlowNode ShrineRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, ExpandRoomPrefabs.Expand_West_ShrineRoom); ShrineRoom_01.forcedDoorType = DungeonFlowNode.ForcedDoorType.LOCKED; DungeonFlowNode SpecialRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.basic_special_rooms_noBlackMarket); DungeonFlowNode BlankRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_BlankPedestalRoom); DungeonFlowNode BlankRoom_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_BlankPedestalRoom); DungeonFlowNode RatKeyRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_RatKeyPedestalRoom); DungeonFlowNode RatKeyRoom_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_RatKeyPedestalRoom); DungeonFlowNode SecretRatKeyRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET, ExpandRoomPrefabs.Expand_West_SecretRatKeyPedestalRoom); DungeonFlowNode SecretRatKeyRoom_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET, ExpandRoomPrefabs.Expand_West_SecretRatKeyPedestalRoom); DungeonFlowNode PuzzleRoom_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.PuzzleRoom1); DungeonFlowNode PuzzleRoom_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.PuzzleRoom2); DungeonFlowNode PuzzleRoom_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.PuzzleRoom3); DungeonFlowNode m_SpecialRewardNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.SecretRewardRoom); DungeonFlowNode m_SecretBossNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandRoomPrefabs.GungeoneerMimicBossRoom); DungeonFlowNode m_SecretBossFoyerNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, ExpandPrefabs.DragunBossFoyerRoom); // DungeonFlowNode m_SecretBossFoyerNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.boss_foyertable); DungeonFlowNode m_SecretBossExitNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_West_RatKeyPedestalRoom); // DungeonFlowNode m_SecretBossExitNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandPrefabs.DraGunExitRoom); // DungeonFlowNode m_SecretBossEndTimesNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandPrefabs.DraGunEndTimesRoom, isWarpWingNode: true); // DungeonFlowNode m_SecretBossShopNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, ExpandPrefabs.BlacksmithShop); m_CachedFlow.AddNodeToFlow(entranceNode, null); m_CachedFlow.AddNodeToFlow(WestRoom_01, entranceNode); m_CachedFlow.AddNodeToFlow(WestRoom_03, entranceNode); m_CachedFlow.AddNodeToFlow(WestRoom_04, entranceNode); m_CachedFlow.AddNodeToFlow(WestRoom_05, entranceNode); m_CachedFlow.AddNodeToFlow(WestRoom_06, entranceNode); m_CachedFlow.AddNodeToFlow(WestRoom_07, entranceNode); m_CachedFlow.AddNodeToFlow(WestRoom_09, entranceNode); m_CachedFlow.AddNodeToFlow(WestRoom_11, entranceNode); m_CachedFlow.AddNodeToFlow(WestRoom_12, entranceNode); m_CachedFlow.AddNodeToFlow(WestGunMuncherNode, WestRoom_03); m_CachedFlow.AddNodeToFlow(WestWinchesterNode, WestRoom_11); m_CachedFlow.AddNodeToFlow(WestRoom_08, WestRoom_07); m_CachedFlow.AddNodeToFlow(BlankRoom_01, WestRoom_08); m_CachedFlow.AddNodeToFlow(BlankRoom_02, WestRoom_05); m_CachedFlow.AddNodeToFlow(WestChestRoom_01, WestRoom_01); m_CachedFlow.AddNodeToFlow(WestChestRoom_02, WestRoom_09); m_CachedFlow.AddNodeToFlow(WestSecretRoom_01, WestChestRoom_02); m_CachedFlow.AddNodeToFlow(WestSecretSpacerRoom_02, WestSecretRoom_01); m_CachedFlow.AddNodeToFlow(WestSecretWarp_01, WestSecretSpacerRoom_02); m_CachedFlow.AddNodeToFlow(WestSecretHub_01, WestSecretWarp_01); m_CachedFlow.AddNodeToFlow(SecretRatKeyRoom_01, WestSecretHub_01); m_CachedFlow.AddNodeToFlow(WestRoom_13, WestSecretHub_01); m_CachedFlow.AddNodeToFlow(ShrineRoom_01, WestRoom_13); m_CachedFlow.AddNodeToFlow(SpecialRoom_01, WestRoom_13); m_CachedFlow.AddNodeToFlow(ChallengeShrineRoom_01, WestSecretHub_01); m_CachedFlow.AddNodeToFlow(WestRoom_14, ChallengeShrineRoom_01); m_CachedFlow.AddNodeToFlow(WestRoom_15, WestRoom_14); m_CachedFlow.AddNodeToFlow(SecretRatKeyRoom_02, WestRoom_15); m_CachedFlow.AddNodeToFlow(WestRoom_16, WestRoom_14); m_CachedFlow.AddNodeToFlow(MinibossRoom_01, WestRoom_16); m_CachedFlow.AddNodeToFlow(RatKeyRoom_01, MinibossRoom_01); m_CachedFlow.AddNodeToFlow(WestShopNode, WestRoom_06); m_CachedFlow.AddNodeToFlow(WestShopBackRoom_01, WestShopNode); m_CachedFlow.AddNodeToFlow(WestSecretHub_02, WestShopBackRoom_01); m_CachedFlow.AddNodeToFlow(PuzzleRoom_01, WestSecretHub_02); m_CachedFlow.AddNodeToFlow(PuzzleRoom_02, WestSecretHub_02); m_CachedFlow.AddNodeToFlow(PuzzleRoom_03, WestSecretHub_02); m_CachedFlow.AddNodeToFlow(m_SpecialRewardNode, WestSecretHub_02); // m_CachedFlow.AddNodeToFlow(m_SecretBossShopNode, m_SpecialRewardNode); m_CachedFlow.AddNodeToFlow(m_SecretBossFoyerNode, m_SpecialRewardNode); // m_CachedFlow.AddNodeToFlow(m_SecretBossFoyerNode, m_SecretBossShopNode); m_CachedFlow.AddNodeToFlow(m_SecretBossNode, m_SecretBossFoyerNode); m_CachedFlow.AddNodeToFlow(m_SecretBossExitNode, m_SecretBossNode); // m_CachedFlow.AddNodeToFlow(m_SecretBossEndTimesNode, m_SecretBossExitNode); m_CachedFlow.AddNodeToFlow(WestRoom_02, WestRoom_12); m_CachedFlow.AddNodeToFlow(westBossfoyerNode, WestRoom_02); m_CachedFlow.AddNodeToFlow(westBossNode, westBossfoyerNode); m_CachedFlow.AddNodeToFlow(exitNode, westBossNode); m_CachedFlow.AddNodeToFlow(WestRoom_10, WestRoom_04); m_CachedFlow.AddNodeToFlow(fakebossFoyerNode, WestRoom_10); m_CachedFlow.AddNodeToFlow(fakebossNode, fakebossFoyerNode); m_CachedFlow.AddNodeToFlow(RatKeyRoom_02, fakebossNode); m_CachedFlow.FirstNode = entranceNode; return(m_CachedFlow); }
public static DungeonFlow Test_CustomRoom_Flow() { DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance <DungeonFlow>(); DungeonFlowNode entranceNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ExpandPrefabs.elevator_entrance); DungeonFlowNode exitNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandRoomPrefabs.SecretExitRoom); DungeonFlowNode bossfoyerNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.boss_foyertable); DungeonFlowNode bossNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandRoomPrefabs.Expand_West_WestBrosBossRoom); DungeonFlowNode TestRoomNode_0 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_Apache_RickRollChest); DungeonFlowNode TestRoomNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_Apache_SurpriseChest); DungeonFlowNode TestShopNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, ExpandPrefabs.shop02.category, overrideTable: ExpandPrefabs.shop_room_table); DungeonFlowNode TestRewardNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.gungeon_rewardroom_1); DungeonFlowNode TestSecretRoomNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET, ExpandRoomPrefabs.Expand_GlitchedSecret); DungeonFlowNode testConnectorNode01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_BootlegRoom); DungeonFlowNode TestRoomNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_Apache_RainbowRoom); DungeonFlowNode TestRoomNode_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.SecretRewardRoom); // DungeonFlowNode SecondSecretRoom = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET, ExpandRoomPrefabs.Secret_Expand_logo); /*foreach (PrototypeDungeonRoom room in ExpandRoomPrefabs.Expand_Jungle_Rooms) { * if (room.name == "Expand_Forest_Mixed22") { * TestRoomNode_02.overrideExactRoom = room; * break; * } * }*/ m_CachedFlow.name = "Test_CustomRoom_Flow"; m_CachedFlow.fallbackRoomTable = null; m_CachedFlow.phantomRoomTable = null; m_CachedFlow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>(0); m_CachedFlow.flowInjectionData = new List <ProceduralFlowModifierData>(0); m_CachedFlow.sharedInjectionData = new List <SharedInjectionData>(0); m_CachedFlow.sharedInjectionData.Add(ExpandDungeonFlow.HollowsInjectionData); m_CachedFlow.Initialize(); m_CachedFlow.AddNodeToFlow(entranceNode, null); m_CachedFlow.AddNodeToFlow(TestRoomNode_01, entranceNode); m_CachedFlow.AddNodeToFlow(TestRoomNode_0, entranceNode); m_CachedFlow.AddNodeToFlow(TestRewardNode, TestRoomNode_01); m_CachedFlow.AddNodeToFlow(TestSecretRoomNode, TestRewardNode); m_CachedFlow.AddNodeToFlow(TestShopNode, TestRoomNode_01); m_CachedFlow.AddNodeToFlow(bossfoyerNode, TestShopNode); m_CachedFlow.AddNodeToFlow(bossNode, bossfoyerNode); m_CachedFlow.AddNodeToFlow(exitNode, bossNode); // m_CachedFlow.AddNodeToFlow(SecondSecretRoom, TestShopNode); m_CachedFlow.AddNodeToFlow(testConnectorNode01, TestRoomNode_01); m_CachedFlow.AddNodeToFlow(TestRoomNode_02, testConnectorNode01); m_CachedFlow.AddNodeToFlow(TestRoomNode_03, TestRoomNode_02); m_CachedFlow.FirstNode = entranceNode; return(m_CachedFlow); }
public static DungeonFlow Really_Big_Flow() { DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance <DungeonFlow>(); DungeonFlowSubtypeRestriction TestSubTypeRestriction = new DungeonFlowSubtypeRestriction() { baseCategoryRestriction = PrototypeDungeonRoom.RoomCategory.NORMAL, normalSubcategoryRestriction = PrototypeDungeonRoom.RoomNormalSubCategory.TRAP, bossSubcategoryRestriction = PrototypeDungeonRoom.RoomBossSubCategory.FLOOR_BOSS, specialSubcategoryRestriction = PrototypeDungeonRoom.RoomSpecialSubCategory.UNSPECIFIED_SPECIAL, secretSubcategoryRestriction = PrototypeDungeonRoom.RoomSecretSubCategory.UNSPECIFIED_SECRET, maximumRoomsOfSubtype = 1 }; DungeonFlowNode EntranceNode = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.ENTRANCE, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.big_entrance, overrideRoomTable = null, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", chainRules = new List <ChainRule>(0), minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = false, guidAsString = Guid.NewGuid().ToString(), }; DungeonFlowNode BossFoyerNode = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.DragunBossFoyerRoom, overrideRoomTable = null, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", chainRules = new List <ChainRule>(0), minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = false, guidAsString = Guid.NewGuid().ToString(), }; DungeonFlowNode BossNode = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.BOSS, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.DraGunRoom01, overrideRoomTable = null, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", chainRules = new List <ChainRule>(0), minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = false, guidAsString = Guid.NewGuid().ToString(), }; DungeonFlowNode BossExitNode = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.EXIT, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.DraGunExitRoom, overrideRoomTable = null, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", chainRules = new List <ChainRule>(0), minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = false, guidAsString = Guid.NewGuid().ToString(), }; DungeonFlowNode BossEndTimesNode = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.EXIT, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.DraGunEndTimesRoom, overrideRoomTable = null, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = true, handlesOwnWarping = true, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", chainRules = new List <ChainRule>(0), minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = false, guidAsString = Guid.NewGuid().ToString(), }; DungeonFlowNode FirstShopNode = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.BlacksmithShop, overrideRoomTable = null, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", chainRules = new List <ChainRule>(0), minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = false, guidAsString = Guid.NewGuid().ToString(), }; DungeonFlowNode SecondShopNode = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.SPECIAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = null, overrideRoomTable = ExpandPrefabs.shop_room_table, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", chainRules = new List <ChainRule>(0), minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = false, guidAsString = Guid.NewGuid().ToString(), }; DungeonFlowNode MiniBossFoyerNode = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.DragunBossFoyerRoom, overrideRoomTable = null, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", chainRules = new List <ChainRule>(0), minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = false, guidAsString = Guid.NewGuid().ToString(), }; DungeonFlowNode FakebossNode = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.tutorial_fakeboss, overrideRoomTable = null, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", chainRules = new List <ChainRule>(0), minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = false, guidAsString = Guid.NewGuid().ToString(), }; List <DungeonFlowNode> ConnectorNodes = new List <DungeonFlowNode>(); List <DungeonFlowNode> NormalNodes = new List <DungeonFlowNode>(); List <DungeonFlowNode> ChestNodes = new List <DungeonFlowNode>(); for (int i = 0; i < 11; i++) { ConnectorNodes.Add(ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR)); } for (int i = 0; i < 89; i++) { NormalNodes.Add(ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL)); } ChestNodes.Add(ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.REWARD, ExpandPrefabs.reward_room)); ChestNodes.Add(ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.reward_room)); ChestNodes.Add(ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.reward_room)); ChestNodes.Add(ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.reward_room)); m_CachedFlow.name = "Really_Big_Flow"; m_CachedFlow.fallbackRoomTable = ExpandPrefabs.CustomRoomTable2; m_CachedFlow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>(0); // { TestSubTypeRestriction }; m_CachedFlow.flowInjectionData = new List <ProceduralFlowModifierData>(0); m_CachedFlow.sharedInjectionData = new List <SharedInjectionData>(0); // { ChaosDungeonFlows.BaseSharedInjectionData }; m_CachedFlow.Initialize(); m_CachedFlow.AddNodeToFlow(EntranceNode, null); m_CachedFlow.AddNodeToFlow(ConnectorNodes[10], EntranceNode); m_CachedFlow.AddNodeToFlow(FirstShopNode, ConnectorNodes[10]); m_CachedFlow.AddNodeToFlow(NormalNodes[88], ConnectorNodes[10]); // First chain of 25 nodes starting at 99 and moving down m_CachedFlow.AddNodeToFlow(NormalNodes[87], NormalNodes[88]); m_CachedFlow.AddNodeToFlow(NormalNodes[86], NormalNodes[87]); m_CachedFlow.AddNodeToFlow(NormalNodes[85], NormalNodes[86]); m_CachedFlow.AddNodeToFlow(NormalNodes[84], NormalNodes[85]); m_CachedFlow.AddNodeToFlow(NormalNodes[83], NormalNodes[84]); m_CachedFlow.AddNodeToFlow(NormalNodes[82], NormalNodes[83]); m_CachedFlow.AddNodeToFlow(NormalNodes[81], NormalNodes[82]); m_CachedFlow.AddNodeToFlow(NormalNodes[80], NormalNodes[81]); m_CachedFlow.AddNodeToFlow(NormalNodes[79], NormalNodes[80]); m_CachedFlow.AddNodeToFlow(NormalNodes[78], NormalNodes[79]); m_CachedFlow.AddNodeToFlow(NormalNodes[77], NormalNodes[78]); m_CachedFlow.AddNodeToFlow(NormalNodes[76], NormalNodes[77]); m_CachedFlow.AddNodeToFlow(NormalNodes[75], NormalNodes[76]); // Chest 1 m_CachedFlow.AddNodeToFlow(ChestNodes[0], NormalNodes[75]); //Start of Second Chain ConnectorNodes[9].roomCategory = PrototypeDungeonRoom.RoomCategory.HUB; m_CachedFlow.AddNodeToFlow(ConnectorNodes[9], NormalNodes[75]); m_CachedFlow.AddNodeToFlow(NormalNodes[74], ConnectorNodes[9]); m_CachedFlow.AddNodeToFlow(NormalNodes[73], NormalNodes[74]); m_CachedFlow.AddNodeToFlow(NormalNodes[72], NormalNodes[73]); m_CachedFlow.AddNodeToFlow(NormalNodes[71], NormalNodes[72]); m_CachedFlow.AddNodeToFlow(NormalNodes[70], NormalNodes[71]); m_CachedFlow.AddNodeToFlow(NormalNodes[69], NormalNodes[70]); m_CachedFlow.AddNodeToFlow(NormalNodes[68], NormalNodes[69]); m_CachedFlow.AddNodeToFlow(NormalNodes[67], NormalNodes[68]); m_CachedFlow.AddNodeToFlow(NormalNodes[66], NormalNodes[67]); m_CachedFlow.AddNodeToFlow(NormalNodes[65], NormalNodes[66]); m_CachedFlow.AddNodeToFlow(NormalNodes[64], NormalNodes[65]); m_CachedFlow.AddNodeToFlow(NormalNodes[63], NormalNodes[64]); m_CachedFlow.AddNodeToFlow(NormalNodes[62], NormalNodes[63]); m_CachedFlow.AddNodeToFlow(NormalNodes[61], NormalNodes[62]); m_CachedFlow.AddNodeToFlow(NormalNodes[60], NormalNodes[61]); m_CachedFlow.AddNodeToFlow(NormalNodes[59], NormalNodes[60]); m_CachedFlow.AddNodeToFlow(NormalNodes[58], NormalNodes[59]); m_CachedFlow.AddNodeToFlow(NormalNodes[57], NormalNodes[58]); m_CachedFlow.AddNodeToFlow(NormalNodes[56], NormalNodes[57]); m_CachedFlow.AddNodeToFlow(NormalNodes[55], NormalNodes[56]); m_CachedFlow.AddNodeToFlow(NormalNodes[54], NormalNodes[55]); m_CachedFlow.AddNodeToFlow(NormalNodes[53], NormalNodes[54]); m_CachedFlow.AddNodeToFlow(NormalNodes[52], NormalNodes[53]); m_CachedFlow.AddNodeToFlow(NormalNodes[51], NormalNodes[52]); m_CachedFlow.AddNodeToFlow(NormalNodes[50], NormalNodes[51]); // Chest 2 m_CachedFlow.AddNodeToFlow(ChestNodes[1], NormalNodes[50]); m_CachedFlow.AddNodeToFlow(SecondShopNode, ChestNodes[1]); //Start of Third Chain m_CachedFlow.AddNodeToFlow(NormalNodes[49], ConnectorNodes[9]); m_CachedFlow.AddNodeToFlow(NormalNodes[48], NormalNodes[49]); m_CachedFlow.AddNodeToFlow(NormalNodes[47], NormalNodes[48]); m_CachedFlow.AddNodeToFlow(NormalNodes[46], NormalNodes[47]); m_CachedFlow.AddNodeToFlow(NormalNodes[45], NormalNodes[46]); m_CachedFlow.AddNodeToFlow(NormalNodes[44], NormalNodes[45]); m_CachedFlow.AddNodeToFlow(NormalNodes[43], NormalNodes[44]); m_CachedFlow.AddNodeToFlow(NormalNodes[42], NormalNodes[43]); m_CachedFlow.AddNodeToFlow(NormalNodes[41], NormalNodes[42]); m_CachedFlow.AddNodeToFlow(NormalNodes[40], NormalNodes[41]); m_CachedFlow.AddNodeToFlow(NormalNodes[39], NormalNodes[40]); m_CachedFlow.AddNodeToFlow(NormalNodes[38], NormalNodes[39]); m_CachedFlow.AddNodeToFlow(NormalNodes[37], NormalNodes[38]); m_CachedFlow.AddNodeToFlow(NormalNodes[36], NormalNodes[37]); m_CachedFlow.AddNodeToFlow(NormalNodes[35], NormalNodes[36]); m_CachedFlow.AddNodeToFlow(NormalNodes[34], NormalNodes[35]); m_CachedFlow.AddNodeToFlow(NormalNodes[33], NormalNodes[34]); m_CachedFlow.AddNodeToFlow(NormalNodes[32], NormalNodes[33]); m_CachedFlow.AddNodeToFlow(NormalNodes[31], NormalNodes[32]); m_CachedFlow.AddNodeToFlow(NormalNodes[30], NormalNodes[31]); m_CachedFlow.AddNodeToFlow(NormalNodes[29], NormalNodes[30]); m_CachedFlow.AddNodeToFlow(NormalNodes[28], NormalNodes[29]); m_CachedFlow.AddNodeToFlow(NormalNodes[27], NormalNodes[28]); m_CachedFlow.AddNodeToFlow(NormalNodes[26], NormalNodes[27]); m_CachedFlow.AddNodeToFlow(NormalNodes[25], NormalNodes[26]); // Chest 3 m_CachedFlow.AddNodeToFlow(ChestNodes[2], NormalNodes[25]); m_CachedFlow.AddNodeToFlow(MiniBossFoyerNode, ChestNodes[2]); m_CachedFlow.AddNodeToFlow(FakebossNode, MiniBossFoyerNode); //Start of Fourth Chain m_CachedFlow.AddNodeToFlow(NormalNodes[24], ConnectorNodes[9]); m_CachedFlow.AddNodeToFlow(NormalNodes[23], NormalNodes[24]); m_CachedFlow.AddNodeToFlow(NormalNodes[22], NormalNodes[23]); m_CachedFlow.AddNodeToFlow(NormalNodes[21], NormalNodes[22]); m_CachedFlow.AddNodeToFlow(NormalNodes[20], NormalNodes[21]); m_CachedFlow.AddNodeToFlow(NormalNodes[19], NormalNodes[20]); m_CachedFlow.AddNodeToFlow(NormalNodes[18], NormalNodes[19]); m_CachedFlow.AddNodeToFlow(NormalNodes[17], NormalNodes[18]); m_CachedFlow.AddNodeToFlow(NormalNodes[16], NormalNodes[17]); m_CachedFlow.AddNodeToFlow(NormalNodes[15], NormalNodes[16]); m_CachedFlow.AddNodeToFlow(NormalNodes[14], NormalNodes[15]); m_CachedFlow.AddNodeToFlow(NormalNodes[13], NormalNodes[14]); m_CachedFlow.AddNodeToFlow(NormalNodes[12], NormalNodes[13]); m_CachedFlow.AddNodeToFlow(NormalNodes[11], NormalNodes[12]); m_CachedFlow.AddNodeToFlow(NormalNodes[10], NormalNodes[11]); m_CachedFlow.AddNodeToFlow(NormalNodes[9], NormalNodes[10]); m_CachedFlow.AddNodeToFlow(NormalNodes[8], NormalNodes[9]); m_CachedFlow.AddNodeToFlow(NormalNodes[7], NormalNodes[8]); m_CachedFlow.AddNodeToFlow(NormalNodes[6], NormalNodes[7]); m_CachedFlow.AddNodeToFlow(NormalNodes[5], NormalNodes[6]); m_CachedFlow.AddNodeToFlow(NormalNodes[4], NormalNodes[5]); m_CachedFlow.AddNodeToFlow(NormalNodes[3], NormalNodes[4]); m_CachedFlow.AddNodeToFlow(NormalNodes[2], NormalNodes[3]); m_CachedFlow.AddNodeToFlow(NormalNodes[1], NormalNodes[2]); m_CachedFlow.AddNodeToFlow(NormalNodes[0], NormalNodes[1]); // Chest 4 m_CachedFlow.AddNodeToFlow(ChestNodes[3], NormalNodes[0]); // Boss m_CachedFlow.AddNodeToFlow(BossFoyerNode, ChestNodes[3]); m_CachedFlow.AddNodeToFlow(BossNode, BossFoyerNode); m_CachedFlow.AddNodeToFlow(BossExitNode, BossNode); m_CachedFlow.AddNodeToFlow(BossEndTimesNode, BossExitNode); // m_CachedFlow.LoopConnectNodes(ComplexFlowNode_05, ComplexFlowNode_09); m_CachedFlow.FirstNode = EntranceNode; return(m_CachedFlow); }
public static DungeonFlow F2b_Belly_Flow_01() { DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance <DungeonFlow>(); if (!ExpandDungeonFlow.BellyInjectionData) { ExpandDungeonFlow.BellyInjectionData = ScriptableObject.CreateInstance <SharedInjectionData>(); ExpandDungeonFlow.BellyInjectionData.name = "Belly Common Injection Data"; ExpandDungeonFlow.BellyInjectionData.UseInvalidWeightAsNoInjection = true; ExpandDungeonFlow.BellyInjectionData.PreventInjectionOfFailedPrerequisites = false; ExpandDungeonFlow.BellyInjectionData.IsNPCCell = false; ExpandDungeonFlow.BellyInjectionData.IgnoreUnmetPrerequisiteEntries = false; ExpandDungeonFlow.BellyInjectionData.OnlyOne = false; ExpandDungeonFlow.BellyInjectionData.ChanceToSpawnOne = 0.5f; ExpandDungeonFlow.BellyInjectionData.AttachedInjectionData = new List <SharedInjectionData>(0); ExpandDungeonFlow.BellyInjectionData.InjectionData = new List <ProceduralFlowModifierData>(0); } DungeonFlowNode entranceNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ExpandRoomPrefabs.Expand_Belly_Entrance); DungeonFlowNode exitNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandRoomPrefabs.Expand_Belly_ExitHub); DungeonFlowNode exitNode2 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_Belly_RealExit); DungeonFlowNode bossfoyerNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.boss_foyertable); DungeonFlowNode bossNode = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandRoomPrefabs.Expand_Belly_BossRoom); DungeonFlowNode BellyRewardNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.gungeon_rewardroom_1); DungeonFlowNode BellyRewardNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.gungeon_rewardroom_1); DungeonFlowNode BellyRewardNode_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_Belly_Reward); DungeonFlowNode BellyShrineNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_Belly_Shrine); DungeonFlowNode BellyRoomConnectorNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR); DungeonFlowNode BellyRoomConnectorNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB); DungeonFlowNode BellyRoomNode_01 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_02 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_03 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_04 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_05 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_06 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_07 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_10 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_11 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_12 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_13 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_14 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_15 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_16 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode BellyRoomNode_17 = ExpandDungeonFlow.GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); m_CachedFlow.name = "F2b_Belly_Flow_01"; m_CachedFlow.fallbackRoomTable = ExpandPrefabs.BellyRoomTable; m_CachedFlow.phantomRoomTable = null; m_CachedFlow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>() { ExpandDungeonFlow.BaseSubTypeRestrictions }; m_CachedFlow.flowInjectionData = new List <ProceduralFlowModifierData>(0); m_CachedFlow.sharedInjectionData = new List <SharedInjectionData>() { ExpandDungeonFlow.BaseSharedInjectionData /*, ExpandDungeonFlow.BellyInjectionData*/ }; m_CachedFlow.Initialize(); m_CachedFlow.AddNodeToFlow(entranceNode, null); m_CachedFlow.AddNodeToFlow(BellyRoomNode_01, entranceNode); m_CachedFlow.AddNodeToFlow(BellyRoomNode_02, BellyRoomNode_01); m_CachedFlow.AddNodeToFlow(BellyRoomNode_03, BellyRoomNode_02); m_CachedFlow.AddNodeToFlow(BellyRoomConnectorNode_01, BellyRoomNode_03); m_CachedFlow.AddNodeToFlow(BellyRoomNode_04, BellyRoomConnectorNode_01); m_CachedFlow.AddNodeToFlow(BellyRoomNode_05, BellyRoomConnectorNode_01); m_CachedFlow.AddNodeToFlow(BellyRewardNode_01, BellyRoomNode_05); m_CachedFlow.AddNodeToFlow(BellyRoomNode_06, BellyRoomConnectorNode_01); m_CachedFlow.AddNodeToFlow(BellyRoomNode_07, BellyRoomNode_06); m_CachedFlow.AddNodeToFlow(BellyRoomNode_10, BellyRoomNode_07); m_CachedFlow.AddNodeToFlow(BellyRoomNode_11, BellyRoomNode_10); m_CachedFlow.AddNodeToFlow(BellyRoomConnectorNode_02, BellyRoomNode_11); m_CachedFlow.AddNodeToFlow(BellyRoomNode_12, BellyRoomConnectorNode_02); m_CachedFlow.AddNodeToFlow(BellyRoomNode_13, BellyRoomConnectorNode_02); m_CachedFlow.AddNodeToFlow(BellyRewardNode_02, BellyRoomNode_13); m_CachedFlow.AddNodeToFlow(BellyRoomNode_14, BellyRoomConnectorNode_02); m_CachedFlow.AddNodeToFlow(BellyRoomNode_15, BellyRoomConnectorNode_02); m_CachedFlow.AddNodeToFlow(BellyRoomNode_16, BellyRoomNode_15); m_CachedFlow.AddNodeToFlow(BellyRoomNode_17, BellyRoomNode_16); m_CachedFlow.AddNodeToFlow(bossfoyerNode, BellyRoomNode_17); m_CachedFlow.AddNodeToFlow(bossNode, bossfoyerNode); m_CachedFlow.AddNodeToFlow(exitNode, bossNode); m_CachedFlow.AddNodeToFlow(BellyRewardNode_03, exitNode); m_CachedFlow.AddNodeToFlow(BellyShrineNode_01, exitNode); m_CachedFlow.AddNodeToFlow(exitNode2, exitNode); m_CachedFlow.FirstNode = entranceNode; return(m_CachedFlow); }