summaryrefslogtreecommitdiff
path: root/src/map/atcommand.cpp
diff options
context:
space:
mode:
authorgumi <git@gumi.ca>2020-07-08 16:25:02 +0000
committergumi <git@gumi.ca>2020-07-08 16:25:02 +0000
commit10a83bd2faa914f186d549cebb5f57b0552e493d (patch)
treeeea18950e0008a30060870db859e0a8180fb8935 /src/map/atcommand.cpp
parentc01f80bf03fd814f595b2b7724ab9e7c9a9ebc80 (diff)
downloadtmwa-10a83bd2faa914f186d549cebb5f57b0552e493d.tar.gz
tmwa-10a83bd2faa914f186d549cebb5f57b0552e493d.tar.bz2
tmwa-10a83bd2faa914f186d549cebb5f57b0552e493d.tar.xz
tmwa-10a83bd2faa914f186d549cebb5f57b0552e493d.zip
never clear the invisible/hidden gm status
Diffstat (limited to 'src/map/atcommand.cpp')
-rw-r--r--src/map/atcommand.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp
index 3058584..459672d 100644
--- a/src/map/atcommand.cpp
+++ b/src/map/atcommand.cpp
@@ -337,6 +337,31 @@ bool is_atcommand(Session *s, dumb_ptr<map_session_data> sd,
}
}
+bool can_use_atcommand(dumb_ptr<map_session_data> sd, ZString message)
+{
+ nullpo_retr(false, sd);
+
+ if (!message.startswith('@'))
+ return false;
+
+ XString command;
+ ZString arg;
+ asplit(message, &command, &arg);
+
+ GmLevel gmlvl = pc_isGM(sd);
+
+ if (battle_config.atcommand_gm_only != 0 && !gmlvl)
+ return false; // level 0 commands are disabled
+
+ Option<P<AtCommandInfo>> info_ = atcommand(command);
+ P<AtCommandInfo> info = TRY_UNWRAP(info_,
+ {
+ return false; // command not found
+ });
+
+ return gmlvl.satisfies(info->level);
+}
+
Option<Borrowed<AtCommandInfo>> atcommand(XString cmd)
{
if (cmd.startswith('@'))