// Token: 0x06000053 RID: 83 RVA: 0x000055AC File Offset: 0x000037AC public static DungeonFlow CreateDebugFlow(Dungeon dungeon) { DungeonFlow dungeonFlow = SampleFlow.CreateEntranceExitFlow(dungeon); dungeonFlow.name = "debug_flow"; DungeonFlowNode dungeonFlowNode = new DungeonFlowNode(dungeonFlow) { overrideExactRoom = RoomFactory.CreateEmptyRoom(12, 12) }; DungeonFlowNode parent = dungeonFlowNode; dungeonFlow.AddNodeToFlow(dungeonFlowNode, dungeonFlow.FirstNode); foreach (RoomFactory.RoomData roomData in RoomFactory.rooms.Values) { string str = "Adding room to flow: "; PrototypeDungeonRoom room = roomData.room; Tools.Log <string>(str + ((room != null) ? room.ToString() : null)); DungeonFlowNode dungeonFlowNode2 = new DungeonFlowNode(dungeonFlow) { overrideExactRoom = roomData.room }; dungeonFlow.AddNodeToFlow(dungeonFlowNode2, parent); dungeonFlowNode = new DungeonFlowNode(dungeonFlow) { overrideExactRoom = RoomFactory.CreateEmptyRoom(12, 12) }; dungeonFlow.AddNodeToFlow(dungeonFlowNode, dungeonFlowNode2); parent = dungeonFlowNode; } dungeon = null; return(dungeonFlow); }
public static DungeonFlow CreateRoomTypeSampleFlow(Dungeon dungeon) { var flow = CreateNewFlow(dungeon); flow.name = "type_sample_flow"; var entrance = NodeFromAssetName(flow, "elevator entrance"); flow.FirstNode = entrance; flow.AddNodeToFlow(entrance, null); //one room for each visual definition DungeonFlowNode lastNode = flow.FirstNode; Tools.Print(dungeon.roomMaterialDefinitions?.Length); for (int i = 0; i < dungeon.roomMaterialDefinitions.Length; i++) { if (dungeon.name == OfficialFlows.dungeonPrefabNames[3] && i == 5) { continue; } var room = RoomFactory.CreateEmptyRoom(14, 14); room.overrideRoomVisualType = i; var shrineNode = new DungeonFlowNode(flow) { overrideExactRoom = room }; flow.AddNodeToFlow(shrineNode, lastNode); lastNode = shrineNode; } //exit flow.AddNodeToFlow(NodeFromAssetName(flow, "exit_room_basic"), lastNode); dungeon = null; return(flow); }
public static DungeonFlow F1b_Hat_flow_01() { try { DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance<DungeonFlow>(); DungeonFlowNode entranceNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ModRoomPrefabs.Mod_Entrance_Room); DungeonFlowNode exitNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ModRoomPrefabs.Mod_Exit_Room); DungeonFlowNode HatRoomNode_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB); DungeonFlowNode HatRoomNode_02 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); m_CachedFlow.name = "F1b_FloorName_Flow_01"; m_CachedFlow.fallbackRoomTable = ModPrefabs.FloorNameRoomTable; m_CachedFlow.phantomRoomTable = null; m_CachedFlow.subtypeRestrictions = new List<DungeonFlowSubtypeRestriction>(0); m_CachedFlow.flowInjectionData = new List<ProceduralFlowModifierData>(0); m_CachedFlow.sharedInjectionData = new List<SharedInjectionData>() { BaseSharedInjectionData }; m_CachedFlow.Initialize(); m_CachedFlow.AddNodeToFlow(entranceNode, null); // First Looping branch m_CachedFlow.AddNodeToFlow(HatRoomNode_01, entranceNode); m_CachedFlow.AddNodeToFlow(HatRoomNode_02, HatRoomNode_01); m_CachedFlow.AddNodeToFlow(exitNode, HatRoomNode_02); m_CachedFlow.FirstNode = entranceNode; return m_CachedFlow; } catch (Exception e) { ETGModConsole.Log(e.ToString()); return null; } }
public static DungeonFlow CreateDebugFlow(Dungeon dungeon) { var flow = SampleFlow.CreateEntranceExitFlow(dungeon); flow.name = "debug_flow"; DungeonFlowNode customRoom, hub = new DungeonFlowNode(flow) { overrideExactRoom = RoomFactory.CreateEmptyRoom() }, lastNode = hub; flow.AddNodeToFlow(hub, flow.FirstNode); foreach (var room in RoomFactory.rooms.Values) { Tools.Log("Adding room to flow: " + room.room); customRoom = new DungeonFlowNode(flow) { overrideExactRoom = room.room }; flow.AddNodeToFlow(customRoom, lastNode); hub = new DungeonFlowNode(flow) { overrideExactRoom = RoomFactory.CreateEmptyRoom() }; flow.AddNodeToFlow(hub, customRoom); lastNode = hub; } dungeon = null; return(flow); }
public static DungeonFlow CreateBranchingThesisFlow(Dungeon dungeon) { DungeonFlow dungeonFlow = SampleFlow.CreateNewFlow(dungeon); dungeonFlow.name = "thesis_flow_branching"; DungeonFlowNode parent = null; if (Module.Debug) { parent = MakeNode(LoadRoom("lobby.room"), dungeonFlow); } else { parent = MakeNode(LoadRoom("lobby_.room"), dungeonFlow); } dungeonFlow.FirstNode = parent; dungeonFlow.AddNodeToFlow(parent, null); AppendBossRoom(dungeonFlow, parent); if (Module.Debug) { ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "a1_legendarychests.room"); } AppendBossRoom(dungeonFlow, parent); AppendBossRoom(dungeonFlow, parent); dungeon = null; return(dungeonFlow); }
// Token: 0x06000054 RID: 84 RVA: 0x000056A8 File Offset: 0x000038A8 public static DungeonFlow CreateRoomTypeSampleFlow(Dungeon dungeon) { DungeonFlow dungeonFlow = SampleFlow.CreateNewFlow(dungeon); dungeonFlow.name = "type_sample_flow"; DungeonFlowNode dungeonFlowNode = SampleFlow.NodeFromAssetName(dungeonFlow, "elevator entrance"); dungeonFlow.FirstNode = dungeonFlowNode; dungeonFlow.AddNodeToFlow(dungeonFlowNode, null); DungeonFlowNode parent = dungeonFlow.FirstNode; DungeonMaterial[] roomMaterialDefinitions = dungeon.roomMaterialDefinitions; Tools.Print <int?>((roomMaterialDefinitions != null) ? new int?(roomMaterialDefinitions.Length) : null, "FFFFFF", false); for (int i = 0; i < dungeon.roomMaterialDefinitions.Length; i++) { bool flag = dungeon.name == OfficialFlows.dungeonPrefabNames[3] && i == 5; if (!flag) { PrototypeDungeonRoom prototypeDungeonRoom = RoomFactory.CreateEmptyRoom(14, 14); prototypeDungeonRoom.overrideRoomVisualType = i; DungeonFlowNode dungeonFlowNode2 = new DungeonFlowNode(dungeonFlow) { overrideExactRoom = prototypeDungeonRoom }; dungeonFlow.AddNodeToFlow(dungeonFlowNode2, parent); parent = dungeonFlowNode2; } } dungeonFlow.AddNodeToFlow(SampleFlow.NodeFromAssetName(dungeonFlow, "exit_room_basic"), parent); dungeon = null; return(dungeonFlow); }
public static DungeonFlow CreateSequentialThesisFlow(Dungeon dungeon) { DungeonFlow dungeonFlow = CreateEntranceFlow(dungeon); dungeonFlow.name = "thesis_flow_sequential"; DungeonFlowNode parent = dungeonFlow.FirstNode; ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "a1_legendarychests.room"); parent = ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "b1_bossroom_gullA_test.room"); parent = ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "c1_bufferroom.room"); parent = ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "b1_bossroom_gullA_test.room"); parent = ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "c1_bufferroom.room"); parent = ThesisFloorGenerator.AppendRoom(dungeonFlow, parent, "b1_bossroom_gullA_test.room"); parent = ThesisFloorGenerator.AppendExitElevator(dungeonFlow, parent); dungeon = null; return(dungeonFlow); }
private static DungeonFlowNode AppendExitElevator(DungeonFlow dungeonFlow, DungeonFlowNode parentNode) { var dungeonFlowNode = SampleFlow.NodeFromAssetName(dungeonFlow, "exit_room_basic"); dungeonFlow.AddNodeToFlow(dungeonFlowNode, parentNode); return(dungeonFlowNode); }
private static void AppendBossRoom(DungeonFlow dungeonFlow, DungeonFlowNode parentNode) { DungeonFlowNode dungeonFlowNode = SampleFlow.NodeFromAssetName(dungeonFlow, "GatlingGullRoom02"); dungeonFlowNode.overrideExactRoom.subCategoryBoss = PrototypeDungeonRoom.RoomBossSubCategory.MINI_BOSS; dungeonFlow.AddNodeToFlow(dungeonFlowNode, parentNode); }
public static DungeonFlow Test_CustomRoom_Flow() { DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance <DungeonFlow>(); DungeonFlowNode entranceNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ExpandPrefabs.elevator_entrance); DungeonFlowNode exitNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandRoomPrefabs.SecretExitRoom); DungeonFlowNode bossfoyerNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.boss_foyertable); DungeonFlowNode bossNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandRoomPrefabs.Expand_Jungle_Boss); DungeonFlowNode TestRoomNode_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_Apache_RickRollChest); DungeonFlowNode TestShopNode = GenerateDefaultNode(m_CachedFlow, ExpandPrefabs.shop02.category, overrideTable: ExpandPrefabs.shop_room_table); DungeonFlowNode TestRewardNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.gungeon_rewardroom_1); DungeonFlowNode TestSecretRoomNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET, ExpandRoomPrefabs.Expand_GlitchedSecret); DungeonFlowNode testConnectorNode01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_BootlegRoom); DungeonFlowNode TestRoomNode_02 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.Expand_Apache_RainbowRoom); // DungeonFlowNode SecondSecretRoom = 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.Initialize(); m_CachedFlow.AddNodeToFlow(entranceNode, null); m_CachedFlow.AddNodeToFlow(TestRoomNode_01, entranceNode); m_CachedFlow.AddNodeToFlow(TestRewardNode, TestRoomNode_01); m_CachedFlow.AddNodeToFlow(TestSecretRoomNode, TestRewardNode); m_CachedFlow.AddNodeToFlow(TestShopNode, TestRoomNode_01); // m_CachedFlow.AddNodeToFlow(SecondSecretRoom, TestShopNode); m_CachedFlow.AddNodeToFlow(TestRoomNode_02, TestShopNode); m_CachedFlow.AddNodeToFlow(testConnectorNode01, TestRoomNode_01); m_CachedFlow.AddNodeToFlow(bossfoyerNode, testConnectorNode01); m_CachedFlow.AddNodeToFlow(bossNode, bossfoyerNode); m_CachedFlow.AddNodeToFlow(exitNode, bossNode); m_CachedFlow.FirstNode = entranceNode; return(m_CachedFlow); }
public static DungeonFlowNode MakeNode(PrototypeDungeonRoom room, DungeonFlow dungeonFlow) { DungeonFlowNode dungeonFlowNode = new DungeonFlowNode(dungeonFlow) { overrideExactRoom = room }; return(dungeonFlowNode); }
// Generate a DungeonFlowNode with a default configuration public static DungeonFlowNode GenerateDefaultNode(DungeonFlow targetflow, PrototypeDungeonRoom.RoomCategory roomType, PrototypeDungeonRoom overrideRoom = null, GenericRoomTable overrideTable = null, bool oneWayLoopTarget = false, bool isWarpWingNode = false, string nodeGUID = null, DungeonFlowNode.NodePriority priority = DungeonFlowNode.NodePriority.MANDATORY, float percentChance = 1, bool handlesOwnWarping = true) { try { if (string.IsNullOrEmpty(nodeGUID)) { nodeGUID = Guid.NewGuid().ToString(); } DungeonFlowNode m_CachedNode = new DungeonFlowNode(targetflow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = roomType, percentChance = percentChance, priority = priority, overrideExactRoom = overrideRoom, overrideRoomTable = overrideTable, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = isWarpWingNode, handlesOwnWarping = handlesOwnWarping, 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, guidAsString = nodeGUID, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = oneWayLoopTarget, flow = targetflow }; return(m_CachedNode); } catch (Exception e) { ETGModConsole.Log(e.ToString()); return(null); } }
private static DungeonFlow CreateEntranceFlow(Dungeon dungeon) { DungeonFlow dungeonFlow = SampleFlow.CreateNewFlow(dungeon); dungeonFlow.name = "entrance_flow"; DungeonFlowNode dungeonFlowNode = SampleFlow.NodeFromAssetName(dungeonFlow, "elevator entrance"); dungeonFlow.FirstNode = dungeonFlowNode; dungeonFlow.AddNodeToFlow(dungeonFlowNode, null); dungeon = null; return(dungeonFlow); }
// Token: 0x06000058 RID: 88 RVA: 0x00005900 File Offset: 0x00003B00 public static DungeonFlowNode NodeFromAssetName(DungeonFlow flow, string name) { DungeonFlowNode dungeonFlowNode = new DungeonFlowNode(flow); PrototypeDungeonRoom prototypeDungeonRoom = SampleFlow.RoomFromAssetName(name); bool flag = prototypeDungeonRoom == null; if (flag) { Tools.Print <string>("Error loading room " + name, "FF0000", false); } dungeonFlowNode.overrideExactRoom = prototypeDungeonRoom; return(dungeonFlowNode); }
// Token: 0x06000055 RID: 85 RVA: 0x000057A8 File Offset: 0x000039A8 public static DungeonFlow CreateEntranceExitFlow(Dungeon dungeon) { DungeonFlow dungeonFlow = SampleFlow.CreateNewFlow(dungeon); dungeonFlow.name = "entrance_exit_flow"; DungeonFlowNode dungeonFlowNode = SampleFlow.NodeFromAssetName(dungeonFlow, "elevator entrance"); dungeonFlow.FirstNode = dungeonFlowNode; dungeonFlow.AddNodeToFlow(dungeonFlowNode, null); dungeonFlow.AddNodeToFlow(SampleFlow.NodeFromAssetName(dungeonFlow, "exit_room_basic"), dungeonFlowNode); dungeon = null; return(dungeonFlow); }
// Generate a DungeonFlowNode with a default configuration public static DungeonFlowNode GenerateDefaultNode(DungeonFlow targetflow, PrototypeDungeonRoom.RoomCategory roomType, PrototypeDungeonRoom overrideRoom = null, GenericRoomTable overrideTable = null, bool oneWayLoopTarget = false, bool isWarpWingNode = false, string nodeGUID = null) { DungeonFlowNode m_CachedNode = new DungeonFlowNode(targetflow); m_CachedNode.isSubchainStandin = false; m_CachedNode.nodeType = DungeonFlowNode.ControlNodeType.ROOM; m_CachedNode.roomCategory = roomType; m_CachedNode.percentChance = 1f; m_CachedNode.priority = DungeonFlowNode.NodePriority.MANDATORY; m_CachedNode.overrideExactRoom = overrideRoom; m_CachedNode.overrideRoomTable = overrideTable; m_CachedNode.capSubchain = false; m_CachedNode.subchainIdentifier = string.Empty; m_CachedNode.limitedCopiesOfSubchain = false; m_CachedNode.maxCopiesOfSubchain = 1; m_CachedNode.subchainIdentifiers = new List <string>(0); m_CachedNode.receivesCaps = false; m_CachedNode.isWarpWingEntrance = isWarpWingNode; if (isWarpWingNode) { m_CachedNode.handlesOwnWarping = true; } else { m_CachedNode.handlesOwnWarping = false; } m_CachedNode.forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE; m_CachedNode.loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE; m_CachedNode.nodeExpands = false; m_CachedNode.initialChainPrototype = "n"; m_CachedNode.chainRules = new List <ChainRule>(0); m_CachedNode.minChainLength = 3; m_CachedNode.maxChainLength = 8; m_CachedNode.minChildrenToBuild = 1; m_CachedNode.maxChildrenToBuild = 1; m_CachedNode.canBuildDuplicateChildren = false; m_CachedNode.parentNodeGuid = string.Empty; m_CachedNode.childNodeGuids = new List <string>(0); m_CachedNode.loopTargetNodeGuid = string.Empty; m_CachedNode.loopTargetIsOneWay = oneWayLoopTarget; if (nodeGUID == null) { m_CachedNode.guidAsString = Guid.NewGuid().ToString(); } else { m_CachedNode.guidAsString = nodeGUID; } m_CachedNode.flow = targetflow; return(m_CachedNode); }
public static DungeonFlowNode NodeFromAssetName(DungeonFlow flow, string name) { DungeonFlowNode node = new DungeonFlowNode(flow); string asset = name; var room = RoomFromAssetName(name); if (room == null) { Tools.Print("Error loading room " + name, "FF0000"); } ; node.overrideExactRoom = room; return(node); }
private static DungeonFlowNode AppendRoom(DungeonFlow dungeonFlow, DungeonFlowNode parentNode, string roomName) { PrototypeDungeonRoom room = LoadRoom(roomName); if (room is null) { return(parentNode); } DungeonFlowNode dungeonFlowNode = MakeNode(room, dungeonFlow); dungeonFlow.AddNodeToFlow(dungeonFlowNode, parentNode); return(dungeonFlowNode); }
public static DungeonFlowNode GenerateFlowNode(DungeonFlow flow, PrototypeDungeonRoom.RoomCategory category, PrototypeDungeonRoom overrideRoom = null, GenericRoomTable overrideRoomTable = null, bool loopTargetIsOneWay = false, bool isWarpWing = false, bool handlesOwnWarping = true, float weight = 1f, DungeonFlowNode.NodePriority priority = DungeonFlowNode.NodePriority.MANDATORY, string guid = "") { if (string.IsNullOrEmpty(guid)) { guid = Guid.NewGuid().ToString(); } DungeonFlowNode node = new DungeonFlowNode(flow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = category, percentChance = weight, priority = priority, overrideExactRoom = overrideRoom, overrideRoomTable = overrideRoomTable, capSubchain = false, subchainIdentifier = string.Empty, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, subchainIdentifiers = new List <string>(0), receivesCaps = false, isWarpWingEntrance = isWarpWing, handlesOwnWarping = handlesOwnWarping, 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, guidAsString = guid, parentNodeGuid = string.Empty, childNodeGuids = new List <string>(0), loopTargetNodeGuid = string.Empty, loopTargetIsOneWay = loopTargetIsOneWay, flow = flow }; return(node); }
public static DungeonFlowNode DuplicateDungeonFlowNode(DungeonFlowNode node) { DungeonFlowNode dungeonFlowNode = new DungeonFlowNode(node.flow); dungeonFlowNode.isSubchainStandin = node.isSubchainStandin; dungeonFlowNode.nodeType = node.nodeType; dungeonFlowNode.roomCategory = node.roomCategory; dungeonFlowNode.percentChance = node.percentChance; dungeonFlowNode.priority = node.priority; dungeonFlowNode.overrideExactRoom = node.overrideExactRoom; dungeonFlowNode.overrideRoomTable = node.overrideRoomTable; dungeonFlowNode.capSubchain = node.capSubchain; dungeonFlowNode.subchainIdentifier = node.subchainIdentifier; dungeonFlowNode.limitedCopiesOfSubchain = node.limitedCopiesOfSubchain; dungeonFlowNode.maxCopiesOfSubchain = node.maxCopiesOfSubchain; dungeonFlowNode.subchainIdentifiers = new List <string>(node.subchainIdentifiers); dungeonFlowNode.receivesCaps = node.receivesCaps; dungeonFlowNode.isWarpWingEntrance = node.isWarpWingEntrance; dungeonFlowNode.handlesOwnWarping = node.handlesOwnWarping; dungeonFlowNode.forcedDoorType = node.forcedDoorType; dungeonFlowNode.loopForcedDoorType = node.loopForcedDoorType; dungeonFlowNode.nodeExpands = node.nodeExpands; dungeonFlowNode.initialChainPrototype = node.initialChainPrototype; dungeonFlowNode.chainRules = new List <ChainRule>(node.chainRules.Count); foreach (ChainRule chainRule in node.chainRules) { dungeonFlowNode.chainRules.Add(new ChainRule { form = chainRule.form, target = chainRule.target, weight = chainRule.weight, mandatory = chainRule.mandatory }); } dungeonFlowNode.minChainLength = node.minChainLength; dungeonFlowNode.maxChainLength = node.maxChainLength; dungeonFlowNode.minChildrenToBuild = node.minChildrenToBuild; dungeonFlowNode.maxChildrenToBuild = node.maxChildrenToBuild; dungeonFlowNode.canBuildDuplicateChildren = node.canBuildDuplicateChildren; dungeonFlowNode.parentNodeGuid = node.parentNodeGuid; dungeonFlowNode.childNodeGuids = new List <string>(node.childNodeGuids); dungeonFlowNode.loopTargetNodeGuid = node.loopTargetNodeGuid; dungeonFlowNode.loopTargetIsOneWay = node.loopTargetIsOneWay; dungeonFlowNode.guidAsString = node.guidAsString; dungeonFlowNode.flow = node.flow; return(dungeonFlowNode); }
// Token: 0x06000056 RID: 86 RVA: 0x00005804 File Offset: 0x00003A04 public static DungeonFlow CreateMazeFlow(Dungeon dungeon) { DungeonFlow dungeonFlow = SampleFlow.CreateNewFlow(dungeon); dungeonFlow.name = "maze_flow"; DungeonFlowNode dungeonFlowNode = SampleFlow.NodeFromAssetName(dungeonFlow, "elevator entrance"); dungeonFlow.FirstNode = dungeonFlowNode; dungeonFlow.AddNodeToFlow(dungeonFlowNode, null); DungeonFlowNode dungeonFlowNode2 = new DungeonFlowNode(dungeonFlow) { overrideExactRoom = RoomFactory.BuildFromResource("resource/rooms/maze.room").room }; dungeonFlow.AddNodeToFlow(dungeonFlowNode2, dungeonFlowNode); dungeonFlow.AddNodeToFlow(SampleFlow.NodeFromAssetName(dungeonFlow, "exit_room_basic"), dungeonFlowNode2); dungeon = null; return(dungeonFlow); }
public static DungeonFlow CreateMazeFlow(Dungeon dungeon) { var flow = CreateNewFlow(dungeon); flow.name = "maze_flow"; var entrance = NodeFromAssetName(flow, "elevator entrance"); flow.FirstNode = entrance; flow.AddNodeToFlow(entrance, null); var maze = new DungeonFlowNode(flow) { overrideExactRoom = RoomFactory.BuildFromResource("resource/rooms/maze.room").room }; flow.AddNodeToFlow(maze, entrance); flow.AddNodeToFlow(NodeFromAssetName(flow, "exit_room_basic"), maze); dungeon = null; return(flow); }
public static void RemoveNodeConnectParentToChildren(DungeonFlowNode node) { string parentNodeGuid = node.parentNodeGuid; List <string> list = new List <string>(node.childNodeGuids); DungeonFlow flow = node.flow; node.flow.DeleteNode(node, false); foreach (string text in list) { bool flag = !string.IsNullOrEmpty(parentNodeGuid) && !string.IsNullOrEmpty(text); if (flag) { DungeonFlowNode nodeFromGuid = flow.GetNodeFromGuid(parentNodeGuid); DungeonFlowNode nodeFromGuid2 = flow.GetNodeFromGuid(text); bool flag2 = nodeFromGuid != null && nodeFromGuid2 != null; if (flag2) { flow.ConnectNodes(nodeFromGuid, nodeFromGuid2); } } } }
public static DungeonFlow BuildFlow() { DungeonFlow flow = ScriptableObject.CreateInstance <DungeonFlow>(); flow.name = "RedChamberDungeonFlow"; flow.fallbackRoomTable = null; flow.phantomRoomTable = null; flow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>(0); flow.flowInjectionData = new List <ProceduralFlowModifierData>(0); flow.sharedInjectionData = new List <SharedInjectionData>() { Toolbox.shared_auto_002.LoadAsset <SharedInjectionData>("Base Shared Injection Data") }; DungeonFlowNode node = Toolbox.GenerateFlowNode(flow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, RoomFactory.BuildFromResource("SpecialItemPack/RedChamberRooms/RedChamber_Entrance.room").room); DungeonFlowNode node2 = Toolbox.GenerateFlowNode(flow, PrototypeDungeonRoom.RoomCategory.EXIT, RoomFactory.BuildFromResource("SpecialItemPack/RedChamberRooms/RedChamber_Exit.room").room); flow.Initialize(); flow.AddNodeToFlow(node, null); flow.AddNodeToFlow(node2, node); flow.FirstNode = node; return(flow); }
public static DungeonFlow DuplicateDungeonFlow(DungeonFlow flow) { DungeonFlow dungeonFlow = ScriptableObject.CreateInstance <DungeonFlow>(); dungeonFlow.name = flow.name; dungeonFlow.fallbackRoomTable = flow.fallbackRoomTable; dungeonFlow.phantomRoomTable = flow.phantomRoomTable; dungeonFlow.subtypeRestrictions = flow.subtypeRestrictions; dungeonFlow.evolvedRoomTable = flow.evolvedRoomTable; ReflectionHelpers.ReflectSetField(typeof(DungeonFlow), "m_firstNodeGuid", ReflectionHelpers.ReflectGetField <string>(typeof(DungeonFlow), "m_firstNodeGuid", flow), dungeonFlow); dungeonFlow.flowInjectionData = flow.flowInjectionData; dungeonFlow.sharedInjectionData = flow.sharedInjectionData; ReflectionHelpers.ReflectSetField(typeof(DungeonFlow), "m_nodeGuids", new List <string>(ReflectionHelpers.ReflectGetField <List <string> >(typeof(DungeonFlow), "m_nodeGuids", flow)), dungeonFlow); List <DungeonFlowNode> list = new List <DungeonFlowNode>(); ReflectionHelpers.ReflectSetField(typeof(DungeonFlow), "m_nodes", list, dungeonFlow); foreach (DungeonFlowNode node in flow.AllNodes) { DungeonFlowNode dungeonFlowNode = DuplicateDungeonFlowNode(node); dungeonFlowNode.flow = dungeonFlow; list.Add(dungeonFlowNode); } return(dungeonFlow); }
public static void InitFlow() { 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 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ChaosRoomPrefabs.Giant_Elevator_Room); DungeonFlowNode m_HubNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.HUB); DungeonFlowNode m_ShopNode_01 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ChaosPrefabs.shop_room_table); DungeonFlowNode m_ShopNode_02 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ChaosPrefabs.shop_room_table); DungeonFlowNode m_ChestRoom_01 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.reward_room, oneWayLoopTarget: true); DungeonFlowNode m_ChestRoom_02 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.REWARD, ChaosPrefabs.gungeon_rewardroom_1); DungeonFlowNode m_ChestRoom_03 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.REWARD, ChaosPrefabs.gungeon_rewardroom_1); DungeonFlowNode m_ChestRoom_04 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.reward_room, oneWayLoopTarget: true); DungeonFlowNode m_ExitNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.EXIT, ChaosPrefabs.tiny_exit); DungeonFlowNode m_BossFoyerNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.boss_foyer); DungeonFlowNode m_BossNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.BOSS, overrideTable: ChaosPrefabs.MegaBossRoomTable); DungeonFlowNode m_FakeBossNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.BOSS, ChaosPrefabs.tutorial_minibossroom); DungeonFlowNode m_FakeBossFoyerNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.boss_foyer); for (int i = 0; i < LoopRoomCount + 1; i++) { m_cachedNodes_01.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.NORMAL)); m_cachedNodes_04.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.NORMAL)); } for (int i = 0; i < SingleChainRoomCount + 1; i++) { m_cachedNodes_02.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.NORMAL)); m_cachedNodes_03.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, 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(); ChaosDungeonFlows.Fruit_Loops.name = "Fruit_Loops"; ChaosDungeonFlows.Fruit_Loops.fallbackRoomTable = ChaosPrefabs.CustomRoomTableNoCastle; ChaosDungeonFlows.Fruit_Loops.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>() { ChaosDungeonFlows.BaseSubTypeRestrictions }; ChaosDungeonFlows.Fruit_Loops.flowInjectionData = new List <ProceduralFlowModifierData>(0); ChaosDungeonFlows.Fruit_Loops.sharedInjectionData = new List <SharedInjectionData>() { ChaosDungeonFlows.BaseSharedInjectionData }; ChaosDungeonFlows.Fruit_Loops.Initialize(); // Hub area ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_HubNode, null); // Big Entrance with first loop. ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_EntranceNode, m_HubNode); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_01[0], m_HubNode); for (int i = 1; i < LoopRoomCount + 1; i++) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_01[i], m_cachedNodes_01[i - 1]); } ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ShopNode_01, m_cachedNodes_01[LoopRoomCount]); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ChestRoom_01, m_ShopNode_01); ChaosDungeonFlows.Fruit_Loops.LoopConnectNodes(m_HubNode, m_ChestRoom_01); // Maybe boss path. :P ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_02[0], m_HubNode); for (int i = 1; i < SingleChainRoomCount + 1; i++) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_02[i], m_cachedNodes_02[i - 1]); } ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ChestRoom_02, m_cachedNodes_02[SingleChainRoomCount]); if (bossShuffle) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_BossFoyerNode, m_ChestRoom_02); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_BossNode, m_BossFoyerNode); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ExitNode, m_BossNode); } else { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_FakeBossFoyerNode, m_ChestRoom_02); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_FakeBossNode, m_FakeBossFoyerNode); } // Maybe boss path. :P ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_03[0], m_EntranceNode); for (int i = 1; i < SingleChainRoomCount + 1; i++) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_03[i], m_cachedNodes_03[i - 1]); } ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ChestRoom_03, m_cachedNodes_03[SingleChainRoomCount]); if (bossShuffle) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_FakeBossFoyerNode, m_ChestRoom_03); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_FakeBossNode, m_FakeBossFoyerNode); } else { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_BossFoyerNode, m_ChestRoom_03); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_BossNode, m_BossFoyerNode); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ExitNode, m_BossNode); } // Second Loop ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_04[0], m_EntranceNode); for (int i = 1; i < LoopRoomCount + 1; i++) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_04[i], m_cachedNodes_04[i - 1]); } ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ShopNode_02, m_cachedNodes_04[LoopRoomCount]); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ChestRoom_04, m_ShopNode_02); ChaosDungeonFlows.Fruit_Loops.LoopConnectNodes(m_ChestRoom_04, m_EntranceNode); ChaosDungeonFlows.Fruit_Loops.FirstNode = m_HubNode; }
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_West_Floor_03a_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 TestNode_00 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.elevator_entrance, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, childNodeGuids = new List <string>() { "5160f844-ff79-4d19-b813-38496a344e8e" }, loopTargetIsOneWay = false, guidAsString = "d9be71d3-8d97-48af-8eda-54aa897862be" }; DungeonFlowNode TestNode_01 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.boss_foyer, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "bd36ddc7-e687-4355-a69b-e799c9d857de", childNodeGuids = new List <string>() { "a0098d24-7733-4baf-82c0-11ce3e068261" }, loopTargetIsOneWay = false, guidAsString = "036aafaf-a754-4410-94c5-2c4e5139a5bf" }; DungeonFlowNode TestNode_02 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.oldbulletking_room_01, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "036aafaf-a754-4410-94c5-2c4e5139a5bf", childNodeGuids = new List <string>() { "f06e0430-437a-481e-9b34-604d145cc77d" }, loopTargetIsOneWay = false, guidAsString = "a0098d24-7733-4baf-82c0-11ce3e068261" }; DungeonFlowNode TestNode_03 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.exit_room_basic, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "a0098d24-7733-4baf-82c0-11ce3e068261", childNodeGuids = new List <string>(0), loopTargetIsOneWay = false, guidAsString = "f06e0430-437a-481e-9b34-604d145cc77d" }; DungeonFlowNode TestNode_04 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "d9be71d3-8d97-48af-8eda-54aa897862be", childNodeGuids = new List <string>() { "0c8ee6c4-31b4-4226-9ddb-90c7eca8f2d3" }, loopTargetIsOneWay = false, guidAsString = "5160f844-ff79-4d19-b813-38496a344e8e" }; DungeonFlowNode TestNode_05 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "5160f844-ff79-4d19-b813-38496a344e8e", childNodeGuids = new List <string>() { "2439b6f0-b59e-4b46-8521-3195d72748f7" }, loopTargetIsOneWay = false, guidAsString = "0c8ee6c4-31b4-4226-9ddb-90c7eca8f2d3" }; DungeonFlowNode TestNode_06 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "2439b6f0-b59e-4b46-8521-3195d72748f7", childNodeGuids = new List <string>() { "989ad791-cfc8-4f4e-afc6-fd9512a789b7" }, loopTargetIsOneWay = false, guidAsString = "a919a262-edf3-47e7-aae9-0eb77fa49262" }; DungeonFlowNode TestNode_07 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "919a262-edf3-47e7-aae9-0eb77fa49262", childNodeGuids = new List <string>() { "b1da2e8a-afeb-41cc-8840-be1c46aa4401", "3a6325a4-d2c0-4b93-a82e-7f09b007e190" }, loopTargetIsOneWay = false, guidAsString = "989ad791-cfc8-4f4e-afc6-fd9512a789b7" }; DungeonFlowNode TestNode_08 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "8267eaa8-ed7f-403b-97a6-421d15a21ef3", childNodeGuids = new List <string>() { "3956174b-a5ee-4716-b021-889db041a070" }, loopTargetIsOneWay = false, guidAsString = "8b4c640e-b835-4a6b-9326-7b11d856fcde" }; DungeonFlowNode TestNode_09 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "8b4c640e-b835-4a6b-9326-7b11d856fcde", childNodeGuids = new List <string>() { "bd36ddc7-e687-4355-a69b-e799c9d857de", "31a9f731-24ba-49dd-9086-2f01cb3fcb1d" }, loopTargetIsOneWay = false, guidAsString = "3956174b-a5ee-4716-b021-889db041a070" }; DungeonFlowNode TestNode_10 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "3956174b-a5ee-4716-b021-889db041a070", childNodeGuids = new List <string>() { "036aafaf-a754-4410-94c5-2c4e5139a5bf", "17f291e0-37c3-4d03-ba6a-b5b534256c07" }, loopTargetIsOneWay = false, guidAsString = "bd36ddc7-e687-4355-a69b-e799c9d857de" }; DungeonFlowNode TestNode_11 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "0c8ee6c4-31b4-4226-9ddb-90c7eca8f2d3", childNodeGuids = new List <string>() { "dc3ba41b-dc99-42d3-ab9b-088991bc1741", "a919a262-edf3-47e7-aae9-0eb77fa49262" }, loopTargetIsOneWay = false, guidAsString = "2439b6f0-b59e-4b46-8521-3195d72748f7" }; DungeonFlowNode TestNode_12 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.gungeon_rewardroom_1, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "2439b6f0-b59e-4b46-8521-3195d72748f7", childNodeGuids = new List <string>() { "55ebfb7d-b617-4da1-853c-209d3bd36f8e" }, loopTargetIsOneWay = false, guidAsString = "dc3ba41b-dc99-42d3-ab9b-088991bc1741" }; DungeonFlowNode TestNode_13 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "dc3ba41b-dc99-42d3-ab9b-088991bc1741", childNodeGuids = new List <string>(0), loopTargetNodeGuid = "0c8ee6c4-31b4-4226-9ddb-90c7eca8f2d3", loopTargetIsOneWay = false, guidAsString = "55ebfb7d-b617-4da1-853c-209d3bd36f8e" }; DungeonFlowNode TestNode_14 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "8267eaa8-ed7f-403b-97a6-421d15a21ef3", childNodeGuids = new List <string>() { "44fc3013-6fa2-4436-a0db-1d3b99484703" }, loopTargetIsOneWay = false, guidAsString = "0fbff154-f8cb-4367-a11f-16f5dd56fe4f" }; DungeonFlowNode TestNode_15 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "989ad791-cfc8-4f4e-afc6-fd9512a789b7", childNodeGuids = new List <string>() { "8267eaa8-ed7f-403b-97a6-421d15a21ef3" }, loopTargetIsOneWay = false, guidAsString = "b1da2e8a-afeb-41cc-8840-be1c46aa4401" }; DungeonFlowNode TestNode_16 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.shop02, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "0fbff154-f8cb-4367-a11f-16f5dd56fe4f", childNodeGuids = new List <string>(0), loopTargetIsOneWay = false, guidAsString = "44fc3013-6fa2-4436-a0db-1d3b99484703" }; DungeonFlowNode TestNode_17 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "bd36ddc7-e687-4355-a69b-e799c9d857de", childNodeGuids = new List <string>() { "56753489-2944-42ed-8c1f-c0daa03417b0" }, loopTargetIsOneWay = false, guidAsString = "17f291e0-37c3-4d03-ba6a-b5b534256c07" }; DungeonFlowNode TestNode_18 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "17f291e0-37c3-4d03-ba6a-b5b534256c07", childNodeGuids = new List <string>() { "1d489c84-f1b5-431d-bdf3-e61e74cd7f15", "3e0b1ce9-3862-4041-bfa9-bb82474e567a" }, loopTargetIsOneWay = false, guidAsString = "56753489-2944-42ed-8c1f-c0daa03417b0" }; DungeonFlowNode TestNode_19 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.NORMAL, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "56753489-2944-42ed-8c1f-c0daa03417b0", childNodeGuids = new List <string>() { "9fc6fab9-fe0f-458c-b1a4-e69077243acc" }, loopTargetIsOneWay = false, guidAsString = "1d489c84-f1b5-431d-bdf3-e61e74cd7f15" }; DungeonFlowNode TestNode_20 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, overrideExactRoom = ExpandPrefabs.gungeon_rewardroom_1, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "1d489c84-f1b5-431d-bdf3-e61e74cd7f15", loopTargetNodeGuid = "bd36ddc7-e687-4355-a69b-e799c9d857de", loopTargetIsOneWay = true, guidAsString = "9fc6fab9-fe0f-458c-b1a4-e69077243acc" }; DungeonFlowNode TestNode_21 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.HUB, percentChance = 1f, priority = DungeonFlowNode.NodePriority.MANDATORY, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "b1da2e8a-afeb-41cc-8840-be1c46aa4401", childNodeGuids = new List <string>() { "0fbff154-f8cb-4367-a11f-16f5dd56fe4f", "8b4c640e-b835-4a6b-9326-7b11d856fcde" }, loopTargetIsOneWay = false, guidAsString = "8267eaa8-ed7f-403b-97a6-421d15a21ef3" }; DungeonFlowNode TestNode_22 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.SECRET, percentChance = 0.196999997f, priority = DungeonFlowNode.NodePriority.OPTIONAL, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "989ad791-cfc8-4f4e-afc6-fd9512a789b7", childNodeGuids = new List <string>(0), loopTargetIsOneWay = false, guidAsString = "3a6325a4-d2c0-4b93-a82e-7f09b007e190" }; DungeonFlowNode TestNode_23 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.SECRET, percentChance = 1f, priority = DungeonFlowNode.NodePriority.OPTIONAL, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "3956174b-a5ee-4716-b021-889db041a070", childNodeGuids = new List <string>(0), loopTargetIsOneWay = false, guidAsString = "31a9f731-24ba-49dd-9086-2f01cb3fcb1d" }; DungeonFlowNode TestNode_24 = new DungeonFlowNode(m_CachedFlow) { isSubchainStandin = false, nodeType = DungeonFlowNode.ControlNodeType.ROOM, roomCategory = PrototypeDungeonRoom.RoomCategory.SECRET, percentChance = 0.291999996f, priority = DungeonFlowNode.NodePriority.OPTIONAL, capSubchain = false, limitedCopiesOfSubchain = false, maxCopiesOfSubchain = 1, receivesCaps = false, isWarpWingEntrance = false, handlesOwnWarping = false, forcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, loopForcedDoorType = DungeonFlowNode.ForcedDoorType.NONE, nodeExpands = false, initialChainPrototype = "n", minChainLength = 3, maxChainLength = 8, minChildrenToBuild = 1, maxChildrenToBuild = 1, canBuildDuplicateChildren = false, subchainIdentifiers = new List <string>(0), chainRules = new List <ChainRule>(0), flow = m_CachedFlow, parentNodeGuid = "56753489-2944-42ed-8c1f-c0daa03417b0", childNodeGuids = new List <string>(0), loopTargetIsOneWay = false, guidAsString = "3e0b1ce9-3862-4041-bfa9-bb82474e567a" }; m_CachedFlow.name = "TEST_West_Floor_03a_Flow"; // m_CachedFlow.fallbackRoomTable = CatacombsPrefab.PatternSettings.flows[0].fallbackRoomTable; m_CachedFlow.fallbackRoomTable = ExpandPrefabs.CatacombsRoomTable; m_CachedFlow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>() { TestSubTypeRestriction }; m_CachedFlow.flowInjectionData = new List <ProceduralFlowModifierData>(0); m_CachedFlow.sharedInjectionData = new List <SharedInjectionData>(0); m_CachedFlow.Initialize(); m_CachedFlow.AddNodeToFlow(TestNode_00, null); m_CachedFlow.AddNodeToFlow(TestNode_01, TestNode_10); m_CachedFlow.AddNodeToFlow(TestNode_02, TestNode_01); m_CachedFlow.AddNodeToFlow(TestNode_03, TestNode_02); m_CachedFlow.AddNodeToFlow(TestNode_04, TestNode_00); m_CachedFlow.AddNodeToFlow(TestNode_05, TestNode_04); m_CachedFlow.AddNodeToFlow(TestNode_06, TestNode_11); m_CachedFlow.AddNodeToFlow(TestNode_07, TestNode_06); m_CachedFlow.AddNodeToFlow(TestNode_08, TestNode_21); m_CachedFlow.AddNodeToFlow(TestNode_09, TestNode_08); m_CachedFlow.AddNodeToFlow(TestNode_10, TestNode_09); m_CachedFlow.AddNodeToFlow(TestNode_11, TestNode_05); m_CachedFlow.AddNodeToFlow(TestNode_12, TestNode_11); m_CachedFlow.AddNodeToFlow(TestNode_13, TestNode_12); m_CachedFlow.AddNodeToFlow(TestNode_14, TestNode_21); m_CachedFlow.AddNodeToFlow(TestNode_15, TestNode_07); m_CachedFlow.AddNodeToFlow(TestNode_16, TestNode_14); m_CachedFlow.AddNodeToFlow(TestNode_17, TestNode_10); m_CachedFlow.AddNodeToFlow(TestNode_18, TestNode_17); m_CachedFlow.AddNodeToFlow(TestNode_19, TestNode_18); m_CachedFlow.AddNodeToFlow(TestNode_20, TestNode_19); m_CachedFlow.AddNodeToFlow(TestNode_21, TestNode_15); m_CachedFlow.AddNodeToFlow(TestNode_22, TestNode_07); m_CachedFlow.AddNodeToFlow(TestNode_23, TestNode_09); m_CachedFlow.AddNodeToFlow(TestNode_24, TestNode_18); m_CachedFlow.LoopConnectNodes(TestNode_13, TestNode_05); m_CachedFlow.LoopConnectNodes(TestNode_20, TestNode_10); m_CachedFlow.FirstNode = TestNode_00; 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>() { CustomSecretFloorSharedInjectionData }; m_CachedFlow.Initialize(); DungeonFlowNode entranceNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ExpandRoomPrefabs.Expand_West_Entrance); DungeonFlowNode exitNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandRoomPrefabs.SecretExitRoom); DungeonFlowNode bossFoyerNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.boss_foyertable); DungeonFlowNode bossNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandRoomPrefabs.FakeBossRoom); DungeonFlowNode fakeBossfoyerNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.boss_foyertable); DungeonFlowNode fakeBossNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandRoomPrefabs.GungeoneerMimicBossRoom); DungeonFlowNode WestWinchesterNode = 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 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, ExpandPrefabs.subshop_muncher_01); DungeonFlowNode WestShopNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.shop_room_table); DungeonFlowNode WestShopBackRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_SecretShopWarp, handlesOwnWarping: false); DungeonFlowNode WestChestRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.REWARD, ExpandRoomPrefabs.Expand_West_ChestRoom); DungeonFlowNode WestChestRoom_02 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.REWARD, ExpandRoomPrefabs.Expand_West_ChestRoom); DungeonFlowNode WestSecretRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET, ExpandRoomPrefabs.Expand_West_SecretKeyShop); DungeonFlowNode WestSecretWarp_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_SecretWarp, handlesOwnWarping: false); DungeonFlowNode WestSecretHub_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB, ExpandRoomPrefabs.Expand_West_SecretHub, isWarpWingNode: true, handlesOwnWarping: false); DungeonFlowNode WestSecretHub_02 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.HUB, ExpandRoomPrefabs.Expand_West_SecretHub2, isWarpWingNode: true, handlesOwnWarping: false); DungeonFlowNode WestRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_02 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_03 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_04 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_05 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_06 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_07 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_08 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_09 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_10 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_11 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_12 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_13 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_14 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_15 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode WestRoom_16 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode MinibossRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, overrideTable: ExpandPrefabs.MegaMiniBossRoomTable); DungeonFlowNode ChallengeShrineRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.MegaChallengeShrineTable); DungeonFlowNode ShrineRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, ExpandRoomPrefabs.Expand_West_ShrineRoom); ShrineRoom_01.forcedDoorType = DungeonFlowNode.ForcedDoorType.LOCKED; DungeonFlowNode SpecialRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ExpandPrefabs.basic_special_rooms_noBlackMarket); DungeonFlowNode BlankRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_BlankPedestalRoom); DungeonFlowNode BlankRoom_02 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_BlankPedestalRoom); DungeonFlowNode RatKeyRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_RatKeyPedestalRoom); DungeonFlowNode RatKeyRoom_02 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.Expand_West_RatKeyPedestalRoom); DungeonFlowNode SecretRatKeyRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET, ExpandRoomPrefabs.Expand_West_SecretRatKeyPedestalRoom); DungeonFlowNode SecretRatKeyRoom_02 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SECRET, ExpandRoomPrefabs.Expand_West_SecretRatKeyPedestalRoom); DungeonFlowNode PuzzleRoom_01 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.PuzzleRoom1); DungeonFlowNode PuzzleRoom_02 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.PuzzleRoom2); DungeonFlowNode PuzzleRoom_03 = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandRoomPrefabs.PuzzleRoom3); DungeonFlowNode m_SpecialRewardNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandRoomPrefabs.SecretRewardRoom); DungeonFlowNode m_SecretBossNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.BOSS, ExpandRoomPrefabs.SecretBossRoom); DungeonFlowNode m_SecretBossFoyerNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.SPECIAL, ExpandPrefabs.DragunBossFoyerRoom); DungeonFlowNode m_SecretBossExitNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.EXIT, ExpandPrefabs.DraGunExitRoom); DungeonFlowNode m_SecretBossEndTimesNode = GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL, ExpandPrefabs.DraGunEndTimesRoom, isWarpWingNode: true); DungeonFlowNode m_SecretBossShopNode = 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(WestSecretWarp_01, WestSecretRoom_01); 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_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(fakeBossfoyerNode, WestRoom_02); m_CachedFlow.AddNodeToFlow(fakeBossNode, fakeBossfoyerNode); m_CachedFlow.AddNodeToFlow(RatKeyRoom_02, fakeBossNode); m_CachedFlow.AddNodeToFlow(WestRoom_10, WestRoom_04); m_CachedFlow.AddNodeToFlow(bossFoyerNode, WestRoom_10); m_CachedFlow.AddNodeToFlow(bossNode, bossFoyerNode); m_CachedFlow.AddNodeToFlow(exitNode, bossNode); 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); }