Lua API reference

OpenMW version: 0.49.0
core.API_REVISION: 76 *

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.ambient

by player and menu scripts

Controls background sounds for given player.

openmw.animation

by local and player scripts

Animation controls

openmw.async

everywhere

Timers and callbacks.

openmw.camera

by player scripts

Controls camera.

openmw.core

everywhere

Functions that are common for both global and local scripts

openmw.debug

by player scripts

Collection of debug utils.

openmw.input

by player and menu scripts

User input.

openmw.interfaces

everywhere

Public interfaces of other scripts.

openmw.markup

everywhere

API to work with markup languages.

openmw.menu

by menu scripts

Main menu functionality, such as managing game saves

openmw.nearby

by local and player scripts

Read-only access to the nearest area of the game world.

openmw.postprocessing

by player scripts

Controls post-process shaders.

openmw.self

by local and player scripts

Full access to the object the script is attached to.

openmw.storage

everywhere

Storage API. In particular can be used to store data
between game sessions.

openmw.types

everywhere

Functions for specific types of game objects.

openmw.ui

by player and menu scripts

Controls user interface.

openmw.util

everywhere

Defines utility functions and classes like 3D vectors,
that don’t depend on the game world.

openmw.vfs

everywhere

Read-only access to data directories via VFS.

openmw.world

by global scripts

Read-write access to the game world.

openmw_aux

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.calendar

everywhere

Game time calendar

openmw_aux.util

everywhere

Miscellaneous utils

openmw_aux.time

everywhere

Timers and game time utils

openmw_aux.ui

by player and menu scripts

User interface utils

Interfaces of built-in scripts

Interface

Can be used

Description

Activation

by global scripts

Allows to extend or override built-in activation mechanics.

AI

by local scripts

Control basic AI of NPCs and creatures.

AnimationController

by local scripts

Control animations of NPCs and creatures.

Camera

by player scripts

Allows to alter behavior of the built-in camera script
without overriding the script completely.

Controls

by player scripts

Allows to alter behavior of the built-in script
that handles player controls.

GamepadControls

by player scripts

Allows to alter behavior of the built-in script
that handles player gamepad controls.

ItemUsage

by global scripts

Allows to extend or override built-in item usage
mechanics.

SkillProgression

by local scripts

Control, extend, and override skill progression of the
player.

Settings

by player, menu, and global scripts

Save, display and track changes of setting values.

MWUI

by player and menu scripts

Morrowind-style UI templates.

UI

by player scripts

High-level UI modes interface. Allows to override parts
of the interface.

Crimes

by global scripts

Commit crimes.