From bb0b0d183a4f777653df14f5e003b893e47a9e76 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 25 Feb 2016 22:41:18 +0300 Subject: Add chat command /nuke. 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 | 20 +++++++++++++------- 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, 46 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/actions/commands.cpp b/src/actions/commands.cpp index f0dd84500..1bc922a1f 100644 --- a/src/actions/commands.cpp +++ b/src/actions/commands.cpp @@ -1441,4 +1441,13 @@ impHandler(commandHide) return true; } +impHandler(commandNuke) +{ + const std::string args = event.args; + if (args.empty()) + return false; + adminHandler->nuke(args); + return true; +} + } // namespace Actions diff --git a/src/actions/commands.h b/src/actions/commands.h index 74fedcf8c..f6d8a70e5 100644 --- a/src/actions/commands.h +++ b/src/actions/commands.h @@ -127,6 +127,7 @@ namespace Actions decHandler(commandDisguise); decHandler(commandImmortal); decHandler(commandHide); + decHandler(commandNuke); } // namespace Actions #undef decHandler diff --git a/src/dyetool/actions/commands.cpp b/src/dyetool/actions/commands.cpp index 5debac3d0..9028e6ec4 100644 --- a/src/dyetool/actions/commands.cpp +++ b/src/dyetool/actions/commands.cpp @@ -127,5 +127,6 @@ impHandlerVoid(commandAlive) impHandlerVoid(commandDisguise) impHandlerVoid(commandImmortal) impHandlerVoid(commandHide) +impHandlerVoid(commandNuke) } // namespace Actions diff --git a/src/enums/input/inputaction.h b/src/enums/input/inputaction.h index 4c6a351bb..be65343e6 100644 --- a/src/enums/input/inputaction.h +++ b/src/enums/input/inputaction.h @@ -656,6 +656,7 @@ enumStart(InputAction) COMMAND_DISGUISE, COMMAND_IMMORTAL, COMMAND_HIDE, + COMMAND_NUKE, TOTAL } enumEnd(InputAction); diff --git a/src/gui/popups/popupmenu.cpp b/src/gui/popups/popupmenu.cpp index 1caf50adb..59a67b7be 100644 --- a/src/gui/popups/popupmenu.cpp +++ b/src/gui/popups/popupmenu.cpp @@ -2729,15 +2729,21 @@ void PopupMenu::showPlayerGMCommands() // TRANSLATORS: popup menu item // TRANSLATORS: revive player mBrowserBox->addRow("/alive 'NAME'", _("Revive")); - if (!legacy && mBeingId != BeingId_zero) + if (!legacy) { - mBrowserBox->addRow("##3---"); // TRANSLATORS: popup menu item - // TRANSLATORS: show menu - mBrowserBox->addRow("show", _("Show...")); - // TRANSLATORS: popup menu item - // TRANSLATORS: mute menu - mBrowserBox->addRow("mute", _("Mute...")); + // TRANSLATORS: nuke player + mBrowserBox->addRow("/nuke 'NAME'", _("Nuke")); + if (mBeingId != BeingId_zero) + { + mBrowserBox->addRow("##3---"); + // TRANSLATORS: popup menu item + // TRANSLATORS: show menu + mBrowserBox->addRow("show", _("Show...")); + // TRANSLATORS: popup menu item + // TRANSLATORS: mute menu + mBrowserBox->addRow("mute", _("Mute...")); + } } if (legacy) { diff --git a/src/input/inputactionmap.h b/src/input/inputactionmap.h index 625b7dd88..01522c8e4 100644 --- a/src/input/inputactionmap.h +++ b/src/input/inputactionmap.h @@ -5425,6 +5425,12 @@ static const InputActionData inputActionData "hide", UseArgs_true, Protected_true}, + {"keyCommandNuke", + defaultAction(&Actions::commandNuke), + InputCondition::INGAME, + "nuke", + UseArgs_true, + Protected_true}, }; #undef defaultAction diff --git a/src/net/adminhandler.h b/src/net/adminhandler.h index 2a35036c6..624967f4a 100644 --- a/src/net/adminhandler.h +++ b/src/net/adminhandler.h @@ -154,6 +154,8 @@ class AdminHandler notfinal virtual void immortal(const std::string &name) const = 0; virtual void hide(const std::string &name) const = 0; + + virtual void nuke(const std::string &name) const = 0; }; } // namespace Net diff --git a/src/net/eathena/adminhandler.cpp b/src/net/eathena/adminhandler.cpp index 1b7a7a8d5..b0bc933e7 100644 --- a/src/net/eathena/adminhandler.cpp +++ b/src/net/eathena/adminhandler.cpp @@ -305,4 +305,9 @@ void AdminHandler::hide(const std::string &name) const Gm::runCharCommand("hide", name); } +void AdminHandler::nuke(const std::string &name) const +{ + Gm::runCommand("nuke", name); +} + } // namespace EAthena diff --git a/src/net/eathena/adminhandler.h b/src/net/eathena/adminhandler.h index a86e68f4e..4844b4f2b 100644 --- a/src/net/eathena/adminhandler.h +++ b/src/net/eathena/adminhandler.h @@ -130,6 +130,8 @@ class AdminHandler final : public Ea::AdminHandler void hide(const std::string &name) const override final; + void nuke(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 47ee1edcb..ccb5aaa0a 100644 --- a/src/net/tmwa/adminhandler.cpp +++ b/src/net/tmwa/adminhandler.cpp @@ -241,4 +241,8 @@ void AdminHandler::hide(const std::string &name A_UNUSED) const Gm::runCommand("hide"); } +void AdminHandler::nuke(const std::string &name A_UNUSED) const +{ +} + } // namespace TmwAthena diff --git a/src/net/tmwa/adminhandler.h b/src/net/tmwa/adminhandler.h index 4239bde8e..c7e4c584d 100644 --- a/src/net/tmwa/adminhandler.h +++ b/src/net/tmwa/adminhandler.h @@ -142,6 +142,8 @@ class AdminHandler final : public Ea::AdminHandler void immortal(const std::string &name) const override final; void hide(const std::string &name) const override final; + + void nuke(const std::string &name) const override final; }; } // namespace TmwAthena -- cgit v1.2.3-70-g09d2