From 96ab0752dbfbed14eaaab864c2c4e1929b87db33 Mon Sep 17 00:00:00 2001 From: Nova Date: Sun, 5 Oct 2025 01:49:18 -0400 Subject: [PATCH] Add Lua API for werewolf state management Adds a new function to force the player or NPCS to turn into a werewolf. - setWerewolf(bool): Transform a PC or NPC into/out of werewolf form This enables modders to control werewolf transformations Useage Example: -- Turn player into werewolf types.NPC.setWerewolf(self, true) --- apps/openmw/mwlua/types/npc.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/apps/openmw/mwlua/types/npc.cpp b/apps/openmw/mwlua/types/npc.cpp index 1b4161d923..7e1bb0288b 100644 --- a/apps/openmw/mwlua/types/npc.cpp +++ b/apps/openmw/mwlua/types/npc.cpp @@ -246,6 +246,17 @@ namespace MWLua throw std::runtime_error("NPC or Player expected"); }; + npc["setWerewolf"] = [context](const Object& obj, bool werewolf) -> void { + const MWWorld::Ptr& ptr = obj.ptr(); + if (!ptr.getClass().isNpc()) + throw std::runtime_error("NPC or Player expected"); + context.mLuaManager->addAction( + [obj = Object(ptr), werewolf] { + MWBase::Environment::get().getMechanicsManager()->setWerewolf(obj.ptr(), werewolf); + }, + "setWerewolfAction"); + }; + npc["getDisposition"] = [](const Object& o, const Object& player) -> int { const MWWorld::Class& cls = o.ptr().getClass(); verifyPlayer(player);