From afcbb3cb5e6cf314504bde50fd31a3cad42dd532 Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Sun, 21 Aug 2022 13:33:21 +0200 Subject: [PATCH 1/2] Clear the magic queue when unloading actors --- apps/openmw/mwmechanics/activespells.cpp | 9 +++++++++ apps/openmw/mwmechanics/activespells.hpp | 2 ++ apps/openmw/mwmechanics/actors.cpp | 5 +---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwmechanics/activespells.cpp b/apps/openmw/mwmechanics/activespells.cpp index 4c450b1363..e8cbfedecf 100644 --- a/apps/openmw/mwmechanics/activespells.cpp +++ b/apps/openmw/mwmechanics/activespells.cpp @@ -498,4 +498,13 @@ namespace MWMechanics for(const ESM::ActiveSpells::ActiveSpellParams& spell : state.mQueue) mQueue.emplace_back(ActiveSpellParams{spell}); } + + void ActiveSpells::unloadActor(const MWWorld::Ptr& ptr) + { + purge([] (const auto& spell) + { + return spell.getType() == ESM::ActiveSpells::Type_Consumable || spell.getType() == ESM::ActiveSpells::Type_Temporary; + }, ptr); + mQueue.clear(); + } } diff --git a/apps/openmw/mwmechanics/activespells.hpp b/apps/openmw/mwmechanics/activespells.hpp index 9f8252c8a4..5481211985 100644 --- a/apps/openmw/mwmechanics/activespells.hpp +++ b/apps/openmw/mwmechanics/activespells.hpp @@ -144,6 +144,8 @@ namespace MWMechanics ///< case insensitive void skipWorsenings(double hours); + + void unloadActor(const MWWorld::Ptr& ptr); }; } diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index 49d4f3f6e4..40aa628f01 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -220,10 +220,7 @@ void soulTrap(const MWWorld::Ptr& creature) void removeTemporaryEffects(const MWWorld::Ptr& ptr) { - ptr.getClass().getCreatureStats(ptr).getActiveSpells().purge([] (const auto& spell) - { - return spell.getType() == ESM::ActiveSpells::Type_Consumable || spell.getType() == ESM::ActiveSpells::Type_Temporary; - }, ptr); + ptr.getClass().getCreatureStats(ptr).getActiveSpells().unloadActor(ptr); } } From 443420ea6013f56119f2b9b2b0c2c17906e0690c Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Sun, 21 Aug 2022 14:46:13 +0200 Subject: [PATCH 2/2] CI compare cells --- apps/openmw/mwworld/worldimp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index af5abdd8f3..129b390b7c 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -973,7 +973,7 @@ namespace MWWorld mPhysics->clearQueuedMovement(); mDiscardMovements = true; - if (changeEvent && mCurrentWorldSpace != cellName) + if (changeEvent && !Misc::StringUtils::ciEqual(mCurrentWorldSpace, cellName)) { // changed worldspace mProjectileManager->clear();