From 81af49341279cf15b1ebc2cfc49d2debb2977f85 Mon Sep 17 00:00:00 2001 From: Petr Mikheev Date: Sat, 29 Jan 2022 00:52:08 +0000 Subject: [PATCH] Add better explanation of the `onLoad` engine handler. --- docs/source/reference/lua-scripting/overview.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/source/reference/lua-scripting/overview.rst b/docs/source/reference/lua-scripting/overview.rst index 9de283b029..fe8082a1a1 100644 --- a/docs/source/reference/lua-scripting/overview.rst +++ b/docs/source/reference/lua-scripting/overview.rst @@ -246,11 +246,14 @@ See :ref:`Engine handlers reference`. onSave and onLoad ================= -When a game is saved or loaded, the engine calls the engine handlers `onSave` or `onLoad` for every script. +When a game is saved or loaded, the engine calls the engine handlers `onSave` or `onLoad` to save or load each script. The value that `onSave` returns will be passed to `onLoad` when the game is loaded. It is the only way to save the internal state of a script. All other script variables will be lost after closing the game. The saved state must be :ref:`serializable `. +Note that `onLoad` means loading a script rather than loading a game. During loading a game `onLoad` works only for the scripts that were already existed when the game was saved (i.e. present in the save file). +If a completely new script was started (for example if it is a script of a newly installed mod) then the `onInit` handler is used even if it happened when loading a saved game. + `onSave` and `onLoad` can be called even for objects in inactive state, so it shouldn't use `openmw.nearby`. An example: