From 1a2fde04bb2757ca852584d7d7b3080a89cfdd93 Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Mon, 8 Nov 2021 17:28:54 +0100 Subject: [PATCH] Clarify logic --- apps/openmw/mwmechanics/spellpriority.cpp | 27 ++++++++++------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/apps/openmw/mwmechanics/spellpriority.cpp b/apps/openmw/mwmechanics/spellpriority.cpp index 7338f4b2af..acc9fc2a3f 100644 --- a/apps/openmw/mwmechanics/spellpriority.cpp +++ b/apps/openmw/mwmechanics/spellpriority.cpp @@ -369,25 +369,22 @@ namespace MWMechanics break; case ESM::MagicEffect::BoundShield: - if(actor.getClass().hasInventoryStore(actor)) + if(!actor.getClass().hasInventoryStore(actor)) + return 0.f; + else if(!actor.getClass().isNpc()) { // If the actor is an NPC they can benefit from the armor rating, otherwise check if we've got a one-handed weapon to use with the shield - if(!actor.getClass().isNpc()) + const auto& store = actor.getClass().getInventoryStore(actor); + auto oneHanded = std::find_if(store.cbegin(MWWorld::ContainerStore::Type_Weapon), store.cend(), [](const MWWorld::ConstPtr& weapon) { - const auto& store = actor.getClass().getInventoryStore(actor); - auto oneHanded = std::find_if(store.cbegin(MWWorld::ContainerStore::Type_Weapon), store.cend(), [](const MWWorld::ConstPtr& weapon) - { - if(weapon.getClass().getItemHealth(weapon) <= 0.f) - return false; - auto type = weapon.get()->mBase->mData.mType; - return !(MWMechanics::getWeaponType(type)->mFlags & ESM::WeaponType::TwoHanded); - }); - if(oneHanded == store.cend()) - return 0.f; - } + if(weapon.getClass().getItemHealth(weapon) <= 0.f) + return false; + short type = weapon.get()->mBase->mData.mType; + return !(MWMechanics::getWeaponType(type)->mFlags & ESM::WeaponType::TwoHanded); + }); + if(oneHanded == store.cend()) + return 0.f; } - else - return 0.f; break; // Creatures can not wear armor case ESM::MagicEffect::BoundCuirass: