From 7d97ca6cd509f84769eb006c07ce7978337221cd Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Mon, 26 Dec 2022 21:13:24 +0100 Subject: [PATCH] Don't call getClass on an empty Ptr --- apps/openmw/mwmechanics/actors.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index 40aa628f01..33a337e803 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -598,7 +598,8 @@ namespace MWMechanics } std::set playerAllies; - getActorsSidingWith(MWMechanics::getPlayer(), playerAllies, cachedAllies); + MWWorld::Ptr player = MWMechanics::getPlayer(); + getActorsSidingWith(player, playerAllies, cachedAllies); bool isPlayerFollowerOrEscorter = playerAllies.find(actor1) != playerAllies.end(); @@ -621,7 +622,8 @@ namespace MWMechanics mechanicsManager->startCombat(actor1, actor2); // Also have actor1's allies start combat for (const MWWorld::Ptr& ally1 : allies1) - mechanicsManager->startCombat(ally1, actor2); + if (ally1 != player) + mechanicsManager->startCombat(ally1, actor2); return; } } @@ -721,7 +723,10 @@ namespace MWMechanics { bool actorKilled = false; - MWWorld::Ptr caster = MWBase::Environment::get().getWorld()->searchPtrViaActorId(spell.getCasterActorId()); + MWWorld::Ptr caster + = MWBase::Environment::get().getWorld()->searchPtrViaActorId(spell.getCasterActorId()); + if (caster.isEmpty()) + continue; for (const auto& effect : spell.getEffects()) { static const std::array damageEffects{