Level Editor

The level editor allows creating custom levels!

To start making a level, just click Edit Custom Levels... -> Create a new level (or click an existing one to edit it).

If debug mode is enabled, pressing F3 will switch the player from playing a level to editing it.

## Editor Menu

"Get new levels" and "Level History" do the same thing as in the Custom Levels menu.

### Edit Custom Levels

Allows editing singular levels that are in your Data\Worlds\Levels folder. These are the levels that you obtain upon saving a level downloaded from a code.

Clicking a level in the list will allow you to edit that level. Right clicking a level will allow deleting that level.

If "Sort By Name" is disabled, levels are sorted alphabetically by their levelid value in the level's .ld file (and by filename if two levels are equal), which by default increments with every new level made such that levels made later appear later in the list. If it is enabled, levels are sorted alphabetically by name.

### Edit Levelpacks

Allows editing entire levelpacks that are in your Data\Worlds folder. After selecting a pack, the interface is very similar to the Edit Custom Levels menu, but with more options:

Levels that are set to the "map" type have a purple border around them. Selecting "Sort by Type" will place all map levels at the start of the level list.

The "change author" and "change name" buttons open a text input to change the respective value.

"Set first level" sets the level that the player spawns in the first time they open the levelpack. The level that this is set to has a pink border with an S around it.

"Set world map" sets the initial parent level that the player has when loading up the map. Returning to map from the first level will send the player here. The level that this is set to has a yellow border with an M around it.

The worlds "baba" and "Levels" will not appear in the list of levelpacks to edit. "baba" is the main game and editing it allows changing levels in it, and "Levels" is the folder used to manage levels not in a levelpack.

### General Settings

There are some settings to change gamepad controls in this menu. There are also 10 tutorials that teach how to use the editor, though the last one is a joke.

#### Enable Advanced Words

Some words don't appear in the premade object list that the editor has unless this is enabled.

These words are: All Letters, .

#### Enable Advanced Features

This enables the "Edit Levelpacks" option. It also enables most of the options in the "Edit Objects" menu.

This feature isn't on the Nintendo Switch as well.

## Objects

This can also be accessed with the tab button. To switch to an object, simply click on it.

The "Pick nothing" button selects empty space, which can be used to remove objects.

### Managing Objects

By default, a level includes .

The "new object" button allows adding objects to the list. Simply click the wanted object in the list, and voila!

* Adding an object will also add its respective text, and vice-versa.
	+ There are also some pairs of words where adding one will add the other: , , , .
* Some objects are not present unless "Enable Advanced Words" is enabled.

If "remove object" is enabled, the next tile clicked will be removed from the list.

Objects can be dragged around the object grid to be positioned in whatever place is most convenient.

### Search

Allows searching for an object by name.

"Remove search" removes the search string, though this can also be done by searching for an empty string. Typing in either object menu will also trigger the search menu to appear.

### Tags

All of the objects are also placed into tags. This feature allows filtering for them.

Searching for multiple tags will only provide objects that meet all of them.

### Stacking Pairs

Allows compressing a noun/text pair into a single entry in the object list instead of two.

The scroll wheel can be used to switch between an object and its text. There is also a button next to the button to enable or disable this.

Note that the customizable object positions in the list for the two modes are completely different, so it's best to commit to only using one

### Editing Objects

If "edit object" is enabled, an edit menu will open for the next tile clicked. This can also be accessed by rightclicking an object. Note that only editing the sprite is available unless "Enable Advanced Features" is enabled.

This menu includes the visuals (0/8/16/24 for objects, and both colors for text, and all 3 frames of each) at the left, and also shows the object's name, ID, and type.

#### Visuals

Changing the sprite allows selecting any object in Data\Sprites, or Data\Worlds\worldname\Sprites if editing a level pack.

Sprite filenames are in the format <name>\_<id>\_<frame>.png, and should be 24x24 pixels in size. Frames 1, 2, and 3 must always exist for all sprites for the wobble effect, even in the "None" animation style. Below is a table of what sprite ID is used by each animation style

Objects that are not tiled use sprites 31 and 0-3 when facing right, 7-12 when facing down, 15-23 when facing left, and 24-28 when facing up. Sprites 0-3 gives a respective animation frame and 7 is the sleep sprite, taken modulo 8.

"Character" changes animation frame every time they move, while the "animated" options change animation every turn.

When calculating which sprite to use for "Tiled" objects, a bitfield is used, where right is the first bit (1), up is the second bit (2), left is the third bit (4), and down is the fourth bit (8). The sum of these numbers based on which directions the sprite should connect to is the sprite ID that will be used. For example, not connecting to any side will use sprite 0 (0+0+0+0), connecting to the right is ID 1 (1+0+0+0), a tile connecting upwards and downwards will be sprite 10 (0+2+0+8), and a tile connecting to every direction will be sprite 15 (1+2+4+8).

Text have two color options. The active color is its color when in a rule. Available colors are based on the palette.

The z-level determines what gets drawn on top of other objects, with higher being drawn on top. This is an integer clamped to [0,20].

#### Function

An text is named text\_name. An object's name determines what it's called, both in letter spelling and the name shown in the pause menu.

Nouns' text refers to the object named the same as it. All non-noun text will only function if spelled the proper name. Letters will spell words based on their name.

All objects should have type "object" and text "text". Note that "object" typed objects can parse as text if they are . Nouns can only refer to objects with type "object".

Having more than one object with the same name is a bad idea and will cause issues with undoing. (See Metatext)

The text type refers to where things are able to form a rule. Things may still function properly if set to the wrong texttype (eg. property as type 0 still functions); however, buggy behaviors will likely occur.

