Triggers Guide

From Last Legacy Wiki
Jump to: navigation, search

From AwesomeJRFD's Trigger's Guide

An Explanation of Triggers

By AwesomeJRFD and Raz

Have you seen this screen when opening a trigger item's properties?

An empty triggers tab

Triggers are an event based

This is a trigger tab. With it, you can manipulate items, the weather, the camera, and even the player to enable advanced functionality in your level.

Users have made the following with triggers:


Triggers are an ASM based event system. This means that when a trigger is activated (by touching it, pressing it, killing an enemy, collecting coins, etc), it runs each function (event) from top to bottom in order. They can use variables, which are are numbers that can be stored by name.

Runouw wrote:

At the moment there are about 37 trigger functions in total to pick from. Triggers are meant to function very similar to ASSEMBLY code and each instruction occurs immediately after the previous one finishes executing. You are now able to pick instructions that do branching and goto statements and set global and local variables which let you make really advanced levels.

When a trigger completes its last function, it stops executing. Triggers have a limit of 128 functions per frame. After which, it continues executing the trigger the next frame.


Words and phrases that will be used in this tutorial:

Word Definition
Trigger An executable script in Last Legacy played in the trigger's thread.
Function A command that a trigger can execute. It can be an action method, a sleep method, or a branch method.
Script A series of functions, played in order with branching and conditionals.
Thread Abstract holder for scripts that execute them. They can be started, paused, or stopped at any time. Multiple threads from different triggers can be running at once.
Variable Values that are stored by a textual name. That value can be changed at any time.
Tag A name that you can give an item. Trigger functions can reference items by their tag.
Coordinates X and Y position of a tile or item in the level.
Camera The portion of the level which is currently visible.

Trigger Types

Type Description Items
onHit Activates when the player touches the item in which the trigger is running from. Invisible Hitbox, Basic Platform, Block, Planet
onPress Activates when a button is pressed. Push Switch
onDefeat Activates when an enemy is killed. Enemy Crab, Enemy Mushroom, Grock, Enemy Wolf, Enemy Fire Mage, Enemy Electric Mage, Enemy ??? Mage, Enemy Ice Mage, Enemy Dark Mage, Enemy Specter A, Enemy Specter B, Enemy Specter C, Enemy Specter D, Enemy Specter, Enemy Dark Beast, Enemy Knight, Enemy Powerful Knight, Enemy Really Powerful Knight, Delta Phantom Boss, Boss
onRead Activates when a sign is read. Wooden Sign (readable), Small Wooden Sign (readable), Hanging Sign (readable), Engraved Stone Tablet
onCollect Activates when the item is collected. Square, Super Square, Small Heart, Large Heart
onTalk Activates when an NPC is talked to. NPC, NPC - Old
onOpen Activates when a chest is opened. Openable Treasure Chest
onTurnOn Activates when a switch is turned on. Electric Switch, Lever Switch
onTurnOff Activates when a switch is turned off. Electric Switch


You may have learned that in a coordinate plane, Y values increase as they go up. In programming, and therefore in Last Legacy, the opposite is true, as shown in this picture:


There are two kinds of coordinates
  • Item Coordinates
Each Item Coordinate is a pixel. For reference, the player is 47 pixels tall, and a tile is 32x32 pixels.
  • Tile Coordinates
Each unit shown on the in-game grid is a Tile Coordinate and tiles are aligned to them. You can toggle the visibility of the grid in "View -> Display Grid".

To calculate a tile coordinate from an item coordinate, multiply the coordinates by 32. Inversely, to calculate an item coordinate from a tile coordinate, multiply the coordinates by 32.

When moving stuff using triggers:

Type Description
Absolute Set the exact values. Sets the item's x/y to that.
Relative Positive numbers will be added on to the current value. Negative numbers will be subtracted from the current value. Increases it by x/y.


Tags are "names" you can give to items. You can use them to identify specifically which items you want a trigger function to act upon.

For example, if you tag an enemy Crab as "Bob", then you can refer to it with the Move Items function. This would allow you to teleport the enemy wherever you specify when the Move items function is activated.

  • Multiple items can share the same tag.
  • "this" and "self" refer to the item that the current trigger belongs to.

In a function, Copy the tag from another item to reference/do something with it here.


Stores 32 bit integer value (-2147483648 through 2147483648. If you go past the limit, the value will wrap around).

Types of Variables

Type Description
Local Local vars begin with a character (a-z, A-Z, 0-9), and are only accessible by the trigger they were initialized in.
Global Vars with the prefix "g_" are global (accessible to other triggers and remain across level splitters).
Static Vars with the prefix "s_" are global, and do not reset when the player dies and respawns.

Special global variables

  • "g_COINS" = Amount of Squares collected.
  • "g_PLAYER_NAME" = Player's name. Only works in Story Mode levels since there is no way to change it in the designer. "Hero" by default.



Press this Add New Function button to add a function. You will be presented with a drop-down menu that looks sort of like the one below. Click on a button to see what type of functions are listed in that category.










Flow Control


Flow Control functions are for altering how the code runs and the order in which the compiler reads it.


