diff --git a/apps/openmw/mwlua/types/player.cpp b/apps/openmw/mwlua/types/player.cpp index 25056caa41..a763575748 100644 --- a/apps/openmw/mwlua/types/player.cpp +++ b/apps/openmw/mwlua/types/player.cpp @@ -201,11 +201,15 @@ namespace MWLua verifyPlayer(player); ESM::RefId topic = ESM::RefId::deserializeText(topicId); - if (!MWBase::Environment::get().getESMStore()->get().search(topic)) - { + const ESM::Dialogue* dialogueRecord + = MWBase::Environment::get().getESMStore()->get().search(topic); + + if (!dialogueRecord) throw std::runtime_error( Misc::StringUtils::format("Failed to add topic ", topicId, ": topic record not found")); - } + else if (dialogueRecord->mType != ESM::Dialogue::Topic) + throw std::runtime_error( + Misc::StringUtils::format("Failed to add topic ", topicId, ": record is not a topic")); MWBase::Environment::get().getDialogueManager()->addTopic(topic); };