Create bombable doors in Solarus Quest Editor

Here's how you can bomb doors to open them in Solarus. The trick is to name the entities correctly.

Carefully read the Solarus docs for Door for more information.

1. Create the pathway

Create your pathway as if the door were already opened.

  • Make sure it's fully traversable.
  • It must exist on the same layer as the rest of the floor (in this case, that's layer 0).
  • Add some traversable tiles above the entrance so you aren't blocked by the wall when traveling through.

2. Add the ceiling

Now place a tile on the ceiling over the traversable area.

  1. Right click the tile, and Convert to dynamic tile.
  2. Double click the tile and name it weak_wall_open. (IMPORTANT!)
  3. Set the tile to be one layer above the others. This is so it will pass above Link's head, rather than Link walking over it. In this case, we've set it to layer 1.

3. Cover the pathway

Block the path with wall tiles.

  1. Convert the tile to a dynamic tile.
  2. Name it weak_wall_closed. (important)
  3. It must be on the same layer as the floor (layer 0 in this case)

4. Create the door

Now we add the door entity.

  1. Click the Door icon above the map editor to place the door on top of the wall.
  2. Double click the door
  3. Set its sprite to Door (very weak wall), or whatever you'd like.
  4. Set its opening mode to By explosion
  5. Name it weak_wall (again, important)
  6. It must be on the same layer as the floor (layer 0 in this case)

It works!

Enter the map and attempt to bomb the wall. In-game it will look correct.

This works because of how we've named the tiles. From the Solarus docs:

Additionaly, dynamic tiles whose names also have this prefix and end by _open or _closed are automatically enabled or disabled, respectively. This helps a lot to make tiles follow harmoniously the state of doors. See map:open_doors() for more information about these mechanisms.

Thus, we could name the entities anything we like as long as we append _open and _closed to the chosen name for those respective entities. No manual scripting is required.

Creating hidden walls

The procedure for creating hidden walls is exactly the same. At the end of the process, right click the weak_wall_closed entity and select Bring to front so it's layered above the weak door entity.