diff --git a/config/wolfadmin.toml b/config/wolfadmin.toml
index d800ac1..62fe27f 100644
--- a/config/wolfadmin.toml
+++ b/config/wolfadmin.toml
@@ -57,6 +57,3 @@ file = "rules.toml"
file = "greetings.toml"
area = 3
bots = 1
-
-[records]
-bots = 0
diff --git a/luascripts/wolfadmin/commands/admin/readconfig.lua b/luascripts/wolfadmin/commands/admin/readconfig.lua
index aab7a4f..e1993d4 100644
--- a/luascripts/wolfadmin/commands/admin/readconfig.lua
+++ b/luascripts/wolfadmin/commands/admin/readconfig.lua
@@ -22,8 +22,6 @@ local auth = wolfa_requireModule("auth.auth")
local commands = wolfa_requireModule("commands.commands")
-local sprees = wolfa_requireModule("game.sprees")
-
local greetings = wolfa_requireModule("players.greetings")
local settings = wolfa_requireModule("util.settings")
@@ -33,9 +31,8 @@ function commandReadconfig(clientId, command)
local bannersCount = banners.load()
local rulesCount = rules.load()
local greetingsCount = greetings.load()
- local spreesCount = sprees.load()
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"readconfig: loaded "..bannersCount.." banners, "..rulesCount.." rules, "..greetingsCount.." greetings, "..spreesCount.." sprees\";")
+ et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"readconfig: loaded "..bannersCount.." banners, "..rulesCount.." rules, "..greetingsCount.." greetings\";")
return false
end
@@ -46,9 +43,8 @@ function commandReadconfig(clientId, command)
local bannersCount = banners.load()
local rulesCount = rules.load()
local greetingsCount = greetings.load()
- local spreesCount = sprees.load()
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"readconfig: loaded "..bannersCount.." banners, "..rulesCount.." rules, "..greetingsCount.." greetings, "..spreesCount.." sprees\";")
+ et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"readconfig: loaded "..bannersCount.." banners, "..rulesCount.." rules, "..greetingsCount.." greetings\";")
return false
end
diff --git a/luascripts/wolfadmin/commands/admin/resetsprees.lua b/luascripts/wolfadmin/commands/admin/resetsprees.lua
deleted file mode 100644
index 3320b05..0000000
--- a/luascripts/wolfadmin/commands/admin/resetsprees.lua
+++ /dev/null
@@ -1,48 +0,0 @@
-
--- WolfAdmin module for Wolfenstein: Enemy Territory servers.
--- Copyright (C) 2015-2020 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 = wolfa_requireModule("auth.auth")
-
-local db = wolfa_requireModule("db.db")
-
-local commands = wolfa_requireModule("commands.commands")
-
-local game = wolfa_requireModule("game.game")
-local sprees = wolfa_requireModule("game.sprees")
-
-local settings = wolfa_requireModule("util.settings")
-
-function commandResetSprees(clientId, command, map)
- if not db.isConnected() then
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"^dsprees: ^9spree records are disabled.\";")
-
- return true
- end
-
- if map and map == "all" then
- sprees.reset(true)
-
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "cchat -1 \"^dresetsprees: ^9all spree records have been reset.\";")
- else
- sprees.reset()
-
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "cchat -1 \"^dresetsprees: ^9spree records have been reset for map '^7"..game.getMap().."^9'.\";")
- end
-
- return true
-end
-commands.addadmin("resetsprees", commandResetSprees, auth.PERM_READCONFIG, "resets the spree records", nil, (settings.get("g_spreeRecords") == 0))
diff --git a/luascripts/wolfadmin/commands/admin/sprees.lua b/luascripts/wolfadmin/commands/admin/sprees.lua
deleted file mode 100644
index cd0aca9..0000000
--- a/luascripts/wolfadmin/commands/admin/sprees.lua
+++ /dev/null
@@ -1,47 +0,0 @@
-
--- WolfAdmin module for Wolfenstein: Enemy Territory servers.
--- Copyright (C) 2015-2020 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 = wolfa_requireModule("auth.auth")
-
-local commands = wolfa_requireModule("commands.commands")
-
-local db = wolfa_requireModule("db.db")
-
-local sprees = wolfa_requireModule("game.sprees")
-
-function commandShowSprees(clientId, command)
- if not db.isConnected() then
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"^dsprees: ^9spree records are disabled.\";")
-
- return true
- end
-
- local records = sprees.get()
-
- if #records == 0 then
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "csay "..clientId.." \"^dsprees: ^9there are no records for this map yet.\"")
- else
- for i = 0, sprees.TYPE_NUM - 1 do
- if records[i] and records[i]["record"] > 0 then
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "cchat -1 \"^dsprees: ^9longest "..sprees.getRecordNameByType(i).." spree (^7"..records[i]["record"].."^9) by ^7"..db.getLastAlias(records[i]["player"])["alias"].."^9.\";")
- end
- end
- end
-
- return true
-end
-commands.addadmin("sprees", commandShowSprees, auth.PERM_LISTSPREES, "display the current spree records")
diff --git a/luascripts/wolfadmin/game/sprees.lua b/luascripts/wolfadmin/game/sprees.lua
deleted file mode 100644
index 300774b..0000000
--- a/luascripts/wolfadmin/game/sprees.lua
+++ /dev/null
@@ -1,394 +0,0 @@
-
--- WolfAdmin module for Wolfenstein: Enemy Territory servers.
--- Copyright (C) 2015-2020 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 db = wolfa_requireModule("db.db")
-
-local game = wolfa_requireModule("game.game")
-
-local players = wolfa_requireModule("players.players")
-
-local bits = wolfa_requireModule("util.bits")
-local constants = wolfa_requireModule("util.constants")
-local events = wolfa_requireModule("util.events")
-local files = wolfa_requireModule("util.files")
-local settings = wolfa_requireModule("util.settings")
-
-local toml = wolfa_requireLib("toml")
-
-local sprees = {}
-
-sprees.RECORD_BOTS_PLAYING = 1
-sprees.RECORD_BOTS = 2
-
-sprees.SOUND_PLAY_SELF = 0
-sprees.SOUND_PLAY_PUBLIC = 1
-
-sprees.TYPE_KILL = 0
-sprees.TYPE_DEATH = 1
-sprees.TYPE_REVIVE = 2
-sprees.TYPE_NUM = 3
-
-sprees.TYPE_KILL_NAME = "kill"
-sprees.TYPE_DEATH_NAME = "death"
-sprees.TYPE_REVIVE_NAME = "revive"
-
-local spreeNames = {
- [sprees.TYPE_KILL] = sprees.TYPE_KILL_NAME,
- [sprees.TYPE_DEATH] = sprees.TYPE_DEATH_NAME,
- [sprees.TYPE_REVIVE] = sprees.TYPE_REVIVE_NAME
-}
-
-local spreeTypes = {
- [sprees.TYPE_KILL_NAME] = sprees.TYPE_KILL,
- [sprees.TYPE_DEATH_NAME] = sprees.TYPE_DEATH,
- [sprees.TYPE_REVIVE_NAME] = sprees.TYPE_REVIVE
-}
-
-local spreeMessages = {}
-local spreeMessagesByType = {}
-
-local playerSprees = {}
-local currentRecords = {} -- cached version
-local currentMapId
-
-function sprees.getRecordNameByType(type)
- return spreeNames[type]
-end
-
-function sprees.getRecordTypeByName(name)
- return spreeTypes[name]
-end
-
-function sprees.get()
- return currentRecords
-end
-
-function sprees.reset(truncate)
- if truncate then
- db.removeAllRecords()
- else
- db.removeRecords(currentMapId)
- end
-
- currentRecords = {}
-end
-
-function sprees.load()
- if db.isConnected() and settings.get("g_spreeRecords") ~= 0 then
- local map = db.getMap(game.getMap())
-
- if map then
- currentMapId = map["id"]
- db.updateMap(currentMapId, os.time())
- else
- db.addMap(game.getMap(), os.time())
- currentMapId = db.getMap(game.getMap())["id"]
- end
-
- local records = db.getRecords(currentMapId)
-
- for _, record in ipairs(records) do
- currentRecords[record["type"]] = {
- ["player"] = tonumber(record["player_id"]),
- ["record"] = tonumber(record["record"])
- }
- end
- end
-
- for i = 0, sprees.TYPE_NUM - 1 do
- spreeMessages[i] = {}
- spreeMessagesByType[i] = {}
- end
-
- local fileName = settings.get("g_fileSprees")
-
- if fileName == "" then
- return 0
- end
-
- if string.find(fileName, ".toml") == string.len(fileName) - 4 then
- local fileDescriptor, fileLength = et.trap_FS_FOpenFile(fileName, et.FS_READ)
-
- if fileLength == -1 then
- return 0
- end
-
- local fileString = et.trap_FS_Read(fileDescriptor, fileLength)
-
- et.trap_FS_FCloseFile(fileDescriptor)
-
- local fileTable = toml.parse(fileString)
-
- local amount = 0
-
- for name, block in pairs(fileTable) do
- for _, spree in ipairs(block) do
- if spree["msg"] then
- table.insert(spreeMessagesByType[sprees.getRecordTypeByName(name)], spree)
-
- spreeMessages[sprees.getRecordTypeByName(name)][spree["amount"]] = spree
-
- amount = amount + 1
- end
- end
- end
-
- return amount
- else
- -- compatibility for 1.1.* and lower
- outputDebug("Using .cfg files is deprecated as of 1.2.0. Please consider updating to .toml files.", 3)
-
- local amount, array = files.loadFromCFG(fileName, "[a-z]+")
-
- for name, block in pairs(array) do
- for _, spree in ipairs(block) do
- if spree["msg"] then
- for k, v in pairs(spree) do
- if k == "amount" then
- spree[k] = tonumber(v)
- end
- end
- table.insert(spreeMessagesByType[sprees.getRecordTypeByName(name)], spree)
-
- spreeMessages[sprees.getRecordTypeByName(name)][spree["amount"]] = spree
- end
- end
- end
-
- return amount
- end
-
- return 0
-end
-
-function sprees.save()
- if db.isConnected() and settings.get("g_spreeRecords") ~= 0 then
- for i = 0, sprees.TYPE_NUM - 1 do
- if currentRecords[i] and currentRecords[i]["record"] > 0 then
- if db.getRecord(currentMapId, i) then
- db.updateRecord(currentMapId, os.time(), i, currentRecords[i]["record"], currentRecords[i]["player"])
- else
- db.addRecord(currentMapId, os.time(), i, currentRecords[i]["record"], currentRecords[i]["player"])
- end
- end
- end
- end
-end
-
-function sprees.printRecords()
- if db.isConnected() and settings.get("g_spreeRecords") ~= 0 then
- for i = 0, sprees.TYPE_NUM - 1 do
- if currentRecords[i] and currentRecords[i]["record"] > 0 then
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "cchat -1 \"^dsprees: ^9longest "..sprees.getRecordNameByType(i).." spree (^7"..currentRecords[i]["record"].."^9) by ^7"..db.getLastAlias(currentRecords[i]["player"])["alias"].."^9.\";")
- end
- end
- end
-end
-
-function sprees.onGameInit(levelTime, randomSeed, restartMap)
- sprees.load()
-
- events.handle("onGameStateChange", sprees.onGameStateChange)
-end
-events.handle("onGameInit", sprees.onGameInit)
-
-function sprees.onClientConnect(clientId, firstTime, isBot)
- playerSprees[clientId] = {}
-
- for i = 0, sprees.TYPE_NUM - 1 do
- playerSprees[clientId][i] = 0
- end
-end
-events.handle("onClientConnect", sprees.onClientConnect)
-
-function sprees.onClientDisconnect(clientId)
- playerSprees[clientId] = nil
-end
-events.handle("onClientDisconnect", sprees.onClientDisconnect)
-
-function sprees.onClientTeamChange(clientId, old, new)
- events.trigger("onPlayerSpreeEnd", clientId, clientId)
-end
-
-function sprees.onGameStateChange(gameState)
- if gameState == constants.GAME_STATE_RUNNING then
- events.handle("onClientTeamChange", sprees.onClientTeamChange)
- events.handle("onPlayerDeath", sprees.onPlayerDeath)
- events.handle("onPlayerRevive", sprees.onPlayerRevive)
- events.handle("onPlayerSpree", sprees.onPlayerSpree)
- events.handle("onPlayerSpreeEnd", sprees.onPlayerSpreeEnd)
- elseif gameState == constants.GAME_STATE_INTERMISSION then
- sprees.save()
- sprees.printRecords()
- end
-end
-
-function sprees.onPlayerSpree(clientId, causeId, type)
- playerSprees[clientId][type] = playerSprees[clientId][type] + 1
-
- local currentSpree = playerSprees[clientId][type]
-
- if db.isConnected() and settings.get("g_spreeRecords") ~= 0 and
- (bits.hasbit(settings.get("g_botRecords"), sprees.RECORD_BOTS_PLAYING) or tonumber(et.trap_Cvar_Get("omnibot_playing")) == 0) and
- (bits.hasbit(settings.get("g_botRecords"), sprees.RECORD_BOTS) or not players.isBot(clientId)) and
- (bits.hasbit(settings.get("g_botRecords"), sprees.RECORD_BOTS) or not players.isBot(causeId)) and
- (not currentRecords[type] or currentSpree > currentRecords[type]["record"])
- then
- currentRecords[type] = {
- ["player"] = db.getPlayerId(clientId),
- ["record"] = currentSpree
- }
- end
-
- if sprees.isSpreeEnabled(type) and #spreeMessagesByType[type] > 0 then
- local spreeMessage = spreeMessages[type][currentSpree]
- local maxSpreeMessage = spreeMessagesByType[type][#spreeMessagesByType[type]]
-
- if spreeMessage then
- local msg = string.format("^1%s SPREE! ^*%s ^*%s ^d(^3%d ^d%ss in a row!)",
- string.upper(spreeNames[type]),
- players.getName(clientId),
- spreeMessage["msg"],
- currentSpree,
- spreeNames[type])
-
- if settings.get("g_spreeSounds") > 0 and spreeMessage["sound"] and spreeMessage["sound"] ~= "" and files.exists("sound/spree/"..spreeMessage["sound"]) then
- if bits.hasbit(settings.get("g_spreeSounds"), sprees.SOUND_PLAY_PUBLIC) then
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "playsound \"sound/spree/"..spreeMessage["sound"].."\";")
- else
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "playsound "..clientId.." \"sound/spree/"..spreeMessage["sound"].."\";")
- end
- end
-
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "cchat -1 \""..msg.."\";")
- elseif currentSpree % 5 == 0 and currentSpree > maxSpreeMessage["amount"] then
- local msg = string.format("^1%s SPREE! ^*%s ^*%s ^d(^3%d ^d%ss in a row!)",
- string.upper(spreeNames[type]),
- players.getName(clientId),
- maxSpreeMessage["msg"],
- currentSpree,
- spreeNames[type])
-
- if settings.get("g_spreeSounds") > 0 and maxSpreeMessage["sound"] and maxSpreeMessage["sound"] ~= "" and files.exists("sound/spree/"..maxSpreeMessage["sound"]) then
- if bits.hasbit(settings.get("g_spreeSounds"), sprees.SOUND_PLAY_PUBLIC) then
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "playsound \"sound/spree/"..maxSpreeMessage["sound"].."\";")
- else
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "playsound "..clientId.." \"sound/spree/"..maxSpreeMessage["sound"].."\";")
- end
- end
-
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "cchat -1 \""..msg.."\";")
- end
- end
-end
-
-function sprees.onPlayerSpreeEnd(clientId, causeId, type)
- if type == sprees.TYPE_DEATH then
- if sprees.isSpreeEnabled(type) and sprees.isPlayerOnSpree(clientId, sprees.TYPE_DEATH) then
- local msg = string.format("^7%s^d was the first victim of ^7%s ^dafter ^3%d ^d%ss!",
- players.getName(causeId),
- players.getName(clientId),
- playerSprees[clientId][sprees.TYPE_DEATH],
- spreeNames[sprees.TYPE_DEATH])
-
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "cchat -1 \""..msg.."\";")
- end
-
- playerSprees[clientId][sprees.TYPE_DEATH] = 0
- elseif type == nil then
- for i = 0, sprees.TYPE_NUM - 1 do
- if i ~= sprees.TYPE_DEATH then
- if sprees.isSpreeEnabled(i) and sprees.isPlayerOnSpree(clientId, i) then
- local msg = ""
-
- if clientId == causeId then
- msg = string.format("^7%s^d's spree (^3%d ^d%ss) was brought to an end by ^1himself^d!",
- players.getName(clientId),
- playerSprees[clientId][i],
- spreeNames[i])
- elseif causeId then
- local prefix = ""
-
- if et.gentity_get(clientId, "sess.sessionTeam") == et.gentity_get(causeId, "sess.sessionTeam") then
- prefix = "^1TEAMMATE "
- end
-
- msg = string.format("^7%s^d's spree (^3%d ^d%ss) was brought to an end by %s^7%s^d!",
- players.getName(clientId),
- playerSprees[clientId][i],
- spreeNames[i],
- prefix,
- players.getName(causeId))
- else
- msg = string.format("^7%s^d's spree (^3%d ^d%ss) was brought to an end.",
- players.getName(clientId),
- playerSprees[clientId][i],
- spreeNames[i])
- end
-
- et.trap_SendConsoleCommand(et.EXEC_APPEND, "cchat -1 \""..msg.."\";")
- end
-
- playerSprees[clientId][i] = 0
- end
- end
- end
-end
-
-function sprees.onPlayerDeath(victimId, killerId, mod)
- if killerId == 1022 then -- killed by map
- events.trigger("onPlayerSpreeEnd", victimId)
- events.trigger("onPlayerSpree", victimId, nil, sprees.TYPE_DEATH)
- elseif victimId == killerId then -- suicides
- -- happens when a bot disconnects, it selfkills before leaving, thus emptying the
- -- player data table, resulting in errors. I'm sorry for your spree records, bots.
- if not players.isConnected(victimId) then return end
-
- events.trigger("onPlayerSpreeEnd", victimId, killerId)
- events.trigger("onPlayerSpree", victimId, killerId, sprees.TYPE_DEATH)
- else -- regular kills
- if et.gentity_get(victimId, "sess.sessionTeam") == et.gentity_get(killerId, "sess.sessionTeam") then
- -- teamkill handling
- events.trigger("onPlayerSpreeEnd", victimId, killerId)
- events.trigger("onPlayerSpree", victimId, killerId, sprees.TYPE_DEATH)
- else
- events.trigger("onPlayerSpreeEnd", killerId, victimId, sprees.TYPE_DEATH)
- events.trigger("onPlayerSpree", killerId, victimId, sprees.TYPE_KILL)
-
- -- happens when a bot disconnects, it selfkills before leaving, thus emptying the
- -- player data table, resulting in errors. I'm sorry for your spree records, bots.
- if not players.isConnected(victimId) then return end
-
- events.trigger("onPlayerSpreeEnd", victimId, killerId)
- events.trigger("onPlayerSpree", victimId, killerId, sprees.TYPE_DEATH)
- end
- end
-end
-
-function sprees.onPlayerRevive(clientMedic, clientVictim)
- events.trigger("onPlayerSpree", clientMedic, clientVictim, sprees.TYPE_REVIVE)
-end
-
-function sprees.isSpreeEnabled(type)
- return bits.hasbit(settings.get("g_spreeMessages"), 2^type)
-end
-
-function sprees.isPlayerOnSpree(clientId, type)
- return spreeMessagesByType[type][1] and playerSprees[clientId][type] >= spreeMessagesByType[type][1]["amount"]
-end
-
-return sprees
diff --git a/luascripts/wolfadmin/main.lua b/luascripts/wolfadmin/main.lua
index 9506229..9f7860f 100644
--- a/luascripts/wolfadmin/main.lua
+++ b/luascripts/wolfadmin/main.lua
@@ -32,7 +32,6 @@ local commands
local bots
local fireteams
local game
-local sprees
local teams
local voting
@@ -123,7 +122,6 @@ function et_InitGame(levelTime, randomSeed, restartMap)
bots = wolfa_requireModule("game.bots")
game = wolfa_requireModule("game.game")
fireteams = wolfa_requireModule("game.fireteams")
- sprees = wolfa_requireModule("game.sprees")
teams = wolfa_requireModule("game.teams")
voting = wolfa_requireModule("game.voting")
diff --git a/luascripts/wolfadmin/util/events.lua b/luascripts/wolfadmin/util/events.lua
index 0867d63..aae7e1e 100644
--- a/luascripts/wolfadmin/util/events.lua
+++ b/luascripts/wolfadmin/util/events.lua
@@ -130,9 +130,6 @@ events.add("onPlayerRevive")
events.add("onPlayerSkillUpdate")
-events.add("onPlayerSpree")
-events.add("onPlayerSpreeEnd")
-
events.add("onServerCommand")
return events
diff --git a/luascripts/wolfadmin/util/settings.lua b/luascripts/wolfadmin/util/settings.lua
index 55d5fb4..ea779b0 100644
--- a/luascripts/wolfadmin/util/settings.lua
+++ b/luascripts/wolfadmin/util/settings.lua
@@ -26,12 +26,7 @@ local data = {
["g_fileBanners"] = "banners.toml",
["g_fileGreetings"] = "greetings.toml",
["g_fileRules"] = "rules.toml",
- ["g_fileSprees"] = "sprees.toml",
["g_playerHistory"] = 1,
- ["g_spreeMessages"] = 7,
- ["g_spreeSounds"] = 3,
- ["g_spreeRecords"] = 1,
- ["g_botRecords"] = 1,
["g_announceRevives"] = 1,
["g_greetingArea"] = 3,
["g_botGreetings"] = 1,
@@ -109,15 +104,6 @@ local cfgStructure = {
["file"] = "g_fileGreetings",
["area"] = "g_greetingsArea",
["bots"] = "g_botGreetings"
- },
- ["records"] = {
- ["bots"] = "g_botRecords"
- },
- ["sprees"] = {
- ["file"] = "g_fileSprees",
- ["messages"] = "g_spreeMessages",
- ["sounds"] = "g_spreeSounds",
- ["records"] = "g_spreeRecords"
}
}