From 2127361148d4ea5531a115cc92131a3f956ca528 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 2 Nov 2015 18:10:42 +0300 Subject: Allow add items to npc inventory from same slot multiple times. Added items automatically removed from inventory item amounts. --- src/gui/windows/npcdialog.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/gui/windows/npcdialog.cpp') diff --git a/src/gui/windows/npcdialog.cpp b/src/gui/windows/npcdialog.cpp index 406e90c1a..539662f51 100644 --- a/src/gui/windows/npcdialog.cpp +++ b/src/gui/windows/npcdialog.cpp @@ -30,6 +30,7 @@ #include "soundmanager.h" #include "being/being.h" +#include "being/playerinfo.h" #include "gui/gui.h" #include "gui/viewport.h" @@ -367,6 +368,7 @@ void NpcDialog::action(const ActionEvent &event) } case NPC_INPUT_ITEM: { + restoreVirtuals(); if (!PacketLimiter::limitPackets( PacketType::PACKET_NPC_INPUT)) { @@ -414,6 +416,7 @@ void NpcDialog::action(const ActionEvent &event) } case NPC_INPUT_ITEM_INDEX: { + restoreVirtuals(); if (!PacketLimiter::limitPackets( PacketType::PACKET_NPC_INPUT)) { @@ -517,6 +520,7 @@ void NpcDialog::action(const ActionEvent &event) } else if (eventId == "close") { + restoreVirtuals(); if (mActionState == NPC_ACTION_INPUT) { switch (mInputState) @@ -541,7 +545,12 @@ void NpcDialog::action(const ActionEvent &event) else if (eventId == "add") { if (inventoryWindow) - mInventory->addVirtualItem(inventoryWindow->getSelectedItem(), 0); + { + Item *const item = inventoryWindow->getSelectedItem(); + Inventory *const inventory = PlayerInfo::getInventory(); + if (mInventory->addVirtualItem(item, 0) && inventory) + inventory->virtualRemove(item, 1); + } } else if (eventId.find("skin_") == 0) { @@ -1244,3 +1253,10 @@ void NpcDialog::createSkinControls() button->adjustSize(); } } + +void NpcDialog::restoreVirtuals() +{ + Inventory *const inventory = PlayerInfo::getInventory(); + if (inventory) + inventory->restoreVirtuals(); +} -- cgit v1.2.3-60-g2f50