The level editor exposes many game-related variables that can be used for conditional events and custom methods.

Variables can also be inputted into certain text and number fields, provided they are placed in curly braces (e.g. {i1}). These fields include:

Level Mods

Various level behaviours can be changed through “level mods”, such as noHitParticles = true or skipRankText = true. They can be read as RDCode variables and changed via custom methods.

The list of mods can be seen in-game by typing level. into the Call Custom Method input field and scrolling to the bottom of the suggestions. Click on a mod to view its description and change its value.

image.png

image.png

<aside> 💡

Most boolean mods can also be enabled by editing a .rdlevel’s settings object (at the very top of the file) to contain an array of strings called "mods". They can still be disabled through custom methods like normal.

This feature is obsolete in most cases, except to apply the startImmediately and booleansDefaultToTrue mods which apply their effect before the level begins.

e.g. "mods": ["startImmediately", "skipRankText"]

Older levels automatically have legacy mods applied this way when they are saved in a later version.

</aside>

Legacy Mods

Various boolean mods exist to re-enable quirks that were removed in later editor updates. These mods are automatically enabled for levels published before a specific editor version.

Name Enabled for levels before Description
oldVFXEasing Version 67 Initializes VFX presets at 100% intensity instead of 0%
runTaggedEventsWhileScrubbing Version 62 Runs tagged events when scrubbing past them, even if they were never called by any events
legacyTaggedEvents Version 53 Runs tagged events simultaneously across all bars, essentially obeying pauses between beats but not bars
classicHitParticles Version 49 Makes hit particles not resize with row scale
booleansDefaultToTrue Version 47 Defaults b0, b1, … b9 to true instead of false

Settable Variables

The following variables can be redefined to any value via the Call Custom Method event (e.g. i1 = 10)

Name Type Default Description
Level mods See above
i0, i1, i2, i3, i4, i5, i6, i7, i8, i9 int 0 Can be freely used for any purpose.
When playtesting in the editor, non-zero values appear in the blank panel for debugging.
f0, f1, f2, f3, f4, f5, f6, f7, f8, f9 float 0 Can be freely used for any purpose
When playtesting in the editor, non-zero values appear in the blank panel for debugging.
b0, b1, b2, b3, b4, b5, b6, b7, b8, b9 bool false Can be freely used for any purpose.
When playtesting in the editor, true values appear in the blank panel for debugging.
buttonPressCount int 0 Increases by 1 on every button press
subdivisionMissWeight float 0 Mistake weighting for subsequent missed subdivision (triangle) beats. Defaults to 0, meaning that for a 4-triangle beat, the first miss will add 1 mistake and the rest will add 0.
mistakeWeight float 1 Multiplies all mistakes from all rows by this weight
hitMarginMultiplier float 1 Multiplies the level’s hit margin by this amount. A lower number decreases the window of time where a beat can be successfully hit.
statusSignWidth float -1 Sets the width of the status sign in the top-left corner. -1 automatically adjusts width to fit its text