public override void Start() { // Init Prefab Databases ChaosPrefabs.InitCustomPrefabs(); ChaosRoomPrefabs.InitCustomRooms(); // Init Custom DungeonFlow(s) ChaosDungeonFlows.InitDungeonFlows(); // Setup Console Commands for Glitch and Chaos stuff ETGModMainBehaviour.Instance.gameObject.AddComponent <ChaosConsole>(); // Modified version of Anywhere mod ETGModMainBehaviour.Instance.gameObject.AddComponent <DungeonFlowModule>(); // Add some of the new enemies to the old secret floors ChaosEnemyReplacements.InitReplacementEnemiesForSewers(GlobalDungeonData.ValidTilesets.SEWERGEON, "_Sewers"); ChaosEnemyReplacements.InitReplacementEnemiesForAbbey(GlobalDungeonData.ValidTilesets.CATHEDRALGEON, "_Abbey"); ChaosSharedHooks.InstallRequiredHooks(); GameManager.Instance.OnNewLevelFullyLoaded += ChaosObjectMods.Instance.InitSpecialMods; // ETGMod.AIActor.OnPreStart = (Action<AIActor>)Delegate.Combine(ETGMod.AIActor.OnPreStart, new Action<AIActor>(EnemyMods)); ETGMod.AIActor.OnPreStart += EnemyModRandomizer; Debug.Log("[ChaosGlitchMod] Installing GameManager.Awake Hook...."); Hook gameManagerHook = new Hook( typeof(GameManager).GetMethod("Awake", BindingFlags.NonPublic | BindingFlags.Instance), typeof(ChaosGlitchMod).GetMethod("GameManager_Awake", BindingFlags.NonPublic | BindingFlags.Instance), GameManager.Instance ); }
public static void InitFlow() { List <DungeonFlowNode> m_cachedNodes_01 = new List <DungeonFlowNode>(); List <DungeonFlowNode> m_cachedNodes_02 = new List <DungeonFlowNode>(); List <DungeonFlowNode> m_cachedNodes_03 = new List <DungeonFlowNode>(); List <DungeonFlowNode> m_cachedNodes_04 = new List <DungeonFlowNode>(); DungeonFlowNode m_EntranceNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ChaosRoomPrefabs.Giant_Elevator_Room); DungeonFlowNode m_HubNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.HUB); DungeonFlowNode m_ShopNode_01 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ChaosPrefabs.shop_room_table); DungeonFlowNode m_ShopNode_02 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.SPECIAL, overrideTable: ChaosPrefabs.shop_room_table); DungeonFlowNode m_ChestRoom_01 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.reward_room, oneWayLoopTarget: true); DungeonFlowNode m_ChestRoom_02 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.REWARD, ChaosPrefabs.gungeon_rewardroom_1); DungeonFlowNode m_ChestRoom_03 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.REWARD, ChaosPrefabs.gungeon_rewardroom_1); DungeonFlowNode m_ChestRoom_04 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.reward_room, oneWayLoopTarget: true); DungeonFlowNode m_ExitNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.EXIT, ChaosPrefabs.tiny_exit); DungeonFlowNode m_BossFoyerNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.boss_foyer); DungeonFlowNode m_BossNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.BOSS, overrideTable: ChaosPrefabs.MegaBossRoomTable); DungeonFlowNode m_FakeBossNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.BOSS, ChaosPrefabs.tutorial_minibossroom); DungeonFlowNode m_FakeBossFoyerNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.boss_foyer); for (int i = 0; i < LoopRoomCount + 1; i++) { m_cachedNodes_01.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.NORMAL)); m_cachedNodes_04.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.NORMAL)); } for (int i = 0; i < SingleChainRoomCount + 1; i++) { m_cachedNodes_02.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.NORMAL)); m_cachedNodes_03.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Fruit_Loops, PrototypeDungeonRoom.RoomCategory.NORMAL)); } m_cachedNodes_01[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_01[LoopRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_02[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_02[SingleChainRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_03[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_03[SingleChainRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_04[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_04[LoopRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; bool bossShuffle = BraveUtility.RandomBool(); ChaosDungeonFlows.Fruit_Loops.name = "Fruit_Loops"; ChaosDungeonFlows.Fruit_Loops.fallbackRoomTable = ChaosPrefabs.CustomRoomTableNoCastle; ChaosDungeonFlows.Fruit_Loops.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>() { ChaosDungeonFlows.BaseSubTypeRestrictions }; ChaosDungeonFlows.Fruit_Loops.flowInjectionData = new List <ProceduralFlowModifierData>(0); ChaosDungeonFlows.Fruit_Loops.sharedInjectionData = new List <SharedInjectionData>() { ChaosDungeonFlows.BaseSharedInjectionData }; ChaosDungeonFlows.Fruit_Loops.Initialize(); // Hub area ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_HubNode, null); // Big Entrance with first loop. ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_EntranceNode, m_HubNode); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_01[0], m_HubNode); for (int i = 1; i < LoopRoomCount + 1; i++) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_01[i], m_cachedNodes_01[i - 1]); } ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ShopNode_01, m_cachedNodes_01[LoopRoomCount]); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ChestRoom_01, m_ShopNode_01); ChaosDungeonFlows.Fruit_Loops.LoopConnectNodes(m_HubNode, m_ChestRoom_01); // Maybe boss path. :P ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_02[0], m_HubNode); for (int i = 1; i < SingleChainRoomCount + 1; i++) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_02[i], m_cachedNodes_02[i - 1]); } ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ChestRoom_02, m_cachedNodes_02[SingleChainRoomCount]); if (bossShuffle) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_BossFoyerNode, m_ChestRoom_02); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_BossNode, m_BossFoyerNode); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ExitNode, m_BossNode); } else { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_FakeBossFoyerNode, m_ChestRoom_02); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_FakeBossNode, m_FakeBossFoyerNode); } // Maybe boss path. :P ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_03[0], m_EntranceNode); for (int i = 1; i < SingleChainRoomCount + 1; i++) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_03[i], m_cachedNodes_03[i - 1]); } ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ChestRoom_03, m_cachedNodes_03[SingleChainRoomCount]); if (bossShuffle) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_FakeBossFoyerNode, m_ChestRoom_03); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_FakeBossNode, m_FakeBossFoyerNode); } else { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_BossFoyerNode, m_ChestRoom_03); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_BossNode, m_BossFoyerNode); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ExitNode, m_BossNode); } // Second Loop ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_04[0], m_EntranceNode); for (int i = 1; i < LoopRoomCount + 1; i++) { ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_cachedNodes_04[i], m_cachedNodes_04[i - 1]); } ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ShopNode_02, m_cachedNodes_04[LoopRoomCount]); ChaosDungeonFlows.Fruit_Loops.AddNodeToFlow(m_ChestRoom_04, m_ShopNode_02); ChaosDungeonFlows.Fruit_Loops.LoopConnectNodes(m_ChestRoom_04, m_EntranceNode); ChaosDungeonFlows.Fruit_Loops.FirstNode = m_HubNode; }
public static void InitFlow() { for (int i = 0; i < 11; i++) { ConnectorNodes.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Really_Big_Flow, PrototypeDungeonRoom.RoomCategory.CONNECTOR)); } for (int i = 0; i < 89; i++) { NormalNodes.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Really_Big_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL)); } ChestNodes.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Really_Big_Flow, PrototypeDungeonRoom.RoomCategory.REWARD, ChaosPrefabs.reward_room)); ChestNodes.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Really_Big_Flow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.reward_room)); ChestNodes.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Really_Big_Flow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.reward_room)); ChestNodes.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Really_Big_Flow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosPrefabs.reward_room)); ChaosDungeonFlows.Really_Big_Flow.name = "Really_Big_Flow"; ChaosDungeonFlows.Really_Big_Flow.fallbackRoomTable = ChaosPrefabs.CustomRoomTableNoCastle; ChaosDungeonFlows.Really_Big_Flow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>(0); // { TestSubTypeRestriction }; ChaosDungeonFlows.Really_Big_Flow.flowInjectionData = new List <ProceduralFlowModifierData>(0); ChaosDungeonFlows.Really_Big_Flow.sharedInjectionData = new List <SharedInjectionData>(0); // { ChaosDungeonFlows.BaseSharedInjectionData }; ChaosDungeonFlows.Really_Big_Flow.Initialize(); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(EntranceNode, null); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(ConnectorNodes[10], EntranceNode); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(FirstShopNode, ConnectorNodes[10]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[88], ConnectorNodes[10]); // First chain of 25 nodes starting at 99 and moving down ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[87], NormalNodes[88]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[86], NormalNodes[87]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[85], NormalNodes[86]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[84], NormalNodes[85]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[83], NormalNodes[84]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[82], NormalNodes[83]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[81], NormalNodes[82]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[80], NormalNodes[81]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[79], NormalNodes[80]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[78], NormalNodes[79]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[77], NormalNodes[78]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[76], NormalNodes[77]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[75], NormalNodes[76]); // Chest 1 ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(ChestNodes[0], NormalNodes[75]); //Start of Second Chain ConnectorNodes[9].roomCategory = PrototypeDungeonRoom.RoomCategory.HUB; ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(ConnectorNodes[9], NormalNodes[75]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[74], ConnectorNodes[9]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[73], NormalNodes[74]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[72], NormalNodes[73]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[71], NormalNodes[72]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[70], NormalNodes[71]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[69], NormalNodes[70]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[68], NormalNodes[69]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[67], NormalNodes[68]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[66], NormalNodes[67]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[65], NormalNodes[66]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[64], NormalNodes[65]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[63], NormalNodes[64]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[62], NormalNodes[63]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[61], NormalNodes[62]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[60], NormalNodes[61]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[59], NormalNodes[60]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[58], NormalNodes[59]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[57], NormalNodes[58]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[56], NormalNodes[57]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[55], NormalNodes[56]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[54], NormalNodes[55]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[53], NormalNodes[54]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[52], NormalNodes[53]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[51], NormalNodes[52]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[50], NormalNodes[51]); // Chest 2 ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(ChestNodes[1], NormalNodes[50]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(SecondShopNode, ChestNodes[1]); //Start of Third Chain ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[49], ConnectorNodes[9]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[48], NormalNodes[49]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[47], NormalNodes[48]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[46], NormalNodes[47]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[45], NormalNodes[46]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[44], NormalNodes[45]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[43], NormalNodes[44]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[42], NormalNodes[43]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[41], NormalNodes[42]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[40], NormalNodes[41]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[39], NormalNodes[40]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[38], NormalNodes[39]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[37], NormalNodes[38]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[36], NormalNodes[37]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[35], NormalNodes[36]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[34], NormalNodes[35]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[33], NormalNodes[34]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[32], NormalNodes[33]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[31], NormalNodes[32]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[30], NormalNodes[31]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[29], NormalNodes[30]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[28], NormalNodes[29]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[27], NormalNodes[28]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[26], NormalNodes[27]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[25], NormalNodes[26]); // Chest 3 ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(ChestNodes[2], NormalNodes[25]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(MiniBossFoyerNode, ChestNodes[2]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(FakebossNode, MiniBossFoyerNode); //Start of Fourth Chain ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[24], ConnectorNodes[9]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[23], NormalNodes[24]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[22], NormalNodes[23]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[21], NormalNodes[22]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[20], NormalNodes[21]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[19], NormalNodes[20]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[18], NormalNodes[19]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[17], NormalNodes[18]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[16], NormalNodes[17]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[15], NormalNodes[16]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[14], NormalNodes[15]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[13], NormalNodes[14]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[12], NormalNodes[13]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[11], NormalNodes[12]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[10], NormalNodes[11]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[9], NormalNodes[10]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[8], NormalNodes[9]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[7], NormalNodes[8]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[6], NormalNodes[7]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[5], NormalNodes[6]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[4], NormalNodes[5]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[3], NormalNodes[4]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[2], NormalNodes[3]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[1], NormalNodes[2]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(NormalNodes[0], NormalNodes[1]); // Chest 4 ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(ChestNodes[3], NormalNodes[0]); // Boss ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(BossFoyerNode, ChestNodes[3]); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(BossNode, BossFoyerNode); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(BossExitNode, BossNode); ChaosDungeonFlows.Really_Big_Flow.AddNodeToFlow(BossEndTimesNode, BossExitNode); // ChaosDungeonFlows.Really_Big_Flow.LoopConnectNodes(ComplexFlowNode_05, ComplexFlowNode_09); ChaosDungeonFlows.Really_Big_Flow.FirstNode = EntranceNode; }
public static void InitFlow() { DungeonFlowNode entranceNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.ENTRANCE, ChaosPrefabs.tiny_entrance); DungeonFlowNode exitNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.EXIT, ChaosRoomPrefabs.SecretExitRoom); DungeonFlowNode firstConnectorNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosRoomPrefabs.Utiliroom); DungeonFlowNode lastConnectorNode = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.CONNECTOR, ChaosRoomPrefabs.Utiliroom); DungeonFlowNode TrapRoomNode_01 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_02 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_03 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_04 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_05 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_06 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_07 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_08 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_09 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_10 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_11 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_12 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_13 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_14 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_15 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_16 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_17 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_18 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_19 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_20 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_21 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_22 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_23 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_24 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); DungeonFlowNode TrapRoomNode_25 = ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Test_TrapRoom_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL); TrapRoomTable.name = "Test Trap Room Table"; TrapRoomTable.includedRooms = new WeightedRoomCollection(); TrapRoomTable.includedRooms.elements = new List <WeightedRoom>(); TrapRoomTable.includedRoomTables = new List <GenericRoomTable>(0); foreach (WeightedRoom weightedRoom in ChaosPrefabs.CustomRoomTable.includedRooms.elements) { if (weightedRoom.room != null && weightedRoom.room.category == PrototypeDungeonRoom.RoomCategory.NORMAL && weightedRoom.room.subCategoryNormal == PrototypeDungeonRoom.RoomNormalSubCategory.TRAP) { TrapRoomTable.includedRooms.elements.Add(weightedRoom); } } ChaosDungeonFlows.Test_TrapRoom_Flow.name = "Test_TrapRoom_Flow"; ChaosDungeonFlows.Test_TrapRoom_Flow.fallbackRoomTable = TrapRoomTable; ChaosDungeonFlows.Test_TrapRoom_Flow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>(0); ChaosDungeonFlows.Test_TrapRoom_Flow.flowInjectionData = new List <ProceduralFlowModifierData>(0); ChaosDungeonFlows.Test_TrapRoom_Flow.sharedInjectionData = new List <SharedInjectionData>(0); ChaosDungeonFlows.Test_TrapRoom_Flow.Initialize(); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(entranceNode, null); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(firstConnectorNode, entranceNode); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_01, firstConnectorNode); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_02, TrapRoomNode_01); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_03, TrapRoomNode_02); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_04, TrapRoomNode_03); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_05, TrapRoomNode_04); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_06, TrapRoomNode_05); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_07, TrapRoomNode_06); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_08, TrapRoomNode_07); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_09, TrapRoomNode_08); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_10, TrapRoomNode_09); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_11, TrapRoomNode_10); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_12, TrapRoomNode_11); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_13, TrapRoomNode_12); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_14, TrapRoomNode_13); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_15, TrapRoomNode_14); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_16, TrapRoomNode_15); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_17, TrapRoomNode_16); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_18, TrapRoomNode_17); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_19, TrapRoomNode_18); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_20, TrapRoomNode_19); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_21, TrapRoomNode_20); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_22, TrapRoomNode_21); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_23, TrapRoomNode_22); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_24, TrapRoomNode_23); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(TrapRoomNode_25, TrapRoomNode_24); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(lastConnectorNode, TrapRoomNode_25); ChaosDungeonFlows.Test_TrapRoom_Flow.AddNodeToFlow(exitNode, lastConnectorNode); ChaosDungeonFlows.Test_TrapRoom_Flow.FirstNode = entranceNode; }
public static void InitFlow() { for (int i = 0; i < LoopRoomCount + 1; i++) { m_cachedNodes_01.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Custom_GlitchChestAlt_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL)); m_cachedNodes_04.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Custom_GlitchChestAlt_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL)); } for (int i = 0; i < SingleChainRoomCount + 1; i++) { m_cachedNodes_02.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Custom_GlitchChestAlt_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL)); m_cachedNodes_03.Add(ChaosDungeonFlows.GenerateDefaultNode(ChaosDungeonFlows.Custom_GlitchChestAlt_Flow, PrototypeDungeonRoom.RoomCategory.NORMAL)); } m_cachedNodes_01[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_01[LoopRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_02[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_02[SingleChainRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_03[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_03[SingleChainRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_04[0].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; m_cachedNodes_04[LoopRoomCount].roomCategory = PrototypeDungeonRoom.RoomCategory.CONNECTOR; bool bossShuffle = BraveUtility.RandomBool(); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.name = "Custom_GlitchChestAlt_Flow"; ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.fallbackRoomTable = ChaosPrefabs.CustomRoomTableNoCastle; ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.subtypeRestrictions = new List <DungeonFlowSubtypeRestriction>() { ChaosDungeonFlows.BaseSubTypeRestrictions }; ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.flowInjectionData = new List <ProceduralFlowModifierData>(0); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.sharedInjectionData = new List <SharedInjectionData>() { ChaosDungeonFlows.BaseSharedInjectionData }; ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.Initialize(); // Hub area ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_HubNode, null); // Big Entrance with first loop. ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_EntranceNode, m_HubNode); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_cachedNodes_01[0], m_HubNode); for (int i = 1; i < LoopRoomCount + 1; i++) { ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_cachedNodes_01[i], m_cachedNodes_01[i - 1]); } ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_ShopNode_01, m_cachedNodes_01[LoopRoomCount]); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_ChestRoom_01, m_ShopNode_01); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.LoopConnectNodes(m_HubNode, m_ChestRoom_01); // Maybe boss path. :P ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_cachedNodes_02[0], m_HubNode); for (int i = 1; i < SingleChainRoomCount + 1; i++) { ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_cachedNodes_02[i], m_cachedNodes_02[i - 1]); } ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_ChestRoom_02, m_cachedNodes_02[SingleChainRoomCount]); if (bossShuffle) { ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_BossFoyerNode, m_ChestRoom_02); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_BossNode, m_BossFoyerNode); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_ExitNode, m_BossNode); } else { ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_FakeBossFoyerNode, m_ChestRoom_02); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_FakeBossNode, m_FakeBossFoyerNode); } // Maybe boss path. :P ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_cachedNodes_03[0], m_EntranceNode); for (int i = 1; i < SingleChainRoomCount + 1; i++) { ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_cachedNodes_03[i], m_cachedNodes_03[i - 1]); } ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_ChestRoom_03, m_cachedNodes_03[SingleChainRoomCount]); if (bossShuffle) { ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_FakeBossFoyerNode, m_ChestRoom_03); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_FakeBossNode, m_FakeBossFoyerNode); } else { ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_BossFoyerNode, m_ChestRoom_03); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_BossNode, m_BossFoyerNode); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_ExitNode, m_BossNode); } // Second Loop ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_cachedNodes_04[0], m_EntranceNode); for (int i = 1; i < LoopRoomCount + 1; i++) { ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_cachedNodes_04[i], m_cachedNodes_04[i - 1]); } ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.AddNodeToFlow(m_ChestRoom_04, m_cachedNodes_04[LoopRoomCount]); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.LoopConnectNodes(m_ChestRoom_04, m_EntranceNode); ChaosDungeonFlows.Custom_GlitchChestAlt_Flow.FirstNode = m_HubNode; }