From cecb2b71ea0b5f7f4a916fb032aaa1f2bf16e9a3 Mon Sep 17 00:00:00 2001 From: Alexei Kotov Date: Fri, 6 Oct 2023 22:46:11 +0300 Subject: [PATCH] Handle AllowWerewolfForceGreeting variable (bug #7609) --- CHANGELOG.md | 1 + apps/openmw/mwscript/dialogueextensions.cpp | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index facb9df9e5..e923e08a94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,6 +75,7 @@ Bug #7573: Drain Fatigue can't bring fatigue below zero by default Bug #7603: Scripts menu size is not updated properly Bug #7604: Goblins Grunt becomes idle once injured + Bug #7609: ForceGreeting should not open dialogue for werewolves Feature #3537: Shader-based water ripples Feature #5492: Let rain and snow collide with statics Feature #6149: Dehardcode Lua API_REVISION diff --git a/apps/openmw/mwscript/dialogueextensions.cpp b/apps/openmw/mwscript/dialogueextensions.cpp index 5a361e1bdc..1f0a9a37cf 100644 --- a/apps/openmw/mwscript/dialogueextensions.cpp +++ b/apps/openmw/mwscript/dialogueextensions.cpp @@ -135,6 +135,15 @@ namespace MWScript return; } + bool greetWerewolves = false; + const ESM::RefId& script = ptr.getClass().getScript(ptr); + if (!script.empty()) + greetWerewolves = ptr.getRefData().getLocals().hasVar(script, "allowwerewolfforcegreeting"); + + const MWWorld::Ptr& player = MWBase::Environment::get().getWorld()->getPlayerPtr(); + if (player.getClass().getNpcStats(player).isWerewolf() && !greetWerewolves) + return; + MWBase::Environment::get().getWindowManager()->pushGuiMode(MWGui::GM_Dialogue, ptr); } };