diff --git a/luamods/wolfadmin/auth/auth.lua b/luamods/wolfadmin/auth/auth.lua
index cf1ebee..3848528 100644
--- a/luamods/wolfadmin/auth/auth.lua
+++ b/luamods/wolfadmin/auth/auth.lua
@@ -81,6 +81,7 @@ auth.PERM_ENABLEVOTE = "enablevote"
auth.PERM_CANCELVOTE = "cancelvote"
auth.PERM_PASSVOTE = "passvote"
+auth.PERM_COINTOSS = "cointoss"
auth.PERM_NEWS = "news"
auth.PERM_UPTIME = "uptime"
diff --git a/luamods/wolfadmin/auth/shrubbot.lua b/luamods/wolfadmin/auth/shrubbot.lua
index 294c402..fb6b502 100644
--- a/luamods/wolfadmin/auth/shrubbot.lua
+++ b/luamods/wolfadmin/auth/shrubbot.lua
@@ -22,7 +22,7 @@ local auth = require (wolfa_getLuaPath()..".auth.auth")
local shrubbot = {}
--- available shrubflags: lqyFHY
+-- available shrubflags: lyFHY
local flags = {
[auth.PERM_ADMINTEST] = "a",
[auth.PERM_HELP] = "h",
@@ -72,6 +72,7 @@ local flags = {
[auth.PERM_SHUFFLE] = "S",
[auth.PERM_SWAP] = "w",
+ [auth.PERM_COINTOSS] = "q",
[auth.PERM_PAUSE] = "Z",
[auth.PERM_NEXTMAP] = "n",
[auth.PERM_RESTART] = "r",
diff --git a/luamods/wolfadmin/commands/admin/cointoss.lua b/luamods/wolfadmin/commands/admin/cointoss.lua
new file mode 100644
index 0000000..16e6a4a
--- /dev/null
+++ b/luamods/wolfadmin/commands/admin/cointoss.lua
@@ -0,0 +1,44 @@
+
+-- WolfAdmin module for Wolfenstein: Enemy Territory servers.
+-- Copyright (C) 2015-2017 Timo 'Timothy' Smit
+
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- at your option any later version.
+
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see .
+
+local auth = require (wolfa_getLuaPath()..".auth.auth")
+
+local commands = require (wolfa_getLuaPath()..".commands.commands")
+
+local players = require (wolfa_getLuaPath()..".players.players")
+
+function commandCoinToss(clientId, command)
+ math.randomseed(os.time())
+
+ local number = math.random(0, 99)
+ local result
+
+ if number < 49 then
+ result = "heads."
+ elseif number > 50 then
+ result = "tails."
+ elseif number == 49 then
+ result = "the coin falls on its side!"
+ elseif number == 50 then
+ result = "the coin got lost."
+ end
+
+ et.trap_SendConsoleCommand(et.EXEC_APPEND, "cchat -1 \"^dcointoss: ^7"..players.getName(clientId).." ^9tossed a coin..."..result.."\";")
+
+ return true
+end
+commands.addadmin("cointoss", commandCoinToss, auth.PERM_COINTOSS, "flips a coin")
diff --git a/luamods/wolfadmin/commands/admin/spec999.lua b/luamods/wolfadmin/commands/admin/spec999.lua
new file mode 100644
index 0000000..105654d
--- /dev/null
+++ b/luamods/wolfadmin/commands/admin/spec999.lua
@@ -0,0 +1,46 @@
+
+-- WolfAdmin module for Wolfenstein: Enemy Territory servers.
+-- Copyright (C) 2015-2017 Timo 'Timothy' Smit
+
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- at your option any later version.
+
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see .
+
+local admin = require (wolfa_getLuaPath()..".admin.admin")
+
+local auth = require (wolfa_getLuaPath()..".auth.auth")
+
+local commands = require (wolfa_getLuaPath()..".commands.commands")
+
+local players = require (wolfa_getLuaPath()..".players.players")
+
+local constants = require (wolfa_getLuaPath()..".util.constants")
+local settings = require (wolfa_getLuaPath()..".util.settings")
+
+function commandSpec999(clientId, command)
+ local count = 0
+
+ for playerId = 0, et.trap_Cvar_Get("sv_maxclients") - 1 do
+ if players.isConnected(playerId) then
+ if et.gentity_get(playerId, "ps.ping") > 500 and et.gentity_get(playerId, "ps.ping") <= 999 then
+ admin.putPlayer(playerId, constants.TEAM_SPECTATORS)
+
+ count = count + 1
+ end
+ end
+ end
+
+ et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"^dspec999: ^9"..count.." players were put to spectators.\";")
+
+ return true
+end
+commands.addadmin("spec999", commandSpec999, auth.PERM_SPEC999, "moves 999 pingers to the spectator team", nil, nil, (settings.get("g_standalone") == 0))
diff --git a/luamods/wolfadmin/commands/commands.lua b/luamods/wolfadmin/commands/commands.lua
index 34687c8..894ac99 100644
--- a/luamods/wolfadmin/commands/commands.lua
+++ b/luamods/wolfadmin/commands/commands.lua
@@ -95,7 +95,7 @@ function commands.loadFiles(dir)
local files = files.ls("commands/"..dir.."/")
for _, file in pairs(files) do
- if string.match(string.lower(file), "^[a-z]+%.lua$") then
+ if string.match(string.lower(file), "^[a-z0-9]+%.lua$") then
require (wolfa_getLuaPath()..".commands."..dir.."."..string.sub(file, 1, string.len(file) - 4))
amount = amount + 1