This tutorial goes over the Tile Swap script that I have recently revised. Some new changes have been made that make the tile swapping process very intuitive and easy to use.
Required
Tile Swap
Introduction
There are some concepts and terminology that you would need to be familiar with
before effectively using this script.
Tilesets in Ace
RMVX Ace's tileset design takes a single tileset and splits it into 5 different
tileset pages (A, B, C, D, E). It then takes the A-page and breaks it down
into 5 more parts (A1, A2, A3, A4, A5)
Tile Layers
There are three layers that tiles may be placed: 0, 1, and 2.
0 is the bottom-most layer, while 2 is on the top.
In general, pages A1, A2, A3, and A4 tiles are drawn on layer 0 and 1, while pages A5 B, C, D, and E tiles are drawn on layer 2.
Depending on the draw-order, you may need to specify which
layer a tile should be drawn on.
Referencing Tiles
This script uses a custom concept of a "tile ID", which is a special string
that represents a particular tile on a tileset page.
The format of a tile ID is a letter, followed by a number.
A fast way to calculate the position is to use the formula
For page A, it is a little different. This is assuming you have all 5 parts.
If you are missing any parts, you will need to skip them appropriately.
To avoid all the unnecessary math, simply fill up the empty slots with dummy tilesets to make life easier.
Example
Now that you understand how tile ID's work, here is a working example.
In the oasis map, I want to reveal a hidden staircase at the bottom of the oasis
This means that I will need to swap the water tiles with some sand tiles, and then add some stairs.
1. Get the tile ID of the water tile in (row 2, column 3, so ((2 - 1) * 8) + 3 = 11)
2. Get the tile ID of the dark sand tile (row 4, column 1, so ((4 - 1) * 8) + 1 = 25)
Both tiles are in tileset page A.
The script call I want to use to swap all water tiles with sand tiles is
tile_swap("A11", "A25")Now I want the staircase. It is in page B, near the bottom.
I would need to specify where the stairs will appear. I can choose to use a region swap or a position swap. In this case, I will use a position swap
If you read the documentation, you will notice that I have a "layer" parameter.
Tiles on pages B, C, D, E should appear on layer 2. If you are not sure which layer things should be on, just remember that autotiles are usually on layer 0 or 1, and everything else is on layer 2. In fact this doesn't really matter THAT much but if you run into strange tile issues it might be a layer problem.
I want the stairs to appear at (21, 27), so the script call would be
pos_swap(21, 27, "B223", 2)Now I want to add some plants at the bottom of the oasis. I will use a region swap to swap in one of the plants in page B to any region 10 tiles.
The plants I want to use are "B89", on layer 2, so the script call would be
region_swap(10, "B89", 2) Finally, I create an NPC that will perform these script calls
And now I can test the final results
All tile properties are swapped, such as passage settings, terrain tags, damage floor, etc. so can walk across the sand.
It might be nice to fill the oasis with water again. Since we made several changes, it would probably be easiest to just revert everything.
revert_allA more appropriate method is to revert each specific change
Talking to the NPC would "put" the water back into the oasis
By combining all three different types of tile swapping modes (tile ID, region ID, position), you can make interesting changes to the map dynamically and easily.
Required
Tile Swap
Introduction
There are some concepts and terminology that you would need to be familiar with
before effectively using this script.
Tilesets in Ace
RMVX Ace's tileset design takes a single tileset and splits it into 5 different
tileset pages (A, B, C, D, E). It then takes the A-page and breaks it down
into 5 more parts (A1, A2, A3, A4, A5)
Tile Layers
There are three layers that tiles may be placed: 0, 1, and 2.
0 is the bottom-most layer, while 2 is on the top.
In general, pages A1, A2, A3, and A4 tiles are drawn on layer 0 and 1, while pages A5 B, C, D, and E tiles are drawn on layer 2.
Depending on the draw-order, you may need to specify which
layer a tile should be drawn on.
Referencing Tiles
This script uses a custom concept of a "tile ID", which is a special string
that represents a particular tile on a tileset page.
The format of a tile ID is a letter, followed by a number.
- The letter is the tileset page.
- The number is the position of the tile on that page.
A fast way to calculate the position is to use the formula
It is very easy to look up the position of a tile: just look at your tileset page and number the top-left tile as 1. Then, numbering left-to-right, top-to-bottom, you would get something like this((row - 1) * 8) + column
For page A, it is a little different. This is assuming you have all 5 parts.
If you are missing any parts, you will need to skip them appropriately.
To avoid all the unnecessary math, simply fill up the empty slots with dummy tilesets to make life easier.
Example
Now that you understand how tile ID's work, here is a working example.
In the oasis map, I want to reveal a hidden staircase at the bottom of the oasis
This means that I will need to swap the water tiles with some sand tiles, and then add some stairs.
1. Get the tile ID of the water tile in (row 2, column 3, so ((2 - 1) * 8) + 3 = 11)
2. Get the tile ID of the dark sand tile (row 4, column 1, so ((4 - 1) * 8) + 1 = 25)
Both tiles are in tileset page A.
The script call I want to use to swap all water tiles with sand tiles is
tile_swap("A11", "A25")Now I want the staircase. It is in page B, near the bottom.
I would need to specify where the stairs will appear. I can choose to use a region swap or a position swap. In this case, I will use a position swap
If you read the documentation, you will notice that I have a "layer" parameter.
Tiles on pages B, C, D, E should appear on layer 2. If you are not sure which layer things should be on, just remember that autotiles are usually on layer 0 or 1, and everything else is on layer 2. In fact this doesn't really matter THAT much but if you run into strange tile issues it might be a layer problem.
I want the stairs to appear at (21, 27), so the script call would be
pos_swap(21, 27, "B223", 2)Now I want to add some plants at the bottom of the oasis. I will use a region swap to swap in one of the plants in page B to any region 10 tiles.
The plants I want to use are "B89", on layer 2, so the script call would be
region_swap(10, "B89", 2) Finally, I create an NPC that will perform these script calls
And now I can test the final results
All tile properties are swapped, such as passage settings, terrain tags, damage floor, etc. so can walk across the sand.
It might be nice to fill the oasis with water again. Since we made several changes, it would probably be easiest to just revert everything.
revert_allA more appropriate method is to revert each specific change
Code:
tile_revert("A11", 0) # we changed A11 to A25, so now we want to revert changes to A11 on layer 0pos_revert(21, 27, 2) # reverting changes on position (21, 27) layer 2region_revert(10, 2) # reverting changes to region 10, layer 2
By combining all three different types of tile swapping modes (tile ID, region ID, position), you can make interesting changes to the map dynamically and easily.
Last edited by a moderator:

