fix disenchanting when dropping item from inv

This commit is contained in:
sylvessa 2026-04-02 17:45:21 -05:00
parent b97fe888d1
commit f364a5bb07

View file

@ -260,15 +260,18 @@ shared_ptr<ItemInstance> AbstractContainerMenu::clicked(int slotIndex, int butto
{
int outId = carried->id, outCount = carried->count, outAux = carried->getAuxValue();
if (FourKitBridge::FirePlayerDropItem(
player->entityId, carried->id, carried->count, carried->getAuxValue(),
&outId, &outCount, &outAux))
dropAllowed = false;
else
{
player->drop(std::make_shared<ItemInstance>(outId, outCount, outAux));
inventory->setCarried(nullptr);
dropAllowed = false;
}
player->entityId, carried->id, carried->count, carried->getAuxValue(),
&outId, &outCount, &outAux))
dropAllowed = false;
else
{
carried->id = outId;
carried->count = outCount;
carried->setAuxValue(outAux);
player->drop(carried);
inventory->setCarried(nullptr);
dropAllowed = false;
}
}
if (dropAllowed)
{
@ -290,16 +293,19 @@ shared_ptr<ItemInstance> AbstractContainerMenu::clicked(int slotIndex, int butto
{
int outId = carried->id, outCount = 1, outAux = carried->getAuxValue();
if (FourKitBridge::FirePlayerDropItem(
player->entityId, carried->id, 1, carried->getAuxValue(),
&outId, &outCount, &outAux))
dropAllowed = false;
else
{
carried->remove(1);
if (carried->count == 0) inventory->setCarried(nullptr);
player->drop(std::make_shared<ItemInstance>(outId, outCount, outAux));
dropAllowed = false;
}
player->entityId, carried->id, 1, carried->getAuxValue(),
&outId, &outCount, &outAux))
dropAllowed = false;
else
{
shared_ptr<ItemInstance> dropped = carried->remove(1);
if (carried->count == 0) inventory->setCarried(nullptr);
dropped->id = outId;
dropped->count = outCount;
dropped->setAuxValue(outAux);
player->drop(dropped);
dropAllowed = false;
}
}
if (dropAllowed)
{
@ -548,7 +554,10 @@ shared_ptr<ItemInstance> AbstractContainerMenu::clicked(int slotIndex, int butto
{
shared_ptr<ItemInstance> item = slot->remove(dropCount);
slot->onTake(player, item);
player->drop(std::make_shared<ItemInstance>(outId, outCount, outAux));
item->id = outId;
item->count = outCount;
item->setAuxValue(outAux);
player->drop(item);
dropAllowed = false;
}
}