Difference between revisions of "Triggers Guide"
(→Math) |
(→Text) |
||
Line 530: | Line 530: | ||
http://i.imgur.com/sZi5sZx.png | http://i.imgur.com/sZi5sZx.png | ||
− | + | The "Text" section includes various ways of displaying text. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | <a | + | -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 "|"): | ||
+ | *<pre><p [align="left|center|right"]></p></pre> | ||
+ | *<pre><b></b></pre> | ||
+ | *<pre><i></i></pre> | ||
+ | *<pre><u></u></pre> | ||
+ | *<pre><font [size="" width="" color="" face=""]></font></pre> | ||
+ | *<pre><a [href="" target="_blank" letterspacing=""]></a></pre> | ||
+ | *<pre><img [src="" width="" height=""]></img> (currently broken)</pre> | ||
+ | |||
+ | |||
+ | http://i.imgur.com/N23pTqJ.png | ||
+ | |||
+ | 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.'' | ||
+ | |||
+ | http://i.imgur.com/Ol9Zkpj.png | ||
+ | |||
+ | 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.'' | ||
+ | |||
+ | http://i.imgur.com/DI0PklJ.png | ||
+ | |||
+ | Turns off the subtitle currently being displayed from that trigger. | ||
+ | |||
+ | ''Removes any subtitle text this thread attached.'' | ||
+ | |||
+ | >http://i.imgur.com/OhslyPD.png | ||
+ | |||
+ | 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.'' | ||
+ | |||
+ | === Item === | ||
+ | |||
+ | http://i.imgur.com/zZobJt4.png | ||
+ | |||
+ | Various functions (Currently only 1) for manipulating items can be found in the "Item" section.http://i.imgur.com/Dr9xZxR.png <span style="display: none;">Move Item</span>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. <span style="font-style: italic">If a platform is moved, characters on it will move with it.</span><span style="font-style: italic">Moves any items with the given linkage.</span><a href="http://i.imgur.com/BnykldF.png" target="_blank">http://i.imgur.com/BnykldF.png" width="306" height="35" border="0"></a><span style="display: none;">Scale Item</span>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.<span style="font-style: italic">Changes the scaling and/or rotation of a rotatable/scale-able item with a given linkage.</span><a href="http://i.imgur.com/u0SmKmY.png" target="_blank">http://i.imgur.com/u0SmKmY.png" width="306" height="35" border="0"></a><span style="display: none;">Teleport Enemy</span>Teleports the specified enemy to specified coordinates.<span style="font-style: italic">Teleports an enemy with the given linkage. Absolute: sets the item's x,y to that. Relative: increases it by x,y.</span><a href="http://i.imgur.com/77Sdjds.png" target="_blank">http://i.imgur.com/77Sdjds.png" width="306" height="35" border="0"></a><span style="display: none;">Create Item Drop</span>Spawns an item at specified coordinates or coordinates relative to specified item.- Go to the <a href="http://runouw.com/forums/viewtopic.php?f=53&t=42110#p249172" class="postlink">Complete ID List</a> for a list of all of the item drops you can create.<span style="font-style: italic">Creates an item drop at either x and y, or at given tag's position plus offset of x and y.</span><a href="http://i.imgur.com/ACnumZv.png" target="_blank">http://i.imgur.com/ACnumZv.png" width="306" height="35" border="0"></a><span style="display: none;">Dissolve Effect</span>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.<span style="font-style: italic">Makes the item's alpha fade to 0.</span><a href="http://i.imgur.com/U17xIAo.png" target="_blank">http://i.imgur.com/U17xIAo.png" width="306" height="35" border="0"></a><span style="display: none;">Set Color</span><span style="font-style: italic">This trigger has yet to be programmed</span> | ||
<a name="aaa7"></a>http://i.imgur.com/ly5r5jV.png <span style="display: none;">Tile</span>Various functions (Currently only 1) for manipulating tiles can be found in the "Tile" section.http://i.imgur.com/CFFILYS.png <span style="display: none;">Edit Tiles</span>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: <span style="font-style: italic">If true, alters the tiles in the back layer.</span><span style="font-style: italic">Select & Copy the new tiles and Paste into the tile data and then choose the x and y (in units of tiles, from to-left)</span> | <a name="aaa7"></a>http://i.imgur.com/ly5r5jV.png <span style="display: none;">Tile</span>Various functions (Currently only 1) for manipulating tiles can be found in the "Tile" section.http://i.imgur.com/CFFILYS.png <span style="display: none;">Edit Tiles</span>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: <span style="font-style: italic">If true, alters the tiles in the back layer.</span><span style="font-style: italic">Select & Copy the new tiles and Paste into the tile data and then choose the x and y (in units of tiles, from to-left)</span> |
Revision as of 04:00, 17 May 2015
From AwesomeJRFD's Trigger's Guide
Contents
An Explanation of Triggers
By AwesomeJRFD and Raz
Have you seen this screen when opening a trigger item's properties?
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:
General
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.
Vocabulary
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 |
Coordinates
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
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.
Variables
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.
Functions
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.
- Platforms
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.
Math
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).
Game
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.
- WARNING: ONCE SET, IT WILL STAY SET WHEN EXITING THE LEVEL UNTIL IT IS SET BACK TO 100
- 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.
Weather
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<
Text
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.
Item
Various functions (Currently only 1) for manipulating items can be found in the "Item" section. If a platform is moved, characters on it will move with it.Moves any items with the given linkage.<a href="" target="_blank">" width="306" height="35" border="0"></a> 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.<a href="" target="_blank">" width="306" height="35" border="0"></a> 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.<a href="" target="_blank">" width="306" height="35" border="0"></a> Spawns an item at specified coordinates or coordinates relative to specified item.- Go to the <a href="http://runouw.com/forums/viewtopic.php?f=53&t=42110#p249172" class="postlink">Complete ID List</a> 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.<a href="" target="_blank">" width="306" height="35" border="0"></a> 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.<a href="" target="_blank">" width="306" height="35" border="0"></a>This trigger has yet to be programmed
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.<a name="aaa7"></a> 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 to-left)
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:<a name="aaa8"></a> 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).
The "Special" section includes various functions for controlling other Triggers and Platforms. Enables a specified trigger to be activated.<a name="aaa9"></a> Enter any desired comment here (has no effect outside level designer)."Secret" Functions:
"//comment" allows you to store a message in the trigger that has no effect on what the code does.Open Shop:
- Code: <a href="#" onclick="selectCode(this); return false;">Select all</a>
llitem:6;0;0;64;64;0;1;openshop,1
Opens the shop. You can change the shop type by changing the last "1" in the code above.Shop types:
- Default shop
- Empty shop
- Masamune shop
- Lightning Rod shop
- Winged Boots Shop
Open Enchanter:
- Code: <a href="#" onclick="selectCode(this); return false;">Select all</a>
llitem:6;0;0;64;64;0;1;openenchant
Opens the Enchanter.Set Post Filter:
- Code: <a href="#" onclick="selectCode(this); return false;">Select all</a>
llitem:6;0;0;64;64;0;1;setpostfilter,0
Gives the level a permanent green tint.Semaphore V:
- Code: <a href="#" onclick="selectCode(this); return false;">Select all</a>
llitem:6;0;0;64;64;0;1;v
WARNING: DOES NOT WORK. WILL CRASH GAME IF OPENED.Semaphore P
- Code: <a href="#" onclick="selectCode(this); return false;">Select all</a>
llitem:6;0;0;64;64;0;1;p
WARNING: DOES NOT WORK. WILL CRASH GAME IF OPENED.
Anything we missed? Please tell us!