Skip to content

Latest commit

 

History

History
338 lines (305 loc) · 14.3 KB

Commands.md

File metadata and controls

338 lines (305 loc) · 14.3 KB

Read

  • Read, File Name, Starting Line, (Optional Ending Line)
  • Will read inputs from the specified file.
  • If a custom path to read files from has been specified, it tries to find the file there. Otherwise, it will look for the file in the main Celeste directory.
  • e.g. Read, 1A - Forsaken City.tas, 6 will read all inputs after line 6 from the 1A - Forsaken City.tas file
  • This will also work if you shorten the file name, i.e. Read, 1A, 6 will do the same
  • It's recommended to use labels instead of line numbers, so Read, 1A, lvl_1 would be the preferred format for this example.

Play

  • Play, Starting Line, (Optional Frames to Wait)
  • A simplified Read command which skips to the starting line in the current file.
  • Useful for splitting a large level into smaller chunks.

Repeat and EndRepeat

  • Repeat the inputs between Repeat and EndRepeat several times, nesting is not supported.
  • Repeat, Count
  • EndRepeat

Labels

  • Prefixing a line with # will comment out the line
  • A line beginning with # can be also be used as the starting point or ending point of a Read instruction.
  • You can comment highlighted text in Celeste Studio by hitting Ctrl+K

Console

  • Console (command)
  • Enters the command into the Celeste console.
  • Useful commands include:
    • p_dreamdash (enables dream dashing)
    • p_twodashes (enables two dashes)
    • core (int) (Set core mode to none(0), fire(1) or ice(2))
    • givekey (gives a key)
    • giveberry (gives a berry)
    • hearts (int default all) (string default current level set) (sets the amount of obtained hearts for the specified level set to a given number)
    • summitgem (string) (gives summit gem, either 0-6 or "all")
    • sd_clearflags (clears all save data flags)
    • unlock_doors (unlocks all key doors)
    • flag (string) (set/remove a session flag)
    • e.g. flag oshiro_clutter_cleared_0/1/2 (clear towels/books/chests)

Console load

  • load (for A-Sides) is used in these examples, but this also applies to hard (B-Sides) and rmx2 (C-Sides).
  • load can be used to in place of a reset to start a chapter. However, load can be used to start playback from any location in the game without risk of desyncing.
  • load command requires an additional frame compared to the normal start/restart chapter.
  • loadN N is for loading the Nth save file (0 means debug save file). e.g. load1, load2, load3...
  • Takes the following formats:
    • console load (ID or SID)
    • console load (ID or SID) screen
    • console load (ID or SID) screen spawnpoint
    • console load (ID or SID) positionX positionY speedX speedY
    • ID is just the level ID (e.g. Old Site = 2).
    • SID is the path to the map from the Celeste or from a mod's Maps folder (e.g. Celeste/2-OldSite). Can be found by opening the debug console.
    • screen is the name of the screen you want you load (Note that if the screen name is a number you have to prepend "lvl_", so lvl_00 instead of 00).
    • spawnpoint is the # of the spawnpoint in the room you want to load, as most rooms have multiple spawnpoints (starts at 0).
    • Alternatively, positionX and positionY are the position you want to load at, speedX and speedY are the speed after respawning.
    • console load w/o any parameters is used to load a s&q save file
  • So the following all do the same thing:
    • console load 2 3x
    • console load 2 lvl_3x
    • console load Celeste/2-OldSite 3x
    • console load 2 3x 0
    • console load 2 376 -176
    • console load 2 376 -176 0 0

