Lua API reference

API packages

API packages provide functions that can be called by scripts. I.e. it is a script-to-engine interaction. A package can be loaded with require('<package name>'). It can not be overloaded even if there is a lua file with the same name. The list of available packages is different for global and for local scripts. Player scripts are local scripts that are attached to a player.

Package Can be used Description
openmw.interfaces everywhere
Public interfaces of other scripts.
openmw.util everywhere
Defines utility functions and classes like 3D vectors,
that don’t depend on the game world.
openmw.settings everywhere
Access to GMST records in content files (implemented) and
to mod settings (not implemented).
openmw.core everywhere
Functions that are common for both global and local scripts
openmw.async everywhere
Timers (implemented) and coroutine utils (not implemented)
openmw.query everywhere
Tools for constructing queries: base queries and fields. by global scripts
Read-write access to the game world.
openmw.self by local scripts
Full access to the object the script is attached to.
openmw.nearby by local scripts
Read-only access to the nearest area of the game world.
openmw.input by player scripts
User input.
openmw.ui by player scripts
Controls user interface. by player scripts
Controls camera.


openmw_aux.* are built-in libraries that are itself implemented in Lua. They can not do anything that is not possible with the basic API, they only make it more convenient. Sources can be found in resources/vfs/openmw_aux. In theory mods can override them, but it is not recommended.

Built-in library Can be used Description
openmw_aux.util everywhere
Miscellaneous utils

Interfaces of built-in scripts

Interface Can be used Description
Camera by player scripts
Allows to alter behavior of the built-in camera script
without overriding the script completely.