I’ve always loved some interactivity in my maps, especially the dungeon ones. It is fun adding secret doors that can be opened, rotating sections, and other surprises. If you watched my latest live stream, you saw me build a hedge maze with a rotating central section, where the inner region was only reachable if you rotated the it first using a clickable hotspot in the map. (You’ll find both a link to the recording as well as my map in this forum conversation.)
I thought I could show you a couple of more examples of nice easy macros you can assign to your hotspots to accomplish interesting results, and hopefully come away with an expanded understanding of macros at the same time.
Before we dive into this topic, it is important to point out that this creates interactivity when viewed inside CC3+ itself. If you wish to display your map in another way, for example in a VTT you would have to export one image for each “state”, this interactivity can’t accompany exported static images.
You can download my example map.
Hotspot Basics
In CC3+, a hotspot is a location you can click with your mouse to trigger a macro. Making a hotspot is easy, just pick Tools -> Macros -> Make Hotspot. This will bring up a text edit window where you can write the text of your macro (Don’t worry, you can easily edit it later if you don’t know exactly what to write, just make sure to put in something, even if meaningless). After clicking ok you will need to mark it’s location in the map by clicking two corners of a rectangle.
After so doing, you should see your hotspot in the map marked as a rectangle, with some text below it (this is the text of the macro). If you don’t see the text, it may be either too small or way too big, since it uses the current setting for text size at the time of creating the hotspot.
Note that a hotspot in CC3+ is always rectangular, and you can’t rotate it.
Once the hotspot has been placed, you can click on it. You’ll notice your cursor changes to a hand icon when you move it over the active area. Clicking it will run the macro (Which will return in an error message if you typed something wrong, or just put in some placeholder text.
To edit the macro associated with the hotspot, use the Numeric Edit command on the hotspot outline. This will bring back up the text edit dialog.
Hotspots are normally not visible when you load a map, you’ll only notice that they are there when you move your mouse over them. However, if you want to see them because you want to work on them, you can show them by using View -> Show Hyperlinks. Likewise, you can hide them by using View -> Hide Hyperlinks (Note that hyperlinks are always made visible each time you add a new one to the map).
The Hidden Pit
A dungeon classic, the pit that opens under the feet of the unwary adventurer, dropping them into darkness. We can use a hotspot to instantly hide the floor above the pit, revealing it’s alluring depths to the unfortunate explorer.
For my example map here, I chose to just stack two identically sized pit symbols on top of each other. One closed and one open. Now, all I have to do is to hide the closed pit symbol, which will cause the open one below it visible. And how to do that? Well, hiding and showing layers are easy, so what I did was create a dedicated layer for it called PIT COVER, and I assigned the closed symbol (only) to that layer. Generally, it is better to use a layer than a sheet for this, because sheets also determine effects and ordering, and I want to be able to have a hideable entity without affecting order.
So with the setup out of the way, what do we need in a macro to be able to hide a layer?
Well, CC3+ has the convenient TOGL command, which toggles the visibility of a single layer. We also have the TOGLF which toggles multiple layers at once. The advantage with TOGLF is that it toggles all layers that matches a given filter, so it won’t complain even if it toggles no layers, while TOGL will complain that the layer doesn’t exist. I therefore often use TOGLF just to avoid error messages if someone deletes the wrong layer. The macro will stop working obviously, but it will do so silently instead of throwing an error message.
So, with that in mind, we only need a single line macro, namely
TOGLF PIT COVER
and that is all there is to it. Now, for a single line macro, there is two ways you can write it into the editor. Either, you can enable the Multi-line checkbox, and just hit enter (exactly once) at the end of the line so the cursor moves to the next line, OR you can leave it in single line mode, and add a single semi-colon (;) to the end. Don’t do both though.
A hidden Room With a Secret Door
This was done identical to the pit. Only difference is that instead of using an object on top that cover/uncovers the pit below, this time we add the room and the door to the layer we toggle, and we set it as hidden by default. The macro is identical though
TOGLF SECRET ROOM
A Moving Statue
Have a statue that moves around as players try to get close to it? CC3+ have several ways of moving things around, such as the MOVE command, but for my example here, I’ll actually be rotating the statue around a central point instead. What is nice about rotation is that if the rotation axis is far away from the object, it can move a long distance. I am using this in my dungeon to rotate it around the center of the dungeon in 90 degree steps, so it will always end up at the end of one of the four hallways.
Again, I use a dedicated layer for the statue. Not to hide/unhide it, but a layer is also the most convenient way to select the entities to move as well. So, this time my macro is three lines
SELBYL ROTATE;MOVABLE STATUE;90;50,50 REDRAW
So, what does this macro do? The first line, SELBYL, transitions CC3+ into select by layer mode. This means that instead of having you select things using the mouse, it will ask for the layer to select instead, and will select everything on that layer. This works much better in a macro than mouse selection.
Then, line 2 does the actual job. ROTATE is the command, the rest are arguments to it. Notice how arguments are separated by semicolons. It is normally also possible to use spaces, but since it is possible to use spaces inside the layer name, CC3+ needs an alternate way, and semicolons are one way. We could also hit enter between each argument instead, but I find that unreadable. Now, the first argument is the layer we want to select entities from (we can specify a layer here thanks to the SELBYL command above), then it is the number of degrees to rotate, and finally the coordinates for the center point of rotation. The entity is rotated around this center point, so in this case, we rotate it around the center of the dungeon (If we wanted to rotate it in place, we would need to specify a center point in the middle of the symbol itself)
The final line just redraws the screen so we get rid of the artifacts left behind from moving entities. For performance reasons, CC3+ doesn’t redraw the screen automatically after every action.
Links to other maps
A nice way to use hotspots is to use them to add links to other maps. You can do this the same way as adding hotspots, but there is also a dedicated command for it at Tools -> Hyperlinks -> Link with Map. This is a more convenient way of adding the link since you get to pick the file, but in the end, all it does is to make a regular hotspot for you with the following command
~LOADM @Examples\Maps\CC3 standard overland.FCW;
You can edit this the same way as any other hotspot.
Adding Information to Your Map
You can create hotspots that open map notes, external files, or webpages. I wrote a separate blog article on that which you can find here.
More Interactivity
If you need more advanced interactivity, I also wrote an article a couple of years ago that shows you how to make a very simple game in CC3+ using interactive hotspots. That article is a good next stop after this one.
If you have questions regarding the content of this article, please use the ProFantasy forums. It can take a long time before comments on the blog gets noticed, especially for older articles. The forums on the other hand, I frequent daily.