The compiler will skip to the line you specify when this command is run if a specified variable meets certain conditions.

If statement is true, will jump and continue executing code from input line. Otherwise ignores this function.

Symbol Meaning
== Is equal to
!= Is not equal to
> Is greater than
< Is less than
>= Is greater than or equal to
<= Is less than or equal to


The compiler will skip to the line you specify when this command is run.

Jump and continue executing code from input line.


This will stop the compiler at the current line for a duration of the specified number of frames, then it will continue.

- Changing the game setting so 60 frames per second will NOT change how sleep works.

Will pause (sleep) this thread for X amount of frames (30 frames = 1 second)

# of Frames Actual Duration
3 Decisecond
30 Second
1800 Minute
108000 Hour


Stops the trigger.

Will stop this thread immediately.


Pauses the compiler at this line until the player is no longer touching the item from which the line is run.

- onHit triggers only.

Invisible Hitboxes
Will pause (sleep) this thread until player is no longer touching this.
Parameter Description
offDuration Sleep until the player is no longer touching the platform, and then for a specified amount of frames after that.Number of frames after player jumps off platform and before this thread is awakened. If 0, then relies solely on timeOut (below) to control when to awaken.
timeOut Same as normal sleep, but if it is -1 and the platform has a custom path, it will sleep until the platform reaches the end of its path.Number of frames after start of this thread's sleep and until this thread is forced awake. If -1 and uses a custom path, then will awaken at end of path. If 0, then relies of offDuration (above) to control when to awaken.

Will pause (sleep) this thread until:

timeOut#-of-frames pass OR: offDuration#-of-frames pass after player jumps off platform.


This will stop the compiler at the current line until the player touches the ground.

Will sleep thread until the player is touching the ground.



In the "Math" section, you can manipulate variables using calculations.


Will set a variable to a specified number or variable.

Sets a given var to an integer or value of another var.


Will set a variable to the sum of two numbers or variables.

Sets given var to sum of 2 ints/vars (a = b + c).


Will set a variable to the difference of two numbers or variables.

Sets given var to difference of 2 ints/vars (a = b - c).



In the "Game" section, you can find various functions which alter gameplay.


Changes the orientation of the player's gravity to the specified angle.

- Gravity strength is not implemented as of the current version.

Will set universal gravity to new variables input in this function.


Slows down game events and animations to a specified percentage.


- Does not affect "Sleep" function.

Changes the speed of time to the percentage given


Activates Cinema Mode, in which the player is frozen, but everything else moves normally.

- Useful for cutscenes.

Will change the gameplay to cinema mode. Character is paused/cannot be controlled/hurt, time flow is not affected.


Stops Cinema Mode and game returns to normal.

Will turn off cinema mode


Moves the camera to specified absolute or relative coordinates.

- Relative coordinates do not work currently.

If "use tag"" is checked, Instead of using x and y coordinates, will lock onto given item (and will follow if the item moves). x and y will specify the relative offset from item

You can also set Absolute Zoom (50% = zoomed out) (50% - 400%) or Relative Zoom (-50% = zoomed out) (-50% - 300%)."Speed:" (Speed easing factor) will determine how quickly or slowly the camera moves to its new position. Higher numbers means slower movement (1 = instant).Recenters camera to specified location.


Resets camera to player and default zoom.

Resets the camera back to default settings of 100% zoom, 0 offset from character.


Changes music to specified theme.

- You cannot skip to a different point in a current song. You must set the music to "(no music)" and change back to change position in a song.

- "Start Position: " defines what millisecond of the music to start playing. It currently only accepts integers.

Music list:

  • (no music)
  • Adventure Theme
  • Void Meadow
  • Cathedral
  • Charge
  • Desert Castle
  • Boss Battle
  • Amyxo
  • Espionage
  • Final Break
  • Icy Dungeon
  • Marcia Minor
  • Desert Theme
  • Techno Cave
  • Twisted Polka
  • Winter Theme
  • Smooth Jazz
  • In a Spirit's Presence
  • Sanctuary Echo - A capella
  • Sanctuary Echo - Orchestral
  • Inspirational Rock
  • Dark March
  • Ambient Wind SFX Loop
  • Final Theme
  • Town Theme - Valtameri
  • Overworld
  • Overworld - Piano
  • Gflat March
  • Floating Digital Clouds
  • Lava

Changes current background music.


Plays a specified sound from the game.

- Go to the Complete ID List for a list of all of the sounds you can currently play using this trigger.

- You can also specify the volume, from 0.1 to 3.0.

Plays the Sound Effect.


Moves the player to specified absolute or relative coordinates.Can also set absolute or relative speed.

- Relative xspeed does not work currently.

Moves (teleports) the main character.



In the "Weather" section, you can find various weather effects.


Make it rain with a specified strength.

- ;Warning: This function is leaky and you may get wet.

Changes the strength of rain. Set it to 0 to turn off rain.


Let it snow with a specified strength.

Changes the strength of snow. Set it to 0 to turn off snow.


Creates a darkness effect with a specified strength.