The "BABA" "IS" "YOU" "LONELY" "ON" "BA" buttons can be used to easily set text type to 0, 1, 2, 3, 7, 5 respectively.

 0
 1
 2
 3
 4
 5
 6
 7
 8

 will accept things with texttype 0,2.  will accept things with texttype 2.  will additionally accept . These are special behaviors which occur independently of texttype. They are set to the object using the argtype property when you add them to your object list, but will not change apart from that.

## Placing Objects

There are three layers, switchable with the L buttons at the top right. To stack objects, they must be placed on separate layers. All placement will only occur on the current layer.

Right clicking will change the held object to the object on the space clicked on that layer (block picker), and set your placement mode back to freeform. Middle clicking will also do this, but will also remove the object that was clicked. Switching objects otherwise is done through the objects menu.

There are some recently used items at the top right. The scroll wheel will allow quickly swapping between these. An object can also be saved by rightclicking on it.

Ctrl + scroll wheel can be used to switch between an object and its text.

Ctrl + left click allows dragging an object, including levels, paths, and specials, which can't be moved efficiently with the selection tool.

The large arrows can be used to rotate the objects being placed. Pressing arrow keys on the keyboard will also do this.

### Placement Modes

The objects menu has additional settings, which are used to determine how objects are placed.

In all modes except freeform and flood fill, releasing on the same tile as the clicked tile will cancel placement.

 Freeform
 Line
 Rectangle
 Filled Rect.
 Selection
 Flood Fill
 Eraser

### Selection Tool

When selecting an area with the selection tool, that area will be deleted, but the area selected then becomes the "object" being placed. Placing it somewhere will not clear your selection.

A selection can be rotated with left or right, and vertically flipped with up or down.

Pressing F4 will give the player a text input. If words are typed, the player will switch to the selection tool with those typed words in hand, and will also automatically add any missing objects to the object list. (eg. "baba is move" will give a selection of  and will add  to the palette if it's not already in there)

### Levels

Levels can only be placed in level packs. They can only be placed in freeform mode. Existing levels can be edited by clicking a level with the tool selected. The same prompt also appears when the level is placed.

Levels cannot interact with normal objects, and normal objects cannot interact with levels. (They can be treated as a different set of layers.)

When the level tool is selected, hovering over a level displays the levelname it leads to.

Selecting a level opens a similar menu to that in the main editor. The selected level defaults at the current level.

Two colors can be set that change the color of the level. Left click sets both, while right click only sets the one with gray outline.

For information about state, see LEVEL.

The visual selector's outer arrows change the value by 10. The special icons can be configured in map settings > map icon setup.

### Paths

See Paths to see how paths work. The gate count's outer arrows change the value by 5.

The object of placed paths is the object that is being placed of normal objects. The sprite in the editor also changes if it is a gate and what the gate is set to, but does not change based on its object.

When hovering over a path with the paths tool enabled, the data of the path is displayed where the level name normally is.

### Special

Specials share many properties with levels. There are multiple types of specials. Clicking the special again allows editing specials.

Controls: Displays game's controls onscreen. Can be adjusted which controls it displays.

Level: Makes objects it overlaps have a level metadata. When an object is turned into a level, it can be entered. Its color and icon can be adjusted.

Flower: Rotating flower. Its color and radius can be adjusted.

Sign: Adds a message to an object which is displayed when YOU object is next to or on the sign object. It also allows to display messages from the language file.

Art: The image area as seen in Gallery.

## Settings

This menu can also be reached with F1.

It has options for level name, author, and subtitle, which appear when playing the level.

Level music can be changed. Displayed name is the filename (minus extension). Files are placed in Data\Music and are .ogg files.

Particles are background (or foreground) effects so it isn't a single flat color.

The palette sets the color scheme of everything while in the level. They can be found in Data\Palettes or Data\Worlds\worldname\Palettes.

The world size is capped at 33x18 (68x38 in debug mode). Everything too far off to the right/bottom will be removed if the level shrinks.

### Map Settings

Levels set to "Map" type don't have music stop when there are no objects, and the level name doesn't appear upon entry.

The "levels needed to clear" changes the amount of levels needed to receive the Blossom (and propogate paths) from the level. The outer arrows change the value by 10, and it is clamped to [0,99].

The map icon setup allows setting 20 sprites that level icons can have set as their icon.

Some levels have a custom parent. When these levels are won, the player goes to the custom parent instead of the level they came from. (This does not apply to transforms!)

## Menu

This menu can also be reached with the escape key.

Testing the level allows the level to actually be played. The transform status of levels in the ba.ba savefile (inaccessible normally) is used. Levels cannot be entered via select while testing a level. Beating or transforming a level will return you to the editor immediately. The Return to Map option is also replaced with a Return to Editor button.

If "Upload Level" is selected, you will have to verify that the level is beatable. Only a win/end/all is done will allow the level to be uploaded. The upload will fail if the level has any objects with sprites or names not normally in the game.

### Themes

A theme is a collection of the included objects (and edits made to them), palette, music, and particles. Saving current theme will save those in the current level, allowing easy copying to another level.

There is a prompt to load a theme when creating a new level. Loading a theme will clear all objects in the level.

Themes are stored in Data\Themes or Data\Worlds\worldname\Themes.

## Notes

All string inputs provide a keyboard the user can click. However, the keyboard can be used as well. Punctuation symbols (-.?!,':\_><) cannot be typed from the keyboard. Enter or the OK button confirms a string. Cancel cancels the option that led to the string input in the first place. Backspace or the left arrow removes the last character.

Lists with many pages have two page-swap buttons for each direction. The inner ones move 1 page, and the outer ones 5. If there is not enough pages left to move the full 5, the button is greyed out.