Useful Mapping Tools - EverestAPI/Resources GitHub Wiki
This article is currently under construction, but you might already learn something from it!
Introduction
After installing Lönn and Everest, and creating your first map, you may have stumbled along some issues with editing bigger maps, changing properties efficiently, and asked yourself: Is there really no faster ways to solve these issues?
The answer is: Yes, of course. So here is a non-exhaustive list of several useful but less known tools for Celeste mapmaking, to save you work where possible.
Basic Lönn Tricks
While being a core feature, many Lönn tricks are widely unknown, so this section aims to change that.
Nodes
A few entities and triggers will automatically place one or two nodes upon placement, but in quite a few cases you can add more nodes using the N
key to affect how the trigger/entity works. For example, the Strawberry entity can be turned into a seeded strawberry by adding nodes to it, with each node becoming one seed. Another popular use case of this is the usage of FrostHelper Activators, which can be used with multiple nodes to trigger multiple triggers at once. This means that you don't need to overlay multiple triggers to chain them, which improves readability.
Flipping/Rotating entities and decals
While spikes, decals and some other objects have different directions they can point in, those are mostly properties you can edit using the property dialog. However, if the mod they come from supports it, you can also use hotkeys to flip them horizontally (H
) or vertically (V
), or rotate them by 90° (R
), before placing them or while having them selected. This can hugely improve the speed at which you are able to place decals and other decorative elements.
Start using copy/paste
With some objects like custom spinners/spikes or decals, you might use them quite often in a map with the same properties, even though those properties aren't the default ones. Instead of using the Placement
tool, it will at times be faster to place a version of each object you are going to use in a spot of your map, and then just copy (Ctrl+C
) and paste (Ctrl+V
) them to the intended locations, kind of like you would use a palette while painting.
Use a text file as paste dump
With the way Lönn is coded, whenever you copy an object, it is actually stored as JSON object within your clipboard. This means that you can copy a Lönn object and paste it into a text file. This allows you to store the object outside of Lönn while continuing to work, or even edit the objects properties using a text editor!
Favorite tools
Whenever you look through the possible selections of a tool like Placement
or any tileset painting tool, you can double-click single entries to make them appear on top of the list, which can be a good way to save time by not having to search every time you need the entity.
Using the Debug Console
If you are using Everest in Debug Mode (can be found in the Mod Options), which is generally useful while mapping, you can often use the Debug Console to help with mapping. You can open it using the .
key, which opens a text prompt and shows several hitboxes on the screen.
Debug Commands
Debug commands can be typed using your keyboard while the console is open, and will execute when you press ENTER
.
The base game already adds quite a few basic debug commands, like give_golden
, returntomap
, mainmenu
and exit
(you can view a full list by using the help
command). Some maps might also add more commands, most notably the ah_flag
and ah_flag_set
commands from Aurora's Helper, which let you change flags in-game for testing.
Lönn Scripts
Lönn Scripts is a strong Lönn plugin that adds a new section to the Lönn toolbar: Scripts! These are short bits of code with parameters that can be used to automate editing your map. While a few useful scripts are already added by the mod itself, a lot of other mods will add more scripts to expand your toolkit even more! It is also possible to write your own Lönn Scripts if you need to, but I won't be going over that in this article.
⚠️ As Lönn Scripts can change anything in your map, you should ONLY use scripts by modders you trust, as using a malicious script can destroy your whole map, and scripts will not always supply working undo functions!! If you are unsure about the effects of a script, create a backup copy of your bin first!
Scripts are run by selecting the script in the scripts
section in the right toolbar, and then clicking within a room. You can either make the script affect the Current Room
only, or All Rooms
in the map. Most scripts will prompt you with a window asking for more parameters once you clicked, and will only proceed to change your map once you submit that dialog.
Standard scripts
Here's a non-exhaustive list of things you can do with the scripts included in Lönn Scripts:
Change properties of multiple of the same entities at once
Using the Change Attributes
script, you can select any entity type (using its Lönn name) and replace it with any other type, or just change the entity properties (by selecting the same entity type as target).
In most cases, you want to only replace some properties, like the spinner type of all spinners in a room, while keeping whether or not they should attach to solids; in this case, you should use the Allow Preserving
option. This makes it so you can then select which parameters to change and which to leave the same.
Replace all tiles of a certain type with other tiles
Using the Replace Tiles
script, you can select any tile type (foreground or background) and change it to another tileset.
This can be particularly useful if you chose a vanilla tileset (e. g. the Summit tileset), but later decided that the map should not have snow on the tiles and instead should use SummitNoSnow tiles.
The script asks for the tileset ID of the tiles you want to change, as well as the tileset ID to change them to, so you need to find these. That can be done either by looking at the Tileset XML, or by selecting a tile in Lönn, and copypasting it into a text editor.
Copy a room from another map
Using the Copy Room From Map
script, you can quickly put a copy of a room from any other bin into the current map, which is useful when working with bigger mapping projects.
Other useful scripts
⚠️ This section refers to the effects of the scripts at the time of writing. The authors of the mod may change the scripts code at any time, so proceed with caution!
Kyfex Helper
This useful helper adds a few scripts for quickly transferring content (like stylegrounds or rooms) between multiple maps.
It adds the script Copy Whole Map
to copy all rooms from another map, optionally with a prefix for the room names, which can be tremendously useful for merging Heartsides or similar collab projects.
Another useful script is Copy Stylegrounds From Map
which lets you add all stylegrounds from another bin to the current one, optionally with prefixes to the Room
and Flag
filters, custom Tags
, and lets you add offsest all positional stylegrounds, or wrap all copied stylegrounds in a new styleground group.
There also is the script Randomize Decal Colors
for replacing the tint of all decals that match a list, changing them to a randomly selected color from another list. This is particularly useful when going for natural decoration styles and aiming for more versatile decals.
Aurora's Lönn Plugin
This versatile helper mod adds more scripts which, similarly to the Change Attributes script, edit the properties of objects in the map. However, these scripts will allow a few more detailed options. Instead of just overriding properties of entities, you can specify an original value, and only replace that value with the new one, which means you can, for example, replace all spinners of a certain type with a new type, while leaving other spinner types untouched.
This option, however, comes at the cost of only being able to edit one property at a time.
Bits & Bolts
⚠️ Both of the tools supplied by this mod might not work properly with all triggers/controllers, since some of them might not expect being moved/resized/loaded by another mod, so DO NOT blame helper mods for not implementing proper interoperability with the Bits & Bolts mod!
This mod adds, among a lot of other stuff, a few useful tools to make your trigger setup a bit more tidy and readable, which may save you and your collaborators a lot of time in the future.
Resize Triggers
A simple yet effective trigger, this trigger will pick all other triggers within the area it covers, and will resize them, either to cover the room, the map, or just the area of its nodes. By placing one of them in each room, and setting them to cover the room, you can easily control darkness, bloom, colorgrades and music using triggers without blocking all rooms with unnecessary trigger soup.
Global Room Loading
You can also (as long as this mod is enabled) add a room with the prefix _bb_global_
, to make this room loaded at any time while the map is loaded. This allows you to put entities like controllers, or triggers like Extended Variant settings, in one spot, and still have them affect the whole map.
Celeste TAS
While this mod was specifically developed to assist with TASing levels of the game, it also comes with some handy tools for mapmaking.
The Debug Cursor
As one of the mod's features, opening the debug console with it adds a cursor that can be moved using your mouse. On the top-left you will see several technical details of the spot the cursor is on, which may sometimes be important. Left-clicking on any spot on the screen will show details of the trigger/entity which is at that spot. Clicking multiple times will cycle through the stack of entities/triggers, should there be multiple. This can be used to find the entity ID
and the entity class
of any object, which might be required for some advanced modded entities. An important note is that entity class
and Lönn Entity Type
are NOT the same thing!
Aurora's Lönn Plugin
One of the key features of this mod is adding more information to the map in Lönn while the game is running.
Using View > Show Player Silhouette
allows you to activate a trail of the player that shows where it moved and resets on death, which can allow you to first play a segment of your map and then place the hazards necessary to enforce it. If the silhouette doesnt show the position specifically enough, you might want to use View > Show Player Hitbox Silhouette
instead, which shows the trace of the player's hitbox precisely instead.