Set

  • Set, (Optional Mod).Setting, Values
  • Set, Entity.Field, Values (set all entities)
  • Set, Entity[roomName:id].Field, Values (set specific entity)
  • Set, Level.Field, Values
  • Set, Session.Field, Values
  • Set, Type.StaticField, Values
  • Sets the specified setting to the specified value.
  • Defaults to Celeste if no mod specified.
  • Everest settings use the mod name Everest.
  • Note that setting names/values may be unintuitive.
  • To find the mod and setting names, go to the saves folder in your Celeste directory. The mod name should be modsettings-(name).celeste.
  • Open the settings file in a text editor to look for the setting's name.
  • Names are case sensitive.
  • Make sure the value entered matches the type of the setting (if it is a boolean in the settings file, make sure you're inputting a boolean into the Set command).
  • Examples:
    • Set, VariantMode, false

    • Set, CheatMode, true

    • Set, DashMode, Infinite or Set, DashMode, 2

    • Set, Player.Position, 123.123, -1028

    • Set, Player.Position.X, 123.123

    • Set, Player.Speed, 325, -52.5

    • Set, Player.Ducking, true

    • Set, Everest.ShowModOptionsInGame, false

    • Set, CelesteTAS.CenterCamera, true

    • Set, AnarchyCollab2022.LeftButton, Q, W

    • Set, ExtendedVariantMode.DashCount, 3

      Set helper's button, supporting keyboard and mouse. Then you can use the P custom key press modifier or the Press command to press keys, use the Mouse command to press and move mouse (available mouse buttons Left, Right, Middle, X1, X2). The setting is only valid when tas is running, it will be restored automatically when tas is stopped.

Invoke

  • Invoke, Entity.Method, Parameter1, Parameter2... (all entities)
  • Invoke, Entity[roomName:id].Method, Parameter1, Parameter2.. (specific entity)
  • Invoke, Level.Method, Parameter1, Parameter2..
  • Invoke, Session.Method, Parameter1, Parameter2..
  • Invoke, Type.StaticMethod, Parameter1, Parameter2..
  • Examples:
    • Invoke, Level.Pause
    • Invoke, Player.Die
    • Invoke, Session.SetFlag, whatever
    • Invoke, LuaCutscenesUtils.TriggerBooleanVariant, UpsideDown, true, true, check here for more extended variant methods and options.

EvalLua

  • Evaluate lua code, check out how to access and use C# objects
  • Due to the limitations of NLua, non-public members and generics are not supported, so some helper methods and predefined variables are provided. check the env.lua file for details.
  • EvalLua, player.Position = player.Position + Vector2(1, 0)
  • EvalLua, player:Die(Vector2.Zero)
  • EvalLua, setValue(player, 'movementCounter', Vector2(0.1, 0))

Unsafe and Safe

  • The TAS will normally only run inside levels and stop when entering the Options/ModOptions menu.
  • Console load normally forces the TAS to load the debug save.
  • Unsafe allows the TAS to run anywhere, on any save.
  • Safe makes the TAS only run inside levels and debug save.

EnforceLegal

Assert

  • If the condition being checked is not met, tas will be stopped. Usually used to make tas stop as soon as possible when tas desync.
  • Assert, Condition, Expected, Actual
  • Conditions are Equal, NotEqual, Contain, NotContain, StartWith, NotStartWith, EndWith, NotEndWith
  • Actual use the same syntax as the custom info template
  • Examples:
    # Ensure that you are currently in the save file selection screen and the new save file is selected
    Assert Equal False [[local ui = scene.Current; return ui.Slots[ui.SlotIndex].Exists]]
    
    # Ensure that you are currently in the chapter 2
    Assert EndWith 2-OldSite {Session.Area.SID}
    

StunPause and EndStunPause

  • StunPause, (optional mode, Simulate or Input)
    (inputs)
    EndStunPause
    
  • Simulate mode is illegal and should only be used to test routes, which will pause every other frame without doing the actual pause inputs.

  • Input mode is legal, it is actually AutoInput but with predefined pause inputs and cycle length. It would hold jump automatically if the inputs before the pause have a jump button pressed.

    e.g.

    1,J
    StunPause, Input
    SkipInput, 3, 1
    7,R,X
    4,R,J
    EndStunPause
    

    would produce

     1,J
     1,S,N
    10,J,O
     5,R,X
     1,S,N
    10,O
     2,R,X
     1,S,N
    10,O
     2,R,J
     1,S,N
    10,J
     2,R,J
    
  • The command's mode is determined by several things, the priority from high to low are:

    1. EnforceLegal command force all the commands use Input mode
    2. Mode specified by the StunPause command
    3. Mode specified by the StunPauseMode command
    4. Default mode is Input

StunPauseMode

Specify the default mode for StunPause command.

  • StunPauseMode, Simulate/Input

AutoInput, StartAutoInput, EndAutoInput, SkipInput

  • Inserts the auto inputs every cycle length frames that is played through inputs.
  • SkipInput Prevents the next input from being calculated in the AutoInput cycle. Usually used to mark the freeze frames.
  • SkipInput, (skip frames), (optional waiting frames) Wait specified frames then prevents the next specified frames from being calculated in the AutoInput cycle. Usually used to mark the freeze frames.
  • AutoInput, (cycle length)
    (auto inputs)
    StartAutoInput
    (inputs)
    SkipInput
    (skipped input)
    (inputs)
    EndAutoInput
    
  • e.g.
    AutoInput, 2
     1,S,N
    10,O
    StartInput
    SkipInput, 3, 1
     7,R,X
     4,R,J
    EndAutoInput
    
    would produce
     1,S,N
    10,O
     5,R,X
     1,S,N
    10,O
     2,R,X
     1,S,N
    10,O
     2,R,J
     1,S,N
    10,O
     2,R,J
    

SaveAndQuitReenter

  • SaveAndQuitReenter
    
  • Inserts the inputs required to Save & Quit and to reenter the correct save file.

  • It is important to place the command directly after pressing the Save & Quit button.

    e.g.

    1,S
    1,U
    1,F,0
    #Press Save & Quit
    1,U,O
    SaveAndQuitReenter
    #Respawn animation
    36
    

StartRecording and StopRecording

NOTE: These commands require TAS Recorder!

  • StartRecording starts a recording until it's stopped again.
  • StopRecording stops a started recording. Not needed when it's at the end of the file.
  • e.g.
    StartRecording
     1,R,J
    14,R
     1,R,J
    14,R
    StopRecording
    
  • StartRecording/StopRecording can not be used together with Record TAS, since that's intended for recording a full TAS. Use a StartRecording at the beginning of the file instead.

Press

Mouse

  • Move mouse and press mouse buttons with the next input.
  • Mouse, X, Y, [ScrollWheel], [L/R/M/X1/X2], [L/R/M/X1/X2]...
  • X and Y are integers, X from 0 to 319, y from 0 to 179.
  • e.g. Press mouse left button at (50, 100) and jump 10 frames.
    Mouse, 50, 100, L
    10,J
    

ExportGameInfo and EndExportGameInfo

  • ExportGameInfo (Optional File Path) (Optional Entities Names)
  • EndExportGameInfo
  • Dumps data to a file, which can be used to analyze desyncs.
  • Default file path is dump.txt.
  • Keeps track of any additional entities specified - e.g. ExportGameInfo additional.txt TheoCrystal Glider CustomSpinner@FrostTempleHelper will keep track of Theo, Jellyfish, and custom spinners from the FrostHelper mod.
  • You can get the name of the entity by opening the console and clicking on it, the entity name will be displayed in the top left corner and output to log.txt.

ExportRoomInfo and EndExportRoomInfo

  • ExportRoomInfo (Optional File Path)
  • EndExportRoomInfo
  • Dumps the elapsed time of each room to a file. which can be used to compare improvements.
  • Default file path is dump_room_info.txt.

CompleteInfo

  • CompleteInfo, Side, SID/ID
  • The successive comments immediately following this command will be displayed to the specified chapter complete screen.
  • Sides are A, B and C
  • e.g. CompleteInfo A 1 display info on 1A complete screen.
  • e.g. CompleteInfo If neither side nor sid/id is specified, the info will be displayed on all chapters, if the other CompleteInfo command specifies a chapter, both will be displayed.

RecordCount

  • e.g. RecordCount: 1
  • Every time you run tas after modifying the current input file, the record count auto increases by one.

FileTime

  • e.g. FileTime: 0:51.170(3010)
  • Auto update the file time when TAS has finished running, the file time is equal to the elapsed time during the TAS run.

ChapterTime

  • e.g. ChapterTime: 0:49.334(2902)
  • After completing the whole level from the beginning, auto updating the chapter time.

MidwayFileTime / MidwayChapterTime

  • e.g. MidwayFileTime: 1:04.107(3771)
  • e.g. MidwayChapterTime: 1:41.677(5981)
  • Same as FileTime/ChapterTime, except it updates when the command is executed.

AnalogueMode

  • AnalogueMode, (Mode)
  • AnalogMode, (Mode) also works
  • Modes are Ignore (no check), Circle, Square and Precise.
  • Circle, Square and Precise are make sure the analogue inputs sent to the game are actually possible, locking it to a circular or square deadzone with the maximum amplitude, or calculating the closest position possible on a controller within the possible amplitude.
  • Odds are you don't need to worry about this.

ExportLibTAS and EndExportLibTAS

  • ExportLibTAS, (Optional File Path)
  • Converts the TAS to the inputs portion of a LibTAS movie file.
  • Default file path is Celeste.ltm
  • Odds are you don't need to worry about this.

Add, Skip and Marker

  • These commands appear in overworld menuing and do not do anything in-game.
  • Rather, they serve as instructions to the libTAS converter.
  • Add, (input line) adds a line to the libTAS output.
  • Skip skips the next input.
  • Marker, (text) adds a marker for auto pause on libTAS.
  • Odds are you don't need to worry about this.

ExitGame

  • Used to force close the game when recording video with .kkapture to finish recording.