TombEngine 1.8.1 scripting interface
Welcome to the TombEngine scripting API.
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
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".
Happy building!
- squidshire and the TombEngine development team.
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 | Objects including moveables, statics, cameras, and others. |
Sound | Functions for sound management. |
Strings | Display strings. |
Util | Utility functions for various calculations. |
View | Functions to manage camera and game view. |
2 Classes
Collision.Probe | Represents a collision probe in the game world. |
Flow.Level | Stores level metadata. |
Flow.Settings | Global engine settings which don't fall into particular category or can't be assigned to a specific object. |
Flow.Statistics | A set of gameplay statistics. |
Objects.AIObject | AI object |
Objects.Camera | Basic cameras that can point at Lara or at a CAMERA_TARGET. |
Objects.LaraObject | Class for extra player-only functions. |
Objects.Moveable | Represents a moveable object in the game world. |
Objects.Room | Room object. |
Objects.Sink | Represents a sink object. |
Objects.SoundSource | Sound source |
Objects.Static | Represents a static object in the game world. |
Objects.Volume | Activator volume. |
Strings.DisplayString | A string appearing on the screen. |
View.DisplaySprite | Represents a display sprite. |
3 Primitive Classes
Flow.Fog | Represesnts distance fog. |
Flow.Horizon | Represents a horizon. |
Flow.InventoryItem | Represents the properties of an object as it appears in the inventory. |
Flow.LensFlare | Represents a global lens flare (not to be confused with the lens flare object). |
Flow.SkyLayer | Describes a layer of moving clouds. |
Flow.Starfield | Represents a star field in the sky. |
Color | Represents an RGBA or RGB color. |
Rotation | Represents a 3D rotation. |
Time | Represents a time value in game frames, with support for formatting to hours, minutes, seconds, and centiseconds (1/100th of a second). |
Vec2 | Represents a float-based 2D vector. |
Vec3 | Represents a float-based 3D vector. |
4 Enums
Collision.MaterialType | Constants for material types. |
Effects.BlendID | Constants for blend mode IDs. |
Effects.EffectID | Constants for effect IDs. |
Effects.StreamerFeatherMode | Constants for feather modes. |
Effects.ParticleAnimationType | Constants for particle animation type constants. |
Flow.ErrorMode | Constants for error modes. |
Flow.FreezeMode | Constants for freeze modes. |
Flow.GameStatus | Constants for game statuses. |
Input.ActionID | Constants for action key IDs. |
Objects.AmmoType | Constants for player weapon ammo types. |
Objects.HandStatus | Constants for player hand statuses. |
Objects.WeaponType | Constants for weapon 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. |
Strings.DisplayStringOption | Constants for Display String Options. |
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 display sprite scale modes. |
5 Lua utility modules
CustomBar | This module provides functions for creating and managing custom progress bars. |
Diary | This module provides functions to create and manage diaries. |
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. |
Type | Type - This molule contains functions that allow to check the data type of a variable. |