コード例 #1
0
        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);
        }
コード例 #2
0
        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(GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR));
            }
            for (int i = 0; i < 89; i++)
            {
                NormalNodes.Add(GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.NORMAL));
            }

            ChestNodes.Add(GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.REWARD, ExpandPrefabs.reward_room));
            ChestNodes.Add(GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.reward_room));
            ChestNodes.Add(GenerateDefaultNode(m_CachedFlow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ExpandPrefabs.reward_room));
            ChestNodes.Add(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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        public static DungeonFlow DEMO_STAGE_FLOW()
        {
            DungeonFlow m_CachedFlow = ScriptableObject.CreateInstance <DungeonFlow>();

            DungeonFlowSubtypeRestriction DemoStageSubTypeRestrictions = 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 DemoStageNode_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,
                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              = "d9be71d3-8d97-48af-8eda-54aa897862be",
                flow = m_CachedFlow,
            };
            DungeonFlowNode DemoStageNode_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,
                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              = "036aafaf-a754-4410-94c5-2c4e5139a5bf",
                flow = m_CachedFlow,
            };
            DungeonFlowNode DemoStageNode_02 = new DungeonFlowNode(m_CachedFlow)
            {
                isSubchainStandin         = false,
                nodeType                  = DungeonFlowNode.ControlNodeType.ROOM,
                roomCategory              = PrototypeDungeonRoom.RoomCategory.CONNECTOR,
                percentChance             = 1f,
                priority                  = DungeonFlowNode.NodePriority.MANDATORY,
                overrideExactRoom         = ExpandPrefabs.bossstatuesroom01,
                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              = "a0098d24-7733-4baf-82c0-11ce3e068261",
                flow = m_CachedFlow,
            };
            DungeonFlowNode DemoStageNode_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,
                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              = "f06e0430-437a-481e-9b34-604d145cc77d",
                flow = m_CachedFlow,
            };
            // Original Room Prefab "StageFight_001" no longer exists. Force it to pull random room from room table instead.
            DungeonFlowNode DemoStageNode_04 = new DungeonFlowNode(m_CachedFlow)
            {
                isSubchainStandin         = false,
                nodeType                  = DungeonFlowNode.ControlNodeType.ROOM,
                roomCategory              = PrototypeDungeonRoom.RoomCategory.NORMAL,
                percentChance             = 1f,
                priority                  = DungeonFlowNode.NodePriority.MANDATORY,
                overrideExactRoom         = null,
                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              = "5160f844-ff79-4d19-b813-38496a344e8e",
                flow = m_CachedFlow,
            };
            // Original Room Prefab "StageFight_002_Easy" no longer exists. Force it to pull random room from room table instead.
            DungeonFlowNode DemoStageNode_05 = new DungeonFlowNode(m_CachedFlow)
            {
                isSubchainStandin         = false,
                nodeType                  = DungeonFlowNode.ControlNodeType.ROOM,
                roomCategory              = PrototypeDungeonRoom.RoomCategory.NORMAL,
                percentChance             = 1f,
                priority                  = DungeonFlowNode.NodePriority.MANDATORY,
                overrideExactRoom         = null,
                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              = "0c8ee6c4-31b4-4226-9ddb-90c7eca8f2d3",
                flow = m_CachedFlow,
            };
            // Castle_Reward_Room_godrays_001 no longer exists. Substitute with gungeon_rewardroom_1 instead.
            DungeonFlowNode DemoStageNode_06 = new DungeonFlowNode(m_CachedFlow)
            {
                isSubchainStandin         = false,
                nodeType                  = DungeonFlowNode.ControlNodeType.ROOM,
                roomCategory              = PrototypeDungeonRoom.RoomCategory.REWARD,
                percentChance             = 1f,
                priority                  = DungeonFlowNode.NodePriority.MANDATORY,
                overrideExactRoom         = ExpandPrefabs.gungeon_rewardroom_1,
                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              = "2de735f8-22aa-4ee0-9cc4-6841182c8715",
                flow = m_CachedFlow,
            };
            DungeonFlowNode DemoStageNode_07 = 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              = "8aef8326-0006-4504-8646-4fa7f6664e13",
                flow = m_CachedFlow,
            };
            // Original Room Prefab "StageFight_003" no longer exists. Force it to pull random room from room table instead.
            DungeonFlowNode DemoStageNode_08 = new DungeonFlowNode(m_CachedFlow)
            {
                isSubchainStandin         = false,
                nodeType                  = DungeonFlowNode.ControlNodeType.ROOM,
                roomCategory              = PrototypeDungeonRoom.RoomCategory.NORMAL,
                percentChance             = 1f,
                priority                  = DungeonFlowNode.NodePriority.MANDATORY,
                overrideExactRoom         = null,
                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              = "5460810c-546c-471a-8467-0c89cfce0dc9",
                flow = m_CachedFlow,
            };
            // Original Room Prefab "StageFight_004" no longer exists. Force it to pull random room from room table instead.
            DungeonFlowNode DemoStageNode_09 = new DungeonFlowNode(m_CachedFlow)
            {
                isSubchainStandin         = false,
                nodeType                  = DungeonFlowNode.ControlNodeType.ROOM,
                roomCategory              = PrototypeDungeonRoom.RoomCategory.NORMAL,
                percentChance             = 1f,
                priority                  = DungeonFlowNode.NodePriority.MANDATORY,
                overrideExactRoom         = null,
                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              = "10f1e930-a72b-4f12-a313-378622ba01a8",
                flow = m_CachedFlow,
            };

            m_CachedFlow.name = "DEMO_STAGE_FLOW";
            m_CachedFlow.fallbackRoomTable   = ExpandPrefabs.CatacombsRoomTable;
            m_CachedFlow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>()
            {
                DemoStageSubTypeRestrictions
            };
            m_CachedFlow.flowInjectionData   = new List <ProceduralFlowModifierData>(0);
            m_CachedFlow.sharedInjectionData = new List <SharedInjectionData>(0);

            m_CachedFlow.Initialize();

            m_CachedFlow.AddNodeToFlow(DemoStageNode_00, null);
            m_CachedFlow.AddNodeToFlow(DemoStageNode_01, DemoStageNode_08);
            m_CachedFlow.AddNodeToFlow(DemoStageNode_02, DemoStageNode_01);
            m_CachedFlow.AddNodeToFlow(DemoStageNode_03, DemoStageNode_02);
            m_CachedFlow.AddNodeToFlow(DemoStageNode_04, DemoStageNode_06);
            m_CachedFlow.AddNodeToFlow(DemoStageNode_05, DemoStageNode_04);
            m_CachedFlow.AddNodeToFlow(DemoStageNode_06, DemoStageNode_00);
            m_CachedFlow.AddNodeToFlow(DemoStageNode_07, DemoStageNode_06);
            m_CachedFlow.AddNodeToFlow(DemoStageNode_08, DemoStageNode_05);
            m_CachedFlow.AddNodeToFlow(DemoStageNode_09, DemoStageNode_07);

            m_CachedFlow.LoopConnectNodes(DemoStageNode_09, DemoStageNode_08);

            m_CachedFlow.FirstNode = DemoStageNode_00;

            return(m_CachedFlow);
        }