summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-02-25 22:41:18 +0300
committerAndrei Karas <akaras@inbox.ru>2016-02-25 22:41:18 +0300
commitbb0b0d183a4f777653df14f5e003b893e47a9e76 (patch)
treeff6b0c8038330e88dd7d16688048f208b7a5a5be /src
parent66c33ea3f5e82ae09b935f65d7183b4ffc8bb9b1 (diff)
downloadmv-bb0b0d183a4f777653df14f5e003b893e47a9e76.tar.gz
mv-bb0b0d183a4f777653df14f5e003b893e47a9e76.tar.bz2
mv-bb0b0d183a4f777653df14f5e003b893e47a9e76.tar.xz
mv-bb0b0d183a4f777653df14f5e003b893e47a9e76.zip
Add chat command /nuke. Also add it to player context menu.
Diffstat (limited to 'src')
-rw-r--r--src/actions/commands.cpp9
-rw-r--r--src/actions/commands.h1
-rw-r--r--src/dyetool/actions/commands.cpp1
-rw-r--r--src/enums/input/inputaction.h1
-rw-r--r--src/gui/popups/popupmenu.cpp20
-rw-r--r--src/input/inputactionmap.h6
-rw-r--r--src/net/adminhandler.h2
-rw-r--r--src/net/eathena/adminhandler.cpp5
-rw-r--r--src/net/eathena/adminhandler.h2
-rw-r--r--src/net/tmwa/adminhandler.cpp4
-rw-r--r--src/net/tmwa/adminhandler.h2
11 files changed, 46 insertions, 7 deletions
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