summaryrefslogtreecommitdiff
path: root/src/game-server
diff options
context:
space:
mode:
authorStefan Dombrowski <stefan@uni-bonn.de>2011-02-22 19:10:52 +0100
committerStefan Dombrowski <stefan@uni-bonn.de>2011-02-22 19:10:52 +0100
commite6896cce35991f09e35117e4deb8f7ce1f255cf3 (patch)
tree8144a8831c4b6c4b48b5214f95cb6ab0273cc099 /src/game-server
parente41e4f6da21d25807a561d6eaa5b58d10779435c (diff)
downloadmanaserv-e6896cce35991f09e35117e4deb8f7ce1f255cf3.tar.gz
manaserv-e6896cce35991f09e35117e4deb8f7ce1f255cf3.tar.bz2
manaserv-e6896cce35991f09e35117e4deb8f7ce1f255cf3.tar.xz
manaserv-e6896cce35991f09e35117e4deb8f7ce1f255cf3.zip
Implementing @killmonsters
Reviewed-by: Crush
Diffstat (limited to 'src/game-server')
-rw-r--r--src/game-server/commandhandler.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/game-server/commandhandler.cpp b/src/game-server/commandhandler.cpp
index 8e36c7ed..09016214 100644
--- a/src/game-server/commandhandler.cpp
+++ b/src/game-server/commandhandler.cpp
@@ -72,6 +72,7 @@ static void handleKill(Character*, std::string&);
static void handleKick(Character*, std::string&);
static void handleLog(Character*, std::string&);
static void handleLogsay(Character*, std::string&);
+static void handleKillMonsters(Character*, std::string&);
static CmdRef const cmdRef[] =
{
@@ -125,6 +126,8 @@ static CmdRef const cmdRef[] =
"Logs a message to the transaction log.", &handleLog},
{"logsay", "<message>",
"Says something in public chat while logging it to the transaction log.", &handleLogsay},
+ {"killmonsters", "",
+ "Kills all monsters on the map.", &handleKillMonsters},
{NULL, NULL, NULL, NULL}
};
@@ -1231,6 +1234,29 @@ static void handleLogsay(Character *player, std::string &msg)
say("Message logged", player);
}
+static void handleKillMonsters(Character *player, std::string &args)
+{
+ const MapComposite *map = player->getMap();
+ int count = 0;
+
+ for (BeingIterator it(map->getWholeMapIterator()); it; ++it)
+ {
+ if ((*it)->getType() == OBJECT_MONSTER && (*it)->getAction() != DEAD)
+ {
+ (*it)->died();
+ count++;
+ }
+ }
+
+ std::stringstream ss;
+ ss << "You killed " << count << " monster" << (count > 1 ? "s." : ".");
+ say(ss.str(), player);
+
+ // log transaction
+ std::string msg = "User killed all monsters on map " + map->getName();
+ accountHandler->sendTransaction(player->getDatabaseID(),
+ TRANS_CMD_KILLMONSTERS, msg);
+}
void CommandHandler::handleCommand(Character *player,
const std::string &command)