From 7dcc42c841005c5e475bfcb37e78bc7bc15b4a9d Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 9 Dec 2014 15:22:23 +0300 Subject: Add sell action. New chat command: /sell [name] --- src/actions/commands.cpp | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) (limited to 'src/actions/commands.cpp') diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp index cd35ba9aa..eafd0b82b 100644 --- a/src/actions/commands.cpp +++ b/src/actions/commands.cpp @@ -713,19 +713,34 @@ impHandler0(fireHomunculus) return true; } -impHandler(buy) +static Being *findBeing(const std::string &name) { - const std::string args = event.args; Being *being = nullptr; - if (args.empty()) + if (name.empty()) { being = localPlayer->getTarget(); } else { being = actorManager->findBeingByName( - args, ActorType::Unknown); + name, ActorType::Unknown); + } + if (!being) + { + being = actorManager->findNearestLivingBeing( + localPlayer, 1, ActorType::Npc, true); + } + if (!being) + { + being = actorManager->findNearestLivingBeing( + localPlayer, 1, ActorType::Player, true); } + return being; +} + +impHandler(buy) +{ + Being *being = findBeing(event.args); if (!being) return false; @@ -742,4 +757,23 @@ impHandler(buy) return false; } +impHandler(sell) +{ + Being *being = findBeing(event.args); + if (!being) + return false; + + if (being->getType() == ActorType::Npc) + { + npcHandler->sell(being->getId()); + return true; + } + else if (being->getType() == ActorType::Player) + { + buySellHandler->requestBuyList(being->getName()); + return true; + } + return false; +} + } // namespace Actions -- cgit v1.2.3-70-g09d2