Floor Generation Step: Difference between revisions

From PMDOWiki
Imbion (talk | contribs)
Imbion (talk | contribs)
No edit summary
Line 81: Line 81:
|-
|-
| -3 || [[Draw Grid To Floor Step|DrawGridToFloorStep]] || Initializes a list of rooms and halls and populates it with the grid from GridFloorGen.
| -3 || [[Draw Grid To Floor Step|DrawGridToFloorStep]] || Initializes a list of rooms and halls and populates it with the grid from GridFloorGen.
|-
| -2
| [[AddLargeRoomStep]]
| Adds a large room to the floor plan, on top of pre-existing rooms.
|}
|}


Line 162: Line 166:
| [[AddConnectedRoomsStep]]
| [[AddConnectedRoomsStep]]
| Creates and attatches connected rooms to the pre-existing floor plan.
| Creates and attatches connected rooms to the pre-existing floor plan.
|-
|-
| ?
| [[AddLargeRoomStep]]
| Adds a large room to the floor plan, on top of a pre-existing room.
|-
|-
| ?
| ?

Revision as of 18:53, 13 August 2025

Floor Generation Steps are steps that are used in floor generation. They are responsible for managing and initializing everything about a floor. The order they are performed in is dependent on each step's priority, with all steps having a standardized priority order for base PMDO.

General Steps

Below is a table of commonly used steps, what priorities PMDO places them in, and what they are used for.

Priority Step Description
-6 MapDataStep Sets the music, time limit, and darkness of the floor.
-6 MapNameIDStep Gives the floor a name.
Its zone step version ShowFloorName is recommended in most cases.
-6 MapTitleDropStep Makes the floor name appear on entry before fading in.
Its zone step version ShowFloorName is recommended in most cases.
-6 MapEffectStep Sets event data for the floor.
-6 DefaultMapStatusStep Sets the base map status of the map.
-1 DrawFloorToTileStep Creates a grid of tiles and draws onto it based on the list of rooms and halls from a RoomFloorGen or GridFloorGen.
1.2 MobSpawnSettingsStep Sets the rules for enemies respawning on the floor.
2 FloorStairsStep Places the start point and the end stairs on different rooms of the floor for RoomFloorGen or GridFloorGen.
4 MapTextureStep Defines the tile graphics for floors, walls, and water.
4 MapDictTextureStep Defines the tile graphics in a more advanced way, needed if the layout uses grass.
? FloorStairsDistanceStep
? RandGenStep Randomly selects one of the floor generation steps specified in its spawn table.
? RescueSpawner Spawns a rescue flag somewhere on the map.
This step should never be explcitly added, but instead added dynamically when in rescue mode.
? RoomPostProcStep
? ScriptGenStep Calls a lua script to act like the floor step.
? StateMapStatusStep Adds a specified map status to the map.
? TempTileStep

FloorGen Dependant Steps

These are steps that are exclusive for certain types of FloorGen.

GridFloorGen Steps

These steps are used exclusively for GridFloorGen.

Priority Step Description
-5 InitGridPlanStep Initializes a grid for GridFloorGen.
-4 GridPathBranch, GridPathCircle, GridPathTwoSides, etc. Generates a path of rooms and halls for GridFloorGen.
-4 SetGridDefaultsStep Turns some rooms into halls (1 tile size), for GridFloorGen.
-4 ConnectGridBranchStep Connects some adjacent rooms, for GridFloorGen.
-4 CombineGridRoomStep Combines some rooms into larger rooms, for GridFloorGen.
-4 SetGridPlanComponentStep Tags all rooms in the grid plan as the specified components.
-4 SetGridInnerComponentStep Tags all rooms on the interior of the grid as the specified components.
-3 DrawGridToFloorStep Initializes a list of rooms and halls and populates it with the grid from GridFloorGen.
-2 AddLargeRoomStep Adds a large room to the floor plan, on top of pre-existing rooms.

RoomFloorGen Steps

These steps are used exclusively for RoomFloorGen.

Priority Step Description
-3 InitFloorPlanStep Initializes a list of rooms and halls for RoomFloorGen.
-2 FloorPathBranch Generates a path of rooms and halls for RoomFloorGen.

LoadGen Steps

These steps are used exclusively for LoadGen.

Priority Step Description
-7 MappedRoomStep Loads a dungeon map to use as this floor's layout, including its entities and properties.

StairsFloorGen Steps

These steps are used exclusively for StairsFloorGen.

Priority Step Description
-1 InitTilesStep Sets the floor dimensions and initializes a grid of tiles, for StairsFloorGen.
2 StairsStep Places the start point and the end stairs on different tiles of the floor, for StairsFloorGen.

Spawn Table Steps

These steps are used to define spawn tables for the floor.

Priority Step Description
1 MoneySpawnStep Sets the spawn table for money on this floor.
Its Zone Step version MoneySpawnZoneStep is recommended in most cases.
1.1 ItemSpawnStep Sets the spawn table for items on this floor.
Its Zone Step versions ItemZoneSteps are recommended in most cases.
1.2 MobSpawnStep Sets the spawn table for NPCs on this floor.
Its Zone Step version TeamSpawnZoneStep is recommended in most cases.
1.3 TileSpawnStep Sets the spawn table for traps on this floor.
Its Zone Step version TileSpawnZoneStep is recommended in most cases.

Post-Gen Room Steps

These steps place rooms and halls after the primary room generation steps have been called.

