diff options
author | Stefan Dombrowski <stefan@uni-bonn.de> | 2011-02-22 19:10:52 +0100 |
---|---|---|
committer | Stefan Dombrowski <stefan@uni-bonn.de> | 2011-02-22 19:10:52 +0100 |
commit | e6896cce35991f09e35117e4deb8f7ce1f255cf3 (patch) | |
tree | 8144a8831c4b6c4b48b5214f95cb6ab0273cc099 /src/game-server | |
parent | e41e4f6da21d25807a561d6eaa5b58d10779435c (diff) | |
download | manaserv-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.cpp | 26 |
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) |