From 645553c783c2cacb1ed140aa53792c35c3b971d2 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 12 Dec 2014 20:29:50 +0300 Subject: Add chat command for move to being location. New chat command: /navigateto NAME --- src/actions/commands.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/actions/commands.cpp') 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) -- cgit v1.2.3-60-g2f50