diff options
-rw-r--r-- | src/actions/actions.cpp | 37 | ||||
-rw-r--r-- | src/gui/popups/popupmenu.cpp | 6 |
2 files changed, 28 insertions, 15 deletions
diff --git a/src/actions/actions.cpp b/src/actions/actions.cpp index eaf0da026..78ebe6406 100644 --- a/src/actions/actions.cpp +++ b/src/actions/actions.cpp @@ -104,8 +104,9 @@ #include "utils/chatutils.h" #include "utils/delete2.h" #include "utils/gettext.h" -#include "utils/timer.h" #include "utils/mathutils.h" +#include "utils/parameters.h" +#include "utils/timer.h" #ifdef ANDROID #ifndef USE_SDL2 @@ -1166,27 +1167,43 @@ impHandler(undress) return false; const std::string args = event.args; - + StringVect pars; + if (!splitParameters(pars, args, " ,", '\"')) + return false; Being *target = nullptr; - if (!args.empty()) + const size_t sz = pars.size(); + if (sz == 0) { - if (args[0] == ':') + if (!target) + target = localPlayer->getTarget(); + } + else + { + if (pars[0][0] == ':') { target = actorManager->findBeing(fromInt(atoi( - args.substr(1).c_str()), BeingId)); + pars[0].substr(1).c_str()), BeingId)); if (target && target->getType() == ActorType::Monster) target = nullptr; } else { - target = actorManager->findNearestByName(event.args); + target = actorManager->findNearestByName(args); } } - if (!target) - target = localPlayer->getTarget(); - if (target && beingHandler) - beingHandler->undress(target); + if (sz == 2) + { + const int itemId = atoi(pars[1].c_str()); + if (target) + target->undressItemById(itemId); + } + else + { + if (target && beingHandler) + beingHandler->undress(target); + } + return true; } diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp index ce8795b4f..4218a1101 100644 --- a/src/gui/popups/popupmenu.cpp +++ b/src/gui/popups/popupmenu.cpp @@ -1238,10 +1238,6 @@ void PopupMenu::handleLink(const std::string &link, dialog->setActionEventId("ok"); dialog->addActionListener(&mPlayerListener); } - else if (link == "undress item" && being && mItemId) - { - being->undressItemById(mItemId); - } else if (link == "guild-pos" && !mName.empty()) { showChangePos(getX(), getY()); @@ -2103,7 +2099,7 @@ void PopupMenu::showUndressPopup(const int x, const int y, // TRANSLATORS: popup menu item // TRANSLATORS: undress item from player - mBrowserBox->addRow("undress item", _("Undress")); + mBrowserBox->addRow("/undress :'BEINGID' 'ITEMID'", _("Undress")); // TRANSLATORS: popup menu item // TRANSLATORS: add item name to chat mBrowserBox->addRow("/addchat 'ITEMID''CARDS'", _("Add to chat")); |