diff options
Diffstat (limited to 'src/actions')
-rw-r--r-- | src/actions/actions.cpp | 28 | ||||
-rw-r--r-- | src/actions/actions.h | 1 |
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 |