From 6f8394c2f8df209b3a7c68758625607ffcd9899a Mon Sep 17 00:00:00 2001 From: Raphtalia Date: Tue, 30 Jul 2024 01:48:30 +0000 Subject: [PATCH] Update Quick Main Paths Setup --- Quick-Main-Paths-Setup.md | 42 ++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/Quick-Main-Paths-Setup.md b/Quick-Main-Paths-Setup.md index b9f28c4..e82181a 100644 --- a/Quick-Main-Paths-Setup.md +++ b/Quick-Main-Paths-Setup.md @@ -1,24 +1,48 @@ This guide is to quickly setup multiple main paths for your interior. What these features do exactly is explained [here](https://git.touhou.dev/Raphtalia/DungeonGenerationPlus_LethalCompany_Mod/wiki/DunGenExtender). ## Setting up DunGenExtender -In the `DunGenExtender` asset, set `MainPathCount` to some value above 1. Set the `MainRoomTilePrefab` to the tile that you want the alternate main paths to start from. Be sure that that tile has multiple doorways. -Activate the Archetypes On Normal Nodes feature by toggling `AddArchetypesToNormalNodes`. Then add a single element to the list. That element will have an empty `Label` and the `Archetype` list will contain the archetype that you would normally use for the main room. +In the `DunGenExtender` asset, set `MainPathCount` to some value above 1. -> **Notes:** Usually tiles that spawn from Dungenflow's nodes cannot create branching paths. This is because those tiles cannot have archetypes, which describes how branching paths are created. However with the this Archetypes On Normal Nodes feature, we can allow these nodes to finally branch out. +Set the `MainRoomTilePrefab` to the tile that you want the alternate main paths to start from. This is NOT the fake start tile that many dungeon's like to use. Be sure that this tile has multiple doorways. -![](https://i.imgur.com/nIIeUNE.png) +![](https://i.imgur.com/ZVMeCCo.png) -## Setting up DungeonFlow -The `MainRoomTilePrefab` must also exist in some tileset in the `DungeonFlow` node section. That node must needs to also be a normal node. Perhaps a little known fact, nodes can have the same position. They go in order like how you expect, the element first in the list goes first. +The `DungenFlow's` node list is replicated onto the alternate main paths. The starting index is based on the `MainPathCopyNodeBehaviour` selected. Any nodes before the starting index will be ignored and not be generated. I suggest you select `Copy From Main Path Position` first, and later decide if `Copy From Node List` is right for your dungeon. -> **Notes:** Keep in mind that the alternate main paths will copy all nodes after the normal node that contains the `MainRoomTilePrefab`. And that it will not copy the injection tiles. +> **NOTE:** Due to how injection tile rules work, they are not duplicated to the alternate main paths. -You STILL need the fake start node. Also, the fake tile prefab for the start node CANNOT be `MainTileRoomPrefab`. I have yet to experiment with letting the start node have multiple main paths. It may be perfectly fine but it is not yet tested nor implemented. +### Copy From Main Path Position + +The starting index is the first node whose position is greater than the `MainRoomTilePrefab` generated position on the main path. + +> **NOTE:** The generated position will be some number between 0 and 1. As such, you can expect the start node to always be ignored and the end node to always be duplicated on the alternate main paths. If your node list also has a normal node say at position 0.25, then you can expect that node to be duplicated on the alternate main paths IF the `MainRoomTilePrefab` generated early on the first main path (not guaranteed though). + +### Copy From Node List + +The starting index is the first node whose tilesets contain `MainRoomTilePrefab` plus 1. Due to this, the node section MUST contain some node whose tileset contains `MainRoomTilePrefab`. + +If you select this behaviour, you may want to enable the Archetypes On Normal Nodes feature below. + +> **NOTE:** This behaviour is the only way to guarantee that certain tiles generate in a certain order on the alternate main paths. ![](https://i.imgur.com/W5hNhDG.png) -After all that, multiple main paths should spawn from the main room selected, with branching paths and all, including the main room itself. +> **NOTE:** An example to why you'd want to select `Copy From Node List`. Let's say you want the fake start room to lead to the real entrance room, the entrance room is where the alternate main paths will start from, and each main path will start with a certain room of your choosing. That can be setup by doing the following with the nodes list. Element 0 will be the start node at position 0 with the fake start room. Element 1 will be a normal node also at position 0 with the `MainRoomTilePrefab` entrance room. Element 2 will be a normal node also at position 0 with the certain room of your choosing. With this setup, no matter how big or small your dungeon is, your dungeon and each main path will start as described above. + +### After that's selected + +That's it. You are done. Multiple main paths should spawn from the main room selected, with branching paths and all. + +## Archetypes On Normal Nodes + +Tiles generated from nodes cannot create branching paths. This is because those tiles cannot have archetypes, which describes how branching paths are created. However with this feature, we can finally allow these nodes to branch out. + +If you want nodes to generate certain tiles on the alternate main paths and you want those tiles to have branching paths, you should enable this feature. If the `MainPathCopyNodeBehaviour` chosen is `Copy From Node List`, you may want to enable this feature so the `MainRoomTilePrefab` tile can generate branching paths along with multiple main paths. + +Activate the Archetypes On Normal Nodes feature by toggling `AddArchetypesToNormalNodes`. If you want every normal node to have the same archetype, then add an element to the list whose `Label` is empty and the `Archetype` list which contains that archetype. If you want specify which node gets a specific archetype, then add an element whose `Label` is that node's `Label` and the `Archetype` list which contains that specific archetype. + +![](https://i.imgur.com/Qe6ZX8K.png) ## Examples of multiple main pathed interiors