diff --git a/extensions/ObjectVariables.ext b/extensions/ObjectVariables.ext
deleted file mode 100644
index 74f330e..0000000
--- a/extensions/ObjectVariables.ext
+++ /dev/null
@@ -1,115 +0,0 @@
---
--- Copyright (C) 2010 - 2016 Eluna Lua Engine
--- This program is free software licensed under GPL version 3
--- Please see the included DOCS/LICENSE.md for more information
---
-
--- filename.ext files are loaded before normal .lua files
-
---
--- This extension allows saving data to specific object for it's lifetime in current runtime session
--- Supports Map, Player, Creature, GameObject
---
--- SetData sets a value
--- obj:SetData(key, val)
---
--- GetData gets the data table or a specific value by key from it
--- local tbl = obj:GetData()
--- local val = obj:GetData(key)
---
-
-local pairs = pairs
-
-local variableStores = {
- Map = {},
- Player = {},
- Creature = {},
- GameObject = {},
-}
-
-local function DestroyMapData(event, obj)
- local map = obj:GetMapId()
- local inst = obj:GetInstanceId()
- for k,v in pairs(variableStores) do
- local mapdata = v[map]
- if mapdata then
- mapdata[inst] = nil
- end
- end
-end
-
-local function DestroyObjData(event, obj)
- local otype = obj:GetObjectType()
- local guid = otype == "Map" and 1 or obj:GetGUIDLow()
-
- if otype == "Player" then
- variableStores[otype][guid] = nil
- return
- end
-
- local map = obj:GetMapId()
- local inst = obj:GetInstanceId()
- local mapdata = variableStores[otype][map]
- if mapdata then
- local instancedata = mapdata[inst]
- if instancedata then
- instancedata[guid] = nil
- end
- end
-end
-
-local function GetData(self, field)
- local otype = self:GetObjectType()
- local guid = otype == "Map" and 1 or self:GetGUIDLow()
- local varStore = variableStores[otype]
-
- if otype == "Player" then
- varStore[guid] = varStore[guid] or {}
- if field ~= nil then
- return varStore[guid][field]
- end
- return varStore[guid]
- end
-
- local map = self:GetMapId()
- local inst = self:GetInstanceId()
- varStore[map] = varStore[map] or {}
- varStore[map][inst] = varStore[map][inst] or {}
- varStore[map][inst][guid] = varStore[map][inst][guid] or {}
-
- if field ~= nil then
- return varStore[map][inst][guid][field]
- end
- return varStore[map][inst][guid]
-end
-
-local function SetData(self, field, val)
- local otype = self:GetObjectType()
- local guid = otype == "Map" and 1 or self:GetGUIDLow()
- local varStore = variableStores[otype]
-
- if otype == "Player" then
- varStore[guid] = varStore[guid] or {}
- varStore[guid][field] = val
- return
- end
-
- local map = self:GetMapId()
- local inst = self:GetInstanceId()
- varStore[map] = varStore[map] or {}
- varStore[map][inst] = varStore[map][inst] or {}
- varStore[map][inst][guid] = varStore[map][inst][guid] or {}
-
- varStore[map][inst][guid][field] = val
-end
-
-for k,v in pairs(variableStores) do
- _G[k].GetData = GetData
- _G[k].SetData = SetData
-end
-
-RegisterPlayerEvent(4, DestroyObjData) -- logout
-RegisterServerEvent(31, DestroyObjData) -- creature delete
-RegisterServerEvent(32, DestroyObjData) -- gameobject delete
-RegisterServerEvent(17, DestroyMapData) -- map create
-RegisterServerEvent(18, DestroyMapData) -- map destroy
diff --git a/extensions/StackTracePlus/LICENSE b/extensions/StackTracePlus/LICENSE
deleted file mode 100644
index 49afdbb..0000000
--- a/extensions/StackTracePlus/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright (c) 2010 Ignacio Burgueño
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/extensions/StackTracePlus/README.md b/extensions/StackTracePlus/README.md
deleted file mode 100644
index 8216333..0000000
--- a/extensions/StackTracePlus/README.md
+++ /dev/null
@@ -1,128 +0,0 @@
-# StackTracePlus #
-
-[](https://travis-ci.org/ignacio/StackTracePlus)
-
-[StackTracePlus](https://github.com/ignacio/StackTracePlus) provides enhanced stack traces for [Lua 5.1, Lua 5.2][1] and [LuaJIT][2].
-
-StackTracePlus can be used as a replacement for debug.traceback. It gives detailed information about locals, tries to guess
-function names when they're not available, etc, so, instead of
-
- lua5.1.exe: D:\trunk_git\sources\stacktraceplus\test\test.lua:10: attempt to concatenate a nil value
- stack traceback:
- D:\trunk_git\sources\stacktraceplus\test\test.lua:10: in function
- (tail call): ?
- D:\trunk_git\sources\stacktraceplus\test\test.lua:15: in main chunk
- [C]: ?
-
-you'll get
-
- lua5.1.exe: D:\trunk_git\sources\stacktraceplus\test\test.lua:10: attempt to concatenate a nil value
- Stack Traceback
- ===============
- (2) C function 'function: 00A8F418'
- (3) Lua function 'g' at file 'D:\trunk_git\sources\stacktraceplus\test\test.lua:10' (best guess)
- Local variables:
- fun = table module
- str = string: "hey"
- tb = table: 027DCBE0 {dummy:1, blah:true, foo:bar}
- (*temporary) = nil
- (*temporary) = string: "text"
- (*temporary) = string: "attempt to concatenate a nil value"
- (4) tail call
- (5) main chunk of file 'D:\trunk_git\sources\stacktraceplus\test\test.lua' at line 15
- (6) C function 'function: 002CA480'
-
-## Usage #
-
-StackTracePlus can be used as a replacement for `debug.traceback`, as an `xpcall` error handler or even from C code. Note that
-only the Lua 5.1 interpreter allows the traceback function to be replaced "on the fly". LuaJIT and Lua 5.2 always calls luaL_traceback internally so there is no easy way to override that.
-
-```lua
-local STP = require "StackTracePlus"
-
-debug.traceback = STP.stacktrace
-function test()
- local s = "this is a string"
- local n = 42
- local t = { foo = "bar" }
- local co = coroutine
- local cr = coroutine.create
-
- error("an error")
-end
-test()
-```
-
-That script will output (only with Lua 5.1):
-
- lua5.1: example.lua:11: an error
- Stack Traceback
- ===============
- (2) C function 'function: 006B5758'
- (3) global C function 'error'
- (4) Lua global 'test' at file 'example.lua:11'
- Local variables:
- s = string: "this is a string"
- n = number: 42
- t = table: 006E5220 {foo:bar}
- co = coroutine table
- cr = C function: 003C7080
- (5) main chunk of file 'example.lua' at line 14
- (6) C function 'function: 00637B30'
-
-**StackTracePlus** is aware of the usual Lua libraries, like *coroutine*, *table*, *string*, *io*, etc and functions like
-*print*, *pcall*, *assert*, and so on.
-
-You can also make STP aware of your own tables and functions by calling *add_known_function* and *add_known_table*.
-
-```lua
-local STP = require "StackTracePlus"
-
-debug.traceback = STP.stacktrace
-local my_table = {
- f = function() end
-}
-function my_function()
-end
-
-function test(data, func)
- local s = "this is a string"
-
- error("an error")
-end
-
-STP.add_known_table(my_table, "A description for my_table")
-STP.add_known_function(my_function, "A description for my_function")
-
-test( my_table, my_function )
-```
-
-Will output:
-
- lua5.1: ..\test\example2.lua:13: an error
- Stack Traceback
- ===============
- (2) C function 'function: 0073AAA8'
- (3) global C function 'error'
- (4) Lua global 'test' at file '..\test\example2.lua:13'
- Local variables:
- data = A description for my_table
- func = Lua function 'A description for my_function' (defined at line 7 of chunk ..\test\example2.lua)
- s = string: "this is a string"
- (5) main chunk of file '..\test\example2.lua' at line 19
- (6) C function 'function: 00317B30'
-
-
-## Installation #
-The easiest way to install is with [LuaRocks][3].
-
- - luarocks install stacktraceplus
-
-If you don't want to use LuaRocks, just copy StackTracePlus.lua to Lua's path.
-
-## License #
-**StackTracePlus** is available under the MIT license.
-
-[1]: http://www.lua.org/
-[2]: http://luajit.org/
-[3]: http://luarocks.org/
diff --git a/extensions/StackTracePlus/StackTracePlus.ext b/extensions/StackTracePlus/StackTracePlus.ext
deleted file mode 100644
index 40c25c1..0000000
--- a/extensions/StackTracePlus/StackTracePlus.ext
+++ /dev/null
@@ -1,411 +0,0 @@
--- tables
-local _G = _G
-local string, io, debug, coroutine = string, io, debug, coroutine
-
--- functions
-local tostring, print, require = tostring, print, require
-local next, assert = next, assert
-local pcall, type, pairs, ipairs = pcall, type, pairs, ipairs
-local error = error
-
-assert(debug, "debug table must be available at this point")
-
-local io_open = io.open
-local string_gmatch = string.gmatch
-local string_sub = string.sub
-local table_concat = table.concat
-
-local _M = {
- max_tb_output_len = 70 -- controls the maximum length of the 'stringified' table before cutting with ' (more...)'
-}
-
--- this tables should be weak so the elements in them won't become uncollectable
-local m_known_tables = { [_G] = "_G (global table)" }
-local function add_known_module(name, desc)
- local ok, mod = pcall(require, name)
- if ok then
- m_known_tables[mod] = desc
- end
-end
-
-add_known_module("string", "string module")
-add_known_module("io", "io module")
-add_known_module("os", "os module")
-add_known_module("table", "table module")
-add_known_module("math", "math module")
-add_known_module("package", "package module")
-add_known_module("debug", "debug module")
-add_known_module("coroutine", "coroutine module")
-
--- lua5.2
-add_known_module("bit32", "bit32 module")
--- luajit
-add_known_module("bit", "bit module")
-add_known_module("jit", "jit module")
-
-
-local m_user_known_tables = {}
-
-local m_known_functions = {}
-for _, name in ipairs{
- -- Lua 5.2, 5.1
- "assert",
- "collectgarbage",
- "dofile",
- "error",
- "getmetatable",
- "ipairs",
- "load",
- "loadfile",
- "next",
- "pairs",
- "pcall",
- "print",
- "rawequal",
- "rawget",
- "rawlen",
- "rawset",
- "require",
- "select",
- "setmetatable",
- "tonumber",
- "tostring",
- "type",
- "xpcall",
-
- -- Lua 5.1
- "gcinfo",
- "getfenv",
- "loadstring",
- "module",
- "newproxy",
- "setfenv",
- "unpack",
- -- TODO: add table.* etc functions
-} do
- if _G[name] then
- m_known_functions[_G[name]] = name
- end
-end
-
-
-
-local m_user_known_functions = {}
-
-local function safe_tostring (value)
- local ok, err = pcall(tostring, value)
- if ok then return err else return (": '%s'"):format(err) end
-end
-
--- Private:
--- Parses a line, looking for possible function definitions (in a very na?ve way)
--- Returns '(anonymous)' if no function name was found in the line
-local function ParseLine(line)
- assert(type(line) == "string")
- --print(line)
- local match = line:match("^%s*function%s+(%w+)")
- if match then
- --print("+++++++++++++function", match)
- return match
- end
- match = line:match("^%s*local%s+function%s+(%w+)")
- if match then
- --print("++++++++++++local", match)
- return match
- end
- match = line:match("^%s*local%s+(%w+)%s+=%s+function")
- if match then
- --print("++++++++++++local func", match)
- return match
- end
- match = line:match("%s*function%s*%(") -- this is an anonymous function
- if match then
- --print("+++++++++++++function2", match)
- return "(anonymous)"
- end
- return "(anonymous)"
-end
-
--- Private:
--- Tries to guess a function's name when the debug info structure does not have it.
--- It parses either the file or the string where the function is defined.
--- Returns '?' if the line where the function is defined is not found
-local function GuessFunctionName(info)
- --print("guessing function name")
- if type(info.source) == "string" and info.source:sub(1,1) == "@" then
- local file, err = io_open(info.source:sub(2), "r")
- if not file then
- print("file not found: "..tostring(err)) -- whoops!
- return "?"
- end
- local line
- for i = 1, info.linedefined do
- line = file:read("*l")
- end
- if not line then
- print("line not found") -- whoops!
- return "?"
- end
- return ParseLine(line)
- else
- local line
- local lineNumber = 0
- for l in string_gmatch(info.source, "([^\n]+)\n-") do
- lineNumber = lineNumber + 1
- if lineNumber == info.linedefined then
- line = l
- break
- end
- end
- if not line then
- print("line not found") -- whoops!
- return "?"
- end
- return ParseLine(line)
- end
-end
-
----
--- Dumper instances are used to analyze stacks and collect its information.
---
-local Dumper = {}
-
-Dumper.new = function(thread)
- local t = { lines = {} }
- for k,v in pairs(Dumper) do t[k] = v end
-
- t.dumping_same_thread = (thread == coroutine.running())
-
- -- if a thread was supplied, bind it to debug.info and debug.get
- -- we also need to skip this additional level we are introducing in the callstack (only if we are running
- -- in the same thread we're inspecting)
- if type(thread) == "thread" then
- t.getinfo = function(level, what)
- if t.dumping_same_thread and type(level) == "number" then
- level = level + 1
- end
- return debug.getinfo(thread, level, what)
- end
- t.getlocal = function(level, loc)
- if t.dumping_same_thread then
- level = level + 1
- end
- return debug.getlocal(thread, level, loc)
- end
- else
- t.getinfo = debug.getinfo
- t.getlocal = debug.getlocal
- end
-
- return t
-end
-
--- helpers for collecting strings to be used when assembling the final trace
-function Dumper:add (text)
- self.lines[#self.lines + 1] = text
-end
-function Dumper:add_f (fmt, ...)
- self:add(fmt:format(...))
-end
-function Dumper:concat_lines ()
- return table_concat(self.lines)
-end
-
----
--- Private:
--- Iterates over the local variables of a given function.
---
--- @param level The stack level where the function is.
---
-function Dumper:DumpLocals (level)
- local prefix = "\t "
- local i = 1
-
- if self.dumping_same_thread then
- level = level + 1
- end
-
- local name, value = self.getlocal(level, i)
- if not name then
- return
- end
- self:add("\tLocal variables:\r\n")
- while name do
- if type(value) == "number" then
- self:add_f("%s%s = number: %g\r\n", prefix, name, value)
- elseif type(value) == "boolean" then
- self:add_f("%s%s = boolean: %s\r\n", prefix, name, tostring(value))
- elseif type(value) == "string" then
- self:add_f("%s%s = string: %q\r\n", prefix, name, value)
- elseif type(value) == "userdata" then
- self:add_f("%s%s = %s\r\n", prefix, name, safe_tostring(value))
- elseif type(value) == "nil" then
- self:add_f("%s%s = nil\r\n", prefix, name)
- elseif type(value) == "table" then
- if m_known_tables[value] then
- self:add_f("%s%s = %s\r\n", prefix, name, m_known_tables[value])
- elseif m_user_known_tables[value] then
- self:add_f("%s%s = %s\r\n", prefix, name, m_user_known_tables[value])
- else
- local txt = "{"
- for k,v in pairs(value) do
- txt = txt..safe_tostring(k)..":"..safe_tostring(v)
- if #txt > _M.max_tb_output_len then
- txt = txt.." (more...)"
- break
- end
- if next(value, k) then txt = txt..", " end
- end
- self:add_f("%s%s = %s %s\r\n", prefix, name, safe_tostring(value), txt.."}")
- end
- elseif type(value) == "function" then
- local info = self.getinfo(value, "nS")
- local fun_name = info.name or m_known_functions[value] or m_user_known_functions[value]
- if info.what == "C" then
- self:add_f("%s%s = C %s\r\n", prefix, name, (fun_name and ("function: " .. fun_name) or tostring(value)))
- else
- local source = info.short_src
- if source:sub(2,7) == "string" then
- source = source:sub(9) -- uno m?s, por el espacio que viene (string "Baragent.Main", por ejemplo)
- end
- --for k,v in pairs(info) do print(k,v) end
- fun_name = fun_name or GuessFunctionName(info)
- self:add_f("%s%s = Lua function '%s' (defined at line %d of chunk %s)\r\n", prefix, name, fun_name, info.linedefined, source)
- end
- elseif type(value) == "thread" then
- self:add_f("%sthread %q = %s\r\n", prefix, name, tostring(value))
- end
- i = i + 1
- name, value = self.getlocal(level, i)
- end
-end
-
-
----
--- Public:
--- Collects a detailed stack trace, dumping locals, resolving function names when they're not available, etc.
--- This function is suitable to be used as an error handler with pcall or xpcall
---
--- @param thread An optional thread whose stack is to be inspected (defaul is the current thread)
--- @param message An optional error string or object.
--- @param level An optional number telling at which level to start the traceback (default is 1)
---
--- Returns a string with the stack trace and a string with the original error.
---
-function _M.stacktrace(thread, message, level)
- if type(thread) ~= "thread" then
- -- shift parameters left
- thread, message, level = nil, thread, message
- end
-
- thread = thread or coroutine.running()
-
- level = level or 1
-
- local dumper = Dumper.new(thread)
-
- local original_error
-
- if type(message) == "table" then
- dumper:add("an error object {\r\n")
- local first = true
- for k,v in pairs(message) do
- if first then
- dumper:add(" ")
- first = false
- else
- dumper:add(",\r\n ")
- end
- dumper:add(safe_tostring(k))
- dumper:add(": ")
- dumper:add(safe_tostring(v))
- end
- dumper:add("\r\n}")
- original_error = dumper:concat_lines()
- elseif type(message) == "string" then
- dumper:add(message)
- original_error = message
- end
-
- dumper:add("\r\n")
- dumper:add[[
-Stack Traceback
-===============
-]]
- --print(error_message)
-
- local level_to_show = level
- if dumper.dumping_same_thread then level = level + 1 end
-
- local info = dumper.getinfo(level, "nSlf")
- while info do
- if info.what == "main" then
- if string_sub(info.source, 1, 1) == "@" then
- dumper:add_f("(%d) main chunk of file '%s' at line %d\r\n", level_to_show, string_sub(info.source, 2), info.currentline)
- else
- dumper:add_f("(%d) main chunk of %s at line %d\r\n", level_to_show, info.short_src, info.currentline)
- end
- elseif info.what == "C" then
- --print(info.namewhat, info.name)
- --for k,v in pairs(info) do print(k,v, type(v)) end
- local function_name = m_user_known_functions[info.func] or m_known_functions[info.func] or info.name or tostring(info.func)
- dumper:add_f("(%d) %s C function '%s'\r\n", level_to_show, info.namewhat, function_name)
- --dumper:add_f("%s%s = C %s\r\n", prefix, name, (m_known_functions[value] and ("function: " .. m_known_functions[value]) or tostring(value)))
- elseif info.what == "tail" then
- --print("tail")
- --for k,v in pairs(info) do print(k,v, type(v)) end--print(info.namewhat, info.name)
- dumper:add_f("(%d) tail call\r\n", level_to_show)
- dumper:DumpLocals(level)
- elseif info.what == "Lua" then
- local source = info.short_src
- local function_name = m_user_known_functions[info.func] or m_known_functions[info.func] or info.name
- if source:sub(2, 7) == "string" then
- source = source:sub(9)
- end
- local was_guessed = false
- if not function_name or function_name == "?" then
- --for k,v in pairs(info) do print(k,v, type(v)) end
- function_name = GuessFunctionName(info)
- was_guessed = true
- end
- -- test if we have a file name
- local function_type = (info.namewhat == "") and "function" or info.namewhat
- if info.source and info.source:sub(1, 1) == "@" then
- dumper:add_f("(%d) Lua %s '%s' at file '%s:%d'%s\r\n", level_to_show, function_type, function_name, info.source:sub(2), info.currentline, was_guessed and " (best guess)" or "")
- elseif info.source and info.source:sub(1,1) == '#' then
- dumper:add_f("(%d) Lua %s '%s' at template '%s:%d'%s\r\n", level_to_show, function_type, function_name, info.source:sub(2), info.currentline, was_guessed and " (best guess)" or "")
- else
- dumper:add_f("(%d) Lua %s '%s' at line %d of chunk '%s'\r\n", level_to_show, function_type, function_name, info.currentline, source)
- end
- dumper:DumpLocals(level)
- else
- dumper:add_f("(%d) unknown frame %s\r\n", level_to_show, info.what)
- end
-
- level = level + 1
- level_to_show = level_to_show + 1
- info = dumper.getinfo(level, "nSlf")
- end
-
- return dumper:concat_lines(), original_error
-end
-
---
--- Adds a table to the list of known tables
-function _M.add_known_table(tab, description)
- if m_known_tables[tab] then
- error("Cannot override an already known table")
- end
- m_user_known_tables[tab] = description
-end
-
---
--- Adds a function to the list of known functions
-function _M.add_known_function(fun, description)
- if m_known_functions[fun] then
- error("Cannot override an already known function")
- end
- m_user_known_functions[fun] = description
-end
-
-return _M
diff --git a/extensions/_Misc.ext b/extensions/_Misc.ext
deleted file mode 100644
index 5eae744..0000000
--- a/extensions/_Misc.ext
+++ /dev/null
@@ -1,14 +0,0 @@
---
--- Copyright (C) 2010 - 2016 Eluna Lua Engine
--- This program is free software licensed under GPL version 3
--- Please see the included DOCS/LICENSE.md for more information
---
-
--- filename.ext files are loaded before normal .lua files
-
--- Randomize random
-math.randomseed(tonumber(tostring(os.time()):reverse():sub(1,6)))
-
--- Set debug.traceback to use StackTracePlus to print full stack trace
-local trace = require("StackTracePlus")
-debug.traceback = trace.stacktrace