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()); } }