2 Components
Raphtalia edited this page 2024-08-20 19:34:13 +00:00

Important Components

Main Room Doorway Groups

Works in conjunction with DunGenExtender's Main Path feature. This allows for more control in which doorways are selected for the alternate main paths. If you wish to use this component, it must be attached the MainRoomTilePrefab.

DoorwayLists contains a list of grouped doorways. Name is for organizing purposes and has no effect on the dungeon generation. When a doorway is selected for a main path and IF the MainRoomDoorwayGroups exists anywhere in the MainRoomTilePrefab, the dungeon generation will find that doorway's corresponding group in the component's DoorwayLists. It will then mark every doorway in that group invalid for the other main paths. This is reverted once all main paths finish generating and it begins the branch path generation.

NOTE: You may want to use this component to split the main paths between floors for example. Or perhaps one main path in the left side of the main room and the other main path in the right side. However you like it.

Nice To Have Components

Random Guaranteed Scrap Spawn

Forces a random piece of scrap to spawn on the Transform's position. spawnChance specifics the chance that the scrap will spawn or not. minimumScrapValue specifies that the random piece of scrap to be spawned MUST have a minValue value greater or equal to minimumScrapValue.

NOTE: These scrap does not count towards the moon's scrap count.

Niche Components

Doorway Sisters

Works in conjunction with DunGenExtender's Doorway Sisters feature. The UseDoorwaySisters toggle in the Extender MUST be on for this component to do anything. This prevents an intersecting doorway from generating into an actual doorway IF it's sister doorway has already generated AND both of these doorways lead to the intersecting, neighbor tile. Read here for more information.

Sisters contains a list of the sister doorways. This should be self-explanatory.

NOTE: This feature is probably not necessary for your interior. My interior was designed to pack my tiles very closely and for their doorways to have a high chance of intersecting. As such, my interior developed the issue of having too many unnecessary doorways and required this feature to fix it. Most interiors won't have this same issue.

Doorway Cleanup

Allows for more control on the appearance of a doorway based on a set of preset factors. This script does not by itself. It instead acts as the script that starts the command chain and to store centralized data for the commands. Below are the commands.

Doorway is the reference to the doorway component. Mandatory.

Connectors and Blockers are the doorway component's Connector Scene Objects and Blocker Scene Objects list of GameObjects. DoorwayCleanup will perform the same actions that Doorway does for it's scene objects. As such, you must empty the doorway's scene object lists if you wish to use this component.

DoorwayGameObject is a target for some of the commands. It can be null.

The override commands are meant for more advanced coding purposes. You can pretty much ignore these unless you want to do some more logic.

NOTE: These set of components is probably not necessary for your interior. I used these components so my doorways could have more diversity in their appearances.

DCS Connector Blocker Spawned Prefab

Switches to either the Connector or Blocker scene objects IF the doorway spawned any Connector or Blocker prefab that contains the Target's name.

DCS Remove Doorway Spawned Prefab

Deletes the DoorwayGameObject IF the doorway spawned any Connector or Blocker prefab that contains the Target's name.

DCS Remove Doorway Connected Doorway

Deletes the DoorwayGameObject IF the neighboring doorway's priority matches the operation comparison.

DCS Remove GameObjects Connected Doorway

Deletes the GameObjects from the list of Targets IF the neighboring doorway's priority matches the operation comparison.

Spawn Synced Object Cycle

Works in conjunction with a SpawnSyncedObject component. This allows you create a single prefab that will automatically cycle through a set of networked GameObjects of similar functionality/purpose.

When the dungeon generation finishes but before the networked GameObjects of SpawnSyncedObject are spawned, a random cycle number is selected for each Id. Then each SpawnSyncedObjectCycle component will be called one-by-one. Each will grab an item from the Props list based on their cycle number, replace the SpawnPrefab in their referenced SpawnSyncedObject component, then advance the cycle number by 1.

NOTE: This component is probably not necessary for your interior. I used this component to guarantee that each of my portraits would spawn at least once. Cause I thought it would be cool.