Priority Step Description
3 AddTunnelStep Digs tunnels into the walls starting from a room.
-2.2 AddDisconnectedRoomsStep Adds disconnected rooms to the map.
Will keep trying until the specified amount of rooms are placed, but this may cause performance problems.
-2.2 AddDisconnectedRoomsRandStep Adds disconnected rooms to the map.
Only tries to place the room a finite amount of times before giving up.
0.1 UnbreakableBorderStep Adds a border of unbreakable tiles at the edge of the map.
0.1 TileBorderStep Adds a border of the specified tiles at the edge of the map.
? AddBossRoomStep Creates and attatches a boss room to the pre-exisiting floor plan.
? AddConnectedRoomsRandStep Creates and attatches connected rooms to the pre-existing floor plan.
? AddConnectedRoomsStep Creates and attatches connected rooms to the pre-existing floor plan.
? ClampFloorStep Clamps the size of the floor to be within a min and a max size.
? ConnectRoomStep Taking the current floor plan, connects its rooms with other rooms.
? LoadBlobStep
? MapExtraStatusStep
? SetGridSpecialRoomStep Takes an existing grid plan, and then changes one of the specified rooms into a new room type.

Terrain Painting & Carving Steps

These steps are used to modify the terrain of the floor.

Priority Step Description
3 PerlinWaterStep Adds water/lava/etc. using Perlin Noise.
3 BlobWaterStep Adds water/lava/etc. by placing several blobs made from cellular automata.
3 RoomTerrainStep Sets terrain in a number of rooms to a certain value.
3.1 DropDiagonalBlockStep If blobs of terrain are touching diagonally, then they are merged together.
3.2 EraseIsolatedStep Replaces isolated terrain of the specified type with walls.
? EraseIsolatedFromSpawnStep Erases tiles of the given type that are isolated from spawn.
? FillImpassableStep Fills all tiles that can't be reached with impassable tiles.
? PatternTerrainStep Places terrain in the specified pattern.
? TerrainSealStep Seals a room in the specified terrain.

Tagging Steps

These steps are used to tag certain parts of a floor for future identification in other steps.

Priority Step Description
? MarkAsHallStep Marks rooms that pass its filters as a hall.
? SetFloorPlanComponentStep Takes all rooms in the map's floor plan and gives them the specified component, for future filtering.

Feature Step

These steps are used to place various features, such as houses.

Priority Step Description
? ChestStep Spawns a chest, which contains the contents of a house.
? KeyDetourStep Adds an extra room to the floor that can only be accessed with a key item.
? MonsterHallStep Creates a house that can occur in halls.
? MonsterHouseStep Creates a house in a room.
? MonsterMansionStep Creates a house that takes up the entire floor.
? ShopStep Spawns a shop somewhere in the map.

Combo Steps

These are steps that are combined with other steps to make certain structures.

Priority Step Description
? GuardSealStep Takes the target room and surrounds it by unbreakable blocks, with one key block used to unlock it.
? SwitchDetourStep Adds an extra room that can only be accessed by pulling a switch.
? SwitchSealStep Takes the target rooms and surrounds them with unbreakable walls, with a switch key that unlocks them.


Compass Steps

These steps are used to modify the settings of compasses.

Priority Step Description
? DetectItemStep Orients tiles that are defined as compasses to point to the given item.
? DetectTileStep Orients tiles that are defined as compasses to point to the given tile.
? SetCompassStep Orients all of the specified tiles to points of interests as a compass.

Spawn Steps

These steps are used to spawn various things.

Priority Step Description
5 Random Room Spawn Step Spawns money, items, traps, etc. in random rooms.
5 Spaced Room Spawn Step Spawns money, items, traps, etc. in random rooms, taking care not to place in the same room or adjacent rooms.
5 Pattern Spawn Step Places money, items, traps, etc. on a room in specified patterns.
6 Terminal Spawn Step Places money, items, traps, etc. in dead-end rooms.
6.1 Due Spawn Step Spawns money, items, traps, etc. based on how far they are from the starting room.
? MoneyTrailSpawnStep Spawns a trail of money leading to an item.
? NearSpawnableSpawnStep Spawns a spawnable near a pre-existing spawnable.
? TerrainSpawnStep Spawns objects randomly on the specified terrain tiles.
? SpecificSpawnStep Spawns an object in the specified location.

Mob Spawning Steps

These steps specifically spawn mobs.

Priority Step Description
6.2 PlaceRandomMobsStep Randomly places teams of mobs on the map (enemy spawns, friendly NPCs).
? PlaceDisconnectedMobsStep Places mobs in disconnected parts of the map.
? PlaceNearSpawnableMobsStep Places mobs in a room that has a spawnable.
? PlaceNoLocMobsStep Places mobs without selecting their location. Used when the location is already pre-selected.
? PlaceRadiusMobsStep From tiles that can be reached by walking from the entrance, spawns mobs there within a certain radius.
? PlaceTerrainMobsStep Places mobs depending on the terrain.

Debug Steps

These steps are for debug or testing purposes.

Priority Step Description
0 SpecificTilesStep Sets the floor to specific tiles. Only used for debug.
7 DetectIsolatedStairsStep Testing step: Looks for a path from start to end and throws an error if none can be found.
7 DetectTileStep Testing step: Checks to see if a certain tile can be found on the map and throws an error if none can be found.

Obsolete Steps

These steps are made (mostly) obsolete by other steps.

Priority Step Description
? DisconnectedSpawnStep Spawns mobs disconnected from spawn.
Suggested to use regular spawning that selects rooms marked as disconnected instead.
? MapMusicStep Sets the music in the map.
MapDataStep is suggested instead.
? MapTimeLimitStep Sets the time limit in the map.
MapDataStep is suggested instead.

Deprecated Steps

These steps, while still currently available, are deprecated and should not be used.

Step Former Use
DetourStep ?

Unfinished Steps

These steps are not fully programmed yet.

Priority Step Description
? MinimizeBarrierStep This step will eventually remove extra unbreakable blocks.