-
Notifications
You must be signed in to change notification settings - Fork 28
Mapmaking
To make maps, you need to use Tiled.
On the map, there are a lot of things to explain. There are layers, and on each layer, there can be any number of regions, interactables, or terrain.
- The bottom-most layer is Terrain. On this, there is nothing collidable.
- The next layer is the Blocking layer. Here, Air, Brick, and Mountains are dense and cannot be walked through.
- The third layer is the Interactables layer. On this, you will find things like Bosses, Doors, Teleports, Collectibles, Treasure, and Trainers.
- The fourth -- and optional -- layer is the Regions layer. Here, you will find squares that denote certain map regions. They're mostly cosmetic, but they have to have a name.
There is a little bit of information required or optional by each of the things on the Interactables layer.
- Trainers simply need their name to correspond with the class that they are. The Mage trainer for example, is named
Mage
, and has the typeTrainer
. - Collectibles are similar to Trainers. They only need a name and to be the type
Collectible
. - Bosses are similar to Trainers and Collectibles in that they only need a name and the type
Boss
, but they need to specify additional information inboss.json
andbossitems.json
. They can also specifyteleportOnDeath
-- this has to be a location (similar totoLoc
for Teleports), and if the players lose, they get teleported away. More on that later. - Treasure is remarkably similar to Bosses, in that they only need a name and the type
Treasure
. There needs to be some extra data specified intreasure.json
. More on this later. - Doors are open-canvas. They can do pretty much everything that Treasure can.
- Teleports need to specify either
toLoc
(this is a specified teleport location) ordestx
,desty
, andmap
(the name of the map). There also has to be amovementType
(eitherascend
,descend
,teleport
, orfall
). Optionally, adestName
can be specified - this would be the display name of the new location. They should be named, but that's optional. For examples of these, feel free to ask around or check the maps out.
Now, onto the good stuff. Any interactable can specify whether or not their tile can be entered using various means, which simply means that you can specify requirements for entering a tile. You can restrict interactions by class, boss kills, collectibles found, or achievements earned. You simply specify one of these attributes:
requireBoss
requireClass
requireCollectible
requireAchievement
requireMap
requireRegion
And you set it to something like Jester, Vampire Lord, Prisoner Shackle, Golden I.
-
Anything in the object layer can have
flavorText
set on it, and that will show up when looking at it from the web interface. -
If you want to force an event to happen (such as a level down, fate pool visit, or something), you can set
forceEvent
to the internal name used by the game (providence
,levelDown
,battle
, etc). -
If you want to make your content event-specific (winter, etc), then you can set the
holiday
attribute to the holiday you want.
Some examples of things you can do here, are restrict teleports to having a certain boss killed (maybe there's some map progession), restrict doors from opening (except for Thieves, because they're awesome), restrict chests from being opened without their Key (which would be a collectible), or require some achievement to enter a new zone.
You can specify any combination of those four requirements on anything.
If you want to make your teleport have a custom message when teleporting a player, you can specify anything (ie, instead of Sedgwick ascends to Norkos.
you could have Sedgwick ends up lost on Idle Island.
The syntax for specifying this is as follows:
%playerName ends up lost on %destName.
All of the content will go through a verification check when a pull request is submitted, and it must conform to these requirements:
- All boss parties must have valid members.
- All boss treasure (collectibles, items) must have a dropPercent such that 0 < dropPercent <= 100.
- All bosses and boss parties must be on the map. Bosses included in a party do not need to also be on the map, just the party.
- All treasure chests must be on the map.
- All treasure in chests must be valid.
- All teleports must lead to non-dense tiles that are within the boundaries of the map.
- All staircases must lead to a matching staircase (ie, if you are going down, the teleport should drop you on a tile that goes up). This does not apply to teleports or falls.