<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lbafileinfo.kaziq.net/index.php?action=history&amp;feed=atom&amp;title=LBA1%3ALife_script</id>
	<title>LBA1:Life script - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lbafileinfo.kaziq.net/index.php?action=history&amp;feed=atom&amp;title=LBA1%3ALife_script"/>
	<link rel="alternate" type="text/html" href="https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;action=history"/>
	<updated>2026-05-30T23:21:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;diff=2015&amp;oldid=prev</id>
		<title>Zink at 11:46, 20 May 2013</title>
		<link rel="alternate" type="text/html" href="https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;diff=2015&amp;oldid=prev"/>
		<updated>2013-05-20T11:46:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:46, 20 May 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 411:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 411:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|0x05||5||  !=   ||Variable is not equal to the comparison value&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|0x05||5||  !=   ||Variable is not equal to the comparison value&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{providers|[[provider::alexfont]] and [[provider::Zink]]}}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Zink</name></author>
	</entry>
	<entry>
		<id>https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;diff=2014&amp;oldid=prev</id>
		<title>Zink at 11:45, 20 May 2013</title>
		<link rel="alternate" type="text/html" href="https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;diff=2014&amp;oldid=prev"/>
		<updated>2013-05-20T11:45:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;amp;diff=2014&amp;amp;oldid=2013&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Zink</name></author>
	</entry>
	<entry>
		<id>https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;diff=2013&amp;oldid=prev</id>
		<title>Zink at 08:59, 20 May 2013</title>
		<link rel="alternate" type="text/html" href="https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;diff=2013&amp;oldid=prev"/>
		<updated>2013-05-20T08:59:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;amp;diff=2013&amp;amp;oldid=1990&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Zink</name></author>
	</entry>
	<entry>
		<id>https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;diff=1990&amp;oldid=prev</id>
		<title>Zink at 11:50, 17 May 2013</title>
		<link rel="alternate" type="text/html" href="https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;diff=1990&amp;oldid=prev"/>
		<updated>2013-05-17T11:50:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;amp;diff=1990&amp;amp;oldid=1989&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Zink</name></author>
	</entry>
	<entry>
		<id>https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;diff=1989&amp;oldid=prev</id>
		<title>Zink: Created page with &quot;Life Script is much more sophisticated and powerful than Track Script, though not as advanced as today&#039;s programming languages. Life Script is the Main s...&quot;</title>
		<link rel="alternate" type="text/html" href="https://lbafileinfo.kaziq.net/index.php?title=LBA1:Life_script&amp;diff=1989&amp;oldid=prev"/>
		<updated>2013-05-17T07:49:23Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Life Script is much more sophisticated and powerful than &lt;a href=&quot;/index.php/LBA1:Track_script&quot; title=&quot;LBA1:Track script&quot;&gt;Track Script&lt;/a&gt;, though not as advanced as today&amp;#039;s programming languages. Life Script is the Main s...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Life Script is much more sophisticated and powerful than [[LBA1:Track script|Track Script]], though not as advanced as today&amp;#039;s programming languages. Life Script is the Main script that controls Actor behaviour.&lt;br /&gt;
