[Lua] Fix removing from inventory

revert-6246b479
Petr Mikheev 1 year ago
parent 488657d9b4
commit f99582e671

@ -378,7 +378,7 @@ namespace MWLua
ptr.getRefData().setCount(ptr.getRefData().getCount() + countToRemove);
// And now remove properly
if (ptr.getContainerStore())
ptr.getContainerStore()->remove(ptr, countToRemove);
ptr.getContainerStore()->remove(ptr, countToRemove, false);
else
{
MWBase::Environment::get().getWorld()->disable(ptr);

@ -211,13 +211,9 @@ MWWorld::ContainerStoreIterator MWWorld::InventoryStore::findSlot(int slot) cons
if (mSlots[slot] == end())
return mSlots[slot];
if (mSlots[slot]->getRefData().getCount() < 1)
{
// Object has been deleted
// This should no longer happen, since the new remove function will unequip first
throw std::runtime_error(
"Invalid slot, make sure you are not calling RefData::setCount for a container object");
}
// NOTE: mSlots[slot]->getRefData().getCount() can be zero if the item is marked
// for removal by a Lua script, but the removal action is not yet processed.
// The item will be automatically unequiped in the current frame.
return mSlots[slot];
}

Loading…
Cancel
Save