Internal commands list - VVVVVV internal commands Welcome, Guest. Please login or register.
Color coding:
  • Normal - Should be safe, worst case scenario is VVVVVV crashing because you made a mistake.
  • Blue - Designed for the main game, might be not or less suitable for custom levels.
  • Orange - These work and nothing will go wrong normally, but when run in VVVVVV 2.2 or below with certain specific arguments, it's possible to cause loss of main game save data with this command.
  • Red - When run in VVVVVV 2.2 or below, will either unlock certain parts of the main game (which you shouldn't want a custom level to do, even if you say everyone has already completed the game), or corrupt the save data altogether. Do not use.

Show commands for: [VVVVVV] VVVVVV-CE

activateteleporter()
Activate the first teleporter in the room, which makes it flash random colors, and animate erratically.
The teleporter's tile is set to 6, and the color is set to 102. This command makes the teleporter do nothing when touched, as the teleporter's tile is set to something which isn't 1.
activeteleporter()
Makes the first teleporter in the room white, aka color 101.
This command does not change the tile, so it will not affect functionality.
alarmoff
Turns the alarm off.
alarmon
Turns the alarm on.
altstates(state)
Changes the layout of certain rooms, being the trinket room in the ship before and after the explosion, and the secret lab entrance (custom levels don't support altstates at all).
In the code, this changes the global altstates variable.
audiopause(on/off)
Force-enable or disable unfocus audio pause, regardless of the user-set audio pause setting. Defaults to off, i.e. pause audio during unfocus pause.
This command was added in 2.3.
backgroundtext
Makes the next shown textbox not wait for ACTION to be pressed before continuing the script. The most common usage of this is to display multiple textboxes at once.
befadein()
Instantly remove a fade, such as from fadeout or fadein.
blackon()
Resume rendering if it was paused by blackout.
blackout()
Pauses rendering.
To make the screen black, use shake at the same time.
bluecontrol
Start a conversation with Victoria just like when you meet her in the main game and press ENTER. Also creates an activity zone afterwards.
changeai(crewmate, ai1, ai2)
Can change the face direction of a crewmate or the walking behaviour
crewmate - cyan/player/blue/red/yellow/green/purple
ai1 - followplayer/followpurple/followyellow/followred/followgreen/followblue/faceleft/faceright/followposition,ai2
ai2 - required if followposition is used for ai1
faceplayer is missing, use 18 instead. panic also does not work, requiring 20.
changecolour(a, b)
Changes the color of a crewmate. This command can be used with Arbitrary Entity Manipulation.
a - Color of crewmate to change (cyan/player/blue/red/yellow/green/purple)
b - Color name to change to. Since 2.4, you can also use a color ID
changecustommood(color, mood)
Changes the mood of a rescuable crewmate.
color - Color of crewmate to change (cyan/player/blue/red/yellow/green/purple)
mood - 0 for happy, 1 for sad
changedir(color, direction)
Just like changeai, this changes face direction.
color - cyan/player/blue/red/yellow/green/purple
direction - 0 is left, 1 is right
changegravity(crewmate)
Increase the sprite number of the given crewmate by 12.
crewmate - Color of crewmate to change cyan/player/blue/red/yellow/green/purple
changemood(color, mood)
Changes the mood of the player or a cutscene crewmate.
color - cyan/player/blue/red/yellow/green/purple
mood - 0 for happy, 1 for sad
Cutscene crewmates are crewmates created with createcrewman.
changeplayercolour(color)
Changes the player's color
color - cyan/player/blue/red/yellow/green/purple/teleporter
changerespawncolour(color)
Changes the color the player respawns with upon death.
color - red/yellow/green/cyan/blue/purple/teleporter or number
This command was added in 2.4.
changetile(color, tile)
Changes the tile of a crewmate (you can change it to any sprite in sprites.png, and it only works for crewmates created with createcrewman)
color - cyan/player/blue/red/yellow/green/purple/gray
tile - Tile number
clearteleportscript()
Clears the teleporter script set with teleportscript(x)
companion(x)
Makes the specified crewmate a companion.
x - 0 (none) or 6/7/8/9/10/11
createactivityzone(color)
Creates an activity zone at the specified crewmate (or the player, if the crewmate doesn't exist) which says "Press ACTION to talk to (crewmate)"
createcrewman(x, y, color, mood, ai1, ai2)
Creates a crewmate (not rescuable)
mood - 0 for happy, 1 for sad
ai1 - followplayer/followpurple/followyellow/followred/followgreen/followblue/faceplayer/panic/faceleft/faceright/followposition,ai2
ai2 - required if followposition is used for ai1
createentity(x, y, e, meta, meta, p1, p2, p3, p4)
Creates the entity with the ID e, two meta values, and 4 p values.
e - The entity ID
A list of entity IDs and the meta/p values they use can be found here.
createlastrescued()
Creates the last rescued crewmate at hardcoded position (200,153). The last rescued crewmate is based on the Level Complete gamestate.
createrescuedcrew()
Creates all rescued crewmates
customifflag(n, script)
Same as ifflag(n,script) in simplified scripting
customiftrinkets(n, script)
Same as iftrinkets(n,script) in simplified scripting
customiftrinketsless(n, script)
Same as iftrinketsless(n,script) in simplified scripting
custommap(on/off)
The internal variant of the map command
customposition(type, above/below)
Overrides the x,y of the text command and thus sets the position of the text box, but for crewmates, rescuable crewmates are used to position against, instead of createcrewman crewmates.
type - center/centerx/centery, or a color name cyan/player/blue/red/yellow/green/purple (rescuable)
above/below - Only used if type is a color name
cutscene()
Makes cutscene bars appear
delay(frames)
Pauses the script for the specified number of frames. Controls are forced to be unpressed during this pause.
destroy(object)
Removes an entity. This is the same as the simplified scripting command.
object - gravitylines/warptokens/platforms/moving/disappear
moving and disappear were added in 2.4.
do(times)
Starts a loop block which will repeat a specified number of times. End the block using loop.
times - The amount of times the block will loop.
endcutscene()
Makes cutscene bars disappear
endtext
Makes a text box disappear (fade out)
endtextfast
Makes a text box disappear immediately (without fading out)
entersecretlab
Turns on Secret Lab mode.

2.2 AND BELOW: Actually unlocks the Secret Lab, which is probably an unwanted effect for a custom level to have.
everybodysad()
Makes all crewmates sad.
Does not work on crewmates placed in the editor.
face(A, B)
Makes crewmate A look at crewmate B.
A - cyan/player/blue/red/yellow/green/purple/gray
B - cyan/player/blue/red/yellow/green/purple/gray
Does not work on crewmates placed in the editor.
fadein()
Fades back in from fadeout.
fadeout()
Fades the screen to black. To undo, use fadein or befadein.
finalmode(x, y)
Teleports you to Outside Dimension VVVVVV, (46,54) is the initial room of the Final Level
flag(n, on/off)
Same behavior as simplified command
flash(length)
Makes the screen white for length amount of frames.
length - The amount of frames. 30 frames is almost one second.
This is different from the simplified command, which actually calls flash(5), playef(9) and shake(20) at the same time. See: playef and shake.
flip
Make the player flip by pressing ACTION.
If the player is not on the ground, this will not work, since it's simulating an ACTION press. Likewise, this command right after a textbox will not function for the same reason as two consecutive ACTION presses in a row is treated as holding the button down, which does not flip the player.
flipgravity(color)
Flips the gravity of a certain crewmate, or the player.
color - cyan/player/blue/red/yellow/green/purple
Before 2.3, this wouldn't unflip crewmates, or affect the player.
flipme
Correct vertical positioning of multiple text boxes in flip mode
foundlab
Plays sound effect 3, shows text box with "Congratulations! You have found the secret lab!" Does not endtext, also has no further unwanted effects.
foundlab2
Displays the second text box you see after discovering the secret lab. Also does not endtext, and also does not have any further unwanted effects.
foundtrinket(x)
Makes a trinket found
x - Number of the trinket
gamemode(x)
teleporter to show the map, game to hide it (shows teleporters of the main game)
x - teleporter/game
gamestate(state)
Change the current gamestate to the specified state number.
state - The gamestate to jump to
A full list of gamestates is here.
gotoposition(x, y, gravity)
Change Viridian's position to (x,y) in this room, and change their gravity as well.
gravity - 1 for flipped, 0 for not flipped. Any other values result in glitchy player gravity.
gotoroom(x, y)
Change the current room to (x,y).
x - x coordinate
y - y coordinate
These room coordinates are 0-indexed.
greencontrol
Start a conversation with Verdigris just like when you meet him in the main game and press ENTER. Also creates an activity zone afterwards.
hascontrol()
Makes the player have control. Note that you can't use this to regain control while in the middle of a delay.
hidecoordinates(x, y)
Set the room at the given coordinates to unexplored
hideplayer()
Makes the player invisible
hidesecretlab
Hide the secret lab on the map
hideship
Hide the ship on the map
hidetargets()
Hide the targets on the map
hideteleporters()
Hide the teleporters on the map
hidetrinkets()
Hide the trinkets on the map
ifcrewlost(crewmate, script)
If crewmate is lost, go to script
ifexplored(x, y, script)
If (x,y) is explored, go to internal script.
These room coordinates are 0-indexed.
ifflag(n, script)
Same as customifflag, but loads an internal (main game) script
iflang(language, script)
Check if the current language of the game is a certain language, and if so, jump to the given custom script. loadtext has no influence on this command; only what language the user has selected in the menu.
language - The language to check, usually a two-letter code, such as en for English
script - The custom script to jump to, if the check succeeds
This command was added in 2.4.
iflast(crewmate, script)
If crewmate x was rescued last, go to script
crewmate - Numbers are used here: 0: Viridian, 1: Violet, 2: Vitellary, 3: Vermilion, 4: Verdigris, 5 Victoria
ifskip(x)
If you skip the cutscenes in No Death Mode, go to script x
iftrinkets(n, script)
Same as simplified scripting, but loads an internal (main game) script
iftrinketsless(n, script)
Checks if the number given is less than an amount that's related to trinkets. However, it checks against the greatest number of trinkets that you have ever gotten during a single playthrough of the main game, NOT the amount of trinkets you actually have. Loads an internal (main game) script
ifwarp(x, y, dir, script)
If the warpdir for room (x,y), 1-indexed, is set to dir, go to (simplified) script
x - Room x coordinate, starting at 1
y - Room y coordinate, starting at 1
dir - The warp direction. Normally 0-3, but out-of-bounds values are accepted
jukebox(n)
Makes a jukebox terminal white and turns off the color of all the other terminals. If n is given, a jukebox activity zone will be spawned at a hardcoded position and if a terminal is at the same hardcoded position it will be lit up.
The possible values of n and the hardcoded positions are these:
1: (88, 80), 2: (128, 80), 3: (176, 80), 4: (216, 80), 5: (88, 128), 6: (176, 128), 7: (40, 40), 8: (216, 128), 9: (128, 128), 10: (264, 40)
leavesecretlab()
Turn off "secret lab mode"
loadscript(script)
Load an internal (main game) script. Commonly used in custom levels as loadscript(stop)
loadtext(language)
In custom levels, load the translation for the given language.
language - The language to load, usually a two-letter code, such as en for English. Pass an empty language code to revert to the default behavior of simply using VVVVVV's language.
This command was added in 2.4.
loop
Put this at the end of a loop block started with the do command.
missing(color)
Makes someone missing
moveplayer(x, y)
Moves the player by x pixels to the right and y pixels down. Negative numbers are accepted as well.
musicfadein()
Fades the music in.
Before 2.3, this command did nothing.
musicfadeout()
Fades out the music.
nocontrol()
Sets game.hascontrol to false, which removes control from the player. game.hascontrol is automatically set during "- Press ACTION to advance text -" and closing text boxes, so this gets undone after those prompts
play(n)
Start playing a song with internal song number.
n - Internal song number
playef(sound)
Play a sound effect.
sound - Sound ID
In VVVVVV 1.x, there was a second argument which controlled the offset in milliseconds at which the sound effect started. This was removed during the C++ port.
position(type, above/below)
Overrides the x,y of the text command and thus sets the position of the text box.
type - center/centerx/centery, or a color name cyan/player/blue/red/yellow/green/purple
above/below - Only used if type is a color name
purplecontrol
Start a conversation with Violet just like when you meet her in the main game and press ENTER. Also creates an activity zone afterwards.
redcontrol
Start a conversation with Vermilion just like when you meet him in the main game and press ENTER. Also creates an activity zone afterwards.
rescued(color)
Makes someone rescued
resetgame
Resets all trinkets, collected crewmates and flags, and teleports the player to the last checkpoint.
restoreplayercolour()
Changes the player's color back to cyan
resumemusic()
Resumes the music after musicfadeout.
Before 2.3, this was unfinished and caused various glitches, including crashes.
rollcredits()
Makes the credits roll.

2.2 AND BELOW: It destroys your save after the credits are completed!
setactivitycolour(color)
Change the color of the next activity zone that gets spawned.
color - Any color that text takes
This command was added in 2.4.
setactivityposition(y)
Change the position of the next activity zone that gets spawned.
y - The y position
This command was added in 2.4.
setactivitytext
Change the text of the next activity zone that gets spawned. The line after this command will be taken as the text (just like text with 1 line).
This command was added in 2.4.
setcheckpoint()
Sets the checkpoint to the current location
setfont(font, all)
In custom levels, set the font to the given font.
font - The font to set the font to. If left blank, this will set the font to the default font of the custom level.
all - If all is specified (literally the word all), then this retroactively affects all textboxes that are already on screen. Otherwise simply leave this out.
This command was added in 2.4. The all argument was added in 2.4.1.
setroomname
Change the room name of the current room. The line after this command will be taken as the name (just like text with 1 line).

This name is not persistent and will go back to the default room name when the room is reloaded (e.g. by leaving and coming back).

This name overrides any special changing room name, if the room has one.
This command was added in 2.4.
setrtl(on/off)
In custom levels, toggle whether or not the font is RTL (right-to-left) or not. By default, the font is not RTL (it is LTR).

RTL mode mainly makes textboxes right-aligned, for languages like Arabic.
This command was added in 2.4.
shake(n)
Shake the screen for n ticks. This will not create a delay.
showcoordinates(x, y)
Set the room at the given coordinates to explored
showplayer()
Makes the player visible
showsecretlab
Show the secret lab on the map
showship
Show the ship on the map
showtargets()
Show the targets on the map (unknown teleporters which show up as ?s)
showteleporters()
Show the teleporters in explored rooms on the map
showtrinkets()
Show the trinkets on the map
Since 2.3, this command was changed to work in custom levels.
speak
Shows a text box, without removing old text boxes. Also pauses the script until you press action (unless there's a backgroundtext command above it)
speak_active
Shows a text box, and removes any old text box. Also pauses the script until you press action (unless there's a backgroundtext command above it)
specialline(x)
Special dialogs that show up in the main game
squeak(color)
Makes a squeak sound from a crewmate, or a terminal sound
color - cyan/player/blue/red/yellow/green/purple/terminal
startintermission2
Alternate finalmode(46,54), takes you to the final level without accepting arguments.
stopmusic()
Stops the music immediately. Equivalent to music(0) in simplified scripting.
teleportscript(script)
Used to set a script which is run when you use a teleporter
telesave()
Does nothing in custom levels.

2.2 AND BELOW: Saves your game in the regular teleporter save, so don't use it!
text(color, x, y, lines)
Store a text box in memory with color, position and number of lines. Usually, the position command is used after the text command (and its lines of text), which will overwrite the coordinates given here, so these are usually left as 0.
color - cyan/player/blue/red/yellow/green/purple/gray/white/orange/transparent
x - The x position of the text box
y - The y position of the text box
lines - The number of lines
The transparent color was added in 2.4, along with arbitrary colored textboxes.
The coordinates can be -500 to center the textbox in the respective axis (if you don't want to use position).
textboxactive
Makes all text boxes on the screen disappear except for the last created one
textboxtimer(frames)
Makes the next shown textbox disappear after a certain amount of frames, without advancing the script.
frames - The amount of frames to wait before fading out
This command was added in 2.4.
textbuttons()
For the text box in memory, replace certain button placeholders by button labels (such as keyboard keys or controller glyphs).

The replaced placeholders are:
- {b_act} - ACTION
- {b_int} - Interact
- {b_map} - Map
- {b_res} - Restart
- {b_esc} - Esc/Menu
This command was added in 2.4.
textcase(case)
If your level has translation files, and you have multiple text boxes with the same text in a single script, this command can make them have unique translations. Place it before a textbox.
case - The case number, between 1 and 255.
This command was added in 2.4.
textimage(image)
For the text box in memory, draw the given image. There can only be one image per text box.
image - levelcomplete/gamecomplete, or an unknown value to remove the image
This command was added in 2.4.
textsprite(x, y, sprite, color)
For the text box in memory, draw the given sprite. There can be multiple sprites per text box.
x - The x-coordinate of the sprite. This is relative to the text box.
y - The y-coordinate of the sprite. This is relative to the text box.
sprite - The sprite number of the sprite, from sprites.png.
color - The color ID of the sprite.
This command was added in 2.4.
tofloor
Makes the player flip to the floor if they aren't already on the floor.
trinketbluecontrol()
Dialog of Victoria when she gives you a trinket in the real game
trinketscriptmusic
Plays Passion for Exploring.
trinketyellowcontrol()
Dialog of Vitellary when he gives you a trinket in the real game
undovvvvvvman()
Resets the player's hitbox to the normal size, sets their color to 0, and sets their X position to 100.
untilbars()
Wait until cutscene or endcutscene is completed.
untilfade()
Wait until fadeout or fadein is completed.
vvvvvvman()
Makes the player 6x larger, sets their position to (30,46) and sets their color to 23.
walk(direction, x)
Makes the player walk for the specified number of ticks
direction - left/right
warpdir(x, y, dir)
Changes the warp direction for room x,y, 1-indexed, to the given direction. This could be checked with ifwarp, resulting in a relatively powerful extra flags/variable system.
x - Room x coordinate, starting at 1
y - Room y coordinate, starting at 1
dir - The warp direction. Normally 0-3, but out-of-bounds values are accepted
yellowcontrol
Start a conversation with Vitellary just like when you meet him in the main game and press ENTER. Also creates an activity zone afterwards.