From 480951207c1f5120523cfc991c0aad3a108c1374 Mon Sep 17 00:00:00 2001 From: Petr Mikheev Date: Mon, 17 Apr 2023 19:52:24 +0200 Subject: [PATCH] Activation handler for ESM4 Door --- files/data/scripts/omw/activationhandlers.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/files/data/scripts/omw/activationhandlers.lua b/files/data/scripts/omw/activationhandlers.lua index c2ac4db884..95a9c36dae 100644 --- a/files/data/scripts/omw/activationhandlers.lua +++ b/files/data/scripts/omw/activationhandlers.lua @@ -1,9 +1,27 @@ +local async = require('openmw.async') local types = require('openmw.types') local world = require('openmw.world') +local EnableObject = async:registerTimerCallback('EnableObject', function(obj) obj.enabled = true end) + +local function ESM4DoorActivation(door, actor) + -- TODO: Implement lockpicking minigame + -- TODO: Play door opening animation and sound + local Door4 = types.ESM4Door + if Door4.isTeleport(door) then + actor:teleport(Door4.destCell(door), Door4.destPosition(door), Door4.destRotation(door)) + else + door.enabled = false + async:newSimulationTimer(5, EnableObject, door) + end + return false -- disable activation handling in C++ mwmechanics code +end + local handlersPerObject = {} local handlersPerType = {} +handlersPerType[types.ESM4Door] = { ESM4DoorActivation } + local function onActivate(obj, actor) local handlers = handlersPerObject[obj.id] if handlers then