diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-12-12 20:29:50 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-12-12 20:29:50 +0300 |
commit | 645553c783c2cacb1ed140aa53792c35c3b971d2 (patch) | |
tree | fe47d96a441ca3be35c0747b4494677d023df6c2 /src/actions/commands.cpp | |
parent | b07ac409f1940d3767c8e4ade0990d11d2d38b96 (diff) | |
download | manaplus-645553c783c2cacb1ed140aa53792c35c3b971d2.tar.gz manaplus-645553c783c2cacb1ed140aa53792c35c3b971d2.tar.bz2 manaplus-645553c783c2cacb1ed140aa53792c35c3b971d2.tar.xz manaplus-645553c783c2cacb1ed140aa53792c35c3b971d2.zip |
Add chat command for move to being location.
New chat command: /navigateto NAME
Diffstat (limited to 'src/actions/commands.cpp')
-rw-r--r-- | src/actions/commands.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp index 151e54474..00c8b9a5c 100644 --- a/src/actions/commands.cpp +++ b/src/actions/commands.cpp @@ -25,6 +25,7 @@ #include "flooritem.h" #include "inventory.h" #include "item.h" +#include "party.h" #include "actions/actiondef.h" @@ -442,6 +443,35 @@ impHandler(navigate) return true; } +impHandler(navigateTo) +{ + if (!localPlayer) + return false; + + const std::string args = event.args; + if (args.empty()) + return true; + + Being *const being = actorManager->findBeingByName(args); + if (being) + { + localPlayer->navigateTo(being->getTileX(), being->getTileY()); + } + else if (localPlayer->isInParty()) + { + const Party *const party = localPlayer->getParty(); + if (party) + { + const PartyMember *const m = party->getMember(args); + const PartyMember *const o = party->getMember( + localPlayer->getName()); + if (m && o && m->getMap() == o->getMap()) + localPlayer->navigateTo(m->getX(), m->getY()); + } + } + return true; +} + impHandler(imitation) { if (!localPlayer) |