&lt;br /&gt;
Life Script is divided into so-called Comportements. Comportements are separated blocks of code, one of which is constantly executed in a loop. At any time one of the Comportements is executing (unless the Script has been stopped), and when the execution gets to its end (END_COMPORTEMENT statement), it is looped back to the beginning (or to another comportement&amp;#039;s beginning, if SET_COMPORTEMENT(_OBJ) has been called), and so on. Execution can be moved to another Comportement with the SET_COMPORTEMENT(_OBJ) statement, but the move occurs only at the end of the current comportement (or at the next RETURN command). Life Scripts of all Actors are run simultaneously.&lt;br /&gt;
&lt;br /&gt;
Initially the first Comportement of Life Script is executed. Usually the Actor initial behaviour is set here, and then the execution is moved to another Comportement which perform interactions with other Actors and the Hero.&lt;br /&gt;
&lt;br /&gt;
Each command code is one byte long, and after it there are parameters (or not), or other things. After command&amp;#039;s parameters there is a next command byte, and so on. At the end of the script there is a 0x00 (END) command.&lt;br /&gt;
&lt;br /&gt;
This document describes the commands and their parameters in a technical way. For more details on usage and effects see other sources ([[LBArchitect]]&amp;#039;s help may contain some).&lt;br /&gt;
&lt;br /&gt;
If the command does not have any additional bytes, next command starts immediately after the command byte.&lt;br /&gt;
&lt;br /&gt;
Life Script commands are &amp;#039;&amp;#039;non-blocking&amp;#039;&amp;#039;, which means that each command executes immediately after previous one (there are no &amp;#039;&amp;#039;WAIT_&amp;#039;&amp;#039; commands) and the whole script runs very fast. Special techniques must be used if a wait is necessary.&lt;br /&gt;
&lt;br /&gt;
Some commands in the Life Script are virtual - this means that the command is present in decompiled script (text form), and does not serve any purpose in compiled (binary) form of the script, so it may or may not be there. Virtual commands still have opcodes associated to them.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; | Command macros&lt;br /&gt;
! Code !! (dec) !! Name !! Description !! Parameters&lt;br /&gt;
|-&lt;br /&gt;
|0x00||0||END||Marks end of the script||&lt;br /&gt;
|-&lt;br /&gt;
|0x01||1||NOP||No operation (never used)||&lt;br /&gt;
|-&lt;br /&gt;
0x02 (  2) SNIF  (IF type)&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x03 (  3) OFFSET&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - address (offset) in the script to go to&lt;br /&gt;
&lt;br /&gt;
0x04 (  4) NEVERIF  (IF type)&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x05 (  5) (unused)&lt;br /&gt;
&lt;br /&gt;
0x06 (  6) NO_IF  (IF type)&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x07 (  7) (unused)&lt;br /&gt;
&lt;br /&gt;
0x08 (  8) (unused)&lt;br /&gt;
&lt;br /&gt;
0x09 (  9) (unused)&lt;br /&gt;
&lt;br /&gt;
0x0A ( 10) LABEL&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the label&lt;br /&gt;
&lt;br /&gt;
0x0B ( 11) RETURN&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x0C ( 12) IF  (IF type)&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x0D ( 13) SWIF  (IF type)&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x0E ( 14) ONEIF  (IF type)&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x0F ( 15) ELSE  (works the same as OFFSET)&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - address (offset) to go to (skip the next block)&lt;br /&gt;
&lt;br /&gt;
0x10 ( 16) ENDIF  (virtual)&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x11 ( 17) BODY&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the new body for the Actor&lt;br /&gt;
&lt;br /&gt;
0x12 ( 18) BODY_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 1 byte unsigned (0..255) - ID of the new body for the target Actor&lt;br /&gt;
&lt;br /&gt;
0x13 ( 19) ANIM&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the new anim for the Actor&lt;br /&gt;
&lt;br /&gt;
0x14 ( 20) ANIM_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 1 byte unsigned (0..255) - ID of the new anim for the target Actor&lt;br /&gt;
&lt;br /&gt;
0x15 ( 21) SET_LIFE  (never used, same as SET_COMPORTEMENT)&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - address (offset) of the target COMPORTEMENT&amp;#039;s beginning to go to&lt;br /&gt;
&lt;br /&gt;
0x16 ( 22) SET_LIFE_OBJ  (never used, same as SET_COMPORTEMENT_OBJ)&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 2 bytes (unsigned?) (0..65535) - address (offset) of the target COMPORTEMENT&amp;#039;s beginning in the target Actor&amp;#039;s Life Script to go to&lt;br /&gt;
&lt;br /&gt;
0x17 ( 23) SET_TRACK&lt;br /&gt;
           param1: 2 bytes signed (-1..32767) - address (offset) in the Track Script to go to. -1 causes stopping execution of the script (and even SET_TRACK Life command won&amp;#039;t run it anymore until reset of the Scene)&lt;br /&gt;
&lt;br /&gt;
0x18 ( 24) SET_TRACK_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 2 bytes signed (-1..32767) - address (offset) in the target Actor&amp;#039;s Track Script to go to. -1 causes stopping execution of the script (and even SET_TRACK Life command won&amp;#039;t run it anymore until reset of the Scene)&lt;br /&gt;
&lt;br /&gt;
0x19 ( 25) MESSAGE&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - ID of the text entry to be displayed&lt;br /&gt;
&lt;br /&gt;
0x1A ( 26) FALLABLE&lt;br /&gt;
           param1: 1 byte unsigned (0..1) - (boolean) 1 = Actor can fall, 0 = it can&amp;#039;t&lt;br /&gt;
&lt;br /&gt;
0x1B ( 27) SET_DIRMODE&lt;br /&gt;
           param1: 1 byte unsigned (0..7) - ID of the mode to set. If this param is 2 (foolow) or 4 (follow_2), then param2 exists, otherwise there is one param only.&lt;br /&gt;
           (param2): 1 byte unsigned (0..255) - ID of the Actor to follow&lt;br /&gt;
&lt;br /&gt;
0x1C ( 28) SET_DIRMODE_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 1 byte unsigned (0..7) - ID of the mode to set. If this param is 2 (foolow) or 4 (follow_2), then param3 exists, otherwise there are two params only.&lt;br /&gt;
           (param3): 1 byte unsigned (0..255) - ID of the Actor to follow&lt;br /&gt;
&lt;br /&gt;
0x1D ( 29) CAM_FOLLOW&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the actor to be followed by the camera&lt;br /&gt;
&lt;br /&gt;
0x1E ( 30) SET_BEHAVIOUR&lt;br /&gt;
           param1: 1 byte unsigned (0..4) - ID of the behaviour to set (0 = normal, 1 = athletic, 2 = aggressive, 3 = discrete, 4 = proto-pack)&lt;br /&gt;
&lt;br /&gt;
0x1F ( 31) SET_FLAG_CUBE&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the Cube Flag to set&lt;br /&gt;
           param2: 1 byte unsigned (0..255) - new value of the Flag to be set to&lt;br /&gt;
&lt;br /&gt;
0x20 ( 32) COMPORTEMENT  (virtual)&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - probably ID of the comportement&lt;br /&gt;
&lt;br /&gt;
0x21 ( 33) SET_COMPORTEMENT&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - address (offset) of the target comportement&lt;br /&gt;
&lt;br /&gt;
0x22 ( 34) SET_COMPORTEMENT_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 2 bytes (unsigned?) (0..65535) - address (offset) of the target comportement in the target Actor&amp;#039;s Life Script&lt;br /&gt;
&lt;br /&gt;
0x23 ( 35) END_COMPORTEMENT&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x24 ( 36) SET_FLAG_GAME&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the Game Flag to set&lt;br /&gt;
           param2: 1 byte unsigned (0..255) - new value of the Flag to be set to&lt;br /&gt;
&lt;br /&gt;
0x25 ( 37) KILL_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the Actor to be killed&lt;br /&gt;
&lt;br /&gt;
0x26 ( 38) SUICIDE&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x27 ( 39) USE_ONE_LITTLE_KEY&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x28 ( 40) GIVE_GOLD_PIECES&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - number of gold pieces to be given&lt;br /&gt;
&lt;br /&gt;
0x29 ( 41) END_LIFE&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x2A ( 42) STOP_L_TRACK&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x2B ( 43) RESTORE_L_TRACK&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x2C ( 44) MESSAGE_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 2 bytes (unsigned?) (0..65535) - ID of the text entry to be displayed&lt;br /&gt;
&lt;br /&gt;
0x2D ( 45) INC_CHAPTER&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x2E ( 46) FOUND_OBJECT&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the inventory object to be displayed&lt;br /&gt;
&lt;br /&gt;
0x2F ( 47) SET_DOOR_LEFT&lt;br /&gt;
           param1: 2 bytes (signed?) (-32768..32767) - distance to move&lt;br /&gt;
&lt;br /&gt;
0x30 ( 48) SET_DOOR_RIGHT&lt;br /&gt;
           param1: 2 bytes (signed?) (-32768..32767) - distance to move&lt;br /&gt;
&lt;br /&gt;
0x31 ( 49) SET_DOOR_UP&lt;br /&gt;
           param1: 2 bytes (signed?) (-32768..32767) - distance to move&lt;br /&gt;
&lt;br /&gt;
0x32 ( 50) SET_DOOR_DOWN&lt;br /&gt;
           param1: 2 bytes (signed?) (-32768..32767) - distance to move&lt;br /&gt;
&lt;br /&gt;
0x33 ( 51) GIVE_BONUS&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - ???&lt;br /&gt;
&lt;br /&gt;
0x34 ( 52) CHANGE_CUBE&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Scene&lt;br /&gt;
&lt;br /&gt;
0x35 ( 53) OBJ_COL&lt;br /&gt;
           param1: 1 byte unsigned (0..1) - (boolean) 1 = Actor can collide with objects (other Actors)&lt;br /&gt;
&lt;br /&gt;
0x36 ( 54) BRICK_COL&lt;br /&gt;
           param1: 1 byte unsigned (0..2) - (boolean???) 1 = Actor can collide with bricks, 2 = ???&lt;br /&gt;
&lt;br /&gt;
0x37 ( 55) OR_IF  (IF type)&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x38 ( 56) INVISIBLE&lt;br /&gt;
           param1: 1 byte unsgined (0..1) - (boolean) 0 = Actor will be visible, 1 = Actor will be invisible&lt;br /&gt;
&lt;br /&gt;
0x39 ( 57) ZOOM&lt;br /&gt;
           param1: 1 byte unsigned (0..1) - (boolean) 1 = enable zoomed mode, 0 = disable zoomed mode&lt;br /&gt;
&lt;br /&gt;
0x3A ( 58) POS_POINT&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the Track to move the Actor to&lt;br /&gt;
&lt;br /&gt;
0x3B ( 59) SET_MAGIC_LEVEL&lt;br /&gt;
           param1: 1 byte unsigned (0..4) - new magic level for the Actor&lt;br /&gt;
&lt;br /&gt;
0x3C ( 60) SUB_MAGIC_POINT&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - amount of magic points to be subtracted&lt;br /&gt;
&lt;br /&gt;
0x3D ( 61) SET_LIFE_POINT_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 1 byte (unsigned?) (0..255) - amount of life points to be set for the target Actor&lt;br /&gt;
&lt;br /&gt;
0x3E ( 62) SUB_LIFE_POINT_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 1 byte (unsigned?) (0..255) - amount of life points to be subtracted from the target Actor&amp;#039;s life points&lt;br /&gt;
&lt;br /&gt;
0x3F ( 63) HIT_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 1 byte (unsigned?) (0..255) - ??? (damage amount maybe?)&lt;br /&gt;
&lt;br /&gt;
0x40 ( 64) PLAY_FLA&lt;br /&gt;
           param1: null-terminated string - name of the fla file to play (file extension is allowed but not required)&lt;br /&gt;
&lt;br /&gt;
0x41 ( 65) PLAY_MIDI&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - ID of the MIDI track to be played&lt;br /&gt;
&lt;br /&gt;
0x42 ( 66) INC_CLOVER_BOX&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x43 ( 67) SET_USED_INVENTORY&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - ID of the inventory item to be set as used&lt;br /&gt;
&lt;br /&gt;
0x44 ( 68) ADD_CHOICE&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - ID of the text entry to be added as the choice&lt;br /&gt;
&lt;br /&gt;
0x45 ( 69) ASK_CHOICE&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - ID of the text entry to be displayed as the choice question&lt;br /&gt;
&lt;br /&gt;
0x46 ( 70) BIG_MESSAGE&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - ID of the text entry to be displayed&lt;br /&gt;
&lt;br /&gt;
0x47 ( 71) INIT_PINGOUIN&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - probably ID of the Actor to init as pingouin&lt;br /&gt;
&lt;br /&gt;
0x48 ( 72) SET_HOLO_POS&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - ID of the holomap position to be set&lt;br /&gt;
&lt;br /&gt;
0x49 ( 73) CLR_HOLO_POS&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - ID of the holomap position to be cleared&lt;br /&gt;
&lt;br /&gt;
0x4A ( 74) ADD_FUEL&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - amount of fuel units to be added to the player&amp;#039;s inventory&lt;br /&gt;
&lt;br /&gt;
0x4B ( 75) SUB_FUEL&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - amount of fuel units to be subtracted from the player&amp;#039;s inventory&lt;br /&gt;
&lt;br /&gt;
0x4C ( 76) SET_GRM&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the Grid to be (merged with the current Grid?)&lt;br /&gt;
&lt;br /&gt;
0x4D ( 77) SAY_MESSAGE&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - ID of the text entry to be displayed&lt;br /&gt;
&lt;br /&gt;
0x4E ( 78) SAY_MESSAGE_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 2 bytes (unsigned?) (0..65535) - ID of the text entry to be displayed&lt;br /&gt;
&lt;br /&gt;
0x4F ( 79) FULL_POINT&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x50 ( 80) BETA&lt;br /&gt;
           param1: 2 bytes (signed?) (-32768..32767) - the new angle&lt;br /&gt;
&lt;br /&gt;
0x51 ( 81) GRM_OFF&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x52 ( 82) FADE_PAL_RED&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x53 ( 83) FADE_ALARM_RED&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x54 ( 84) FADE_ALARM_PAL&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x55 ( 85) FADE_RED_PAL&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x56 ( 86) FADE_RED_ALARM&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x57 ( 87) FADE_PAL_ALARM&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x58 ( 88) EXPLODE_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
&lt;br /&gt;
0x59 ( 89) BUBBLE_ON&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x5A ( 90) BUBBLE_OFF&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x5B ( 91) ASK_CHOICE_OBJ&lt;br /&gt;
           param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
           param2: 2 bytes (unsigned?) (0..65535) - ID of the text entry to be displayed as the choice question&lt;br /&gt;
&lt;br /&gt;
0x5C ( 92) SET_DARK_PAL&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x5D ( 93) SET_NORMAL_PAL&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x5E ( 94) MESSAGE_SENDELL&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x5F ( 95) ANIM_SET&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - ID of the animation to be set ???&lt;br /&gt;
&lt;br /&gt;
0x60 ( 96) HOLOMAP_TRAJ&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - ID of the holomap trajectory to be displayed&lt;br /&gt;
&lt;br /&gt;
0x61 ( 97) GAME_OVER&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x62 ( 98) THE_END&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x63 ( 99) MIDI_OFF&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x64 (100) PLAY_CD_TRACK&lt;br /&gt;
           param1: 1 byte (unsigned?) (0..255) - ID of the CD track to be played&lt;br /&gt;
&lt;br /&gt;
0x65 (101) PROJ_ISO&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x66 (102) PROJ_3D&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x67 (103) TEXT&lt;br /&gt;
           param1: 2 bytes (unsigned?) (0..65535) - ID of the text entry to be displayed&lt;br /&gt;
&lt;br /&gt;
0x68 (104) CLEAR_TEXT&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
0x69 (105) BRUTAL_EXIT&lt;br /&gt;
           [no params]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====================================&lt;br /&gt;
 LIFE SCRIPT CONDITIONS (VARIABLES)&lt;br /&gt;
====================================&lt;br /&gt;
&lt;br /&gt;
Conditions have opcodes and parameters, like regular commands, but they occur only after IF-type commands.&lt;br /&gt;
The conditional construction is following:&lt;br /&gt;
&lt;br /&gt;
In case the condition doesn&amp;#039;t have any parameters:&lt;br /&gt;
&lt;br /&gt;
   byte: |     1     |      2      |     3     |        4         |  5 &amp;amp; 6&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
Command: |  IF-type  |  Condition  | Operator  | value to compare | address&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
Example: | 0x0C (IF) | 0x03 (ZONE) | 0x00 (==) |       0x03       | 0x002D&lt;br /&gt;
&lt;br /&gt;
The bytes 5 and 6 are the address (offset) to jump to when the condition result is false (if it is true, the execution will continue to the lines following the conditional construction (no jump)).&lt;br /&gt;
&lt;br /&gt;
In case the condition has a parameter:&lt;br /&gt;
&lt;br /&gt;
   byte: |     1     |        2        |     3     |     4     |        5         |  6 &amp;amp; 7&lt;br /&gt;
--------------------------------------------------------------------------------------------&lt;br /&gt;
Command: |  IF-type  |    Condition    | parameter | Operator  | value to compare | address&lt;br /&gt;
--------------------------------------------------------------------------------------------&lt;br /&gt;
Example: | 0x0C (IF) | 0x04 (ZONE_OBJ) |   0x04    | 0x00 (==) |       0x03       | 0x002D&lt;br /&gt;
&lt;br /&gt;
OR_IF - special case:&lt;br /&gt;
OR_IF can be used to execute a block of code if at least one of the conditions is met, its syntax is following:&lt;br /&gt;
&lt;br /&gt;
OR_IF ANIM == 1&lt;br /&gt;
OR_IF ANIM == 3&lt;br /&gt;
IF ANIM == 6&lt;br /&gt;
...code...&lt;br /&gt;
ENDIF&lt;br /&gt;
&lt;br /&gt;
All the OR_IF lines must precede the IF line. Their compiled syntax is following:&lt;br /&gt;
&lt;br /&gt;
   byte: |     1     |      2      |     3     |        4         |  5 &amp;amp; 6&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
Command: |   OR_IF   |  Condition  | Operator  | value to compare | address&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
Example: |   0x37    | 0x03 (ZONE) | 0x00 (==) |       0x03       | 0x002D&lt;br /&gt;
&lt;br /&gt;
The syntax is the same as regular IF statement, but this time the addres bytes (5 and 6) contain an address where to jump when condition is TRUE. In case it is FALSE the execution will continue to the next line (no jump) (another condition should be there).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each condition has a specified range of values it can be compared with. For example COL can be compared to 1-byte values only. One can imagine the comparison values as &amp;quot;function return&amp;quot; values, but it doesn&amp;#039;t exactly work this way. For example ZONE conditional will be always false if the Actor is not inside any Zone, no matter what value to compare is in the statement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
0x00 ( 0) COL&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the Actor to test collision with&lt;br /&gt;
&lt;br /&gt;
0x01 ( 1) COL_OBJ&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the Actor to test collision with the target Actor&lt;br /&gt;
&lt;br /&gt;
0x02 ( 2) DISTANCE&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
          compare value: 2 bytes (unsigned?) (0..32000) - distance to the target Actor in Scene units&lt;br /&gt;
&lt;br /&gt;
0x03 ( 3) ZONE&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the Zone to test if the current Actor is inside&lt;br /&gt;
&lt;br /&gt;
0x04 ( 4) ZONE_OBJ&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the Zone to test if the tested Actor is inside&lt;br /&gt;
&lt;br /&gt;
0x05 ( 5) BODY&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the body to test if it&amp;#039;s set for the current Actor&lt;br /&gt;
&lt;br /&gt;
0x06 ( 6) BODY_OBJ&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the body to test if it&amp;#039;s set for the target Actor&lt;br /&gt;
&lt;br /&gt;
0x07 ( 7) ANIM&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the animation to test if it&amp;#039;s set for the current Actor&lt;br /&gt;
&lt;br /&gt;
0x08 ( 8) ANIM_OBJ&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the animation to test if it&amp;#039;s set for the target Actor&lt;br /&gt;
&lt;br /&gt;
0x09 ( 9) L_TRACK&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the Track Script LABEL to test if it&amp;#039;s set for the current Actor&lt;br /&gt;
&lt;br /&gt;
0x0A (10) L_TRACK_OBJ&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the Track Script LABEL to test if it&amp;#039;s set for the target Actor&lt;br /&gt;
&lt;br /&gt;
0x0B (11) FLAG_CUBE&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the Cube Flag to test&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - value of the Cube Flag to test&lt;br /&gt;
&lt;br /&gt;
0x0C (12) CONE_VIEW&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
          compare value: 2 bytes (unsigned?) (0..32000) - distance to the targer Actor in Scene units&lt;br /&gt;
&lt;br /&gt;
0x0D (13) HIT_BY&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the Actor to test if it has hit the current Actor&lt;br /&gt;
&lt;br /&gt;
0x0E (14) ACTION&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..1) - (boolean) 1 = player is pressing &amp;quot;Action&amp;quot; command&lt;br /&gt;
&lt;br /&gt;
0x0F (15) FLAG_GAME&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the Game Flag to test&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - value of the Game Flag to test&lt;br /&gt;
&lt;br /&gt;
0x10 (16) LIFE_POINT&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte (unsigned?) (0..255) - amount of life points to compare the current Actor&amp;#039;s amount of life points with&lt;br /&gt;
&lt;br /&gt;
0x11 (17) LIFE_POINT_OBJ&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
          compare value: 1 byte (unsigned?) (0..255) - amount of life points to compare the target Actor&amp;#039;s amount of life points with&lt;br /&gt;
&lt;br /&gt;
0x12 (18) NUM_LITTLE_KEYS&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte (unsigned?) (0..255) - amount of little keys to compare the Hero&amp;#039;s amount of little keys with&lt;br /&gt;
&lt;br /&gt;
0x13 (19) NUM_GOLD_PIECES&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 2 bytes (unsigned?) (0..65535) - amount of gold to compare the Hero&amp;#039;s amount of gold with&lt;br /&gt;
&lt;br /&gt;
0x14 (20) BEHAVIOUR&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..4) - ID of the behaviour to test for the Hero (0 = normal, 1 = athletic, 2 = aggressive, 3 = discrete, 4 = proto-pack)&lt;br /&gt;
&lt;br /&gt;
0x15 (21) CHAPTER&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - value of the Chapter variable to test&lt;br /&gt;
&lt;br /&gt;
0x16 (22) DISTANCE_3D&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the target Actor&lt;br /&gt;
          compare value: 2 bytes (unsigned?) (0..65535) - distance to the target Actor in Scene units&lt;br /&gt;
&lt;br /&gt;
0x17 (23) (unused)&lt;br /&gt;
&lt;br /&gt;
0x18 (24) (unused)&lt;br /&gt;
&lt;br /&gt;
0x19 (25) USE_INVENTORY&lt;br /&gt;
          param1: 1 byte unsigned (0..255) - ID of the (inventory item to test?)&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ???&lt;br /&gt;
&lt;br /&gt;
0x1A (26) CHOICE&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 2 bytes (unsigned?) (0..65535) - ID of the text to check if it has been chosen&lt;br /&gt;
&lt;br /&gt;
0x1B (27) FUEL&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - amount of fuel to test&lt;br /&gt;
&lt;br /&gt;
0x1C (28) CARRIED_BY&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte unsigned (0..255) - ID of the Actor to test if the current Actor is being carried by it&lt;br /&gt;
&lt;br /&gt;
0x1D (29) CDROM&lt;br /&gt;
          [no params]&lt;br /&gt;
          compare value: 1 byte (unsigned?) (0..255) - ???&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===============================&lt;br /&gt;
 LIFE SCRIPT OPERATORS&lt;br /&gt;
===============================&lt;br /&gt;
&lt;br /&gt;
0x00 (0) ==  - tests if the Condition value is equal to the given value to compare&lt;br /&gt;
&lt;br /&gt;
0x01 (1) &amp;gt;   - tests if the Condition value is larger than given value to compare&lt;br /&gt;
&lt;br /&gt;
0x02 (2) &amp;lt;   - tests if the Condition value is less than given value to compare&lt;br /&gt;
&lt;br /&gt;
0x03 (3) &amp;gt;=  - tests if the Condition value is larger or equal than given value to compare&lt;br /&gt;
&lt;br /&gt;
0x04 (4) &amp;lt;=  - tests if the Condition value is less or equal than given value to compare&lt;br /&gt;
&lt;br /&gt;
0x05 (5) !=  - tests if the Condition value is not equal to given value to compare&lt;/div&gt;</summary>
		<author><name>Zink</name></author>
	</entry>
</feed>