diff --git a/src/creatures/players/player.cpp b/src/creatures/players/player.cpp index 9ba9f3b74d6..8cdfe0ba87d 100644 --- a/src/creatures/players/player.cpp +++ b/src/creatures/players/player.cpp @@ -6518,7 +6518,7 @@ void sendStowItems(const std::shared_ptr &item, const std::shared_ptr item, uint32_t count, bool allItems) { - if (!item || !item->isItemStorable()) { + if (!item || (!item->isItemStorable() && item->getID() != ITEM_GOLD_POUCH)) { sendCancelMessage("This item cannot be stowed here."); return; } diff --git a/src/game/game.cpp b/src/game/game.cpp index 3b656d79e87..f4e448513aa 100644 --- a/src/game/game.cpp +++ b/src/game/game.cpp @@ -1845,7 +1845,9 @@ ReturnValue Game::checkMoveItemToCylinder(std::shared_ptr player, std::s } } - if (containerID == ITEM_GOLD_POUCH) { + const auto containerToStow = isTryingToStow(toPos, toCylinder); + + if (containerID == ITEM_GOLD_POUCH && !containerToStow) { if (g_configManager().getBoolean(TOGGLE_GOLD_POUCH_QUICKLOOT_ONLY, __FUNCTION__)) { return RETURNVALUE_CONTAINERNOTENOUGHROOM; } @@ -1871,7 +1873,7 @@ ReturnValue Game::checkMoveItemToCylinder(std::shared_ptr player, std::s return RETURNVALUE_NOTBOUGHTINSTORE; } - if (item->isStoreItem()) { + if (item->isStoreItem() && !containerToStow) { bool isValidMoveItem = false; auto fromHouseTile = fromCylinder->getTile(); auto house = fromHouseTile ? fromHouseTile->getHouse() : nullptr; @@ -1902,7 +1904,7 @@ ReturnValue Game::checkMoveItemToCylinder(std::shared_ptr player, std::s if (item->getContainer() && !item->isStoreItem()) { for (const std::shared_ptr &containerItem : item->getContainer()->getItems(true)) { - if (containerItem->isStoreItem() && !isTryingToStow(toPos, toCylinder) && ((containerID != ITEM_GOLD_POUCH && containerID != ITEM_DEPOT && containerID != ITEM_STORE_INBOX) || (topParentContainer->getParent() && topParentContainer->getParent()->getContainer() && (!topParentContainer->getParent()->getContainer()->isDepotChest() || topParentContainer->getParent()->getContainer()->getID() != ITEM_STORE_INBOX)))) { + if (containerItem->isStoreItem() && !containerToStow && ((containerID != ITEM_GOLD_POUCH && containerID != ITEM_DEPOT && containerID != ITEM_STORE_INBOX) || (topParentContainer->getParent() && topParentContainer->getParent()->getContainer() && (!topParentContainer->getParent()->getContainer()->isDepotChest() || topParentContainer->getParent()->getContainer()->getID() != ITEM_STORE_INBOX)))) { return RETURNVALUE_NOTPOSSIBLE; } }