TombEngine 1.5 scripting interface
Welcome to the TombEngine scripting API. This is a work in progress and some information might be wrong or outdated. Please also note that this is primarily a reference document, not a tutorial, so expect descriptions to be fairly sparse.
At the time of writing, there is a tutorial describing the basics of Lua, as well as a number of example scripts, on the TombEngine website.
Module Hierarchy (boring but important)
Other than the "special tables" (GameVars, LevelVars and LevelFuncs), every module described herein is held in a master table called TEN. For convenience, these modules and classes are automatically put in the global table. For example, you can call GetMoveableByName either of these two ways:
local door = TEN.Objects.GetMoveableByName("door_type4_14")
local door = GetMoveableByName("door_type4_14")
Always check logs/TENLog.txt
If you are scripting levels, TombEngine will often kick you back to the title screen, even if errorMode
(see Flow.Settings) is set to ErrorMode.WARN
or ErrorMode.SILENT
.
This might get annoying, but it's on purpose. If your Lua script contains a syntax error (e.g. you're missing end
at the end of a function), the Lua interpreter will not be able to continue running the script. If it tried to keep running, you'd probably see some pretty strange behaviour, and would possibly get a crash regardless.
If this happens, check logs/TENLog.txt and look for an error message with the word "unrecoverable".
Enjoy.
- squidshire
1 Modules
Effects | Functions to generate effects. |
Flow | Functions that (mostly) don't directly impact in-game mechanics. |
Input | Functions for input management. |
Inventory | Inventory manipulation |
Logic | Saving data, triggering functions, and callbacks for level-specific scripts. |
Objects | Moveables, statics, cameras, and so on. |
Sound | Functions for sound management. |
Strings | Display strings. |
Util | Utility functions for various calculations. |
View | Functions to manage camera and game view. |
2 Classes
View.DisplaySprite | Represents a display sprite. |
Flow.Animations | New custom animations which Lara can perform. |
Flow.Fog | Fog |
Flow.InventoryItem | Represents the properties of an object as it appears in the inventory. |
Flow.LensFlare | Represents a lens flare. |
Flow.Level | Stores level metadata. |
Flow.Mirror | A mirror effect. |
Flow.Settings | Settings that will be run on game startup. |
Flow.SkyLayer | Describes a layer of moving clouds. |
Flow.Starfield | Represents a starfield. |
Objects.AIObject | AI object |
Objects.Camera | Basic cameras that can point at Lara or at a CAMERA_TARGET. |
Objects.LaraObject | Class for extra Lara-only functions. |
Objects.Moveable | Represents any object inside the game world. |
Objects.Room | Room object. |
Objects.Sink | Sink |
Objects.SoundSource | Sound source |
Objects.Static | Statics |
Objects.Volume | Activator volume. |
Strings.DisplayString | A string appearing on the screen. |
3 Primitive Classes
Color | Represents an RGBA or RGB color. |
Rotation | Represents a degree-based 3D rotation. |
Vec2 | Represents a float-based 2D vector. |
Vec3 | Represents a float-based 3D vector. |
4 Enums
Effects.BlendID | Constants for blend mode IDs. |
Effects.EffectID | Constants for effect IDs. |
Flow.GameStatus | Constants for game statuses. |
Input.ActionID | Constants for action key IDs. |
Objects.AmmoType | Constants for player weapon ammo types. |
Objects.MoveableStatus | Constants for moveable statuses. |
Objects.ObjID | Constants for object IDs. |
Objects.RoomFlagID | Constants for room flag IDs. |
Objects.RoomReverb | Constants for room reverb types. |
Sound.SoundTrackType | Constants for the type of the audio tracks. |
Util.LogLevel | Constants for LogLevel IDs. |
View.AlignMode | Constants for sprite align modes. |
View.CameraType | Constants for the type of the Camera. |
View.PostProcessMode | Constants for the post-process effects to apply. |
View.ScaleMode | Constants for scale modes. |
5 Lua utility modules
EventSequence | Event sequence - a chain of functions to call at specified times, modeled after TRNG's organizers. |
Timer | Basic timer - after a specified number of seconds, the specified thing happens. |