From d83160523f2cb9825fab9a4e210393639e988cee Mon Sep 17 00:00:00 2001 From: David Cernat Date: Mon, 31 Dec 2018 06:55:35 +0200 Subject: [PATCH] [Client] Add items required for item magic casting when they are missing --- apps/openmw/mwmp/MechanicsHelper.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/apps/openmw/mwmp/MechanicsHelper.cpp b/apps/openmw/mwmp/MechanicsHelper.cpp index 1e324e60a..a86f9c2b3 100644 --- a/apps/openmw/mwmp/MechanicsHelper.cpp +++ b/apps/openmw/mwmp/MechanicsHelper.cpp @@ -393,18 +393,14 @@ void MechanicsHelper::processAttack(Attack attack, const MWWorld::Ptr& attacker) break; } - if (it != inventoryStore.end()) - { - inventoryStore.setSelectedEnchantItem(it); - LOG_APPEND(Log::LOG_VERBOSE, "- itemId: %s", attack.itemId.c_str()); - MWBase::Environment::get().getWorld()->castSpell(attacker); - inventoryStore.setSelectedEnchantItem(inventoryStore.end()); - } - else - { - LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "Could not find item %s used by %s to cast item spell!", - attack.itemId.c_str(), attacker.getCellRef().getRefId().c_str()); - } + // Add the item if it's missing + if (it == inventoryStore.end()) + it = attacker.getClass().getContainerStore(attacker).add(attack.itemId, 1, attacker); + + inventoryStore.setSelectedEnchantItem(it); + LOG_APPEND(Log::LOG_VERBOSE, "- itemId: %s", attack.itemId.c_str()); + MWBase::Environment::get().getWorld()->castSpell(attacker); + inventoryStore.setSelectedEnchantItem(inventoryStore.end()); } }