From 1604dd8af946e865a5fcf1ddc2e533581892da39 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 24 Feb 2016 20:29:30 +0300 Subject: Add chat command /spawnslave. Also add it to monster context menu. --- src/actions/commands.cpp | 9 +++++++++ src/actions/commands.h | 1 + src/dyetool/actions/commands.cpp | 1 + src/enums/input/inputaction.h | 1 + src/gui/popups/popupmenu.cpp | 1 + src/input/inputactionmap.h | 6 ++++++ src/net/adminhandler.h | 2 ++ src/net/eathena/adminhandler.cpp | 5 +++++ src/net/eathena/adminhandler.h | 2 ++ src/net/tmwa/adminhandler.cpp | 4 ++++ src/net/tmwa/adminhandler.h | 2 ++ 11 files changed, 34 insertions(+) (limited to 'src') diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp index 7c451c861..d23eb5c12 100644 --- a/src/actions/commands.cpp +++ b/src/actions/commands.cpp @@ -1332,4 +1332,13 @@ impHandler(commandSpawn) return true; } +impHandler(commandSpawnSlave) +{ + const std::string args = event.args; + if (args.empty()) + return false; + adminHandler->spawnSlave(args); + return true; +} + } // namespace Actions diff --git a/src/actions/commands.h b/src/actions/commands.h index 6ee3e13e4..ebdb73534 100644 --- a/src/actions/commands.h +++ b/src/actions/commands.h @@ -112,6 +112,7 @@ namespace Actions decHandler(locatePlayer); decHandler(commandShowAccountInfo); decHandler(commandSpawn); + decHandler(commandSpawnSlave); } // namespace Actions #undef decHandler diff --git a/src/dyetool/actions/commands.cpp b/src/dyetool/actions/commands.cpp index d810e497e..ad91220df 100644 --- a/src/dyetool/actions/commands.cpp +++ b/src/dyetool/actions/commands.cpp @@ -112,5 +112,6 @@ impHandlerVoid(commandShowInventory) impHandlerVoid(locatePlayer) impHandlerVoid(commandShowAccountInfo) impHandlerVoid(commandSpawn) +impHandlerVoid(commandSpawnSlave) } // namespace Actions diff --git a/src/enums/input/inputaction.h b/src/enums/input/inputaction.h index e7ed5a9d6..4016bd6dd 100644 --- a/src/enums/input/inputaction.h +++ b/src/enums/input/inputaction.h @@ -641,6 +641,7 @@ enumStart(InputAction) LOCATE_PLAYER, COMMAND_SHOW_ACCOUNT_INFO, COMMAND_SPAWN, + COMMAND_SPAWN_SLAVE, TOTAL } enumEnd(InputAction); diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp index 9d7577cf4..ec5d07a1e 100644 --- a/src/gui/popups/popupmenu.cpp +++ b/src/gui/popups/popupmenu.cpp @@ -2770,6 +2770,7 @@ void PopupMenu::showMonsterGMCommands() // TRANSLATORS: kick monster mBrowserBox->addRow("/kick :'BEINGID'", _("Kick")); mBrowserBox->addRow("/spawn 'BEINGSUBTYPEID'", _("Spawn same")); + mBrowserBox->addRow("/spawnslave 'BEINGSUBTYPEID'", _("Spawn slave")); mBrowserBox->addRow("##3---"); // TRANSLATORS: popup menu item diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h index a4f648205..8b8e9929b 100644 --- a/src/input/inputactionmap.h +++ b/src/input/inputactionmap.h @@ -5335,6 +5335,12 @@ static const InputActionData inputActionData "spawn|monster", UseArgs_true, Protected_true}, + {"keyCommandSpawnSlave", + defaultAction(&Actions::commandSpawnSlave), + InputCondition::INGAME, + "spawnslave|monsterslave|summon", + UseArgs_true, + Protected_true}, }; #undef defaultAction diff --git a/src/net/adminhandler.h b/src/net/adminhandler.h index 2d0dc72f4..271d6882e 100644 --- a/src/net/adminhandler.h +++ b/src/net/adminhandler.h @@ -126,6 +126,8 @@ class AdminHandler notfinal virtual void showAccountInfo(const std::string &name) const = 0; virtual void spawn(const std::string &name) const = 0; + + virtual void spawnSlave(const std::string &name) const = 0; }; } // namespace Net diff --git a/src/net/eathena/adminhandler.cpp b/src/net/eathena/adminhandler.cpp index 468be7117..5a91149a2 100644 --- a/src/net/eathena/adminhandler.cpp +++ b/src/net/eathena/adminhandler.cpp @@ -253,4 +253,9 @@ void AdminHandler::showAccountInfo(const std::string &name) const chatHandler->talk("@accinfo " + name, GENERAL_CHANNEL); } +void AdminHandler::spawnSlave(const std::string &name) const +{ + chatHandler->talk("@summon " + name, GENERAL_CHANNEL); +} + } // namespace EAthena diff --git a/src/net/eathena/adminhandler.h b/src/net/eathena/adminhandler.h index e82f88af2..ae89ce38c 100644 --- a/src/net/eathena/adminhandler.h +++ b/src/net/eathena/adminhandler.h @@ -100,6 +100,8 @@ class AdminHandler final : public Ea::AdminHandler void showAccountInfo(const std::string &name) const override final; + void spawnSlave(const std::string &name) const override final; + protected: static std::string mStatsName; }; diff --git a/src/net/tmwa/adminhandler.cpp b/src/net/tmwa/adminhandler.cpp index d8af64d7b..1b19567d4 100644 --- a/src/net/tmwa/adminhandler.cpp +++ b/src/net/tmwa/adminhandler.cpp @@ -182,4 +182,8 @@ void AdminHandler::showAccountInfo(const std::string &name A_UNUSED) const { } +void AdminHandler::spawnSlave(const std::string &name A_UNUSED) const +{ +} + } // namespace TmwAthena diff --git a/src/net/tmwa/adminhandler.h b/src/net/tmwa/adminhandler.h index bec2c6c40..c5b5d076c 100644 --- a/src/net/tmwa/adminhandler.h +++ b/src/net/tmwa/adminhandler.h @@ -108,6 +108,8 @@ class AdminHandler final : public Ea::AdminHandler void showAccountInfo(const std::string &name) const override final A_CONST; + + void spawnSlave(const std::string &name) const override final A_CONST; }; } // namespace TmwAthena -- cgit v1.2.3-60-g2f50