summaryrefslogtreecommitdiff
path: root/src/actions
diff options
context:
space:
mode:
Diffstat (limited to 'src/actions')
-rw-r--r--src/actions/actions.cpp28
-rw-r--r--src/actions/actions.h1
2 files changed, 29 insertions, 0 deletions
diff --git a/src/actions/actions.cpp b/src/actions/actions.cpp
index 93e160750..4cd863dc9 100644
--- a/src/actions/actions.cpp
+++ b/src/actions/actions.cpp
@@ -26,7 +26,9 @@
#include "emoteshortcut.h"
#include "game.h"
#include "graphicsmanager.h"
+#include "inventory.h"
#include "itemshortcut.h"
+#include "spellmanager.h"
#include "actions/actiondef.h"
@@ -53,6 +55,7 @@
#include "gui/windows/setupwindow.h"
#include "gui/windows/shopwindow.h"
#include "gui/windows/shortcutwindow.h"
+#include "gui/windows/skilldialog.h"
#include "gui/widgets/tabs/chat/chattab.h"
@@ -76,6 +79,7 @@
#include "resources/iteminfo.h"
#include "resources/resourcemanager.h"
+#include "resources/skillconsts.h"
#include "resources/db/itemdb.h"
@@ -1287,4 +1291,28 @@ impHandler0(mercenaryFire)
return true;
}
+impHandler(useItem)
+{
+ const int itemId = atoi(event.args.c_str());
+
+ if (itemId < SPELL_MIN_ID)
+ {
+ const Inventory *const inv = PlayerInfo::getInventory();
+ if (inv)
+ {
+ // +++ ignoring item color for now
+ const Item *const item = inv->findItem(itemId, 1);
+ PlayerInfo::useEquipItem(item, true);
+ }
+ }
+ else if (itemId < SKILL_MIN_ID && spellManager)
+ {
+ spellManager->useItem(itemId);
+ }
+ else if (skillDialog)
+ {
+ skillDialog->useItem(itemId);
+ }
+}
+
} // namespace Actions
diff --git a/src/actions/actions.h b/src/actions/actions.h
index c614f61c7..642026d76 100644
--- a/src/actions/actions.h
+++ b/src/actions/actions.h
@@ -92,6 +92,7 @@ namespace Actions
decHandler(uploadLog);
decHandler(catchPet);
decHandler(mercenaryFire);
+ decHandler(useItem);
} // namespace Actions
#undef decHandler