summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-02-24 20:29:30 +0300
committerAndrei Karas <akaras@inbox.ru>2016-02-24 20:29:30 +0300
commit1604dd8af946e865a5fcf1ddc2e533581892da39 (patch)
tree633efe3999be9cef8cfef6f420d2f0018fcb0a4a /src
parente0b4a2665505279e58f2a618272db5245f275518 (diff)
downloadmv-1604dd8af946e865a5fcf1ddc2e533581892da39.tar.gz
mv-1604dd8af946e865a5fcf1ddc2e533581892da39.tar.bz2
mv-1604dd8af946e865a5fcf1ddc2e533581892da39.tar.xz
mv-1604dd8af946e865a5fcf1ddc2e533581892da39.zip
Add chat command /spawnslave. Also add it to monster 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.cpp1
-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, 34 insertions, 0 deletions
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