- There is a circle of light around:

  • Player
  • Delta Orb (+ rolling)
  • Delta Negate Orb (+ rolling) (less light than Delta Orb)
  • Weapon/turret projectile
  • Enemies (not dependent on size)
  • Torch
  • Brick Fireplace
  • Invisible Light Source

Adds a darkness effect that makes it difficult to see from far away from the character.


Causes an earthquake with the specified magnitude/strength and duration.

Shakes the screen<



The "Text" section includes various ways of displaying text.

-Some HTML 4 is allowed.

- {$g_VARIABLENAME} in a text box with the a global variable in place of "g_VARIABLENAME" will display that global variable.

Known working HTML tags (Stuff in brackets "[]" are known working parameter types. Known working parameters are separated by "|"):

  • <p [align="left|center|right"]></p>
  • <b></b>
  • <i></i>
  • <u></u>
  • <font [size="" width="" color="" face=""]></font>
  • <a [href="" target="_blank" letterspacing=""]></a>
  • <img [src="" width="" height=""]></img> (currently broken)


Displays text similar to the way signs display text. Freezes the character.

- Type (0-12) determines the color and texture of the background behind the text.

Pauses character and attaches text covering the screen.


A text covers the screen that does not pause the character. Can be in different parts of the screen.

- Type (0-3) determines the position of the subtitle on the screen.

- "Alpha:" determines the opacity of the white background behind the text.

- Turns off when trigger runs out.

Does not pause character. Will remain until "subtitle off" is called the thread ends. Only 1 subtitle per thread/trigger can be active at once.


Turns off the subtitle currently being displayed from that trigger.

Removes any subtitle text this thread attached.


Same as Screen Text, but displays as a dialog at the bottom of the screen, so you can still see the level.

Pauses character and shows dialog.



Various functions (Currently only 1) for manipulating items can be found in the "Item" section.


Moves a specified item to absolute or relative coordinates.

- "Chars stick to" determines whether the player or enemies move with the item when standing on it.

If a platform is moved, characters on it will move with it.

Moves any items with the given linkage.


Alters the X scale, Y scale, and/or rotation of a specified item with absolute or relative values.

- Only works on items that are already scaleable and rotatable.

- Works on all disabled items.

Changes the scaling and/or rotation of a rotatable/scale-able item with a given linkage.


Teleports the specified enemy to specified coordinates.

Teleports an enemy with the given linkage. Absolute: sets the item's x,y to that. Relative: increases it by x,y.


Spawns an item at specified coordinates or coordinates relative to specified item.

- Go to the Complete ID List for a list of all of the item drops you can create.

Creates an item drop at either x and y, or at given tag's position plus offset of x and y.


Pauses the compiler for a specified number of frames, fades a specified item's alpha value to 1, then continues the compiler.

- Sets the items alpha to 100 before it starts fading.

- It is recommended to move the item away from the scene right afterwards, because it doesn't dissolve completely to 0, despite what the description says.

Makes the item's alpha fade to 0.


This trigger has yet to be programmed



Various functions (Currently only 1) for manipulating tiles can be found in the "Tile" section.


Changes a tile(s) at a specified location.

- When in a tile layer, find the coordinates of the tile you want to change. Place the new tile somewhere, highlight it, and copy it. Go back to the trigger and paste the copied tile in the "tile data:" field.

- "Back Layer" checkbox: If true, alters the tiles in the back layer.

Select & Copy the new tiles and Paste into the tile data and then choose the x and y (in units of tiles, from top-left)



The "Special" section includes various functions for controlling other Triggers and Platforms.


Enables a specified trigger to be activated.

If given the tag of a trigger, will allow the trigger to be activated (does not actually activate it).


Disables a specified trigger.

If given the tag of a trigger, will prevent the trigger from being able to be activated again (Does not stop a currently running thread).


Activates a specified trigger.

- Does not matter whether that trigger is "on" or "off"

If given the tag of a trigger, will activate the trigger's function (regardless of if it is on/off).


Stops a specified trigger if it is running.

If given the tag of a currently-running trigger thread, will immediately stop it.


Specified platform starts moving along its path if it's not already.

If given the tag of a platform not in motion, will cause platform to move (if paused/not started moving).


Pauses a specified platform at its current location.

If given the tag of a platform in motion, will pause the platform in it's current place.


Moves a platform back to its starting position and pauses it.

If given the tag of a platform, will reset it back to the beginning (and pauses it there).



"//comment" allows you to store a message in the trigger that has no effect on what the code does.

Enter any desired comment here (has no effect outside level designer).

Secret Functions

Open Shop


Opens the shop. You can change the shop type by changing the last "1" in the code above.

Shop types:

1 Default shop<
2 Empty shop
3 Masamune shop
4 Lightning Rod shop
5 Winged Boots Shop

Open Enchanter


Opens the Enchanter.

Set Post Filter


Gives the entire level a color transform. The example de-saturates the entire level.

The order of the parameters (all separated by "/"s) are:

  1. redMultiplier
  2. greenMultiplier
  3. blueMultiplier
  4. alphaMultiplier
  5. redOffset
  6. greenOffset
  7. blueOffset
  8. alphaOffset
  9. brightness
  10. contrast
  11. saturation
  12. hue

Semaphore V:



Semaphore P