From 24dc1791c0b07e10334d61b95271cab7c2abcbf1 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 24 Feb 2016 21:48:57 +0300 Subject: Add chat command /spawnevilclone. Also add it to player 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 | 3 +++ 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 | 3 +++ 11 files changed, 37 insertions(+) diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp index 65acd7c70..fe53ffa61 100644 --- a/src/actions/commands.cpp +++ b/src/actions/commands.cpp @@ -1359,4 +1359,13 @@ impHandler(commandSpawnSlaveClone) return true; } +impHandler(commandSpawnEvilClone) +{ + const std::string args = event.args; + if (args.empty()) + return false; + adminHandler->spawnEvilClone(args); + return true; +} + } // namespace Actions diff --git a/src/actions/commands.h b/src/actions/commands.h index 45aa62998..ee4492818 100644 --- a/src/actions/commands.h +++ b/src/actions/commands.h @@ -115,6 +115,7 @@ namespace Actions decHandler(commandSpawnSlave); decHandler(commandSpawnClone); decHandler(commandSpawnSlaveClone); + decHandler(commandSpawnEvilClone); } // namespace Actions #undef decHandler diff --git a/src/dyetool/actions/commands.cpp b/src/dyetool/actions/commands.cpp index 1eeb134ce..4c54e8d26 100644 --- a/src/dyetool/actions/commands.cpp +++ b/src/dyetool/actions/commands.cpp @@ -115,5 +115,6 @@ impHandlerVoid(commandSpawn) impHandlerVoid(commandSpawnSlave) impHandlerVoid(commandSpawnClone) impHandlerVoid(commandSpawnSlaveClone) +impHandlerVoid(commandSpawnEvilClone) } // namespace Actions diff --git a/src/enums/input/inputaction.h b/src/enums/input/inputaction.h index d3295d11b..ffcf27249 100644 --- a/src/enums/input/inputaction.h +++ b/src/enums/input/inputaction.h @@ -644,6 +644,7 @@ enumStart(InputAction) COMMAND_SPAWN_SLAVE, COMMAND_SPAWN_CLONE, COMMAND_SPAWN_SLAVE_CLONE, + COMMAND_SPAWN_EVIL_CLONE, TOTAL } enumEnd(InputAction); diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp index b1279c4ef..530d78617 100644 --- a/src/gui/popups/popupmenu.cpp +++ b/src/gui/popups/popupmenu.cpp @@ -2706,6 +2706,9 @@ void PopupMenu::showPlayerGMCommands() // TRANSLATORS: popup menu item // TRANSLATORS: spawn slave player clone mBrowserBox->addRow("/spawnslaveclone 'NAME'", _("Spawn slave clone")); + // TRANSLATORS: popup menu item + // TRANSLATORS: spawn evil player clone + mBrowserBox->addRow("/spawnevilclone 'NAME'", _("Spawn evil clone")); if (mBeingId != BeingId_zero) { mBrowserBox->addRow("##3---"); diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h index 8e24df1f7..4faadd258 100644 --- a/src/input/inputactionmap.h +++ b/src/input/inputactionmap.h @@ -5353,6 +5353,12 @@ static const InputActionData inputActionData "spawnslaveclone|playerslaveclone|slaveclone", UseArgs_true, Protected_true}, + {"keyCommandSpawnEvilClone", + defaultAction(&Actions::commandSpawnEvilClone), + InputCondition::INGAME, + "spawnevilclone|playerevilclone|evilclone", + UseArgs_true, + Protected_true}, }; #undef defaultAction diff --git a/src/net/adminhandler.h b/src/net/adminhandler.h index 197a1dad6..63a30dc07 100644 --- a/src/net/adminhandler.h +++ b/src/net/adminhandler.h @@ -132,6 +132,8 @@ class AdminHandler notfinal virtual void spawnClone(const std::string &name) const = 0; virtual void spawnSlaveClone(const std::string &name) const = 0; + + virtual void spawnEvilClone(const std::string &name) const = 0; }; } // namespace Net diff --git a/src/net/eathena/adminhandler.cpp b/src/net/eathena/adminhandler.cpp index 11adc9406..16a4e999d 100644 --- a/src/net/eathena/adminhandler.cpp +++ b/src/net/eathena/adminhandler.cpp @@ -268,4 +268,9 @@ void AdminHandler::spawnSlaveClone(const std::string &name) const chatHandler->talk("@slaveclone " + name, GENERAL_CHANNEL); } +void AdminHandler::spawnEvilClone(const std::string &name) const +{ + chatHandler->talk("@evilclone " + name, GENERAL_CHANNEL); +} + } // namespace EAthena diff --git a/src/net/eathena/adminhandler.h b/src/net/eathena/adminhandler.h index 63f27319a..1808231b5 100644 --- a/src/net/eathena/adminhandler.h +++ b/src/net/eathena/adminhandler.h @@ -106,6 +106,8 @@ class AdminHandler final : public Ea::AdminHandler void spawnSlaveClone(const std::string &name) const override final; + void spawnEvilClone(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 9c32ceaab..a0c6e5457 100644 --- a/src/net/tmwa/adminhandler.cpp +++ b/src/net/tmwa/adminhandler.cpp @@ -194,4 +194,8 @@ void AdminHandler::spawnSlaveClone(const std::string &name A_UNUSED) const { } +void AdminHandler::spawnEvilClone(const std::string &name A_UNUSED) const +{ +} + } // namespace TmwAthena diff --git a/src/net/tmwa/adminhandler.h b/src/net/tmwa/adminhandler.h index 89f44674e..94025716a 100644 --- a/src/net/tmwa/adminhandler.h +++ b/src/net/tmwa/adminhandler.h @@ -115,6 +115,9 @@ class AdminHandler final : public Ea::AdminHandler void spawnSlaveClone(const std::string &name) const override final A_CONST; + + void spawnEvilClone(const std::string &name) const override final + A_CONST; }; } // namespace TmwAthena -- cgit v1.2.3-70-g09d2