TombEngine 1.0.9 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.
Inventory Inventory manipulation
Logic Saving data, triggering functions, and callbacks for level-specific scripts.
Misc Functions that don't fit in the other modules.
Objects Moveables, statics, cameras, and so on.
Strings On-screen strings.

2 Classes

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.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.
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 Rooms
Objects.Sink Sink
Objects.SoundSource Sound source
Objects.Static Statics
Objects.Volume Volumes
Strings.DisplayString A string appearing on the screen.

3 Primitive Classes

Color An RGBA or RGB color.
Rotation Represents a rotation.
Vec2 Represents a 2D vector.
Vec3 Represents a 3D vector.

4 Enums

Effects.BlendID Constants for blend mode IDs.
Effects.EffectID Constants for effect IDs.
Misc.ActionID Constants for action key IDs.
Misc.CameraType Constants for the type of the Camera.
Misc.LogLevel Constants for LogLevel IDs.
Objects.ObjID Constants for object IDs.
Objects.RoomFlagID Constants for room flag IDs.
Objects.RoomReverb Constants for room reverb types.

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.
generated by TEN-LDoc (a fork of LDoc 1.4.6) Last updated 2023-06-03 11:42:57