1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-26 11:09:41 +00:00

Clear the magic queue when unloading actors

This commit is contained in:
Evil Eye 2022-08-21 13:33:21 +02:00
parent 510eac3fb4
commit afcbb3cb5e
3 changed files with 12 additions and 4 deletions

View file

@ -498,4 +498,13 @@ namespace MWMechanics
for(const ESM::ActiveSpells::ActiveSpellParams& spell : state.mQueue) for(const ESM::ActiveSpells::ActiveSpellParams& spell : state.mQueue)
mQueue.emplace_back(ActiveSpellParams{spell}); 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();
}
} }

View file

@ -144,6 +144,8 @@ namespace MWMechanics
///< case insensitive ///< case insensitive
void skipWorsenings(double hours); void skipWorsenings(double hours);
void unloadActor(const MWWorld::Ptr& ptr);
}; };
} }

View file

@ -220,10 +220,7 @@ void soulTrap(const MWWorld::Ptr& creature)
void removeTemporaryEffects(const MWWorld::Ptr& ptr) void removeTemporaryEffects(const MWWorld::Ptr& ptr)
{ {
ptr.getClass().getCreatureStats(ptr).getActiveSpells().purge([] (const auto& spell) ptr.getClass().getCreatureStats(ptr).getActiveSpells().unloadActor(ptr);
{
return spell.getType() == ESM::ActiveSpells::Type_Consumable || spell.getType() == ESM::ActiveSpells::Type_Temporary;
}, ptr);
} }
} }