summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vscode/settings.json4
-rw-r--r--server-beta/libs/@lua/basic.lni570
-rw-r--r--server-beta/libs/@lua/bit32.lni136
-rw-r--r--server-beta/libs/@lua/coroutine.lni112
-rw-r--r--server-beta/libs/@lua/debug.lni297
-rw-r--r--server-beta/libs/@lua/file.lni151
-rw-r--r--server-beta/libs/@lua/io.lni326
-rw-r--r--server-beta/libs/@lua/math.lni340
-rw-r--r--server-beta/libs/@lua/os.lni176
-rw-r--r--server-beta/libs/@lua/package.lni77
-rw-r--r--server-beta/libs/@lua/string.lni276
-rw-r--r--server-beta/libs/@lua/table.lni123
-rw-r--r--server-beta/libs/@lua/utf8.lni174
-rw-r--r--server-beta/libs/@luaJIT/bit.lni145
-rw-r--r--server-beta/libs/@luaJIT/ffi.lni194
-rw-r--r--server-beta/libs/@luaJIT/jit.lni73
-rw-r--r--server-beta/libs/bee/filesystem.lni25
-rw-r--r--server-beta/libs/jass/common.lni12452
-rw-r--r--server-beta/libs/jass/japi.lni722
-rw-r--r--server-beta/libs/test/basic.lni2
-rw-r--r--server-beta/locale/en-US/libs/@lua/basic.lni239
-rw-r--r--server-beta/locale/en-US/libs/@lua/bit32.lni57
-rw-r--r--server-beta/locale/en-US/libs/@lua/coroutine.lni42
-rw-r--r--server-beta/locale/en-US/libs/@lua/debug.lni148
-rw-r--r--server-beta/locale/en-US/libs/@lua/file.lni91
-rw-r--r--server-beta/locale/en-US/libs/@lua/io.lni230
-rw-r--r--server-beta/locale/en-US/libs/@lua/math.lni132
-rw-r--r--server-beta/locale/en-US/libs/@lua/os.lni38
-rw-r--r--server-beta/locale/en-US/libs/@lua/package.lni29
-rw-r--r--server-beta/locale/en-US/libs/@lua/string.lni72
-rw-r--r--server-beta/locale/en-US/libs/@lua/table.lni39
-rw-r--r--server-beta/locale/en-US/libs/@lua/utf8.lni40
-rw-r--r--server-beta/locale/en-US/script.lni122
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/basic.lni239
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/bit32.lni55
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/coroutine.lni42
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/debug.lni140
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/file.lni91
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/io.lni230
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/math.lni132
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/os.lni38
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/package.lni29
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/string.lni61
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/table.lni39
-rw-r--r--server-beta/locale/zh-CN/libs/@lua/utf8.lni24
-rw-r--r--server-beta/locale/zh-CN/script.lni122
-rw-r--r--server-beta/src/config.lua194
-rw-r--r--server-beta/src/define/DiagnosticDefaultSeverity.lua21
-rw-r--r--server-beta/src/define/DiagnosticSeverity.lua6
-rw-r--r--server-beta/src/language.lua136
-rw-r--r--server-beta/src/proto/provider.lua20
-rw-r--r--server-beta/src/workspace/init.lua3
-rw-r--r--server-beta/src/workspace/workspace.lua9
53 files changed, 19278 insertions, 7 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
index ff6e2247..79492f79 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -19,6 +19,10 @@
"/server/libs/",
"/server/src/3rd",
"/server/meta/",
+ "/server-beta/locale/",
+ "/server-beta/libs/",
+ "/server-beta/src/3rd",
+ "/server-beta/meta/",
".vscode"
],
"Lua.workspace.library": {
diff --git a/server-beta/libs/@lua/basic.lni b/server-beta/libs/@lua/basic.lni
new file mode 100644
index 00000000..beaa59db
--- /dev/null
+++ b/server-beta/libs/@lua/basic.lni
@@ -0,0 +1,570 @@
+<default>
+type = 'function'
+
+[arg]
+type = 'table'
+
+[assert]
+[[.args]]
+name = 'v'
+``````````
+name = 'message'
+[[.returns]]
+
+[collectgarbage]
+[[.args]]
+name = 'opt'
+type = 'string'
+optional = 'after'
+``````````
+name = 'arg'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+[[.enums]]
+name = 'opt'
+enum = '"collect"'
+default = true
+``````````
+name = 'opt'
+enum = '"stop"'
+``````````
+name = 'opt'
+enum = '"restart"'
+``````````
+name = 'opt'
+enum = '"count"'
+``````````
+name = 'opt'
+enum = '"step"'
+``````````
+name = 'opt'
+enum = '"setpause"'
+``````````
+name = 'opt'
+enum = '"setstepmul"'
+``````````
+name = 'opt'
+enum = '"isrunning"'
+
+["collectgarbage Lua 5.4"]
+name = 'collectgarbage'
+version = 'Lua 5.4'
+[[.args]]
+name = 'opt'
+type = 'string'
+optional = 'after'
+``````````
+name = 'arg'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+[[.enums]]
+name = 'opt'
+enum = '"collect"'
+default = true
+``````````
+name = 'opt'
+enum = '"stop"'
+``````````
+name = 'opt'
+enum = '"restart"'
+``````````
+name = 'opt'
+enum = '"count"'
+``````````
+name = 'opt'
+enum = '"step"'
+``````````
+name = 'opt'
+enum = '"setpause"'
+``````````
+name = 'opt'
+enum = '"setstepmul"'
+``````````
+name = 'opt'
+enum = '"incremental"'
+``````````
+name = 'opt'
+enum = '"generational"'
+``````````
+name = 'opt'
+enum = '"isrunning"'
+
+[dofile]
+special = 'dofile'
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'self'
+[[.returns]]
+
+[error]
+[[.args]]
+name = 'message'
+``````````
+name = 'level'
+type = 'integer'
+optional = 'self'
+
+[_G]
+type = 'table'
+
+[getfenv]
+version = {'Lua 5.1', 'LuaJIT'}
+[[.args]]
+name = f
+type = function
+optional = after
+default = 1
+[[.returns]]
+type = table
+
+[getmetatable]
+[[.args]]
+name = 'object'
+[[.returns]]
+name = 'metatable'
+type = 'table'
+
+[@ipairs]
+special = '@ipairs'
+[[.args]]
+type = 'table'
+``````````
+name = 'i'
+type = 'integer'
+[[.returns]]
+name = 'i'
+type = 'integer'
+``````````
+type = 'object'
+
+[ipairs]
+special = 'ipairs'
+[[.args]]
+name = 't'
+type = 'table'
+[[.returns]]
+name = 'iterator'
+``````````
+name = 't'
+type = 'table'
+``````````
+name = 'i'
+type = 'integer'
+default = 0
+
+[load]
+name = 'load'
+[[.args]]
+name = 'chunk'
+type = {'string', 'function'}
+``````````
+name = 'chunkname'
+type = 'string'
+optional = 'after'
+``````````
+name = 'mode'
+type = 'string'
+optional = 'after'
+``````````
+name = 'env'
+type = 'table'
+optional = 'self'
+[[.returns]]
+type = 'function'
+args = {
+ 1 = {
+ type = '...'
+ },
+}
+``````````
+name = 'error_message'
+type = 'string'
+[[.enums]]
+name = 'mode'
+enum = '"b"'
+``````````
+name = 'mode'
+enum = '"t"'
+``````````
+name = 'mode'
+enum = '"bt"'
+default = true
+
+['load Lua 5.1']
+name = 'load'
+version = 'Lua 5.1'
+[[.args]]
+name = 'func'
+type = 'function'
+``````````
+name = 'chunkname'
+type = 'string'
+[[.returns]]
+type = 'function'
+args = {
+ 1 = {
+ type = '...'
+ },
+}
+``````````
+name = 'error_message'
+type = 'string'
+
+[loadfile]
+special = 'loadfile'
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'after'
+``````````
+name = 'mode'
+type = 'string'
+optional = 'after'
+``````````
+name = 'env'
+type = 'table'
+optional = 'self'
+[[.returns]]
+type = 'function'
+args = {
+ 1 = {
+ type = '...'
+ },
+}
+``````````
+name = 'error_message'
+type = 'string'
+[[.enums]]
+name = 'mode'
+enum = '"b"'
+``````````
+name = 'mode'
+enum = '"t"'
+``````````
+name = 'mode'
+enum = '"bt"'
+default = true
+
+['loadfile Lua 5.1']
+name = 'loadfile'
+special = 'loadfile'
+version = 'Lua 5.1'
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'after'
+[[.returns]]
+type = 'function'
+args = {
+ 1 = {
+ type = '...'
+ },
+}
+``````````
+name = 'error_message'
+type = 'string'
+
+[loadstring]
+version = {'Lua 5.1', 'LuaJIT'}
+[[.args]]
+type = string
+`````````
+name = chunkname
+type = string
+optional = after
+[[.returns]]
+type = 'function'
+args = {
+ 1 = {
+ type = '...'
+ },
+}
+``````````
+name = 'error_message'
+type = 'string'
+
+[module]
+version = {'Lua 5.1', 'LuaJIT'}
+special = 'module'
+[[.args]]
+name = name
+type = string
+``````````
+type = '...'
+optional = after
+
+[next]
+special = next
+[[.args]]
+name = 'table'
+type = 'table'
+``````````
+name = 'index'
+optional = 'self'
+[[.returns]]
+name = 'key'
+``````````
+name = 'value'
+
+[pairs]
+special = pairs
+[[.args]]
+name = 't'
+type = 'table'
+[[.returns]]
+name = '@next'
+``````````
+name = 't'
+type = 'table'
+``````````
+type = 'nil'
+
+[pcall]
+special = pcall
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'arg1'
+optional = 'after'
+``````````
+type = '...'
+[[.returns]]
+name = 'success'
+type = 'boolean'
+``````````
+name = 'result'
+``````````
+type = '...'
+
+[print]
+[[.args]]
+type = '...'
+
+[rawequal]
+[[.args]]
+name = 'v1'
+``````````
+name = 'v2'
+[[.returns]]
+type = 'boolean'
+
+[rawget]
+special = 'rawget'
+[[.args]]
+name = 'table'
+type = 'table'
+``````````
+name = 'index'
+[[.returns]]
+
+[rawlen]
+[[.args]]
+name = 'v'
+type = {'table', 'string'}
+[[.returns]]
+name = 'len'
+type = 'integer'
+
+[rawset]
+special = 'rawset'
+[[.args]]
+name = 'table'
+type = 'table'
+``````````
+name = 'index'
+``````````
+name = 'value'
+[[.returns]]
+type = 'table'
+
+[select]
+[[.args]]
+name = 'index'
+type = {'string', 'integer'}
+``````````
+type = '...'
+[[.returns]]
+[[.enums]]
+name = 'index'
+enum = '"#"'
+``````````
+name = 'index'
+code = 'integer'
+
+[setfenv]
+version = {'Lua 5.1', 'LuaJIT'}
+[[.args]]
+name = f
+type = function/integer
+`````````
+type = table
+[[.returns]]
+type = function
+
+[setmetatable]
+special = 'setmetatable'
+[[.args]]
+name = 'table'
+type = 'table'
+``````````
+name = 'metatable'
+type = 'table'
+[[.returns]]
+type = 'table'
+
+[tonumber]
+[[.args]]
+name = 'e'
+type = {'string', 'number'}
+``````````
+name = 'base'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+type = 'number'
+
+[tostring]
+[[.args]]
+name = 'v'
+[[.returns]]
+type = 'string'
+
+[type]
+[[.args]]
+name = 'v'
+[[.returns]]
+name = 'type'
+type = 'string'
+[[.enums]]
+name = 'type'
+enum = '"nil"'
+``````````
+name = 'type'
+enum = '"number"'
+``````````
+name = 'type'
+enum = '"string"'
+``````````
+name = 'type'
+enum = '"boolean"'
+``````````
+name = 'type'
+enum = '"table"'
+``````````
+name = 'type'
+enum = '"function"'
+``````````
+name = 'type'
+enum = '"thread"'
+``````````
+name = 'type'
+enum = '"userdata"'
+
+["_VERSION Lua 5.1"]
+version = {'Lua 5.1', 'LuaJIT'}
+name = '_VERSION'
+type = 'string'
+value = 'Lua 5.1'
+
+["_VERSION Lua 5.2"]
+version = 'Lua 5.2'
+name = '_VERSION'
+type = 'string'
+value = 'Lua 5.2'
+
+["_VERSION Lua 5.3"]
+version = 'Lua 5.3'
+name = '_VERSION'
+type = 'string'
+value = 'Lua 5.3'
+
+["_VERSION Lua 5.4"]
+version = 'Lua 5.4'
+name = '_VERSION'
+type = 'string'
+value = 'Lua 5.4'
+
+[warn]
+version = 'Lua 5.4'
+[[.args]]
+name = 'message'
+type = 'string'
+``````````
+type = '...'
+
+[xpcall]
+special = xpcall
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'msgh'
+type = 'function'
+``````````
+name = 'arg1'
+optional = 'after'
+``````````
+type = '...'
+[[.returns]]
+name = 'success'
+type = 'boolean'
+``````````
+name = 'result'
+``````````
+type = '...'
+
+['xpcall Lua 5.1']
+name = 'xpcall'
+version = 'Lua 5.1'
+special = xpcall
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'err'
+type = 'function'
+[[.returns]]
+name = 'success'
+type = 'boolean'
+``````````
+name = 'result'
+``````````
+type = '...'
+
+[require]
+special = 'require'
+[[.args]]
+name = 'modname'
+type = 'string'
+[[.returns]]
+
+["require Lua 5.4"]
+version = 'Lua 5.4'
+name = 'require'
+special = 'require'
+[[.args]]
+name = 'modname'
+type = 'string'
+[[.returns]]
+type = any
+``````````
+name = loaderdata
+
+[unpack]
+version = {'Lua 5.1', 'LuaJIT'}
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+type = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
diff --git a/server-beta/libs/@lua/bit32.lni b/server-beta/libs/@lua/bit32.lni
new file mode 100644
index 00000000..6920323c
--- /dev/null
+++ b/server-beta/libs/@lua/bit32.lni
@@ -0,0 +1,136 @@
+[bit32]
+version = 'Lua 5.2'
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'bit32'
+
+<default>
+version = 'Lua 5.2'
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'bit32',
+ },
+ 2 = {
+ type = 'library',
+ name = 'bit32',
+ }
+}
+
+[arshift]
+[[.args]]
+name = x
+type = integer
+``````````
+name = disp
+type = integer
+[[.returns]]
+type = integer
+
+[band]
+[[.args]]
+type = '...'
+[[.returns]]
+type = integer
+
+[bnot]
+[[.args]]
+name = x
+type = integer
+[[.returns]]
+type = integer
+
+[bor]
+[[.args]]
+type = '...'
+[[.returns]]
+type = integer
+
+[btest]
+[[.args]]
+type = '...'
+[[.returns]]
+type = boolean
+
+[bxor]
+[[.args]]
+type = '...'
+[[.returns]]
+type = integer
+
+[extract]
+[[.args]]
+name = n
+type = integer
+``````````
+name = field
+type = integer
+``````````
+name = width
+type = integer
+optional = after
+default = 1
+[[.returns]]
+type = integer
+
+[replace]
+[[.args]]
+name = n
+type = integer
+``````````
+name = v
+type = integer
+``````````
+name = field
+type = integer
+``````````
+name = width
+type = integer
+optional = false
+default = 1
+[[.returns]]
+type = integer
+
+[lrotate]
+[[.args]]
+name = x
+type = integer
+``````````
+name = disp
+type = integer
+[[.returns]]
+type = integer
+
+[lshift]
+[[.args]]
+name = x
+type = integer
+``````````
+name = disp
+type = integer
+[[.returns]]
+type = integer
+
+[rrotate]
+[[.args]]
+name = x
+type = integer
+``````````
+name = disp
+type = integer
+[[.returns]]
+type = integer
+
+[rshift]
+[[.args]]
+name = x
+type = integer
+``````````
+name = disp
+type = integer
+[[.returns]]
+type = integer
diff --git a/server-beta/libs/@lua/coroutine.lni b/server-beta/libs/@lua/coroutine.lni
new file mode 100644
index 00000000..05db9038
--- /dev/null
+++ b/server-beta/libs/@lua/coroutine.lni
@@ -0,0 +1,112 @@
+[coroutine]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'coroutine'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'coroutine',
+ },
+ 2 = {
+ type = 'library',
+ name = 'coroutine',
+ }
+}
+
+[create]
+[[.args]]
+name = 'f'
+type = 'function'
+[[.returns]]
+name = 'coroutine'
+type = 'thread'
+
+[isyieldable]
+[[.returns]]
+type = 'boolean'
+
+['isyieldable Lua 5.4']
+name = isyieldable
+version = 'Lua 5.4'
+[[.args]]
+name = co
+type = thread
+optional = after
+[[.returns]]
+type = boolean
+
+[close]
+version = 'Lua 5.4'
+[[.args]]
+name = 'co'
+type = 'thread'
+[[.returns]]
+name = 'noerror'
+type = 'boolean'
+`````````
+name = 'errorobject'
+type = 'any'
+
+[resume]
+[[.args]]
+name = 'co'
+type = 'thread'
+``````````
+name = 'val1'
+optional = 'after'
+``````````
+type = '...'
+[[.returns]]
+name = 'success'
+type = 'boolean'
+``````````
+name = 'result'
+``````````
+type = '...'
+
+[running]
+[[.returns]]
+name = 'running_co'
+type = 'thread'
+``````````
+name = 'is_main'
+type = 'boolean'
+
+[status]
+[[.args]]
+name = 'co'
+type = 'thread'
+[[.returns]]
+name = 'status'
+type = 'string'
+[[.enums]]
+name = 'status'
+enum = '"running"'
+``````````
+name = 'status'
+enum = '"suspended"'
+``````````
+name = 'status'
+enum = '"normal"'
+``````````
+name = 'status'
+enum = '"dead"'
+
+[wrap]
+[[.args]]
+name = 'f'
+type = 'function'
+[[.returns]]
+type = '...'
+
+[yield]
+[[.args]]
+type = '...'
+[[.returns]]
+type = '...'
diff --git a/server-beta/libs/@lua/debug.lni b/server-beta/libs/@lua/debug.lni
new file mode 100644
index 00000000..a7739993
--- /dev/null
+++ b/server-beta/libs/@lua/debug.lni
@@ -0,0 +1,297 @@
+[debug]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'debug'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'debug',
+ },
+ 2 = {
+ type = 'library',
+ name = 'debug',
+ }
+}
+
+["debug.debug"]
+name = 'debug'
+
+[getfenv]
+version = {'Lua 5.1', 'LuaJIT'}
+[[.args]]
+name = o
+[[.returns]]
+type = table
+
+[gethook]
+[[.args]]
+type = 'thread'
+optional = 'self'
+[[.returns]]
+name = 'hook'
+type = 'function'
+``````````
+name = 'mask'
+type = 'string'
+``````````
+name = 'count'
+type = 'integer'
+
+[getinfo]
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'f'
+type = {'integer', 'function'}
+``````````
+name = 'what'
+type = 'string'
+optional = 'self'
+[[.returns]]
+name = 'info'
+type = 'table'
+[[.enums]]
+name = 'what'
+enum = '"n"'
+``````````
+name = 'what'
+enum = '"S"'
+``````````
+name = 'what'
+enum = '"l"'
+``````````
+name = 'what'
+enum = '"t"'
+``````````
+name = 'what'
+enum = '"u"'
+``````````
+name = 'what'
+enum = '"f"'
+``````````
+name = 'what'
+enum = '"L"'
+
+['getinfo Lua 5.1':getinfo]
+name = 'getinfo'
+version = 'Lua 5.1'
+
+[getlocal]
+name = 'getlocal'
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'f'
+type = {'integer', 'function'}
+``````````
+name = 'local'
+type = 'integer'
+
+['getlocal Lua 5.1']
+name = 'getlocal'
+version = 'Lua 5.1'
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'level'
+type = 'integer'
+``````````
+name = 'local'
+type = 'integer'
+
+[getmetatable]
+[[.args]]
+name = 'value'
+[[.returns]]
+name = 'metatable'
+type = 'table'
+
+[getregistry]
+[[.returns]]
+type = 'table'
+
+[getupvalue]
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'up'
+type = 'integer'
+[[.returns]]
+name = 'name'
+type = 'string'
+``````````
+name = 'value'
+
+[getuservalue]
+[[.args]]
+name = 'u'
+type = 'userdata'
+[[.returns]]
+
+["getuservalue Lua 5.4"]
+name = 'getuservalue'
+version = 'Lua 5.4'
+[[.args]]
+name = 'u'
+type = 'userdata'
+``````````
+name = 'n'
+type = 'integer'
+[[.returns]]
+type = 'any'
+``````````
+type = 'boolean'
+
+[setCstacklimit]
+version = 'Lua 5.4'
+[[.args]]
+name = 'limit'
+type = 'integer'
+[[.returns]]
+type = {'interger', 'boolean'}
+
+[setfenv]
+version = {'Lua 5.1', 'LuaJIT'}
+[[.args]]
+name = 'object'
+``````````
+type = 'table'
+[[.returns]]
+name = 'object'
+
+[sethook]
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'hook'
+type = 'function'
+``````````
+name = 'mask'
+type = 'string'
+``````````
+name = 'count'
+type = 'integer'
+optional = 'self'
+[[.enums]]
+name = 'mask'
+enum = '"c"'
+``````````
+name = 'mask'
+enum = '"r"'
+``````````
+name = 'mask'
+enum = '"l"'
+
+[setlocal]
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'level'
+type = 'integer'
+``````````
+name = 'local'
+type = 'integer'
+``````````
+name = 'value'
+[[.returns]]
+name = 'name'
+type = 'string'
+
+[setmetatable]
+[[.args]]
+name = 'value'
+``````````
+type = 'table'
+[[.returns]]
+name = 'value'
+
+[setupvalue]
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'up'
+type = 'integer'
+``````````
+name = 'value'
+[[.returns]]
+name = 'name'
+type = 'string'
+
+[setuservalue]
+[[.args]]
+name = 'udata'
+type = 'userdata'
+``````````
+name = 'value'
+[[.returns]]
+name = 'udata'
+type = 'userdata'
+
+["setuservalue Lua 5.4"]
+name = 'setuservalue'
+version = 'Lua 5.4'
+[[.args]]
+name = 'udata'
+type = 'userdata'
+``````````
+name = 'value'
+``````````
+name = 'n'
+type = 'integer'
+[[.returns]]
+name = 'udata'
+type = 'userdata'
+
+[traceback]
+[[.args]]
+type = 'thread'
+optional = 'self'
+``````````
+name = 'message'
+optional = 'after'
+``````````
+name = 'level'
+optional = 'self'
+default = 1
+[[.returns]]
+name = 'message'
+
+[upvalueid]
+version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'}
+[[.args]]
+name = 'f'
+type = 'function'
+``````````
+name = 'n'
+type = 'integer'
+[[.returns]]
+name = 'id'
+type = 'userdata'
+
+[upvaluejoin]
+version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'}
+[[.args]]
+name = 'f1'
+type = 'function'
+``````````
+name = 'n1'
+type = 'integer'
+``````````
+name = 'f2'
+type = 'function'
+``````````
+name = 'n2'
+type = 'integer'
diff --git a/server-beta/libs/@lua/file.lni b/server-beta/libs/@lua/file.lni
new file mode 100644
index 00000000..387a10df
--- /dev/null
+++ b/server-beta/libs/@lua/file.lni
@@ -0,0 +1,151 @@
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'object',
+ name = 'FILE*',
+ },
+}
+
+[close]
+[[.args]]
+type = 'FILE*'
+[[.returns]]
+name = 'suc'
+type = 'boolean'
+default = true
+optional = 'after'
+``````````
+name = 'type'
+type = 'string'
+``````````
+name = 'code'
+[[.enums]]
+name = 'type'
+enum = '"exit"'
+``````````
+name = 'type'
+enum = '"signal"'
+
+[flush]
+[[.args]]
+type = 'FILE*'
+
+[lines]
+[[.args]]
+type = 'FILE*'
+``````````
+name = 'mode'
+type = '...'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'c',
+ type = {'string', 'number'},
+ }
+}
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+``````````
+name = 'mode'
+enum = '"a"'
+``````````
+name = 'mode'
+enum = '"l"'
+default = true
+``````````
+name = 'mode'
+enum = '"L"'
+``````````
+name = 'mode'
+code = 'number'
+
+[read]
+[[.args]]
+type = 'FILE*'
+``````````
+name = 'mode'
+type = '...'
+[[.returns]]
+type = {'string', 'number'}
+``````````
+type = '...'
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+``````````
+name = 'mode'
+enum = '"a"'
+``````````
+name = 'mode'
+enum = '"l"'
+default = true
+``````````
+name = 'mode'
+enum = '"L"'
+``````````
+name = 'mode'
+code = 'number'
+
+[seek]
+[[.args]]
+type = 'FILE*'
+``````````
+name = 'whence'
+type = 'string'
+optional = 'after'
+``````````
+name = 'offset'
+type = 'integer'
+default = 0
+optional = 'self'
+[[.returns]]
+name = 'offset'
+type = 'integer'
+``````````
+name = 'errmsg'
+type = 'string'
+optional = 'self'
+[[.enums]]
+name = 'whence'
+enum = '"set"'
+``````````
+name = 'whence'
+enum = '"cur"'
+default = true
+``````````
+name = 'whence'
+enum = '"end"'
+
+[setvbuf]
+[[.args]]
+type = 'FILE*'
+``````````
+name = 'mode'
+type = 'string'
+``````````
+name = 'size'
+type = 'integer'
+[[.enums]]
+name = 'mode'
+enum = '"no"'
+``````````
+name = 'mode'
+enum = '"full"'
+``````````
+name = 'mode'
+enum = '"line"'
+
+[write]
+[[.args]]
+type = 'FILE*'
+``````````
+type = '...'
+[[.returns]]
+type = 'FILE*'
+``````````
+name = 'errmsg'
+type = 'string'
+optional = 'self'
diff --git a/server-beta/libs/@lua/io.lni b/server-beta/libs/@lua/io.lni
new file mode 100644
index 00000000..00e8c9c8
--- /dev/null
+++ b/server-beta/libs/@lua/io.lni
@@ -0,0 +1,326 @@
+[io]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'io'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'io',
+ },
+ 2 = {
+ type = 'library',
+ name = 'io',
+ }
+}
+
+[stdin]
+type = 'FILE*'
+
+[stdout]
+type = 'FILE*'
+
+[stderr]
+type = 'FILE*'
+
+[close]
+[[.args]]
+name = 'file'
+type = 'FILE*'
+optional = 'self'
+[[.returns]]
+name = 'suc'
+type = 'boolean'
+default = true
+optional = 'after'
+``````````
+name = 'type'
+type = 'string'
+``````````
+name = 'code'
+[[.enums]]
+name = 'type'
+enum = '"exit"'
+``````````
+name = 'type'
+enum = '"signal"'
+
+[flush]
+
+[input]
+[[.args]]
+name = 'file'
+type = {'string', 'FILE*'}
+optional = 'self'
+[[.returns]]
+type = 'FILE*'
+optional = 'self'
+
+["lines Lua 5.1"]
+name = 'lines'
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'after'
+``````````
+name = 'mode'
+type = '...'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'c',
+ type = {'string', 'number'},
+ }
+}
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+``````````
+name = 'mode'
+enum = '"*a"'
+``````````
+name = 'mode'
+enum = '"*l"'
+default = true
+``````````
+name = 'mode'
+code = 'number'
+
+["lines Lua 5.3"]
+name = 'lines'
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'after'
+``````````
+name = 'mode'
+type = '...'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'c',
+ type = {'string', 'number'},
+ }
+}
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+``````````
+name = 'mode'
+enum = '"a"'
+``````````
+name = 'mode'
+enum = '"l"'
+default = true
+``````````
+name = 'mode'
+enum = '"L"'
+``````````
+name = 'mode'
+code = 'number'
+
+["lines LuaJIT"]
+name = 'lines'
+version = 'LuaJIT'
+[[.args]]
+name = 'filename'
+type = 'string'
+optional = 'after'
+``````````
+name = 'mode'
+type = '...'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'c',
+ type = {'string', 'number'},
+ }
+}
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+``````````
+name = 'mode'
+enum = '"*a"'
+``````````
+name = 'mode'
+enum = '"*l"'
+default = true
+``````````
+name = 'mode'
+enum = '"*L"'
+``````````
+name = 'mode'
+code = 'number'
+
+[open]
+[[.args]]
+name = 'filename'
+type = 'string'
+``````````
+name = 'mode'
+type = 'string'
+optional = 'self'
+default = 'r'
+[[.returns]]
+type = 'FILE*'
+[[.enums]]
+name = 'mode'
+enum = '"r"'
+default = true
+``````````
+name = 'mode'
+enum = '"w"'
+``````````
+name = 'mode'
+enum = '"a"'
+``````````
+name = 'mode'
+enum = '"r+"'
+``````````
+name = 'mode'
+enum = '"w+"'
+``````````
+name = 'mode'
+enum = '"a+"'
+
+[output:input]
+
+[popen]
+[[.args]]
+name = 'prog'
+type = 'string'
+``````````
+name = 'mode'
+type = 'string'
+optional = 'self'
+default = 'r'
+[[.returns]]
+name = 'file'
+type = 'FILE*'
+[[.enums]]
+name = 'mode'
+enum = '"r"'
+default = true
+``````````
+name = 'mode'
+enum = '"w"'
+
+["read Lua 5.1"]
+name = 'read'
+version = {'Lua 5.1', 'Lua 5.2'}
+[[.args]]
+name = 'mode'
+type = '...'
+[[.returns]]
+type = {'string', 'number'}
+``````````
+type = '...'
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+``````````
+name = 'mode'
+enum = '"*a"'
+``````````
+name = 'mode'
+enum = '"*l"'
+default = true
+``````````
+name = 'mode'
+code = 'number'
+
+["read Lua 5.3"]
+name = 'read'
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'mode'
+type = '...'
+[[.returns]]
+type = {'string', 'number'}
+``````````
+type = '...'
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+``````````
+name = 'mode'
+enum = '"a"'
+``````````
+name = 'mode'
+enum = '"l"'
+default = true
+``````````
+name = 'mode'
+enum = '"L"'
+``````````
+name = 'mode'
+code = 'number'
+
+["read LuaJIT"]
+name = 'read'
+version = 'LuaJIT'
+[[.args]]
+name = 'mode'
+type = '...'
+[[.returns]]
+type = {'string', 'number'}
+``````````
+type = '...'
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+``````````
+name = 'mode'
+enum = '"*a"'
+``````````
+name = 'mode'
+enum = '"*l"'
+default = true
+``````````
+name = 'mode'
+enum = '"*L"'
+``````````
+name = 'mode'
+code = 'number'
+
+[tmpfile]
+[[.returns]]
+type = 'FILE*'
+
+[type]
+[[.args]]
+name = 'obj'
+type = 'FILE*'
+[[.returns]]
+name = 'type'
+type = 'string'
+[[.enums]]
+name = 'type'
+enum = '"file"'
+``````````
+name = 'type'
+enum = '"closed file"'
+``````````
+name = 'type'
+code = 'nil'
+
+[write]
+[[.args]]
+type = '...'
+[[.returns]]
+type = 'FILE*'
+``````````
+name = 'errmsg'
+type = 'string'
+optional = 'self'
diff --git a/server-beta/libs/@lua/math.lni b/server-beta/libs/@lua/math.lni
new file mode 100644
index 00000000..aef488e1
--- /dev/null
+++ b/server-beta/libs/@lua/math.lni
@@ -0,0 +1,340 @@
+[math]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'math'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'math',
+ },
+ 2 = {
+ type = 'library',
+ name = 'math',
+ }
+}
+
+[abs]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[acos]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[asin]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+["atan Lua 5.1"]
+name = 'atan'
+version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
+[[.args]]
+name = 'y'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+["atan Lua 5.3"]
+name = 'atan'
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'y'
+type = 'number'
+``````````
+name = 'x'
+type = 'number'
+optional = 'self'
+default = 1
+[[.returns]]
+type = 'number'
+
+[atan2]
+version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
+[[.args]]
+name = 'y'
+type = 'number'
+``````````
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[ceil]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'integer'
+
+[cos]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[cosh]
+version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[deg]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[exp]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[floor]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'integer'
+
+[fmod]
+[[.args]]
+name = 'x'
+type = 'number'
+``````````
+name = 'y'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[frexp]
+version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+name = 'm'
+type = 'number'
+``````````
+name = 'e'
+type = 'number'
+
+[huge]
+type = 'number'
+
+[ldexp]
+version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
+[[.args]]
+name = 'm'
+type = 'number'
+``````````
+name = 'e'
+type = 'integer'
+[[.returns]]
+type = 'number'
+
+[log]
+[[.args]]
+name = 'x'
+type = 'number'
+``````````
+name = 'base'
+type = 'number'
+optional = 'self'
+default = 'e'
+[[.returns]]
+type = 'number'
+
+['log Lua 5.1']
+name = log
+version = 'Lua 5.1'
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[log10]
+version = 'Lua 5.1'
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[max]
+[[.args]]
+name = 'x'
+type = 'number'
+``````````
+type = '...'
+[[.returns]]
+type = 'number'
+
+[maxinteger]
+version = {'Lua 5.3', 'Lua 5.4'}
+type = 'integer'
+
+[min]
+[[.args]]
+name = 'x'
+type = 'number'
+``````````
+type = '...'
+[[.returns]]
+type = 'number'
+
+[mininteger]
+version = {'Lua 5.3', 'Lua 5.4'}
+type = 'integer'
+
+[modf]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'integer'
+``````````
+type = 'number'
+
+[pi]
+type = 'number'
+
+[pow]
+version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
+[[.args]]
+name = 'x'
+type = 'number'
+``````````
+name = 'y'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[rad]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[random]
+[[.args]]
+name = 'm'
+type = 'integer'
+optional = 'after'
+``````````
+name = 'n'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+type = 'number'
+
+[randomseed]
+[[.args]]
+name = 'x'
+type = 'integer'
+
+["randomseed Lua 5.4"]
+name = 'randomseed'
+version = 'Lua 5.4'
+[[.args]]
+name = 'x'
+type = 'integer'
+optional = 'after'
+``````````
+name = 'y'
+type = 'integer'
+optional = 'after'
+default = 0
+
+[sin]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[sinh]
+version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[sqrt]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[tan]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[tanh]
+version = {'Lua 5.1', 'Lua 5.2', 'LuaJIT'}
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'number'
+
+[tointeger]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+type = 'integer'
+
+[type]
+[[.args]]
+name = 'x'
+type = 'number'
+[[.returns]]
+name = 'type'
+type = 'string'
+[[.enums]]
+name = 'type'
+enum = '"integer"'
+``````````
+name = 'type'
+enum = '"float"'
+``````````
+name = 'type'
+code = 'nil'
+
+[ult]
+[[.args]]
+name = 'm'
+type = 'integer'
+``````````
+name = 'n'
+type = 'integer'
+[[.returns]]
+type = 'boolean'
diff --git a/server-beta/libs/@lua/os.lni b/server-beta/libs/@lua/os.lni
new file mode 100644
index 00000000..f6b69317
--- /dev/null
+++ b/server-beta/libs/@lua/os.lni
@@ -0,0 +1,176 @@
+[os]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'os'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'os',
+ },
+ 2 = {
+ type = 'library',
+ name = 'os',
+ }
+}
+
+[clock]
+[[.returns]]
+type = 'number'
+
+[date]
+[[.args]]
+name = 'format'
+type = 'string'
+optional = 'after'
+``````````
+name = 'time'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+type = 'string'
+
+[difftime]
+[[.args]]
+name = 't2'
+type = 'integer'
+``````````
+name = 't1'
+type = 'integer'
+[[.returns]]
+type = 'integer'
+
+[execute]
+[[.args]]
+name = 'command'
+type = 'string'
+optional = 'self'
+[[.returns]]
+name = 'suc'
+type = 'boolean'
+default = 'true'
+optional = 'after'
+``````````
+name = 'type'
+type = 'string'
+``````````
+name = 'code'
+type = 'integer'
+[[.enums]]
+type = 'type'
+enum = '"exit"'
+``````````
+type = 'type'
+enum = '"signal"'
+
+['execute Lua 5.1']
+name = 'execute'
+version = {'Lua 5.1', 'LuaJIT'}
+[[.args]]
+name = 'command'
+type = 'string'
+optional = 'self'
+[[.returns]]
+name = 'code'
+type = 'integer'
+
+[exit]
+[[.args]]
+name = 'code'
+type = {'boolean', 'integer'}
+optional = 'after'
+default = true
+``````````
+name = 'close'
+type = 'boolean'
+optional = 'self'
+
+['exit Lua 5.1']
+name = 'exit'
+version = 'Lua 5.1'
+[[.args]]
+name = 'code'
+type = 'integer'
+optional = 'after'
+default = 0
+
+[getenv]
+[[.args]]
+name = 'varname'
+type = 'string'
+[[.returns]]
+type = 'string'
+
+[remove]
+[[.args]]
+name = 'filename'
+type = 'string'
+[[.returns]]
+name = 'suc'
+type = 'boolean'
+``````````
+name = 'errmsg'
+type = 'string'
+optional = 'self'
+
+[rename]
+[[.args]]
+name = 'oldname'
+type = 'string'
+``````````
+name = 'newname'
+type = 'string'
+[[.returns]]
+name = 'suc'
+type = 'boolean'
+``````````
+name = 'errmsg'
+type = 'string'
+optional = 'self'
+
+[setlocale]
+[[.args]]
+name = 'locale'
+type = 'string'
+``````````
+name = 'category'
+type = 'string'
+optional = 'self'
+[[.returns]]
+name = 'locale'
+type = 'string'
+[[.enums]]
+name = 'category'
+enum = '"all"'
+default = true
+``````````
+name = 'category'
+enum = '"collate"'
+``````````
+name = 'category'
+enum = '"ctype"'
+``````````
+name = 'category'
+enum = '"monetary"'
+``````````
+name = 'category'
+enum = '"numeric"'
+``````````
+name = 'category'
+enum = '"time"'
+
+[time]
+[[.args]]
+type = 'table'
+optional = 'self'
+[[.returns]]
+type = 'integer'
+
+[tmpname]
+[[.returns]]
+type = 'string'
diff --git a/server-beta/libs/@lua/package.lni b/server-beta/libs/@lua/package.lni
new file mode 100644
index 00000000..4a520e89
--- /dev/null
+++ b/server-beta/libs/@lua/package.lni
@@ -0,0 +1,77 @@
+[package]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'package'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'package',
+ },
+ 2 = {
+ type = 'library',
+ name = 'package',
+ }
+}
+
+[config]
+type = 'string'
+
+[cpath]
+type = 'string'
+
+[loaded]
+type = 'table'
+
+[loaders]
+version = {'Lua 5.1', 'LuaJIT'}
+type = 'table'
+
+[loadlib]
+[[.args]]
+name = 'libname'
+type = 'string'
+``````````
+name = 'funcname'
+type = 'string'
+[[.returns]]
+
+[path]
+type = 'string'
+
+[preload]
+type = 'table'
+
+[searchers]
+version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4'}
+type = 'table'
+
+[searchpath]
+version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4', 'LuaJIT'}
+[[.args]]
+name = 'name'
+type = 'string'
+``````````
+name = 'path'
+type = 'string'
+``````````
+name = 'sep'
+type = 'string'
+optional = 'after'
+default = '.'
+``````````
+name = 'rep'
+type = 'string'
+optional = 'self'
+
+[seeall]
+version = {'Lua 5.1', 'LuaJIT'}
+special = seeall
+[[.args]]
+name = module
+type = table
diff --git a/server-beta/libs/@lua/string.lni b/server-beta/libs/@lua/string.lni
new file mode 100644
index 00000000..55bfde8a
--- /dev/null
+++ b/server-beta/libs/@lua/string.lni
@@ -0,0 +1,276 @@
+[string]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'string'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'string',
+ },
+ 2 = {
+ type = 'library',
+ name = 'string',
+ },
+ 3 = {
+ type = 'object',
+ name = 'string',
+ }
+}
+
+[byte]
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+type = 'integer'
+``````````
+type = '...'
+
+[char]
+[[.args]]
+name = 'byte'
+type = 'integer'
+``````````
+type = '...'
+[[.returns]]
+type = 'string'
+``````````
+type = '...'
+
+[dump]
+[[.args]]
+type = 'function'
+``````````
+name = 'strip'
+type = 'boolean'
+[[.returns]]
+name = 'binary'
+type = 'string'
+
+[find]
+[[.args]]
+type = 'string'
+``````````
+name = 'pattern'
+type = 'string'
+``````````
+name = 'init'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'plain'
+type = 'boolean'
+optional = 'self'
+[[.returns]]
+name = 'start'
+type = 'integer'
+``````````
+name = 'end'
+type = 'integer'
+``````````
+name = 'captured'
+type = '...'
+
+[format]
+[[.args]]
+type = 'string'
+``````````
+type = '...'
+[[.returns]]
+type = 'string'
+
+[gmatch]
+[[.args]]
+type = 'string'
+``````````
+name = 'pattern'
+type = 'string'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ type = 'string'
+ },
+ 2 = {
+ type = '...'
+ },
+}
+
+["gmatch Lua 5.4"]
+name = 'gmatch'
+version = 'Lua 5.4'
+[[.args]]
+type = 'string'
+``````````
+name = 'pattern'
+type = 'string'
+``````````
+name = 'init'
+type = 'integer'
+optional = 'after'
+default = 1
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ type = 'string'
+ },
+ 2 = {
+ type = '...'
+ },
+}
+
+[gsub]
+[[.args]]
+type = 'string'
+``````````
+name = 'pattern'
+type = 'string'
+``````````
+name = 'repl'
+type = {'string', 'table', 'function'}
+``````````
+name = 'n'
+type = 'integer'
+[[.returns]]
+type = 'string'
+``````````
+name = 'count'
+type = 'integer'
+
+[len]
+[[.args]]
+type = 'string'
+[[.returns]]
+type = 'integer'
+
+[lower]
+[[.args]]
+type = 'string'
+[[.returns]]
+type = 'string'
+
+[match]
+[[.args]]
+type = 'string'
+``````````
+name = 'pattern'
+type = 'string'
+``````````
+name = 'init'
+type = 'integer'
+optional = 'self'
+default = 1
+[[.returns]]
+name = 'captured'
+type = 'string'
+
+[pack]
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'fmt'
+type = 'string'
+``````````
+name = 'v1'
+type = 'string'
+``````````
+name = 'v2'
+type = 'string'
+``````````
+type = '...'
+[[.returns]]
+name = 'binary'
+type = 'string'
+
+[packsize]
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'fmt'
+type = 'string'
+[[.returns]]
+type = 'integer'
+
+[rep]
+[[.args]]
+type = 'string'
+``````````
+name = n
+type = 'integer'
+``````````
+name = 'sep'
+type = 'string'
+optional = 'self'
+default = ''
+[[.returns]]
+type = 'string'
+
+['rep Lua 5.1']
+name = rep
+version = 'Lua 5.1'
+[[.args]]
+type = 'string'
+``````````
+name = n
+type = 'integer'
+[[.returns]]
+type = 'string'
+
+[reverse]
+[[.args]]
+type = 'string'
+[[.returns]]
+type = 'string'
+
+[sub]
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
+default = -1
+[[.returns]]
+type = 'string'
+
+[unpack]
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'fmt'
+type = 'string'
+``````````
+name = 's'
+type = 'string'
+``````````
+name = 'pos'
+type = 'integer'
+optional = 'self'
+default = 1
+[[.returns]]
+type = '...'
+``````````
+name = 'offset'
+type = 'integer'
+
+[upper]
+[[.args]]
+type = 'string'
+[[.returns]]
+type = 'string'
diff --git a/server-beta/libs/@lua/table.lni b/server-beta/libs/@lua/table.lni
new file mode 100644
index 00000000..347756da
--- /dev/null
+++ b/server-beta/libs/@lua/table.lni
@@ -0,0 +1,123 @@
+[table]
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'table'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'table',
+ },
+ 2 = {
+ type = 'library',
+ name = 'table',
+ }
+}
+
+[concat]
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'sep'
+type = 'string'
+optional = 'after'
+default = ''
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+type = 'string'
+
+[insert]
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'pos'
+type = 'integer'
+optional = 'self'
+``````````
+name = 'value'
+type = 'any'
+
+[maxn]
+version = {'Lua 5.1', 'LuaJIT'}
+[[.args]]
+type = table
+[[.returns]]
+type = integer
+
+[move]
+version = {'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'a1'
+type = 'table'
+``````````
+name = 'f'
+type = 'integer'
+``````````
+name = 'e'
+type = 'integer'
+``````````
+name = 't'
+type = 'integer'
+``````````
+name = 'a2'
+type = 'table'
+optional = 'self'
+[[.returns]]
+name = 'a2'
+type = 'table'
+
+[pack]
+version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+type = '...'
+[[.returns]]
+type = 'table'
+
+[remove]
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'pos'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+
+[sort]
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'comp'
+type = 'function'
+optional = 'self'
+
+[unpack]
+version = {'Lua 5.2', 'Lua 5.3', 'Lua 5.4'}
+[[.args]]
+name = 'list'
+type = 'table'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+type = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
diff --git a/server-beta/libs/@lua/utf8.lni b/server-beta/libs/@lua/utf8.lni
new file mode 100644
index 00000000..876fdd9c
--- /dev/null
+++ b/server-beta/libs/@lua/utf8.lni
@@ -0,0 +1,174 @@
+[utf8]
+version = {'Lua 5.3', 'Lua 5.4'}
+type = 'table'
+[[.source]]
+type = 'global'
+``````````
+type = 'library'
+name = 'utf8'
+
+<default>
+version = {'Lua 5.3', 'Lua 5.4'}
+type = 'function'
+parent = {
+ 1 = {
+ type = 'global',
+ name = 'utf8',
+ },
+ 2 = {
+ type = 'library',
+ name = 'utf8',
+ }
+}
+
+[char]
+[[.args]]
+name = 'code'
+type = 'integer'
+``````````
+type = '...'
+[[.returns]]
+type = 'string'
+
+[charpattern]
+type = 'string'
+code = [=['[\0-\x7F\xC2-\xF4][\x80-\xBF]*']=]
+
+[codes]
+[[.args]]
+type = 'string'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'p',
+ type = 'integer',
+ },
+ 2 = {
+ name = 'c',
+ type = 'integer',
+ }
+}
+
+["codes Lua 5.4"]
+name = 'codes'
+version = 'Lua 5.4'
+[[.args]]
+type = 'string'
+``````````
+name = 'lax'
+type = 'boolean'
+optional = 'after'
+[[.returns]]
+type = 'function'
+returns = {
+ 1 = {
+ name = 'p',
+ type = 'integer',
+ },
+ 2 = {
+ name = 'c',
+ type = 'integer',
+ }
+}
+
+[codepoint]
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
+[[.returns]]
+name = 'code'
+type = 'integer'
+``````````
+type = '...'
+
+["codepoint Lua 5.4"]
+name = 'codepoint'
+version = 'Lua 5.4'
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'after'
+``````````
+name = 'lax'
+type = 'boolean'
+optional = 'after'
+[[.returns]]
+name = 'code'
+type = 'integer'
+``````````
+type = '...'
+
+[len]
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'self'
+default = -1
+[[.returns]]
+type = 'integer'
+``````````
+name = 'errpos'
+type = 'integer'
+optional = 'self'
+
+["len Lua 5.4"]
+name = 'len'
+version = 'Lua 5.4'
+[[.args]]
+type = 'string'
+``````````
+name = 'i'
+type = 'integer'
+optional = 'after'
+default = 1
+``````````
+name = 'j'
+type = 'integer'
+optional = 'after'
+default = -1
+``````````
+name = 'lax'
+type = 'boolean'
+optional = 'after'
+[[.returns]]
+type = 'integer'
+``````````
+name = 'errpos'
+type = 'integer'
+optional = 'self'
+
+[offset]
+[[.args]]
+type = 'string'
+``````````
+name = 'n'
+type = 'integer'
+``````````
+name = 'i'
+type = 'integer'
+[[.returns]]
+name = 'p'
+type = 'integer'
diff --git a/server-beta/libs/@luaJIT/bit.lni b/server-beta/libs/@luaJIT/bit.lni
new file mode 100644
index 00000000..742d2bc5
--- /dev/null
+++ b/server-beta/libs/@luaJIT/bit.lni
@@ -0,0 +1,145 @@
+<default>
+version = LuaJIT
+
+[bit]
+type = table
+[[.source]]
+type = library
+name = bit
+``````````
+type = global
+name = bit
+
+<default>
+type = function
+parent = {
+ 1 = {
+ type = 'library',
+ name = 'bit',
+ },
+ 2 = {
+ type = 'global',
+ name = 'bit',
+ },
+}
+
+[tobit]
+[[.args]]
+name = x
+type = number
+[[.returns]]
+type = number
+
+[tohex]
+[[.args]]
+name = x
+type = number
+``````````
+name = n
+type = number
+optional = after
+[[.returns]]
+type = number
+
+[bnot]
+[[.args]]
+name = x
+type = number
+[[.returns]]
+type = number
+
+[bor]
+[[.args]]
+name = x1
+type = number
+``````````
+name = x2
+type = number
+optional = after
+`````````
+type = '...'
+[[.returns]]
+type = number
+
+[band]
+[[.args]]
+name = x1
+type = number
+``````````
+name = x2
+type = number
+optional = after
+`````````
+type = '...'
+[[.returns]]
+type = number
+
+[bxor]
+[[.args]]
+name = x1
+type = number
+``````````
+name = x2
+type = number
+optional = after
+`````````
+type = '...'
+[[.returns]]
+type = number
+
+[lshift]
+[[.args]]
+name = x
+type = number
+``````````
+name = n
+type = number
+[[.returns]]
+type = number
+
+[rshift]
+[[.args]]
+name = x
+type = number
+``````````
+name = n
+type = number
+[[.returns]]
+type = number
+
+[arshift]
+[[.args]]
+name = x
+type = number
+``````````
+name = n
+type = number
+[[.returns]]
+type = number
+
+[rol]
+[[.args]]
+name = x
+type = number
+``````````
+name = n
+type = number
+[[.returns]]
+type = number
+
+[ror]
+[[.args]]
+name = x
+type = number
+``````````
+name = n
+type = number
+[[.returns]]
+type = number
+
+[bswap]
+[[.args]]
+name = x
+type = number
+[[.returns]]
+type = number
diff --git a/server-beta/libs/@luaJIT/ffi.lni b/server-beta/libs/@luaJIT/ffi.lni
new file mode 100644
index 00000000..567999f3
--- /dev/null
+++ b/server-beta/libs/@luaJIT/ffi.lni
@@ -0,0 +1,194 @@
+<default>
+version = LuaJIT
+
+[ffi]
+type = table
+[[.source]]
+type = library
+name = ffi
+
+<default>
+type = function
+parent = {
+ 1 = {
+ type = 'library',
+ name = 'ffi',
+ },
+}
+
+[cdef]
+[[.args]]
+name = def
+type = string
+
+[C]
+type = namespace
+
+[load]
+[[.args]]
+name = name
+type = string
+``````````
+name = global
+type = boolean
+optional = after
+[[.returns]]
+name = clib
+type = namespace
+
+[new]
+[[.args]]
+name = ct
+type = string
+``````````
+name = nelem
+type = number
+optional = self
+``````````
+name = init
+optional = after
+``````````
+type = '...'
+[[.returns]]
+type = cdata
+
+[typeof]
+[[.args]]
+name = ct
+type = string
+[[.returns]]
+type = ctype
+
+[cast]
+[[.args]]
+name = ct
+type = string
+``````````
+name = init
+[[.returns]]
+type = cdata
+
+[metatype]
+[[.args]]
+name = ct
+type = string
+``````````
+name = metatable
+type = table
+[[.returns]]
+type = ctype
+
+[gc]
+[[.args]]
+type = cdata
+``````````
+name = finalizer
+type = function
+[[.returns]]
+type = cdata
+
+[sizeof]
+[[.args]]
+name = ct
+type = string
+``````````
+name = nelem
+type = number
+optional = after
+[[.returns]]
+name = size
+type = number
+
+[alignof]
+[[.args]]
+name = ct
+type = string
+[[.returns]]
+name = align
+type = number
+
+[offsetof]
+[[.args]]
+name = ct
+type = string
+``````````
+name = field
+type = string
+[[.returns]]
+name = ofs
+type = number
+``````````
+name = bpos
+type = number
+optional = after
+``````````
+name = bsize
+type = number
+
+[istype]
+[[.args]]
+name = ct
+type = string
+``````````
+name = obj
+[[.returns]]
+name = status
+type = boolean
+
+[errno]
+[[.args]]
+name = newerr
+type = number
+optional = after
+[[.returns]]
+name = err
+type = number
+
+[string]
+[[.args]]
+name = ptr
+type = number
+``````````
+name = len
+type = number
+optional = after
+[[.returns]]
+name = str
+type = string
+
+[copy]
+[[.args]]
+name = dst
+type = number
+``````````
+name = src
+type = number/string
+``````````
+name = len
+type = number
+
+[fill]
+[[.args]]
+name = dst
+type = number
+``````````
+name = len
+type = number
+``````````
+name = c
+type = string
+optional = after
+
+[abi]
+[[.args]]
+name = param
+type = string
+[[.returns]]
+name = status
+type = boolean
+
+[os]
+type = 'string'
+
+[arch]
+type = 'string'
diff --git a/server-beta/libs/@luaJIT/jit.lni b/server-beta/libs/@luaJIT/jit.lni
new file mode 100644
index 00000000..d7c91d11
--- /dev/null
+++ b/server-beta/libs/@luaJIT/jit.lni
@@ -0,0 +1,73 @@
+<default>
+version = LuaJIT
+
+[jit]
+type = table
+[[.source]]
+type = library
+name = jit
+``````````
+type = global
+name = jit
+
+<default>
+type = function
+parent = {
+ 1 = {
+ type = 'library',
+ name = 'jit',
+ },
+ 2 = {
+ type = 'global',
+ name = 'jit',
+ },
+}
+
+[on]
+[[.args]]
+type = {'function', 'boolean'}
+optional = after
+``````````
+type = boolean
+optional = after
+
+[off]
+[[.args]]
+type = {'function', 'boolean'}
+optional = after
+``````````
+type = boolean
+optional = after
+
+[flush]
+[[.args]]
+type = {'function', 'boolean'}
+optional = after
+``````````
+type = boolean
+optional = after
+
+[status]
+[[.returns]]
+name = status
+type = boolean
+``````````
+type = '...'
+
+[version]
+type = string
+
+[version_num]
+type = string
+
+[os]
+type = string
+
+[arch]
+type = string
+
+[opt]
+type = table
+
+[util]
+type = table
diff --git a/server-beta/libs/bee/filesystem.lni b/server-beta/libs/bee/filesystem.lni
new file mode 100644
index 00000000..627dbfe6
--- /dev/null
+++ b/server-beta/libs/bee/filesystem.lni
@@ -0,0 +1,25 @@
+[filesystem]
+type = 'table'
+nick = 'bee::filesystem'
+[[.source]]
+type = 'library'
+name = 'bee.filesystem'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'library',
+ name = 'bee.filesystem',
+ nick = 'fs',
+ },
+}
+
+[current_path]
+[[.args]]
+name = 'new_path'
+type = 'bee::filesystem'
+optional = 'self'
+[[.returns]]
+type = 'bee::filesystem'
+optional = 'self'
diff --git a/server-beta/libs/jass/common.lni b/server-beta/libs/jass/common.lni
new file mode 100644
index 00000000..3c0e3ae7
--- /dev/null
+++ b/server-beta/libs/jass/common.lni
@@ -0,0 +1,12452 @@
+[common]
+type = 'table'
+[[.source]]
+type = 'library'
+name = 'jass.common'
+nick = 'jass'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'library',
+ name = 'jass.common',
+ nick = 'jass',
+ },
+}
+
+[ConvertRace]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "race"
+
+[ConvertAllianceType]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "alliancetype"
+
+[ConvertRacePref]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "racepreference"
+
+[ConvertIGameState]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "igamestate"
+
+[ConvertFGameState]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "fgamestate"
+
+[ConvertPlayerState]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "playerstate"
+
+[ConvertPlayerScore]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "playerscore"
+
+[ConvertPlayerGameResult]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "playergameresult"
+
+[ConvertUnitState]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "unitstate"
+
+[ConvertAIDifficulty]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "aidifficulty"
+
+[ConvertGameEvent]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "gameevent"
+
+[ConvertPlayerEvent]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "playerevent"
+
+[ConvertPlayerUnitEvent]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "playerunitevent"
+
+[ConvertWidgetEvent]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "widgetevent"
+
+[ConvertDialogEvent]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "dialogevent"
+
+[ConvertUnitEvent]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "unitevent"
+
+[ConvertLimitOp]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "limitop"
+
+[ConvertUnitType]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "unittype"
+
+[ConvertGameSpeed]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "gamespeed"
+
+[ConvertPlacement]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "placement"
+
+[ConvertStartLocPrio]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "startlocprio"
+
+[ConvertGameDifficulty]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "gamedifficulty"
+
+[ConvertGameType]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "gametype"
+
+[ConvertMapFlag]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "mapflag"
+
+[ConvertMapVisibility]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "mapvisibility"
+
+[ConvertMapSetting]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "mapsetting"
+
+[ConvertMapDensity]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "mapdensity"
+
+[ConvertMapControl]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "mapcontrol"
+
+[ConvertPlayerColor]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "playercolor"
+
+[ConvertPlayerSlotState]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "playerslotstate"
+
+[ConvertVolumeGroup]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "volumegroup"
+
+[ConvertCameraField]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "camerafield"
+
+[ConvertBlendMode]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "blendmode"
+
+[ConvertRarityControl]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "raritycontrol"
+
+[ConvertTexMapFlags]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "texmapflags"
+
+[ConvertFogState]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "fogstate"
+
+[ConvertEffectType]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "effecttype"
+
+[ConvertVersion]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "version"
+
+[ConvertItemType]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "itemtype"
+
+[ConvertAttackType]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "attacktype"
+
+[ConvertDamageType]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "damagetype"
+
+[ConvertWeaponType]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "weapontype"
+
+[ConvertSoundType]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "soundtype"
+
+[ConvertPathingType]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "pathingtype"
+
+[OrderId]
+[[.args]]
+name = "orderIdString"
+type = "string"
+[[.returns]]
+type = "integer"
+
+[OrderId2String]
+[[.args]]
+name = "orderId"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[UnitId]
+[[.args]]
+name = "unitIdString"
+type = "string"
+[[.returns]]
+type = "integer"
+
+[UnitId2String]
+[[.args]]
+name = "unitId"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[AbilityId]
+[[.args]]
+name = "abilityIdString"
+type = "string"
+[[.returns]]
+type = "integer"
+
+[AbilityId2String]
+[[.args]]
+name = "abilityId"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[GetObjectName]
+[[.args]]
+name = "objectId"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[Deg2Rad]
+[[.args]]
+name = "degrees"
+type = "number"
+[[.returns]]
+type = "number"
+
+[Rad2Deg]
+[[.args]]
+name = "radians"
+type = "number"
+[[.returns]]
+type = "number"
+
+[Sin]
+[[.args]]
+name = "radians"
+type = "number"
+[[.returns]]
+type = "number"
+
+[Cos]
+[[.args]]
+name = "radians"
+type = "number"
+[[.returns]]
+type = "number"
+
+[Tan]
+[[.args]]
+name = "radians"
+type = "number"
+[[.returns]]
+type = "number"
+
+[Asin]
+[[.args]]
+name = "y"
+type = "number"
+[[.returns]]
+type = "number"
+
+[Acos]
+[[.args]]
+name = "x"
+type = "number"
+[[.returns]]
+type = "number"
+
+[Atan]
+[[.args]]
+name = "x"
+type = "number"
+[[.returns]]
+type = "number"
+
+[Atan2]
+[[.args]]
+name = "y"
+type = "number"
+``````````
+name = "x"
+type = "number"
+[[.returns]]
+type = "number"
+
+[SquareRoot]
+[[.args]]
+name = "x"
+type = "number"
+[[.returns]]
+type = "number"
+
+[Pow]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "power"
+type = "number"
+[[.returns]]
+type = "number"
+
+[I2R]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "number"
+
+[R2I]
+[[.args]]
+name = "r"
+type = "number"
+[[.returns]]
+type = "integer"
+
+[I2S]
+[[.args]]
+name = "i"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[R2S]
+[[.args]]
+name = "r"
+type = "number"
+[[.returns]]
+type = "string"
+
+[R2SW]
+[[.args]]
+name = "r"
+type = "number"
+``````````
+name = "width"
+type = "integer"
+``````````
+name = "precision"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[S2I]
+[[.args]]
+name = "s"
+type = "string"
+[[.returns]]
+type = "integer"
+
+[S2R]
+[[.args]]
+name = "s"
+type = "string"
+[[.returns]]
+type = "number"
+
+[GetHandleId]
+[[.args]]
+name = "h"
+type = "handle"
+[[.returns]]
+type = "integer"
+
+[SubString]
+[[.args]]
+name = "source"
+type = "string"
+``````````
+name = "start"
+type = "integer"
+``````````
+name = "end"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[StringLength]
+[[.args]]
+name = "s"
+type = "string"
+[[.returns]]
+type = "integer"
+
+[StringCase]
+[[.args]]
+name = "source"
+type = "string"
+``````````
+name = "upper"
+type = "boolean"
+[[.returns]]
+type = "string"
+
+[StringHash]
+[[.args]]
+name = "s"
+type = "string"
+[[.returns]]
+type = "integer"
+
+[GetLocalizedString]
+[[.args]]
+name = "source"
+type = "string"
+[[.returns]]
+type = "string"
+
+[GetLocalizedHotkey]
+[[.args]]
+name = "source"
+type = "string"
+[[.returns]]
+type = "integer"
+
+[SetMapName]
+[[.args]]
+name = "name"
+type = "string"
+
+[SetMapDescription]
+[[.args]]
+name = "description"
+type = "string"
+
+[SetTeams]
+[[.args]]
+name = "teamcount"
+type = "integer"
+
+[SetPlayers]
+[[.args]]
+name = "playercount"
+type = "integer"
+
+[DefineStartLocation]
+[[.args]]
+name = "whichStartLoc"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+
+[DefineStartLocationLoc]
+[[.args]]
+name = "whichStartLoc"
+type = "integer"
+``````````
+name = "whichLocation"
+type = "location"
+
+[SetStartLocPrioCount]
+[[.args]]
+name = "whichStartLoc"
+type = "integer"
+``````````
+name = "prioSlotCount"
+type = "integer"
+
+[SetStartLocPrio]
+[[.args]]
+name = "whichStartLoc"
+type = "integer"
+``````````
+name = "prioSlotIndex"
+type = "integer"
+``````````
+name = "otherStartLocIndex"
+type = "integer"
+``````````
+name = "priority"
+type = "startlocprio"
+
+[GetStartLocPrioSlot]
+[[.args]]
+name = "whichStartLoc"
+type = "integer"
+``````````
+name = "prioSlotIndex"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[GetStartLocPrio]
+[[.args]]
+name = "whichStartLoc"
+type = "integer"
+``````````
+name = "prioSlotIndex"
+type = "integer"
+[[.returns]]
+type = "startlocprio"
+
+[SetGameTypeSupported]
+[[.args]]
+name = "whichGameType"
+type = "gametype"
+``````````
+name = "value"
+type = "boolean"
+
+[SetMapFlag]
+[[.args]]
+name = "whichMapFlag"
+type = "mapflag"
+``````````
+name = "value"
+type = "boolean"
+
+[SetGamePlacement]
+[[.args]]
+name = "whichPlacementType"
+type = "placement"
+
+[SetGameSpeed]
+[[.args]]
+name = "whichspeed"
+type = "gamespeed"
+
+[SetGameDifficulty]
+[[.args]]
+name = "whichdifficulty"
+type = "gamedifficulty"
+
+[SetResourceDensity]
+[[.args]]
+name = "whichdensity"
+type = "mapdensity"
+
+[SetCreatureDensity]
+[[.args]]
+name = "whichdensity"
+type = "mapdensity"
+
+[GetTeams]
+[[.returns]]
+type = "integer"
+
+[GetPlayers]
+[[.returns]]
+type = "integer"
+
+[IsGameTypeSupported]
+[[.args]]
+name = "whichGameType"
+type = "gametype"
+[[.returns]]
+type = "boolean"
+
+[GetGameTypeSelected]
+[[.returns]]
+type = "gametype"
+
+[IsMapFlagSet]
+[[.args]]
+name = "whichMapFlag"
+type = "mapflag"
+[[.returns]]
+type = "boolean"
+
+[GetGamePlacement]
+[[.returns]]
+type = "placement"
+
+[GetGameSpeed]
+[[.returns]]
+type = "gamespeed"
+
+[GetGameDifficulty]
+[[.returns]]
+type = "gamedifficulty"
+
+[GetResourceDensity]
+[[.returns]]
+type = "mapdensity"
+
+[GetCreatureDensity]
+[[.returns]]
+type = "mapdensity"
+
+[GetStartLocationX]
+[[.args]]
+name = "whichStartLocation"
+type = "integer"
+[[.returns]]
+type = "number"
+
+[GetStartLocationY]
+[[.args]]
+name = "whichStartLocation"
+type = "integer"
+[[.returns]]
+type = "number"
+
+[GetStartLocationLoc]
+[[.args]]
+name = "whichStartLocation"
+type = "integer"
+[[.returns]]
+type = "location"
+
+[SetPlayerTeam]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichTeam"
+type = "integer"
+
+[SetPlayerStartLocation]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "startLocIndex"
+type = "integer"
+
+[ForcePlayerStartLocation]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "startLocIndex"
+type = "integer"
+
+[SetPlayerColor]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "color"
+type = "playercolor"
+
+[SetPlayerAlliance]
+[[.args]]
+name = "sourcePlayer"
+type = "player"
+``````````
+name = "otherPlayer"
+type = "player"
+``````````
+name = "whichAllianceSetting"
+type = "alliancetype"
+``````````
+name = "value"
+type = "boolean"
+
+[SetPlayerTaxRate]
+[[.args]]
+name = "sourcePlayer"
+type = "player"
+``````````
+name = "otherPlayer"
+type = "player"
+``````````
+name = "whichResource"
+type = "playerstate"
+``````````
+name = "rate"
+type = "integer"
+
+[SetPlayerRacePreference]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichRacePreference"
+type = "racepreference"
+
+[SetPlayerRaceSelectable]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "value"
+type = "boolean"
+
+[SetPlayerController]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "controlType"
+type = "mapcontrol"
+
+[SetPlayerName]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "name"
+type = "string"
+
+[SetPlayerOnScoreScreen]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "flag"
+type = "boolean"
+
+[GetPlayerTeam]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "integer"
+
+[GetPlayerStartLocation]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "integer"
+
+[GetPlayerColor]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "playercolor"
+
+[GetPlayerSelectable]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[GetPlayerController]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "mapcontrol"
+
+[GetPlayerSlotState]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "playerslotstate"
+
+[GetPlayerTaxRate]
+[[.args]]
+name = "sourcePlayer"
+type = "player"
+``````````
+name = "otherPlayer"
+type = "player"
+``````````
+name = "whichResource"
+type = "playerstate"
+[[.returns]]
+type = "integer"
+
+[IsPlayerRacePrefSet]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "pref"
+type = "racepreference"
+[[.returns]]
+type = "boolean"
+
+[GetPlayerName]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "string"
+
+[CreateTimer]
+[[.returns]]
+type = "timer"
+
+[DestroyTimer]
+[[.args]]
+name = "whichTimer"
+type = "timer"
+
+[TimerStart]
+[[.args]]
+name = "whichTimer"
+type = "timer"
+``````````
+name = "timeout"
+type = "number"
+``````````
+name = "periodic"
+type = "boolean"
+``````````
+name = "handlerFunc"
+type = "code"
+
+[TimerGetElapsed]
+[[.args]]
+name = "whichTimer"
+type = "timer"
+[[.returns]]
+type = "number"
+
+[TimerGetRemaining]
+[[.args]]
+name = "whichTimer"
+type = "timer"
+[[.returns]]
+type = "number"
+
+[TimerGetTimeout]
+[[.args]]
+name = "whichTimer"
+type = "timer"
+[[.returns]]
+type = "number"
+
+[PauseTimer]
+[[.args]]
+name = "whichTimer"
+type = "timer"
+
+[ResumeTimer]
+[[.args]]
+name = "whichTimer"
+type = "timer"
+
+[GetExpiredTimer]
+[[.returns]]
+type = "timer"
+
+[CreateGroup]
+[[.returns]]
+type = "group"
+
+[DestroyGroup]
+[[.args]]
+name = "whichGroup"
+type = "group"
+
+[GroupAddUnit]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "whichUnit"
+type = "unit"
+
+[GroupRemoveUnit]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "whichUnit"
+type = "unit"
+
+[GroupClear]
+[[.args]]
+name = "whichGroup"
+type = "group"
+
+[GroupEnumUnitsOfType]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "unitname"
+type = "string"
+``````````
+name = "filter"
+type = "boolexpr"
+
+[GroupEnumUnitsOfPlayer]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "filter"
+type = "boolexpr"
+
+[GroupEnumUnitsOfTypeCounted]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "unitname"
+type = "string"
+``````````
+name = "filter"
+type = "boolexpr"
+``````````
+name = "countLimit"
+type = "integer"
+
+[GroupEnumUnitsInRect]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "r"
+type = "rect"
+``````````
+name = "filter"
+type = "boolexpr"
+
+[GroupEnumUnitsInRectCounted]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "r"
+type = "rect"
+``````````
+name = "filter"
+type = "boolexpr"
+``````````
+name = "countLimit"
+type = "integer"
+
+[GroupEnumUnitsInRange]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "filter"
+type = "boolexpr"
+
+[GroupEnumUnitsInRangeOfLoc]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "whichLocation"
+type = "location"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "filter"
+type = "boolexpr"
+
+[GroupEnumUnitsInRangeCounted]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "filter"
+type = "boolexpr"
+``````````
+name = "countLimit"
+type = "integer"
+
+[GroupEnumUnitsInRangeOfLocCounted]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "whichLocation"
+type = "location"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "filter"
+type = "boolexpr"
+``````````
+name = "countLimit"
+type = "integer"
+
+[GroupEnumUnitsSelected]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "filter"
+type = "boolexpr"
+
+[GroupImmediateOrder]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "order"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[GroupImmediateOrderById]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "order"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[GroupPointOrder]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "order"
+type = "string"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[GroupPointOrderLoc]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "order"
+type = "string"
+``````````
+name = "whichLocation"
+type = "location"
+[[.returns]]
+type = "boolean"
+
+[GroupPointOrderById]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "order"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[GroupPointOrderByIdLoc]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "order"
+type = "integer"
+``````````
+name = "whichLocation"
+type = "location"
+[[.returns]]
+type = "boolean"
+
+[GroupTargetOrder]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "order"
+type = "string"
+``````````
+name = "targetWidget"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[GroupTargetOrderById]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "order"
+type = "integer"
+``````````
+name = "targetWidget"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[ForGroup]
+[[.args]]
+name = "whichGroup"
+type = "group"
+``````````
+name = "callback"
+type = "code"
+
+[FirstOfGroup]
+[[.args]]
+name = "whichGroup"
+type = "group"
+[[.returns]]
+type = "unit"
+
+[CreateForce]
+[[.returns]]
+type = "force"
+
+[DestroyForce]
+[[.args]]
+name = "whichForce"
+type = "force"
+
+[ForceAddPlayer]
+[[.args]]
+name = "whichForce"
+type = "force"
+``````````
+name = "whichPlayer"
+type = "player"
+
+[ForceRemovePlayer]
+[[.args]]
+name = "whichForce"
+type = "force"
+``````````
+name = "whichPlayer"
+type = "player"
+
+[ForceClear]
+[[.args]]
+name = "whichForce"
+type = "force"
+
+[ForceEnumPlayers]
+[[.args]]
+name = "whichForce"
+type = "force"
+``````````
+name = "filter"
+type = "boolexpr"
+
+[ForceEnumPlayersCounted]
+[[.args]]
+name = "whichForce"
+type = "force"
+``````````
+name = "filter"
+type = "boolexpr"
+``````````
+name = "countLimit"
+type = "integer"
+
+[ForceEnumAllies]
+[[.args]]
+name = "whichForce"
+type = "force"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "filter"
+type = "boolexpr"
+
+[ForceEnumEnemies]
+[[.args]]
+name = "whichForce"
+type = "force"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "filter"
+type = "boolexpr"
+
+[ForForce]
+[[.args]]
+name = "whichForce"
+type = "force"
+``````````
+name = "callback"
+type = "code"
+
+[Rect]
+[[.args]]
+name = "minx"
+type = "number"
+``````````
+name = "miny"
+type = "number"
+``````````
+name = "maxx"
+type = "number"
+``````````
+name = "maxy"
+type = "number"
+[[.returns]]
+type = "rect"
+
+[RectFromLoc]
+[[.args]]
+name = "min"
+type = "location"
+``````````
+name = "max"
+type = "location"
+[[.returns]]
+type = "rect"
+
+[RemoveRect]
+[[.args]]
+name = "whichRect"
+type = "rect"
+
+[SetRect]
+[[.args]]
+name = "whichRect"
+type = "rect"
+``````````
+name = "minx"
+type = "number"
+``````````
+name = "miny"
+type = "number"
+``````````
+name = "maxx"
+type = "number"
+``````````
+name = "maxy"
+type = "number"
+
+[SetRectFromLoc]
+[[.args]]
+name = "whichRect"
+type = "rect"
+``````````
+name = "min"
+type = "location"
+``````````
+name = "max"
+type = "location"
+
+[MoveRectTo]
+[[.args]]
+name = "whichRect"
+type = "rect"
+``````````
+name = "newCenterX"
+type = "number"
+``````````
+name = "newCenterY"
+type = "number"
+
+[MoveRectToLoc]
+[[.args]]
+name = "whichRect"
+type = "rect"
+``````````
+name = "newCenterLoc"
+type = "location"
+
+[GetRectCenterX]
+[[.args]]
+name = "whichRect"
+type = "rect"
+[[.returns]]
+type = "number"
+
+[GetRectCenterY]
+[[.args]]
+name = "whichRect"
+type = "rect"
+[[.returns]]
+type = "number"
+
+[GetRectMinX]
+[[.args]]
+name = "whichRect"
+type = "rect"
+[[.returns]]
+type = "number"
+
+[GetRectMinY]
+[[.args]]
+name = "whichRect"
+type = "rect"
+[[.returns]]
+type = "number"
+
+[GetRectMaxX]
+[[.args]]
+name = "whichRect"
+type = "rect"
+[[.returns]]
+type = "number"
+
+[GetRectMaxY]
+[[.args]]
+name = "whichRect"
+type = "rect"
+[[.returns]]
+type = "number"
+
+[CreateRegion]
+[[.returns]]
+type = "region"
+
+[RemoveRegion]
+[[.args]]
+name = "whichRegion"
+type = "region"
+
+[RegionAddRect]
+[[.args]]
+name = "whichRegion"
+type = "region"
+``````````
+name = "r"
+type = "rect"
+
+[RegionClearRect]
+[[.args]]
+name = "whichRegion"
+type = "region"
+``````````
+name = "r"
+type = "rect"
+
+[RegionAddCell]
+[[.args]]
+name = "whichRegion"
+type = "region"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+
+[RegionAddCellAtLoc]
+[[.args]]
+name = "whichRegion"
+type = "region"
+``````````
+name = "whichLocation"
+type = "location"
+
+[RegionClearCell]
+[[.args]]
+name = "whichRegion"
+type = "region"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+
+[RegionClearCellAtLoc]
+[[.args]]
+name = "whichRegion"
+type = "region"
+``````````
+name = "whichLocation"
+type = "location"
+
+[Location]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "location"
+
+[RemoveLocation]
+[[.args]]
+name = "whichLocation"
+type = "location"
+
+[MoveLocation]
+[[.args]]
+name = "whichLocation"
+type = "location"
+``````````
+name = "newX"
+type = "number"
+``````````
+name = "newY"
+type = "number"
+
+[GetLocationX]
+[[.args]]
+name = "whichLocation"
+type = "location"
+[[.returns]]
+type = "number"
+
+[GetLocationY]
+[[.args]]
+name = "whichLocation"
+type = "location"
+[[.returns]]
+type = "number"
+
+[GetLocationZ]
+[[.args]]
+name = "whichLocation"
+type = "location"
+[[.returns]]
+type = "number"
+
+[IsUnitInRegion]
+[[.args]]
+name = "whichRegion"
+type = "region"
+``````````
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[IsPointInRegion]
+[[.args]]
+name = "whichRegion"
+type = "region"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[IsLocationInRegion]
+[[.args]]
+name = "whichRegion"
+type = "region"
+``````````
+name = "whichLocation"
+type = "location"
+[[.returns]]
+type = "boolean"
+
+[GetWorldBounds]
+[[.returns]]
+type = "rect"
+
+[CreateTrigger]
+[[.returns]]
+type = "trigger"
+
+[DestroyTrigger]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+
+[ResetTrigger]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+
+[EnableTrigger]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+
+[DisableTrigger]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+
+[IsTriggerEnabled]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+[[.returns]]
+type = "boolean"
+
+[TriggerWaitOnSleeps]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "flag"
+type = "boolean"
+
+[IsTriggerWaitOnSleeps]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+[[.returns]]
+type = "boolean"
+
+[GetFilterUnit]
+[[.returns]]
+type = "unit"
+
+[GetEnumUnit]
+[[.returns]]
+type = "unit"
+
+[GetFilterDestructable]
+[[.returns]]
+type = "destructable"
+
+[GetEnumDestructable]
+[[.returns]]
+type = "destructable"
+
+[GetFilterItem]
+[[.returns]]
+type = "item"
+
+[GetEnumItem]
+[[.returns]]
+type = "item"
+
+[GetFilterPlayer]
+[[.returns]]
+type = "player"
+
+[GetEnumPlayer]
+[[.returns]]
+type = "player"
+
+[GetTriggeringTrigger]
+[[.returns]]
+type = "trigger"
+
+[GetTriggerEventId]
+[[.returns]]
+type = "eventid"
+
+[GetTriggerEvalCount]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+[[.returns]]
+type = "integer"
+
+[GetTriggerExecCount]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+[[.returns]]
+type = "integer"
+
+[ExecuteFunc]
+[[.args]]
+name = "funcName"
+type = "string"
+
+[And]
+[[.args]]
+name = "operandA"
+type = "boolexpr"
+``````````
+name = "operandB"
+type = "boolexpr"
+[[.returns]]
+type = "boolexpr"
+
+[Or]
+[[.args]]
+name = "operandA"
+type = "boolexpr"
+``````````
+name = "operandB"
+type = "boolexpr"
+[[.returns]]
+type = "boolexpr"
+
+[Not]
+[[.args]]
+name = "operand"
+type = "boolexpr"
+[[.returns]]
+type = "boolexpr"
+
+[Condition]
+[[.args]]
+name = "func"
+type = "code"
+[[.returns]]
+type = "conditionfunc"
+
+[DestroyCondition]
+[[.args]]
+name = "c"
+type = "conditionfunc"
+
+[Filter]
+[[.args]]
+name = "func"
+type = "code"
+[[.returns]]
+type = "filterfunc"
+
+[DestroyFilter]
+[[.args]]
+name = "f"
+type = "filterfunc"
+
+[DestroyBoolExpr]
+[[.args]]
+name = "e"
+type = "boolexpr"
+
+[TriggerRegisterVariableEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "varName"
+type = "string"
+``````````
+name = "opcode"
+type = "limitop"
+``````````
+name = "limitval"
+type = "number"
+[[.returns]]
+type = "event"
+
+[TriggerRegisterTimerEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "timeout"
+type = "number"
+``````````
+name = "periodic"
+type = "boolean"
+[[.returns]]
+type = "event"
+
+[TriggerRegisterTimerExpireEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "t"
+type = "timer"
+[[.returns]]
+type = "event"
+
+[TriggerRegisterGameStateEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichState"
+type = "gamestate"
+``````````
+name = "opcode"
+type = "limitop"
+``````````
+name = "limitval"
+type = "number"
+[[.returns]]
+type = "event"
+
+[TriggerRegisterDialogEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichDialog"
+type = "dialog"
+[[.returns]]
+type = "event"
+
+[TriggerRegisterDialogButtonEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichButton"
+type = "button"
+[[.returns]]
+type = "event"
+
+[GetEventGameState]
+[[.returns]]
+type = "gamestate"
+
+[TriggerRegisterGameEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichGameEvent"
+type = "gameevent"
+[[.returns]]
+type = "event"
+
+[GetWinningPlayer]
+[[.returns]]
+type = "player"
+
+[TriggerRegisterEnterRegion]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichRegion"
+type = "region"
+``````````
+name = "filter"
+type = "boolexpr"
+[[.returns]]
+type = "event"
+
+[GetTriggeringRegion]
+[[.returns]]
+type = "region"
+
+[GetEnteringUnit]
+[[.returns]]
+type = "unit"
+
+[TriggerRegisterLeaveRegion]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichRegion"
+type = "region"
+``````````
+name = "filter"
+type = "boolexpr"
+[[.returns]]
+type = "event"
+
+[GetLeavingUnit]
+[[.returns]]
+type = "unit"
+
+[TriggerRegisterTrackableHitEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "t"
+type = "trackable"
+[[.returns]]
+type = "event"
+
+[TriggerRegisterTrackableTrackEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "t"
+type = "trackable"
+[[.returns]]
+type = "event"
+
+[GetTriggeringTrackable]
+[[.returns]]
+type = "trackable"
+
+[GetClickedButton]
+[[.returns]]
+type = "button"
+
+[GetClickedDialog]
+[[.returns]]
+type = "dialog"
+
+[GetTournamentFinishSoonTimeRemaining]
+[[.returns]]
+type = "number"
+
+[GetTournamentFinishNowRule]
+[[.returns]]
+type = "integer"
+
+[GetTournamentFinishNowPlayer]
+[[.returns]]
+type = "player"
+
+[GetTournamentScore]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "integer"
+
+[GetSaveBasicFilename]
+[[.returns]]
+type = "string"
+
+[TriggerRegisterPlayerEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichPlayerEvent"
+type = "playerevent"
+[[.returns]]
+type = "event"
+
+[GetTriggerPlayer]
+[[.returns]]
+type = "player"
+
+[TriggerRegisterPlayerUnitEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichPlayerUnitEvent"
+type = "playerunitevent"
+``````````
+name = "filter"
+type = "boolexpr"
+[[.returns]]
+type = "event"
+
+[GetLevelingUnit]
+[[.returns]]
+type = "unit"
+
+[GetLearningUnit]
+[[.returns]]
+type = "unit"
+
+[GetLearnedSkill]
+[[.returns]]
+type = "integer"
+
+[GetLearnedSkillLevel]
+[[.returns]]
+type = "integer"
+
+[GetRevivableUnit]
+[[.returns]]
+type = "unit"
+
+[GetRevivingUnit]
+[[.returns]]
+type = "unit"
+
+[GetAttacker]
+[[.returns]]
+type = "unit"
+
+[GetRescuer]
+[[.returns]]
+type = "unit"
+
+[GetDyingUnit]
+[[.returns]]
+type = "unit"
+
+[GetKillingUnit]
+[[.returns]]
+type = "unit"
+
+[GetDecayingUnit]
+[[.returns]]
+type = "unit"
+
+[GetConstructingStructure]
+[[.returns]]
+type = "unit"
+
+[GetCancelledStructure]
+[[.returns]]
+type = "unit"
+
+[GetConstructedStructure]
+[[.returns]]
+type = "unit"
+
+[GetResearchingUnit]
+[[.returns]]
+type = "unit"
+
+[GetResearched]
+[[.returns]]
+type = "integer"
+
+[GetTrainedUnitType]
+[[.returns]]
+type = "integer"
+
+[GetTrainedUnit]
+[[.returns]]
+type = "unit"
+
+[GetDetectedUnit]
+[[.returns]]
+type = "unit"
+
+[GetSummoningUnit]
+[[.returns]]
+type = "unit"
+
+[GetSummonedUnit]
+[[.returns]]
+type = "unit"
+
+[GetTransportUnit]
+[[.returns]]
+type = "unit"
+
+[GetLoadedUnit]
+[[.returns]]
+type = "unit"
+
+[GetSellingUnit]
+[[.returns]]
+type = "unit"
+
+[GetSoldUnit]
+[[.returns]]
+type = "unit"
+
+[GetBuyingUnit]
+[[.returns]]
+type = "unit"
+
+[GetSoldItem]
+[[.returns]]
+type = "item"
+
+[GetChangingUnit]
+[[.returns]]
+type = "unit"
+
+[GetChangingUnitPrevOwner]
+[[.returns]]
+type = "player"
+
+[GetManipulatingUnit]
+[[.returns]]
+type = "unit"
+
+[GetManipulatedItem]
+[[.returns]]
+type = "item"
+
+[GetOrderedUnit]
+[[.returns]]
+type = "unit"
+
+[GetIssuedOrderId]
+[[.returns]]
+type = "integer"
+
+[GetOrderPointX]
+[[.returns]]
+type = "number"
+
+[GetOrderPointY]
+[[.returns]]
+type = "number"
+
+[GetOrderPointLoc]
+[[.returns]]
+type = "location"
+
+[GetOrderTarget]
+[[.returns]]
+type = "widget"
+
+[GetOrderTargetDestructable]
+[[.returns]]
+type = "destructable"
+
+[GetOrderTargetItem]
+[[.returns]]
+type = "item"
+
+[GetOrderTargetUnit]
+[[.returns]]
+type = "unit"
+
+[GetSpellAbilityUnit]
+[[.returns]]
+type = "unit"
+
+[GetSpellAbilityId]
+[[.returns]]
+type = "integer"
+
+[GetSpellAbility]
+[[.returns]]
+type = "ability"
+
+[GetSpellTargetLoc]
+[[.returns]]
+type = "location"
+
+[GetSpellTargetX]
+[[.returns]]
+type = "number"
+
+[GetSpellTargetY]
+[[.returns]]
+type = "number"
+
+[GetSpellTargetDestructable]
+[[.returns]]
+type = "destructable"
+
+[GetSpellTargetItem]
+[[.returns]]
+type = "item"
+
+[GetSpellTargetUnit]
+[[.returns]]
+type = "unit"
+
+[TriggerRegisterPlayerAllianceChange]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichAlliance"
+type = "alliancetype"
+[[.returns]]
+type = "event"
+
+[TriggerRegisterPlayerStateEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichState"
+type = "playerstate"
+``````````
+name = "opcode"
+type = "limitop"
+``````````
+name = "limitval"
+type = "number"
+[[.returns]]
+type = "event"
+
+[GetEventPlayerState]
+[[.returns]]
+type = "playerstate"
+
+[TriggerRegisterPlayerChatEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "chatMessageToDetect"
+type = "string"
+``````````
+name = "exactMatchOnly"
+type = "boolean"
+[[.returns]]
+type = "event"
+
+[GetEventPlayerChatString]
+[[.returns]]
+type = "string"
+
+[GetEventPlayerChatStringMatched]
+[[.returns]]
+type = "string"
+
+[TriggerRegisterDeathEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichWidget"
+type = "widget"
+[[.returns]]
+type = "event"
+
+[GetTriggerUnit]
+[[.returns]]
+type = "unit"
+
+[TriggerRegisterUnitStateEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichState"
+type = "unitstate"
+``````````
+name = "opcode"
+type = "limitop"
+``````````
+name = "limitval"
+type = "number"
+[[.returns]]
+type = "event"
+
+[GetEventUnitState]
+[[.returns]]
+type = "unitstate"
+
+[TriggerRegisterUnitEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichEvent"
+type = "unitevent"
+[[.returns]]
+type = "event"
+
+[GetEventDamage]
+[[.returns]]
+type = "number"
+
+[GetEventDamageSource]
+[[.returns]]
+type = "unit"
+
+[GetEventDetectingPlayer]
+[[.returns]]
+type = "player"
+
+[TriggerRegisterFilterUnitEvent]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichEvent"
+type = "unitevent"
+``````````
+name = "filter"
+type = "boolexpr"
+[[.returns]]
+type = "event"
+
+[GetEventTargetUnit]
+[[.returns]]
+type = "unit"
+
+[TriggerRegisterUnitInRange]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichUnit"
+type = "unit"
+``````````
+name = "range"
+type = "number"
+``````````
+name = "filter"
+type = "boolexpr"
+[[.returns]]
+type = "event"
+
+[TriggerAddCondition]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "condition"
+type = "boolexpr"
+[[.returns]]
+type = "triggercondition"
+
+[TriggerRemoveCondition]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichCondition"
+type = "triggercondition"
+
+[TriggerClearConditions]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+
+[TriggerAddAction]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "actionFunc"
+type = "code"
+[[.returns]]
+type = "triggeraction"
+
+[TriggerRemoveAction]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+``````````
+name = "whichAction"
+type = "triggeraction"
+
+[TriggerClearActions]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+
+[TriggerSleepAction]
+[[.args]]
+name = "timeout"
+type = "number"
+
+[TriggerWaitForSound]
+[[.args]]
+name = "s"
+type = "sound"
+``````````
+name = "offset"
+type = "number"
+
+[TriggerEvaluate]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+[[.returns]]
+type = "boolean"
+
+[TriggerExecute]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+
+[TriggerExecuteWait]
+[[.args]]
+name = "whichTrigger"
+type = "trigger"
+
+[TriggerSyncStart]
+
+[TriggerSyncReady]
+
+[GetWidgetLife]
+[[.args]]
+name = "whichWidget"
+type = "widget"
+[[.returns]]
+type = "number"
+
+[SetWidgetLife]
+[[.args]]
+name = "whichWidget"
+type = "widget"
+``````````
+name = "newLife"
+type = "number"
+
+[GetWidgetX]
+[[.args]]
+name = "whichWidget"
+type = "widget"
+[[.returns]]
+type = "number"
+
+[GetWidgetY]
+[[.args]]
+name = "whichWidget"
+type = "widget"
+[[.returns]]
+type = "number"
+
+[GetTriggerWidget]
+[[.returns]]
+type = "widget"
+
+[CreateDestructable]
+[[.args]]
+name = "objectid"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "face"
+type = "number"
+``````````
+name = "scale"
+type = "number"
+``````````
+name = "variation"
+type = "integer"
+[[.returns]]
+type = "destructable"
+
+[CreateDestructableZ]
+[[.args]]
+name = "objectid"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "z"
+type = "number"
+``````````
+name = "face"
+type = "number"
+``````````
+name = "scale"
+type = "number"
+``````````
+name = "variation"
+type = "integer"
+[[.returns]]
+type = "destructable"
+
+[CreateDeadDestructable]
+[[.args]]
+name = "objectid"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "face"
+type = "number"
+``````````
+name = "scale"
+type = "number"
+``````````
+name = "variation"
+type = "integer"
+[[.returns]]
+type = "destructable"
+
+[CreateDeadDestructableZ]
+[[.args]]
+name = "objectid"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "z"
+type = "number"
+``````````
+name = "face"
+type = "number"
+``````````
+name = "scale"
+type = "number"
+``````````
+name = "variation"
+type = "integer"
+[[.returns]]
+type = "destructable"
+
+[RemoveDestructable]
+[[.args]]
+name = "d"
+type = "destructable"
+
+[KillDestructable]
+[[.args]]
+name = "d"
+type = "destructable"
+
+[SetDestructableInvulnerable]
+[[.args]]
+name = "d"
+type = "destructable"
+``````````
+name = "flag"
+type = "boolean"
+
+[IsDestructableInvulnerable]
+[[.args]]
+name = "d"
+type = "destructable"
+[[.returns]]
+type = "boolean"
+
+[EnumDestructablesInRect]
+[[.args]]
+name = "r"
+type = "rect"
+``````````
+name = "filter"
+type = "boolexpr"
+``````````
+name = "actionFunc"
+type = "code"
+
+[GetDestructableTypeId]
+[[.args]]
+name = "d"
+type = "destructable"
+[[.returns]]
+type = "integer"
+
+[GetDestructableX]
+[[.args]]
+name = "d"
+type = "destructable"
+[[.returns]]
+type = "number"
+
+[GetDestructableY]
+[[.args]]
+name = "d"
+type = "destructable"
+[[.returns]]
+type = "number"
+
+[SetDestructableLife]
+[[.args]]
+name = "d"
+type = "destructable"
+``````````
+name = "life"
+type = "number"
+
+[GetDestructableLife]
+[[.args]]
+name = "d"
+type = "destructable"
+[[.returns]]
+type = "number"
+
+[SetDestructableMaxLife]
+[[.args]]
+name = "d"
+type = "destructable"
+``````````
+name = "max"
+type = "number"
+
+[GetDestructableMaxLife]
+[[.args]]
+name = "d"
+type = "destructable"
+[[.returns]]
+type = "number"
+
+[DestructableRestoreLife]
+[[.args]]
+name = "d"
+type = "destructable"
+``````````
+name = "life"
+type = "number"
+``````````
+name = "birth"
+type = "boolean"
+
+[QueueDestructableAnimation]
+[[.args]]
+name = "d"
+type = "destructable"
+``````````
+name = "whichAnimation"
+type = "string"
+
+[SetDestructableAnimation]
+[[.args]]
+name = "d"
+type = "destructable"
+``````````
+name = "whichAnimation"
+type = "string"
+
+[SetDestructableAnimationSpeed]
+[[.args]]
+name = "d"
+type = "destructable"
+``````````
+name = "speedFactor"
+type = "number"
+
+[ShowDestructable]
+[[.args]]
+name = "d"
+type = "destructable"
+``````````
+name = "flag"
+type = "boolean"
+
+[GetDestructableOccluderHeight]
+[[.args]]
+name = "d"
+type = "destructable"
+[[.returns]]
+type = "number"
+
+[SetDestructableOccluderHeight]
+[[.args]]
+name = "d"
+type = "destructable"
+``````````
+name = "height"
+type = "number"
+
+[GetDestructableName]
+[[.args]]
+name = "d"
+type = "destructable"
+[[.returns]]
+type = "string"
+
+[GetTriggerDestructable]
+[[.returns]]
+type = "destructable"
+
+[CreateItem]
+[[.args]]
+name = "itemid"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "item"
+
+[RemoveItem]
+[[.args]]
+name = "whichItem"
+type = "item"
+
+[GetItemPlayer]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "player"
+
+[GetItemTypeId]
+[[.args]]
+name = "i"
+type = "item"
+[[.returns]]
+type = "integer"
+
+[GetItemX]
+[[.args]]
+name = "i"
+type = "item"
+[[.returns]]
+type = "number"
+
+[GetItemY]
+[[.args]]
+name = "i"
+type = "item"
+[[.returns]]
+type = "number"
+
+[SetItemPosition]
+[[.args]]
+name = "i"
+type = "item"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+
+[SetItemDropOnDeath]
+[[.args]]
+name = "whichItem"
+type = "item"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetItemDroppable]
+[[.args]]
+name = "i"
+type = "item"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetItemPawnable]
+[[.args]]
+name = "i"
+type = "item"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetItemPlayer]
+[[.args]]
+name = "whichItem"
+type = "item"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "changeColor"
+type = "boolean"
+
+[SetItemInvulnerable]
+[[.args]]
+name = "whichItem"
+type = "item"
+``````````
+name = "flag"
+type = "boolean"
+
+[IsItemInvulnerable]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "boolean"
+
+[SetItemVisible]
+[[.args]]
+name = "whichItem"
+type = "item"
+``````````
+name = "show"
+type = "boolean"
+
+[IsItemVisible]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "boolean"
+
+[IsItemOwned]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "boolean"
+
+[IsItemPowerup]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "boolean"
+
+[IsItemSellable]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "boolean"
+
+[IsItemPawnable]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "boolean"
+
+[IsItemIdPowerup]
+[[.args]]
+name = "itemId"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[IsItemIdSellable]
+[[.args]]
+name = "itemId"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[IsItemIdPawnable]
+[[.args]]
+name = "itemId"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[EnumItemsInRect]
+[[.args]]
+name = "r"
+type = "rect"
+``````````
+name = "filter"
+type = "boolexpr"
+``````````
+name = "actionFunc"
+type = "code"
+
+[GetItemLevel]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "integer"
+
+[GetItemType]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "itemtype"
+
+[SetItemDropID]
+[[.args]]
+name = "whichItem"
+type = "item"
+``````````
+name = "unitId"
+type = "integer"
+
+[GetItemName]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "string"
+
+[GetItemCharges]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "integer"
+
+[SetItemCharges]
+[[.args]]
+name = "whichItem"
+type = "item"
+``````````
+name = "charges"
+type = "integer"
+
+[GetItemUserData]
+[[.args]]
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "integer"
+
+[SetItemUserData]
+[[.args]]
+name = "whichItem"
+type = "item"
+``````````
+name = "data"
+type = "integer"
+
+[CreateUnit]
+[[.args]]
+name = "id"
+type = "player"
+``````````
+name = "unitid"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "face"
+type = "number"
+[[.returns]]
+type = "unit"
+
+[CreateUnitByName]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "unitname"
+type = "string"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "face"
+type = "number"
+[[.returns]]
+type = "unit"
+
+[CreateUnitAtLoc]
+[[.args]]
+name = "id"
+type = "player"
+``````````
+name = "unitid"
+type = "integer"
+``````````
+name = "whichLocation"
+type = "location"
+``````````
+name = "face"
+type = "number"
+[[.returns]]
+type = "unit"
+
+[CreateUnitAtLocByName]
+[[.args]]
+name = "id"
+type = "player"
+``````````
+name = "unitname"
+type = "string"
+``````````
+name = "whichLocation"
+type = "location"
+``````````
+name = "face"
+type = "number"
+[[.returns]]
+type = "unit"
+
+[CreateCorpse]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "unitid"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "face"
+type = "number"
+[[.returns]]
+type = "unit"
+
+[KillUnit]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+
+[RemoveUnit]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+
+[ShowUnit]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "show"
+type = "boolean"
+
+[SetUnitState]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichUnitState"
+type = "unitstate"
+``````````
+name = "newVal"
+type = "number"
+
+[SetUnitX]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "newX"
+type = "number"
+
+[SetUnitY]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "newY"
+type = "number"
+
+[SetUnitPosition]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "newX"
+type = "number"
+``````````
+name = "newY"
+type = "number"
+
+[SetUnitPositionLoc]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichLocation"
+type = "location"
+
+[SetUnitFacing]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "facingAngle"
+type = "number"
+
+[SetUnitFacingTimed]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "facingAngle"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+
+[SetUnitMoveSpeed]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "newSpeed"
+type = "number"
+
+[SetUnitFlyHeight]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "newHeight"
+type = "number"
+``````````
+name = "rate"
+type = "number"
+
+[SetUnitTurnSpeed]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "newTurnSpeed"
+type = "number"
+
+[SetUnitPropWindow]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "newPropWindowAngle"
+type = "number"
+
+[SetUnitAcquireRange]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "newAcquireRange"
+type = "number"
+
+[SetUnitCreepGuard]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "creepGuard"
+type = "boolean"
+
+[GetUnitAcquireRange]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitTurnSpeed]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitPropWindow]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitFlyHeight]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitDefaultAcquireRange]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitDefaultTurnSpeed]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitDefaultPropWindow]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitDefaultFlyHeight]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[SetUnitOwner]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "changeColor"
+type = "boolean"
+
+[SetUnitColor]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichColor"
+type = "playercolor"
+
+[SetUnitScale]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "scaleX"
+type = "number"
+``````````
+name = "scaleY"
+type = "number"
+``````````
+name = "scaleZ"
+type = "number"
+
+[SetUnitTimeScale]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "timeScale"
+type = "number"
+
+[SetUnitBlendTime]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "blendTime"
+type = "number"
+
+[SetUnitVertexColor]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[QueueUnitAnimation]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichAnimation"
+type = "string"
+
+[SetUnitAnimation]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichAnimation"
+type = "string"
+
+[SetUnitAnimationByIndex]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichAnimation"
+type = "integer"
+
+[SetUnitAnimationWithRarity]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichAnimation"
+type = "string"
+``````````
+name = "rarity"
+type = "raritycontrol"
+
+[AddUnitAnimationProperties]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "animProperties"
+type = "string"
+``````````
+name = "add"
+type = "boolean"
+
+[SetUnitLookAt]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichBone"
+type = "string"
+``````````
+name = "lookAtTarget"
+type = "unit"
+``````````
+name = "offsetX"
+type = "number"
+``````````
+name = "offsetY"
+type = "number"
+``````````
+name = "offsetZ"
+type = "number"
+
+[ResetUnitLookAt]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+
+[SetUnitRescuable]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "byWhichPlayer"
+type = "player"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetUnitRescueRange]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "range"
+type = "number"
+
+[SetHeroStr]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "newStr"
+type = "integer"
+``````````
+name = "permanent"
+type = "boolean"
+
+[SetHeroAgi]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "newAgi"
+type = "integer"
+``````````
+name = "permanent"
+type = "boolean"
+
+[SetHeroInt]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "newInt"
+type = "integer"
+``````````
+name = "permanent"
+type = "boolean"
+
+[GetHeroStr]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "includeBonuses"
+type = "boolean"
+[[.returns]]
+type = "integer"
+
+[GetHeroAgi]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "includeBonuses"
+type = "boolean"
+[[.returns]]
+type = "integer"
+
+[GetHeroInt]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "includeBonuses"
+type = "boolean"
+[[.returns]]
+type = "integer"
+
+[UnitStripHeroLevel]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "howManyLevels"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[GetHeroXP]
+[[.args]]
+name = "whichHero"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[SetHeroXP]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "newXpVal"
+type = "integer"
+``````````
+name = "showEyeCandy"
+type = "boolean"
+
+[GetHeroSkillPoints]
+[[.args]]
+name = "whichHero"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[UnitModifySkillPoints]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "skillPointDelta"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[AddHeroXP]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "xpToAdd"
+type = "integer"
+``````````
+name = "showEyeCandy"
+type = "boolean"
+
+[SetHeroLevel]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "level"
+type = "integer"
+``````````
+name = "showEyeCandy"
+type = "boolean"
+
+[GetHeroLevel]
+[[.args]]
+name = "whichHero"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[GetUnitLevel]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[GetHeroProperName]
+[[.args]]
+name = "whichHero"
+type = "unit"
+[[.returns]]
+type = "string"
+
+[SuspendHeroXP]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "flag"
+type = "boolean"
+
+[IsSuspendedXP]
+[[.args]]
+name = "whichHero"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[SelectHeroSkill]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "abilcode"
+type = "integer"
+
+[GetUnitAbilityLevel]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "abilcode"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[DecUnitAbilityLevel]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "abilcode"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[IncUnitAbilityLevel]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "abilcode"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[SetUnitAbilityLevel]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "abilcode"
+type = "integer"
+``````````
+name = "level"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[ReviveHero]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "doEyecandy"
+type = "boolean"
+[[.returns]]
+type = "boolean"
+
+[ReviveHeroLoc]
+[[.args]]
+name = "whichHero"
+type = "unit"
+``````````
+name = "loc"
+type = "location"
+``````````
+name = "doEyecandy"
+type = "boolean"
+[[.returns]]
+type = "boolean"
+
+[SetUnitExploded]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "exploded"
+type = "boolean"
+
+[SetUnitInvulnerable]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "flag"
+type = "boolean"
+
+[PauseUnit]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "flag"
+type = "boolean"
+
+[IsUnitPaused]
+[[.args]]
+name = "whichHero"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[SetUnitPathing]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "flag"
+type = "boolean"
+
+[ClearSelection]
+
+[SelectUnit]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "flag"
+type = "boolean"
+
+[GetUnitPointValue]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[GetUnitPointValueByType]
+[[.args]]
+name = "unitType"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[UnitAddItem]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "boolean"
+
+[UnitAddItemById]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "itemId"
+type = "integer"
+[[.returns]]
+type = "item"
+
+[UnitAddItemToSlotById]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "itemId"
+type = "integer"
+``````````
+name = "itemSlot"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[UnitRemoveItem]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichItem"
+type = "item"
+
+[UnitRemoveItemFromSlot]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "itemSlot"
+type = "integer"
+[[.returns]]
+type = "item"
+
+[UnitHasItem]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "boolean"
+
+[UnitItemInSlot]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "itemSlot"
+type = "integer"
+[[.returns]]
+type = "item"
+
+[UnitInventorySize]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[UnitDropItemPoint]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichItem"
+type = "item"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[UnitDropItemSlot]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichItem"
+type = "item"
+``````````
+name = "slot"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[UnitDropItemTarget]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichItem"
+type = "item"
+``````````
+name = "target"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[UnitUseItem]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "boolean"
+
+[UnitUseItemPoint]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichItem"
+type = "item"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[UnitUseItemTarget]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichItem"
+type = "item"
+``````````
+name = "target"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[GetUnitX]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitY]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitLoc]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "location"
+
+[GetUnitFacing]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitMoveSpeed]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitDefaultMoveSpeed]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[GetUnitState]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichUnitState"
+type = "unitstate"
+[[.returns]]
+type = "number"
+
+[GetOwningPlayer]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "player"
+
+[GetUnitTypeId]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[GetUnitRace]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "race"
+
+[GetUnitName]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "string"
+
+[GetUnitFoodUsed]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[GetUnitFoodMade]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[GetFoodMade]
+[[.args]]
+name = "unitId"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[GetFoodUsed]
+[[.args]]
+name = "unitId"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[SetUnitUseFood]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "useFood"
+type = "boolean"
+
+[GetUnitRallyPoint]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "location"
+
+[GetUnitRallyUnit]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "unit"
+
+[GetUnitRallyDestructable]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "destructable"
+
+[IsUnitInGroup]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichGroup"
+type = "group"
+[[.returns]]
+type = "boolean"
+
+[IsUnitInForce]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichForce"
+type = "force"
+[[.returns]]
+type = "boolean"
+
+[IsUnitOwnedByPlayer]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsUnitAlly]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsUnitEnemy]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsUnitVisible]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsUnitDetected]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsUnitInvisible]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsUnitFogged]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsUnitMasked]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsUnitSelected]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsUnitRace]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichRace"
+type = "race"
+[[.returns]]
+type = "boolean"
+
+[IsUnitType]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichUnitType"
+type = "unittype"
+[[.returns]]
+type = "boolean"
+
+[IsUnit]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichSpecifiedUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[IsUnitInRange]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "otherUnit"
+type = "unit"
+``````````
+name = "distance"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[IsUnitInRangeXY]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "distance"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[IsUnitInRangeLoc]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichLocation"
+type = "location"
+``````````
+name = "distance"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[IsUnitHidden]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[IsUnitIllusion]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[IsUnitInTransport]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichTransport"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[IsUnitLoaded]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[IsHeroUnitId]
+[[.args]]
+name = "unitId"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[IsUnitIdType]
+[[.args]]
+name = "unitId"
+type = "integer"
+``````````
+name = "whichUnitType"
+type = "unittype"
+[[.returns]]
+type = "boolean"
+
+[UnitShareVision]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichPlayer"
+type = "player"
+``````````
+name = "share"
+type = "boolean"
+
+[UnitSuspendDecay]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "suspend"
+type = "boolean"
+
+[UnitAddType]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichUnitType"
+type = "unittype"
+[[.returns]]
+type = "boolean"
+
+[UnitRemoveType]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "whichUnitType"
+type = "unittype"
+[[.returns]]
+type = "boolean"
+
+[UnitAddAbility]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "abilityId"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[UnitRemoveAbility]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "abilityId"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[UnitMakeAbilityPermanent]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "permanent"
+type = "boolean"
+``````````
+name = "abilityId"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[UnitRemoveBuffs]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "removePositive"
+type = "boolean"
+``````````
+name = "removeNegative"
+type = "boolean"
+
+[UnitRemoveBuffsEx]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "removePositive"
+type = "boolean"
+``````````
+name = "removeNegative"
+type = "boolean"
+``````````
+name = "magic"
+type = "boolean"
+``````````
+name = "physical"
+type = "boolean"
+``````````
+name = "timedLife"
+type = "boolean"
+``````````
+name = "aura"
+type = "boolean"
+``````````
+name = "autoDispel"
+type = "boolean"
+
+[UnitHasBuffsEx]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "removePositive"
+type = "boolean"
+``````````
+name = "removeNegative"
+type = "boolean"
+``````````
+name = "magic"
+type = "boolean"
+``````````
+name = "physical"
+type = "boolean"
+``````````
+name = "timedLife"
+type = "boolean"
+``````````
+name = "aura"
+type = "boolean"
+``````````
+name = "autoDispel"
+type = "boolean"
+[[.returns]]
+type = "boolean"
+
+[UnitCountBuffsEx]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "removePositive"
+type = "boolean"
+``````````
+name = "removeNegative"
+type = "boolean"
+``````````
+name = "magic"
+type = "boolean"
+``````````
+name = "physical"
+type = "boolean"
+``````````
+name = "timedLife"
+type = "boolean"
+``````````
+name = "aura"
+type = "boolean"
+``````````
+name = "autoDispel"
+type = "boolean"
+[[.returns]]
+type = "integer"
+
+[UnitAddSleep]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "add"
+type = "boolean"
+
+[UnitCanSleep]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[UnitAddSleepPerm]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "add"
+type = "boolean"
+
+[UnitCanSleepPerm]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[UnitIsSleeping]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[UnitWakeUp]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+
+[UnitApplyTimedLife]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "buffId"
+type = "integer"
+``````````
+name = "duration"
+type = "number"
+
+[UnitIgnoreAlarm]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "flag"
+type = "boolean"
+[[.returns]]
+type = "boolean"
+
+[UnitIgnoreAlarmToggled]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[UnitResetCooldown]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+
+[UnitSetConstructionProgress]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "constructionPercentage"
+type = "integer"
+
+[UnitSetUpgradeProgress]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "upgradePercentage"
+type = "integer"
+
+[UnitPauseTimedLife]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "flag"
+type = "boolean"
+
+[UnitSetUsesAltIcon]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "flag"
+type = "boolean"
+
+[UnitDamagePoint]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "delay"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "amount"
+type = "number"
+``````````
+name = "attack"
+type = "boolean"
+``````````
+name = "ranged"
+type = "boolean"
+``````````
+name = "attackType"
+type = "attacktype"
+``````````
+name = "damageType"
+type = "damagetype"
+``````````
+name = "weaponType"
+type = "weapontype"
+[[.returns]]
+type = "boolean"
+
+[UnitDamageTarget]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "target"
+type = "widget"
+``````````
+name = "amount"
+type = "number"
+``````````
+name = "attack"
+type = "boolean"
+``````````
+name = "ranged"
+type = "boolean"
+``````````
+name = "attackType"
+type = "attacktype"
+``````````
+name = "damageType"
+type = "damagetype"
+``````````
+name = "weaponType"
+type = "weapontype"
+[[.returns]]
+type = "boolean"
+
+[IssueImmediateOrder]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[IssueImmediateOrderById]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[IssuePointOrder]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "string"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[IssuePointOrderLoc]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "string"
+``````````
+name = "whichLocation"
+type = "location"
+[[.returns]]
+type = "boolean"
+
+[IssuePointOrderById]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[IssuePointOrderByIdLoc]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "integer"
+``````````
+name = "whichLocation"
+type = "location"
+[[.returns]]
+type = "boolean"
+
+[IssueTargetOrder]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "string"
+``````````
+name = "targetWidget"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[IssueTargetOrderById]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "integer"
+``````````
+name = "targetWidget"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[IssueInstantPointOrder]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "string"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "instantTargetWidget"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[IssueInstantPointOrderById]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "instantTargetWidget"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[IssueInstantTargetOrder]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "string"
+``````````
+name = "targetWidget"
+type = "widget"
+``````````
+name = "instantTargetWidget"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[IssueInstantTargetOrderById]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "order"
+type = "integer"
+``````````
+name = "targetWidget"
+type = "widget"
+``````````
+name = "instantTargetWidget"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[IssueBuildOrder]
+[[.args]]
+name = "whichPeon"
+type = "unit"
+``````````
+name = "unitToBuild"
+type = "string"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[IssueBuildOrderById]
+[[.args]]
+name = "whichPeon"
+type = "unit"
+``````````
+name = "unitId"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[IssueNeutralImmediateOrder]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "neutralStructure"
+type = "unit"
+``````````
+name = "unitToBuild"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[IssueNeutralImmediateOrderById]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "neutralStructure"
+type = "unit"
+``````````
+name = "unitId"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[IssueNeutralPointOrder]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "neutralStructure"
+type = "unit"
+``````````
+name = "unitToBuild"
+type = "string"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[IssueNeutralPointOrderById]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "neutralStructure"
+type = "unit"
+``````````
+name = "unitId"
+type = "integer"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[IssueNeutralTargetOrder]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "neutralStructure"
+type = "unit"
+``````````
+name = "unitToBuild"
+type = "string"
+``````````
+name = "target"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[IssueNeutralTargetOrderById]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "neutralStructure"
+type = "unit"
+``````````
+name = "unitId"
+type = "integer"
+``````````
+name = "target"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[GetUnitCurrentOrder]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[SetResourceAmount]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "amount"
+type = "integer"
+
+[AddResourceAmount]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "amount"
+type = "integer"
+
+[GetResourceAmount]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[WaygateGetDestinationX]
+[[.args]]
+name = "waygate"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[WaygateGetDestinationY]
+[[.args]]
+name = "waygate"
+type = "unit"
+[[.returns]]
+type = "number"
+
+[WaygateSetDestination]
+[[.args]]
+name = "waygate"
+type = "unit"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+
+[WaygateActivate]
+[[.args]]
+name = "waygate"
+type = "unit"
+``````````
+name = "activate"
+type = "boolean"
+
+[WaygateIsActive]
+[[.args]]
+name = "waygate"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[AddItemToAllStock]
+[[.args]]
+name = "itemId"
+type = "integer"
+``````````
+name = "currentStock"
+type = "integer"
+``````````
+name = "stockMax"
+type = "integer"
+
+[AddItemToStock]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "itemId"
+type = "integer"
+``````````
+name = "currentStock"
+type = "integer"
+``````````
+name = "stockMax"
+type = "integer"
+
+[AddUnitToAllStock]
+[[.args]]
+name = "unitId"
+type = "integer"
+``````````
+name = "currentStock"
+type = "integer"
+``````````
+name = "stockMax"
+type = "integer"
+
+[AddUnitToStock]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "unitId"
+type = "integer"
+``````````
+name = "currentStock"
+type = "integer"
+``````````
+name = "stockMax"
+type = "integer"
+
+[RemoveItemFromAllStock]
+[[.args]]
+name = "itemId"
+type = "integer"
+
+[RemoveItemFromStock]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "itemId"
+type = "integer"
+
+[RemoveUnitFromAllStock]
+[[.args]]
+name = "unitId"
+type = "integer"
+
+[RemoveUnitFromStock]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "unitId"
+type = "integer"
+
+[SetAllItemTypeSlots]
+[[.args]]
+name = "slots"
+type = "integer"
+
+[SetAllUnitTypeSlots]
+[[.args]]
+name = "slots"
+type = "integer"
+
+[SetItemTypeSlots]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "slots"
+type = "integer"
+
+[SetUnitTypeSlots]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "slots"
+type = "integer"
+
+[GetUnitUserData]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "integer"
+
+[SetUnitUserData]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "data"
+type = "integer"
+
+[Player]
+[[.args]]
+name = "number"
+type = "integer"
+[[.returns]]
+type = "player"
+
+[GetLocalPlayer]
+[[.returns]]
+type = "player"
+
+[IsPlayerAlly]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "otherPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsPlayerEnemy]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "otherPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsPlayerInForce]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichForce"
+type = "force"
+[[.returns]]
+type = "boolean"
+
+[IsPlayerObserver]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsVisibleToPlayer]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsLocationVisibleToPlayer]
+[[.args]]
+name = "whichLocation"
+type = "location"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsFoggedToPlayer]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsLocationFoggedToPlayer]
+[[.args]]
+name = "whichLocation"
+type = "location"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsMaskedToPlayer]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[IsLocationMaskedToPlayer]
+[[.args]]
+name = "whichLocation"
+type = "location"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[GetPlayerRace]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "race"
+
+[GetPlayerId]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "integer"
+
+[GetPlayerUnitCount]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "includeIncomplete"
+type = "boolean"
+[[.returns]]
+type = "integer"
+
+[GetPlayerTypedUnitCount]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "unitName"
+type = "string"
+``````````
+name = "includeIncomplete"
+type = "boolean"
+``````````
+name = "includeUpgrades"
+type = "boolean"
+[[.returns]]
+type = "integer"
+
+[GetPlayerStructureCount]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "includeIncomplete"
+type = "boolean"
+[[.returns]]
+type = "integer"
+
+[GetPlayerState]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichPlayerState"
+type = "playerstate"
+[[.returns]]
+type = "integer"
+
+[GetPlayerScore]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichPlayerScore"
+type = "playerscore"
+[[.returns]]
+type = "integer"
+
+[GetPlayerAlliance]
+[[.args]]
+name = "sourcePlayer"
+type = "player"
+``````````
+name = "otherPlayer"
+type = "player"
+``````````
+name = "whichAllianceSetting"
+type = "alliancetype"
+[[.returns]]
+type = "boolean"
+
+[GetPlayerHandicap]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "number"
+
+[GetPlayerHandicapXP]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "number"
+
+[SetPlayerHandicap]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "handicap"
+type = "number"
+
+[SetPlayerHandicapXP]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "handicap"
+type = "number"
+
+[SetPlayerTechMaxAllowed]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "techid"
+type = "integer"
+``````````
+name = "maximum"
+type = "integer"
+
+[GetPlayerTechMaxAllowed]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "techid"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[AddPlayerTechResearched]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "techid"
+type = "integer"
+``````````
+name = "levels"
+type = "integer"
+
+[SetPlayerTechResearched]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "techid"
+type = "integer"
+``````````
+name = "setToLevel"
+type = "integer"
+
+[GetPlayerTechResearched]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "techid"
+type = "integer"
+``````````
+name = "specificonly"
+type = "boolean"
+[[.returns]]
+type = "boolean"
+
+[GetPlayerTechCount]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "techid"
+type = "integer"
+``````````
+name = "specificonly"
+type = "boolean"
+[[.returns]]
+type = "integer"
+
+[SetPlayerUnitsOwner]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "newOwner"
+type = "integer"
+
+[CripplePlayer]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "toWhichPlayers"
+type = "force"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetPlayerAbilityAvailable]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "abilid"
+type = "integer"
+``````````
+name = "avail"
+type = "boolean"
+
+[SetPlayerState]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichPlayerState"
+type = "playerstate"
+``````````
+name = "value"
+type = "integer"
+
+[RemovePlayer]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "gameResult"
+type = "playergameresult"
+
+[CachePlayerHeroData]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+
+[SetFogStateRect]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "whichState"
+type = "fogstate"
+``````````
+name = "where"
+type = "rect"
+``````````
+name = "useSharedVision"
+type = "boolean"
+
+[SetFogStateRadius]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "whichState"
+type = "fogstate"
+``````````
+name = "centerx"
+type = "number"
+``````````
+name = "centerY"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "useSharedVision"
+type = "boolean"
+
+[SetFogStateRadiusLoc]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "whichState"
+type = "fogstate"
+``````````
+name = "center"
+type = "location"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "useSharedVision"
+type = "boolean"
+
+[FogMaskEnable]
+[[.args]]
+name = "enable"
+type = "boolean"
+
+[IsFogMaskEnabled]
+[[.returns]]
+type = "boolean"
+
+[FogEnable]
+[[.args]]
+name = "enable"
+type = "boolean"
+
+[IsFogEnabled]
+[[.returns]]
+type = "boolean"
+
+[CreateFogModifierRect]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "whichState"
+type = "fogstate"
+``````````
+name = "where"
+type = "rect"
+``````````
+name = "useSharedVision"
+type = "boolean"
+``````````
+name = "afterUnits"
+type = "boolean"
+[[.returns]]
+type = "fogmodifier"
+
+[CreateFogModifierRadius]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "whichState"
+type = "fogstate"
+``````````
+name = "centerx"
+type = "number"
+``````````
+name = "centerY"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "useSharedVision"
+type = "boolean"
+``````````
+name = "afterUnits"
+type = "boolean"
+[[.returns]]
+type = "fogmodifier"
+
+[CreateFogModifierRadiusLoc]
+[[.args]]
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "whichState"
+type = "fogstate"
+``````````
+name = "center"
+type = "location"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "useSharedVision"
+type = "boolean"
+``````````
+name = "afterUnits"
+type = "boolean"
+[[.returns]]
+type = "fogmodifier"
+
+[DestroyFogModifier]
+[[.args]]
+name = "whichFogModifier"
+type = "fogmodifier"
+
+[FogModifierStart]
+[[.args]]
+name = "whichFogModifier"
+type = "fogmodifier"
+
+[FogModifierStop]
+[[.args]]
+name = "whichFogModifier"
+type = "fogmodifier"
+
+[VersionGet]
+[[.returns]]
+type = "version"
+
+[VersionCompatible]
+[[.args]]
+name = "whichVersion"
+type = "version"
+[[.returns]]
+type = "boolean"
+
+[VersionSupported]
+[[.args]]
+name = "whichVersion"
+type = "version"
+[[.returns]]
+type = "boolean"
+
+[EndGame]
+[[.args]]
+name = "doScoreScreen"
+type = "boolean"
+
+[ChangeLevel]
+[[.args]]
+name = "newLevel"
+type = "string"
+``````````
+name = "doScoreScreen"
+type = "boolean"
+
+[RestartGame]
+[[.args]]
+name = "doScoreScreen"
+type = "boolean"
+
+[ReloadGame]
+
+[SetCampaignMenuRace]
+[[.args]]
+name = "r"
+type = "race"
+
+[SetCampaignMenuRaceEx]
+[[.args]]
+name = "campaignIndex"
+type = "integer"
+
+[ForceCampaignSelectScreen]
+
+[LoadGame]
+[[.args]]
+name = "saveFileName"
+type = "string"
+``````````
+name = "doScoreScreen"
+type = "boolean"
+
+[SaveGame]
+[[.args]]
+name = "saveFileName"
+type = "string"
+
+[RenameSaveDirectory]
+[[.args]]
+name = "sourceDirName"
+type = "string"
+``````````
+name = "destDirName"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[RemoveSaveDirectory]
+[[.args]]
+name = "sourceDirName"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[CopySaveGame]
+[[.args]]
+name = "sourceSaveName"
+type = "string"
+``````````
+name = "destSaveName"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[SaveGameExists]
+[[.args]]
+name = "saveName"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[SyncSelections]
+
+[SetFloatGameState]
+[[.args]]
+name = "whichFloatGameState"
+type = "fgamestate"
+``````````
+name = "value"
+type = "number"
+
+[GetFloatGameState]
+[[.args]]
+name = "whichFloatGameState"
+type = "fgamestate"
+[[.returns]]
+type = "number"
+
+[SetIntegerGameState]
+[[.args]]
+name = "whichIntegerGameState"
+type = "igamestate"
+``````````
+name = "value"
+type = "integer"
+
+[GetIntegerGameState]
+[[.args]]
+name = "whichIntegerGameState"
+type = "igamestate"
+[[.returns]]
+type = "integer"
+
+[SetTutorialCleared]
+[[.args]]
+name = "cleared"
+type = "boolean"
+
+[SetMissionAvailable]
+[[.args]]
+name = "campaignNumber"
+type = "integer"
+``````````
+name = "missionNumber"
+type = "integer"
+``````````
+name = "available"
+type = "boolean"
+
+[SetCampaignAvailable]
+[[.args]]
+name = "campaignNumber"
+type = "integer"
+``````````
+name = "available"
+type = "boolean"
+
+[SetOpCinematicAvailable]
+[[.args]]
+name = "campaignNumber"
+type = "integer"
+``````````
+name = "available"
+type = "boolean"
+
+[SetEdCinematicAvailable]
+[[.args]]
+name = "campaignNumber"
+type = "integer"
+``````````
+name = "available"
+type = "boolean"
+
+[GetDefaultDifficulty]
+[[.returns]]
+type = "gamedifficulty"
+
+[SetDefaultDifficulty]
+[[.args]]
+name = "g"
+type = "gamedifficulty"
+
+[SetCustomCampaignButtonVisible]
+[[.args]]
+name = "whichButton"
+type = "integer"
+``````````
+name = "visible"
+type = "boolean"
+
+[GetCustomCampaignButtonVisible]
+[[.args]]
+name = "whichButton"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[DoNotSaveReplay]
+
+[DialogCreate]
+[[.returns]]
+type = "dialog"
+
+[DialogDestroy]
+[[.args]]
+name = "whichDialog"
+type = "dialog"
+
+[DialogClear]
+[[.args]]
+name = "whichDialog"
+type = "dialog"
+
+[DialogSetMessage]
+[[.args]]
+name = "whichDialog"
+type = "dialog"
+``````````
+name = "messageText"
+type = "string"
+
+[DialogAddButton]
+[[.args]]
+name = "whichDialog"
+type = "dialog"
+``````````
+name = "buttonText"
+type = "string"
+``````````
+name = "hotkey"
+type = "integer"
+[[.returns]]
+type = "button"
+
+[DialogAddQuitButton]
+[[.args]]
+name = "whichDialog"
+type = "dialog"
+``````````
+name = "doScoreScreen"
+type = "boolean"
+``````````
+name = "buttonText"
+type = "string"
+``````````
+name = "hotkey"
+type = "integer"
+[[.returns]]
+type = "button"
+
+[DialogDisplay]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichDialog"
+type = "dialog"
+``````````
+name = "flag"
+type = "boolean"
+
+[ReloadGameCachesFromDisk]
+[[.returns]]
+type = "boolean"
+
+[InitGameCache]
+[[.args]]
+name = "campaignFile"
+type = "string"
+[[.returns]]
+type = "gamecache"
+
+[SaveGameCache]
+[[.args]]
+name = "whichCache"
+type = "gamecache"
+[[.returns]]
+type = "boolean"
+
+[StoreInteger]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+``````````
+name = "value"
+type = "integer"
+
+[StoreReal]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+``````````
+name = "value"
+type = "number"
+
+[StoreBoolean]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+``````````
+name = "value"
+type = "boolean"
+
+[StoreUnit]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+``````````
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[StoreString]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+``````````
+name = "value"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[SyncStoredInteger]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+
+[SyncStoredReal]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+
+[SyncStoredBoolean]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+
+[SyncStoredUnit]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+
+[SyncStoredString]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+
+[HaveStoredInteger]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[HaveStoredReal]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[HaveStoredBoolean]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[HaveStoredUnit]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[HaveStoredString]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[FlushGameCache]
+[[.args]]
+name = "cache"
+type = "gamecache"
+
+[FlushStoredMission]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+
+[FlushStoredInteger]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+
+[FlushStoredReal]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+
+[FlushStoredBoolean]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+
+[FlushStoredUnit]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+
+[FlushStoredString]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+
+[GetStoredInteger]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+[[.returns]]
+type = "integer"
+
+[GetStoredReal]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+[[.returns]]
+type = "number"
+
+[GetStoredBoolean]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[GetStoredString]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+[[.returns]]
+type = "string"
+
+[RestoreUnit]
+[[.args]]
+name = "cache"
+type = "gamecache"
+``````````
+name = "missionKey"
+type = "string"
+``````````
+name = "key"
+type = "string"
+``````````
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "facing"
+type = "number"
+[[.returns]]
+type = "unit"
+
+[InitHashtable]
+[[.returns]]
+type = "hashtable"
+
+[SaveInteger]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "value"
+type = "integer"
+
+[SaveReal]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "value"
+type = "number"
+
+[SaveBoolean]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "value"
+type = "boolean"
+
+[SaveStr]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "value"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[SavePlayerHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichPlayer"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[SaveWidgetHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichWidget"
+type = "widget"
+[[.returns]]
+type = "boolean"
+
+[SaveDestructableHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichDestructable"
+type = "destructable"
+[[.returns]]
+type = "boolean"
+
+[SaveItemHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichItem"
+type = "item"
+[[.returns]]
+type = "boolean"
+
+[SaveUnitHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichUnit"
+type = "unit"
+[[.returns]]
+type = "boolean"
+
+[SaveAbilityHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichAbility"
+type = "ability"
+[[.returns]]
+type = "boolean"
+
+[SaveTimerHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichTimer"
+type = "timer"
+[[.returns]]
+type = "boolean"
+
+[SaveTriggerHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichTrigger"
+type = "trigger"
+[[.returns]]
+type = "boolean"
+
+[SaveTriggerConditionHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichTriggercondition"
+type = "triggercondition"
+[[.returns]]
+type = "boolean"
+
+[SaveTriggerActionHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichTriggeraction"
+type = "triggeraction"
+[[.returns]]
+type = "boolean"
+
+[SaveTriggerEventHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichEvent"
+type = "event"
+[[.returns]]
+type = "boolean"
+
+[SaveForceHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichForce"
+type = "force"
+[[.returns]]
+type = "boolean"
+
+[SaveGroupHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichGroup"
+type = "group"
+[[.returns]]
+type = "boolean"
+
+[SaveLocationHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichLocation"
+type = "location"
+[[.returns]]
+type = "boolean"
+
+[SaveRectHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichRect"
+type = "rect"
+[[.returns]]
+type = "boolean"
+
+[SaveBooleanExprHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichBoolexpr"
+type = "boolexpr"
+[[.returns]]
+type = "boolean"
+
+[SaveSoundHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichSound"
+type = "sound"
+[[.returns]]
+type = "boolean"
+
+[SaveEffectHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichEffect"
+type = "effect"
+[[.returns]]
+type = "boolean"
+
+[SaveUnitPoolHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichUnitpool"
+type = "unitpool"
+[[.returns]]
+type = "boolean"
+
+[SaveItemPoolHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichItempool"
+type = "itempool"
+[[.returns]]
+type = "boolean"
+
+[SaveQuestHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichQuest"
+type = "quest"
+[[.returns]]
+type = "boolean"
+
+[SaveQuestItemHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichQuestitem"
+type = "questitem"
+[[.returns]]
+type = "boolean"
+
+[SaveDefeatConditionHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichDefeatcondition"
+type = "defeatcondition"
+[[.returns]]
+type = "boolean"
+
+[SaveTimerDialogHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichTimerdialog"
+type = "timerdialog"
+[[.returns]]
+type = "boolean"
+
+[SaveLeaderboardHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichLeaderboard"
+type = "leaderboard"
+[[.returns]]
+type = "boolean"
+
+[SaveMultiboardHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichMultiboard"
+type = "multiboard"
+[[.returns]]
+type = "boolean"
+
+[SaveMultiboardItemHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichMultiboarditem"
+type = "multiboarditem"
+[[.returns]]
+type = "boolean"
+
+[SaveTrackableHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichTrackable"
+type = "trackable"
+[[.returns]]
+type = "boolean"
+
+[SaveDialogHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichDialog"
+type = "dialog"
+[[.returns]]
+type = "boolean"
+
+[SaveButtonHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichButton"
+type = "button"
+[[.returns]]
+type = "boolean"
+
+[SaveTextTagHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichTexttag"
+type = "texttag"
+[[.returns]]
+type = "boolean"
+
+[SaveLightningHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichLightning"
+type = "lightning"
+[[.returns]]
+type = "boolean"
+
+[SaveImageHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichImage"
+type = "image"
+[[.returns]]
+type = "boolean"
+
+[SaveUbersplatHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichUbersplat"
+type = "ubersplat"
+[[.returns]]
+type = "boolean"
+
+[SaveRegionHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichRegion"
+type = "region"
+[[.returns]]
+type = "boolean"
+
+[SaveFogStateHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichFogState"
+type = "fogstate"
+[[.returns]]
+type = "boolean"
+
+[SaveFogModifierHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichFogModifier"
+type = "fogmodifier"
+[[.returns]]
+type = "boolean"
+
+[SaveAgentHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichAgent"
+type = "agent"
+[[.returns]]
+type = "boolean"
+
+[SaveHashtableHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+``````````
+name = "whichHashtable"
+type = "hashtable"
+[[.returns]]
+type = "boolean"
+
+[LoadInteger]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[LoadReal]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "number"
+
+[LoadBoolean]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[LoadStr]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[LoadPlayerHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "player"
+
+[LoadWidgetHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "widget"
+
+[LoadDestructableHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "destructable"
+
+[LoadItemHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "item"
+
+[LoadUnitHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "unit"
+
+[LoadAbilityHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "ability"
+
+[LoadTimerHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "timer"
+
+[LoadTriggerHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "trigger"
+
+[LoadTriggerConditionHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "triggercondition"
+
+[LoadTriggerActionHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "triggeraction"
+
+[LoadTriggerEventHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "event"
+
+[LoadForceHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "force"
+
+[LoadGroupHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "group"
+
+[LoadLocationHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "location"
+
+[LoadRectHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "rect"
+
+[LoadBooleanExprHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "boolexpr"
+
+[LoadSoundHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "sound"
+
+[LoadEffectHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "effect"
+
+[LoadUnitPoolHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "unitpool"
+
+[LoadItemPoolHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "itempool"
+
+[LoadQuestHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "quest"
+
+[LoadQuestItemHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "questitem"
+
+[LoadDefeatConditionHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "defeatcondition"
+
+[LoadTimerDialogHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "timerdialog"
+
+[LoadLeaderboardHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "leaderboard"
+
+[LoadMultiboardHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "multiboard"
+
+[LoadMultiboardItemHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "multiboarditem"
+
+[LoadTrackableHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "trackable"
+
+[LoadDialogHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "dialog"
+
+[LoadButtonHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "button"
+
+[LoadTextTagHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "texttag"
+
+[LoadLightningHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "lightning"
+
+[LoadImageHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "image"
+
+[LoadUbersplatHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "ubersplat"
+
+[LoadRegionHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "region"
+
+[LoadFogStateHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "fogstate"
+
+[LoadFogModifierHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "fogmodifier"
+
+[LoadHashtableHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "hashtable"
+
+[HaveSavedInteger]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[HaveSavedReal]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[HaveSavedBoolean]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[HaveSavedString]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[HaveSavedHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[RemoveSavedInteger]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+
+[RemoveSavedReal]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+
+[RemoveSavedBoolean]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+
+[RemoveSavedString]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+
+[RemoveSavedHandle]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+``````````
+name = "childKey"
+type = "integer"
+
+[FlushParentHashtable]
+[[.args]]
+name = "table"
+type = "hashtable"
+
+[FlushChildHashtable]
+[[.args]]
+name = "table"
+type = "hashtable"
+``````````
+name = "parentKey"
+type = "integer"
+
+[GetRandomInt]
+[[.args]]
+name = "lowBound"
+type = "integer"
+``````````
+name = "highBound"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[GetRandomReal]
+[[.args]]
+name = "lowBound"
+type = "number"
+``````````
+name = "highBound"
+type = "number"
+[[.returns]]
+type = "number"
+
+[CreateUnitPool]
+[[.returns]]
+type = "unitpool"
+
+[DestroyUnitPool]
+[[.args]]
+name = "whichPool"
+type = "unitpool"
+
+[UnitPoolAddUnitType]
+[[.args]]
+name = "whichPool"
+type = "unitpool"
+``````````
+name = "unitId"
+type = "integer"
+``````````
+name = "weight"
+type = "number"
+
+[UnitPoolRemoveUnitType]
+[[.args]]
+name = "whichPool"
+type = "unitpool"
+``````````
+name = "unitId"
+type = "integer"
+
+[PlaceRandomUnit]
+[[.args]]
+name = "whichPool"
+type = "unitpool"
+``````````
+name = "forWhichPlayer"
+type = "player"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "facing"
+type = "number"
+[[.returns]]
+type = "unit"
+
+[CreateItemPool]
+[[.returns]]
+type = "itempool"
+
+[DestroyItemPool]
+[[.args]]
+name = "whichItemPool"
+type = "itempool"
+
+[ItemPoolAddItemType]
+[[.args]]
+name = "whichItemPool"
+type = "itempool"
+``````````
+name = "itemId"
+type = "integer"
+``````````
+name = "weight"
+type = "number"
+
+[ItemPoolRemoveItemType]
+[[.args]]
+name = "whichItemPool"
+type = "itempool"
+``````````
+name = "itemId"
+type = "integer"
+
+[PlaceRandomItem]
+[[.args]]
+name = "whichItemPool"
+type = "itempool"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "item"
+
+[ChooseRandomCreep]
+[[.args]]
+name = "level"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[ChooseRandomNPBuilding]
+[[.returns]]
+type = "integer"
+
+[ChooseRandomItem]
+[[.args]]
+name = "level"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[ChooseRandomItemEx]
+[[.args]]
+name = "whichType"
+type = "itemtype"
+``````````
+name = "level"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[SetRandomSeed]
+[[.args]]
+name = "seed"
+type = "integer"
+
+[SetTerrainFog]
+[[.args]]
+name = "a"
+type = "number"
+``````````
+name = "b"
+type = "number"
+``````````
+name = "c"
+type = "number"
+``````````
+name = "d"
+type = "number"
+``````````
+name = "e"
+type = "number"
+
+[ResetTerrainFog]
+
+[SetUnitFog]
+[[.args]]
+name = "a"
+type = "number"
+``````````
+name = "b"
+type = "number"
+``````````
+name = "c"
+type = "number"
+``````````
+name = "d"
+type = "number"
+``````````
+name = "e"
+type = "number"
+
+[SetTerrainFogEx]
+[[.args]]
+name = "style"
+type = "integer"
+``````````
+name = "zstart"
+type = "number"
+``````````
+name = "zend"
+type = "number"
+``````````
+name = "density"
+type = "number"
+``````````
+name = "red"
+type = "number"
+``````````
+name = "green"
+type = "number"
+``````````
+name = "blue"
+type = "number"
+
+[DisplayTextToPlayer]
+[[.args]]
+name = "toPlayer"
+type = "player"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "message"
+type = "string"
+
+[DisplayTimedTextToPlayer]
+[[.args]]
+name = "toPlayer"
+type = "player"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+``````````
+name = "message"
+type = "string"
+
+[DisplayTimedTextFromPlayer]
+[[.args]]
+name = "toPlayer"
+type = "player"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+``````````
+name = "message"
+type = "string"
+
+[ClearTextMessages]
+
+[SetDayNightModels]
+[[.args]]
+name = "terrainDNCFile"
+type = "string"
+``````````
+name = "unitDNCFile"
+type = "string"
+
+[SetSkyModel]
+[[.args]]
+name = "skyModelFile"
+type = "string"
+
+[EnableUserControl]
+[[.args]]
+name = "b"
+type = "boolean"
+
+[EnableUserUI]
+[[.args]]
+name = "b"
+type = "boolean"
+
+[SuspendTimeOfDay]
+[[.args]]
+name = "b"
+type = "boolean"
+
+[SetTimeOfDayScale]
+[[.args]]
+name = "r"
+type = "number"
+
+[GetTimeOfDayScale]
+[[.returns]]
+type = "number"
+
+[ShowInterface]
+[[.args]]
+name = "flag"
+type = "boolean"
+``````````
+name = "fadeDuration"
+type = "number"
+
+[PauseGame]
+[[.args]]
+name = "flag"
+type = "boolean"
+
+[UnitAddIndicator]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[AddIndicator]
+[[.args]]
+name = "whichWidget"
+type = "widget"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[PingMinimap]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+
+[PingMinimapEx]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "extraEffects"
+type = "boolean"
+
+[EnableOcclusion]
+[[.args]]
+name = "flag"
+type = "boolean"
+
+[SetIntroShotText]
+[[.args]]
+name = "introText"
+type = "string"
+
+[SetIntroShotModel]
+[[.args]]
+name = "introModelPath"
+type = "string"
+
+[EnableWorldFogBoundary]
+[[.args]]
+name = "b"
+type = "boolean"
+
+[PlayModelCinematic]
+[[.args]]
+name = "modelName"
+type = "string"
+
+[PlayCinematic]
+[[.args]]
+name = "movieName"
+type = "string"
+
+[ForceUIKey]
+[[.args]]
+name = "key"
+type = "string"
+
+[ForceUICancel]
+
+[DisplayLoadDialog]
+
+[SetAltMinimapIcon]
+[[.args]]
+name = "iconPath"
+type = "string"
+
+[DisableRestartMission]
+[[.args]]
+name = "flag"
+type = "boolean"
+
+[CreateTextTag]
+[[.returns]]
+type = "texttag"
+
+[DestroyTextTag]
+[[.args]]
+name = "t"
+type = "texttag"
+
+[SetTextTagText]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "s"
+type = "string"
+``````````
+name = "height"
+type = "number"
+
+[SetTextTagPos]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "heightOffset"
+type = "number"
+
+[SetTextTagPosUnit]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "whichUnit"
+type = "unit"
+``````````
+name = "heightOffset"
+type = "number"
+
+[SetTextTagColor]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[SetTextTagVelocity]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "xvel"
+type = "number"
+``````````
+name = "yvel"
+type = "number"
+
+[SetTextTagVisibility]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetTextTagSuspended]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetTextTagPermanent]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetTextTagAge]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "age"
+type = "number"
+
+[SetTextTagLifespan]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "lifespan"
+type = "number"
+
+[SetTextTagFadepoint]
+[[.args]]
+name = "t"
+type = "texttag"
+``````````
+name = "fadepoint"
+type = "number"
+
+[SetReservedLocalHeroButtons]
+[[.args]]
+name = "reserved"
+type = "integer"
+
+[GetAllyColorFilterState]
+[[.returns]]
+type = "integer"
+
+[SetAllyColorFilterState]
+[[.args]]
+name = "state"
+type = "integer"
+
+[GetCreepCampFilterState]
+[[.returns]]
+type = "boolean"
+
+[SetCreepCampFilterState]
+[[.args]]
+name = "state"
+type = "boolean"
+
+[EnableMinimapFilterButtons]
+[[.args]]
+name = "enableAlly"
+type = "boolean"
+``````````
+name = "enableCreep"
+type = "boolean"
+
+[EnableDragSelect]
+[[.args]]
+name = "state"
+type = "boolean"
+``````````
+name = "ui"
+type = "boolean"
+
+[EnablePreSelect]
+[[.args]]
+name = "state"
+type = "boolean"
+``````````
+name = "ui"
+type = "boolean"
+
+[EnableSelect]
+[[.args]]
+name = "state"
+type = "boolean"
+``````````
+name = "ui"
+type = "boolean"
+
+[CreateTrackable]
+[[.args]]
+name = "trackableModelPath"
+type = "string"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "facing"
+type = "number"
+[[.returns]]
+type = "trackable"
+
+[CreateQuest]
+[[.returns]]
+type = "quest"
+
+[DestroyQuest]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+
+[QuestSetTitle]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+``````````
+name = "title"
+type = "string"
+
+[QuestSetDescription]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+``````````
+name = "description"
+type = "string"
+
+[QuestSetIconPath]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+``````````
+name = "iconPath"
+type = "string"
+
+[QuestSetRequired]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+``````````
+name = "required"
+type = "boolean"
+
+[QuestSetCompleted]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+``````````
+name = "completed"
+type = "boolean"
+
+[QuestSetDiscovered]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+``````````
+name = "discovered"
+type = "boolean"
+
+[QuestSetFailed]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+``````````
+name = "failed"
+type = "boolean"
+
+[QuestSetEnabled]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+``````````
+name = "enabled"
+type = "boolean"
+
+[IsQuestRequired]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+[[.returns]]
+type = "boolean"
+
+[IsQuestCompleted]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+[[.returns]]
+type = "boolean"
+
+[IsQuestDiscovered]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+[[.returns]]
+type = "boolean"
+
+[IsQuestFailed]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+[[.returns]]
+type = "boolean"
+
+[IsQuestEnabled]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+[[.returns]]
+type = "boolean"
+
+[QuestCreateItem]
+[[.args]]
+name = "whichQuest"
+type = "quest"
+[[.returns]]
+type = "questitem"
+
+[QuestItemSetDescription]
+[[.args]]
+name = "whichQuestItem"
+type = "questitem"
+``````````
+name = "description"
+type = "string"
+
+[QuestItemSetCompleted]
+[[.args]]
+name = "whichQuestItem"
+type = "questitem"
+``````````
+name = "completed"
+type = "boolean"
+
+[IsQuestItemCompleted]
+[[.args]]
+name = "whichQuestItem"
+type = "questitem"
+[[.returns]]
+type = "boolean"
+
+[CreateDefeatCondition]
+[[.returns]]
+type = "defeatcondition"
+
+[DestroyDefeatCondition]
+[[.args]]
+name = "whichCondition"
+type = "defeatcondition"
+
+[DefeatConditionSetDescription]
+[[.args]]
+name = "whichCondition"
+type = "defeatcondition"
+``````````
+name = "description"
+type = "string"
+
+[FlashQuestDialogButton]
+
+[ForceQuestDialogUpdate]
+
+[CreateTimerDialog]
+[[.args]]
+name = "t"
+type = "timer"
+[[.returns]]
+type = "timerdialog"
+
+[DestroyTimerDialog]
+[[.args]]
+name = "whichDialog"
+type = "timerdialog"
+
+[TimerDialogSetTitle]
+[[.args]]
+name = "whichDialog"
+type = "timerdialog"
+``````````
+name = "title"
+type = "string"
+
+[TimerDialogSetTitleColor]
+[[.args]]
+name = "whichDialog"
+type = "timerdialog"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[TimerDialogSetTimeColor]
+[[.args]]
+name = "whichDialog"
+type = "timerdialog"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[TimerDialogSetSpeed]
+[[.args]]
+name = "whichDialog"
+type = "timerdialog"
+``````````
+name = "speedMultFactor"
+type = "number"
+
+[TimerDialogDisplay]
+[[.args]]
+name = "whichDialog"
+type = "timerdialog"
+``````````
+name = "display"
+type = "boolean"
+
+[IsTimerDialogDisplayed]
+[[.args]]
+name = "whichDialog"
+type = "timerdialog"
+[[.returns]]
+type = "boolean"
+
+[TimerDialogSetRealTimeRemaining]
+[[.args]]
+name = "whichDialog"
+type = "timerdialog"
+``````````
+name = "timeRemaining"
+type = "number"
+
+[CreateLeaderboard]
+[[.returns]]
+type = "leaderboard"
+
+[DestroyLeaderboard]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+
+[LeaderboardDisplay]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "show"
+type = "boolean"
+
+[IsLeaderboardDisplayed]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+[[.returns]]
+type = "boolean"
+
+[LeaderboardGetItemCount]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+[[.returns]]
+type = "integer"
+
+[LeaderboardSetSizeByItemCount]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "count"
+type = "integer"
+
+[LeaderboardAddItem]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "label"
+type = "string"
+``````````
+name = "value"
+type = "integer"
+``````````
+name = "p"
+type = "player"
+
+[LeaderboardRemoveItem]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "index"
+type = "integer"
+
+[LeaderboardRemovePlayerItem]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "p"
+type = "player"
+
+[LeaderboardClear]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+
+[LeaderboardSortItemsByValue]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "ascending"
+type = "boolean"
+
+[LeaderboardSortItemsByPlayer]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "ascending"
+type = "boolean"
+
+[LeaderboardSortItemsByLabel]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "ascending"
+type = "boolean"
+
+[LeaderboardHasPlayerItem]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "p"
+type = "player"
+[[.returns]]
+type = "boolean"
+
+[LeaderboardGetPlayerIndex]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "p"
+type = "player"
+[[.returns]]
+type = "integer"
+
+[LeaderboardSetLabel]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "label"
+type = "string"
+
+[LeaderboardGetLabelText]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+[[.returns]]
+type = "string"
+
+[PlayerSetLeaderboard]
+[[.args]]
+name = "toPlayer"
+type = "player"
+``````````
+name = "lb"
+type = "leaderboard"
+
+[PlayerGetLeaderboard]
+[[.args]]
+name = "toPlayer"
+type = "player"
+[[.returns]]
+type = "leaderboard"
+
+[LeaderboardSetLabelColor]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[LeaderboardSetValueColor]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[LeaderboardSetStyle]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "showLabel"
+type = "boolean"
+``````````
+name = "showNames"
+type = "boolean"
+``````````
+name = "showValues"
+type = "boolean"
+``````````
+name = "showIcons"
+type = "boolean"
+
+[LeaderboardSetItemValue]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "whichItem"
+type = "integer"
+``````````
+name = "val"
+type = "integer"
+
+[LeaderboardSetItemLabel]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "whichItem"
+type = "integer"
+``````````
+name = "val"
+type = "string"
+
+[LeaderboardSetItemStyle]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "whichItem"
+type = "integer"
+``````````
+name = "showLabel"
+type = "boolean"
+``````````
+name = "showValue"
+type = "boolean"
+``````````
+name = "showIcon"
+type = "boolean"
+
+[LeaderboardSetItemLabelColor]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "whichItem"
+type = "integer"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[LeaderboardSetItemValueColor]
+[[.args]]
+name = "lb"
+type = "leaderboard"
+``````````
+name = "whichItem"
+type = "integer"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[CreateMultiboard]
+[[.returns]]
+type = "multiboard"
+
+[DestroyMultiboard]
+[[.args]]
+name = "lb"
+type = "multiboard"
+
+[MultiboardDisplay]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "show"
+type = "boolean"
+
+[IsMultiboardDisplayed]
+[[.args]]
+name = "lb"
+type = "multiboard"
+[[.returns]]
+type = "boolean"
+
+[MultiboardMinimize]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "minimize"
+type = "boolean"
+
+[IsMultiboardMinimized]
+[[.args]]
+name = "lb"
+type = "multiboard"
+[[.returns]]
+type = "boolean"
+
+[MultiboardClear]
+[[.args]]
+name = "lb"
+type = "multiboard"
+
+[MultiboardSetTitleText]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "label"
+type = "string"
+
+[MultiboardGetTitleText]
+[[.args]]
+name = "lb"
+type = "multiboard"
+[[.returns]]
+type = "string"
+
+[MultiboardSetTitleTextColor]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[MultiboardGetRowCount]
+[[.args]]
+name = "lb"
+type = "multiboard"
+[[.returns]]
+type = "integer"
+
+[MultiboardGetColumnCount]
+[[.args]]
+name = "lb"
+type = "multiboard"
+[[.returns]]
+type = "integer"
+
+[MultiboardSetColumnCount]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "count"
+type = "integer"
+
+[MultiboardSetRowCount]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "count"
+type = "integer"
+
+[MultiboardSetItemsStyle]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "showValues"
+type = "boolean"
+``````````
+name = "showIcons"
+type = "boolean"
+
+[MultiboardSetItemsValue]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "value"
+type = "string"
+
+[MultiboardSetItemsValueColor]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[MultiboardSetItemsWidth]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "width"
+type = "number"
+
+[MultiboardSetItemsIcon]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "iconPath"
+type = "string"
+
+[MultiboardGetItem]
+[[.args]]
+name = "lb"
+type = "multiboard"
+``````````
+name = "row"
+type = "integer"
+``````````
+name = "column"
+type = "integer"
+[[.returns]]
+type = "multiboarditem"
+
+[MultiboardReleaseItem]
+[[.args]]
+name = "mbi"
+type = "multiboarditem"
+
+[MultiboardSetItemStyle]
+[[.args]]
+name = "mbi"
+type = "multiboarditem"
+``````````
+name = "showValue"
+type = "boolean"
+``````````
+name = "showIcon"
+type = "boolean"
+
+[MultiboardSetItemValue]
+[[.args]]
+name = "mbi"
+type = "multiboarditem"
+``````````
+name = "val"
+type = "string"
+
+[MultiboardSetItemValueColor]
+[[.args]]
+name = "mbi"
+type = "multiboarditem"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[MultiboardSetItemWidth]
+[[.args]]
+name = "mbi"
+type = "multiboarditem"
+``````````
+name = "width"
+type = "number"
+
+[MultiboardSetItemIcon]
+[[.args]]
+name = "mbi"
+type = "multiboarditem"
+``````````
+name = "iconFileName"
+type = "string"
+
+[MultiboardSuppressDisplay]
+[[.args]]
+name = "flag"
+type = "boolean"
+
+[SetCameraPosition]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+
+[SetCameraQuickPosition]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+
+[SetCameraBounds]
+[[.args]]
+name = "x1"
+type = "number"
+``````````
+name = "y1"
+type = "number"
+``````````
+name = "x2"
+type = "number"
+``````````
+name = "y2"
+type = "number"
+``````````
+name = "x3"
+type = "number"
+``````````
+name = "y3"
+type = "number"
+``````````
+name = "x4"
+type = "number"
+``````````
+name = "y4"
+type = "number"
+
+[StopCamera]
+
+[ResetToGameCamera]
+[[.args]]
+name = "duration"
+type = "number"
+
+[PanCameraTo]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+
+[PanCameraToTimed]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+
+[PanCameraToWithZ]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "zOffsetDest"
+type = "number"
+
+[PanCameraToTimedWithZ]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "zOffsetDest"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+
+[SetCinematicCamera]
+[[.args]]
+name = "cameraModelFile"
+type = "string"
+
+[SetCameraRotateMode]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "radiansToSweep"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+
+[SetCameraField]
+[[.args]]
+name = "whichField"
+type = "camerafield"
+``````````
+name = "value"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+
+[AdjustCameraField]
+[[.args]]
+name = "whichField"
+type = "camerafield"
+``````````
+name = "offset"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+
+[SetCameraTargetController]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "xoffset"
+type = "number"
+``````````
+name = "yoffset"
+type = "number"
+``````````
+name = "inheritOrientation"
+type = "boolean"
+
+[SetCameraOrientController]
+[[.args]]
+name = "whichUnit"
+type = "unit"
+``````````
+name = "xoffset"
+type = "number"
+``````````
+name = "yoffset"
+type = "number"
+
+[CreateCameraSetup]
+[[.returns]]
+type = "camerasetup"
+
+[CameraSetupSetField]
+[[.args]]
+name = "whichSetup"
+type = "camerasetup"
+``````````
+name = "whichField"
+type = "camerafield"
+``````````
+name = "value"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+
+[CameraSetupGetField]
+[[.args]]
+name = "whichSetup"
+type = "camerasetup"
+``````````
+name = "whichField"
+type = "camerafield"
+[[.returns]]
+type = "number"
+
+[CameraSetupSetDestPosition]
+[[.args]]
+name = "whichSetup"
+type = "camerasetup"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "duration"
+type = "number"
+
+[CameraSetupGetDestPositionLoc]
+[[.args]]
+name = "whichSetup"
+type = "camerasetup"
+[[.returns]]
+type = "location"
+
+[CameraSetupGetDestPositionX]
+[[.args]]
+name = "whichSetup"
+type = "camerasetup"
+[[.returns]]
+type = "number"
+
+[CameraSetupGetDestPositionY]
+[[.args]]
+name = "whichSetup"
+type = "camerasetup"
+[[.returns]]
+type = "number"
+
+[CameraSetupApply]
+[[.args]]
+name = "whichSetup"
+type = "camerasetup"
+``````````
+name = "doPan"
+type = "boolean"
+``````````
+name = "panTimed"
+type = "boolean"
+
+[CameraSetupApplyWithZ]
+[[.args]]
+name = "whichSetup"
+type = "camerasetup"
+``````````
+name = "zDestOffset"
+type = "number"
+
+[CameraSetupApplyForceDuration]
+[[.args]]
+name = "whichSetup"
+type = "camerasetup"
+``````````
+name = "doPan"
+type = "boolean"
+``````````
+name = "forceDuration"
+type = "number"
+
+[CameraSetupApplyForceDurationWithZ]
+[[.args]]
+name = "whichSetup"
+type = "camerasetup"
+``````````
+name = "zDestOffset"
+type = "number"
+``````````
+name = "forceDuration"
+type = "number"
+
+[CameraSetTargetNoise]
+[[.args]]
+name = "mag"
+type = "number"
+``````````
+name = "velocity"
+type = "number"
+
+[CameraSetSourceNoise]
+[[.args]]
+name = "mag"
+type = "number"
+``````````
+name = "velocity"
+type = "number"
+
+[CameraSetTargetNoiseEx]
+[[.args]]
+name = "mag"
+type = "number"
+``````````
+name = "velocity"
+type = "number"
+``````````
+name = "vertOnly"
+type = "boolean"
+
+[CameraSetSourceNoiseEx]
+[[.args]]
+name = "mag"
+type = "number"
+``````````
+name = "velocity"
+type = "number"
+``````````
+name = "vertOnly"
+type = "boolean"
+
+[CameraSetSmoothingFactor]
+[[.args]]
+name = "factor"
+type = "number"
+
+[SetCineFilterTexture]
+[[.args]]
+name = "filename"
+type = "string"
+
+[SetCineFilterBlendMode]
+[[.args]]
+name = "whichMode"
+type = "blendmode"
+
+[SetCineFilterTexMapFlags]
+[[.args]]
+name = "whichFlags"
+type = "texmapflags"
+
+[SetCineFilterStartUV]
+[[.args]]
+name = "minu"
+type = "number"
+``````````
+name = "minv"
+type = "number"
+``````````
+name = "maxu"
+type = "number"
+``````````
+name = "maxv"
+type = "number"
+
+[SetCineFilterEndUV]
+[[.args]]
+name = "minu"
+type = "number"
+``````````
+name = "minv"
+type = "number"
+``````````
+name = "maxu"
+type = "number"
+``````````
+name = "maxv"
+type = "number"
+
+[SetCineFilterStartColor]
+[[.args]]
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[SetCineFilterEndColor]
+[[.args]]
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[SetCineFilterDuration]
+[[.args]]
+name = "duration"
+type = "number"
+
+[DisplayCineFilter]
+[[.args]]
+name = "flag"
+type = "boolean"
+
+[IsCineFilterDisplayed]
+[[.returns]]
+type = "boolean"
+
+[SetCinematicScene]
+[[.args]]
+name = "portraitUnitId"
+type = "integer"
+``````````
+name = "color"
+type = "playercolor"
+``````````
+name = "speakerTitle"
+type = "string"
+``````````
+name = "text"
+type = "string"
+``````````
+name = "sceneDuration"
+type = "number"
+``````````
+name = "voiceoverDuration"
+type = "number"
+
+[EndCinematicScene]
+
+[ForceCinematicSubtitles]
+[[.args]]
+name = "flag"
+type = "boolean"
+
+[GetCameraMargin]
+[[.args]]
+name = "whichMargin"
+type = "integer"
+[[.returns]]
+type = "number"
+
+[GetCameraBoundMinX]
+[[.returns]]
+type = "number"
+
+[GetCameraBoundMinY]
+[[.returns]]
+type = "number"
+
+[GetCameraBoundMaxX]
+[[.returns]]
+type = "number"
+
+[GetCameraBoundMaxY]
+[[.returns]]
+type = "number"
+
+[GetCameraField]
+[[.args]]
+name = "whichField"
+type = "camerafield"
+[[.returns]]
+type = "number"
+
+[GetCameraTargetPositionX]
+[[.returns]]
+type = "number"
+
+[GetCameraTargetPositionY]
+[[.returns]]
+type = "number"
+
+[GetCameraTargetPositionZ]
+[[.returns]]
+type = "number"
+
+[GetCameraTargetPositionLoc]
+[[.returns]]
+type = "location"
+
+[GetCameraEyePositionX]
+[[.returns]]
+type = "number"
+
+[GetCameraEyePositionY]
+[[.returns]]
+type = "number"
+
+[GetCameraEyePositionZ]
+[[.returns]]
+type = "number"
+
+[GetCameraEyePositionLoc]
+[[.returns]]
+type = "location"
+
+[NewSoundEnvironment]
+[[.args]]
+name = "environmentName"
+type = "string"
+
+[CreateSound]
+[[.args]]
+name = "fileName"
+type = "string"
+``````````
+name = "looping"
+type = "boolean"
+``````````
+name = "is3D"
+type = "boolean"
+``````````
+name = "stopwhenoutofrange"
+type = "boolean"
+``````````
+name = "fadeInRate"
+type = "integer"
+``````````
+name = "fadeOutRate"
+type = "integer"
+``````````
+name = "eaxSetting"
+type = "string"
+[[.returns]]
+type = "sound"
+
+[CreateSoundFilenameWithLabel]
+[[.args]]
+name = "fileName"
+type = "string"
+``````````
+name = "looping"
+type = "boolean"
+``````````
+name = "is3D"
+type = "boolean"
+``````````
+name = "stopwhenoutofrange"
+type = "boolean"
+``````````
+name = "fadeInRate"
+type = "integer"
+``````````
+name = "fadeOutRate"
+type = "integer"
+``````````
+name = "SLKEntryName"
+type = "string"
+[[.returns]]
+type = "sound"
+
+[CreateSoundFromLabel]
+[[.args]]
+name = "soundLabel"
+type = "string"
+``````````
+name = "looping"
+type = "boolean"
+``````````
+name = "is3D"
+type = "boolean"
+``````````
+name = "stopwhenoutofrange"
+type = "boolean"
+``````````
+name = "fadeInRate"
+type = "integer"
+``````````
+name = "fadeOutRate"
+type = "integer"
+[[.returns]]
+type = "sound"
+
+[CreateMIDISound]
+[[.args]]
+name = "soundLabel"
+type = "string"
+``````````
+name = "fadeInRate"
+type = "integer"
+``````````
+name = "fadeOutRate"
+type = "integer"
+[[.returns]]
+type = "sound"
+
+[SetSoundParamsFromLabel]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "soundLabel"
+type = "string"
+
+[SetSoundDistanceCutoff]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "cutoff"
+type = "number"
+
+[SetSoundChannel]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "channel"
+type = "integer"
+
+[SetSoundVolume]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "volume"
+type = "integer"
+
+[SetSoundPitch]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "pitch"
+type = "number"
+
+[SetSoundPlayPosition]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "millisecs"
+type = "integer"
+
+[SetSoundDistances]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "minDist"
+type = "number"
+``````````
+name = "maxDist"
+type = "number"
+
+[SetSoundConeAngles]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "inside"
+type = "number"
+``````````
+name = "outside"
+type = "number"
+``````````
+name = "outsideVolume"
+type = "integer"
+
+[SetSoundConeOrientation]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "z"
+type = "number"
+
+[SetSoundPosition]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "z"
+type = "number"
+
+[SetSoundVelocity]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "z"
+type = "number"
+
+[AttachSoundToUnit]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "whichUnit"
+type = "unit"
+
+[StartSound]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+
+[StopSound]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "killWhenDone"
+type = "boolean"
+``````````
+name = "fadeOut"
+type = "boolean"
+
+[KillSoundWhenDone]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+
+[SetMapMusic]
+[[.args]]
+name = "musicName"
+type = "string"
+``````````
+name = "random"
+type = "boolean"
+``````````
+name = "index"
+type = "integer"
+
+[ClearMapMusic]
+
+[PlayMusic]
+[[.args]]
+name = "musicName"
+type = "string"
+
+[PlayMusicEx]
+[[.args]]
+name = "musicName"
+type = "string"
+``````````
+name = "frommsecs"
+type = "integer"
+``````````
+name = "fadeinmsecs"
+type = "integer"
+
+[StopMusic]
+[[.args]]
+name = "fadeOut"
+type = "boolean"
+
+[ResumeMusic]
+
+[PlayThematicMusic]
+[[.args]]
+name = "musicFileName"
+type = "string"
+
+[PlayThematicMusicEx]
+[[.args]]
+name = "musicFileName"
+type = "string"
+``````````
+name = "frommsecs"
+type = "integer"
+
+[EndThematicMusic]
+
+[SetMusicVolume]
+[[.args]]
+name = "volume"
+type = "integer"
+
+[SetMusicPlayPosition]
+[[.args]]
+name = "millisecs"
+type = "integer"
+
+[SetThematicMusicPlayPosition]
+[[.args]]
+name = "millisecs"
+type = "integer"
+
+[SetSoundDuration]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "duration"
+type = "integer"
+
+[GetSoundDuration]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+[[.returns]]
+type = "integer"
+
+[GetSoundFileDuration]
+[[.args]]
+name = "musicFileName"
+type = "string"
+[[.returns]]
+type = "integer"
+
+[VolumeGroupSetVolume]
+[[.args]]
+name = "vgroup"
+type = "volumegroup"
+``````````
+name = "scale"
+type = "number"
+
+[VolumeGroupReset]
+
+[GetSoundIsPlaying]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+[[.returns]]
+type = "boolean"
+
+[GetSoundIsLoading]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+[[.returns]]
+type = "boolean"
+
+[RegisterStackedSound]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "byPosition"
+type = "boolean"
+``````````
+name = "rectwidth"
+type = "number"
+``````````
+name = "rectheight"
+type = "number"
+
+[UnregisterStackedSound]
+[[.args]]
+name = "soundHandle"
+type = "sound"
+``````````
+name = "byPosition"
+type = "boolean"
+``````````
+name = "rectwidth"
+type = "number"
+``````````
+name = "rectheight"
+type = "number"
+
+[AddWeatherEffect]
+[[.args]]
+name = "where"
+type = "rect"
+``````````
+name = "effectID"
+type = "integer"
+[[.returns]]
+type = "weathereffect"
+
+[RemoveWeatherEffect]
+[[.args]]
+name = "whichEffect"
+type = "weathereffect"
+
+[EnableWeatherEffect]
+[[.args]]
+name = "whichEffect"
+type = "weathereffect"
+``````````
+name = "enable"
+type = "boolean"
+
+[TerrainDeformCrater]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "depth"
+type = "number"
+``````````
+name = "duration"
+type = "integer"
+``````````
+name = "permanent"
+type = "boolean"
+[[.returns]]
+type = "terraindeformation"
+
+[TerrainDeformRipple]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "depth"
+type = "number"
+``````````
+name = "duration"
+type = "integer"
+``````````
+name = "count"
+type = "integer"
+``````````
+name = "spaceWaves"
+type = "number"
+``````````
+name = "timeWaves"
+type = "number"
+``````````
+name = "radiusStartPct"
+type = "number"
+``````````
+name = "limitNeg"
+type = "boolean"
+[[.returns]]
+type = "terraindeformation"
+
+[TerrainDeformWave]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "dirX"
+type = "number"
+``````````
+name = "dirY"
+type = "number"
+``````````
+name = "distance"
+type = "number"
+``````````
+name = "speed"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "depth"
+type = "number"
+``````````
+name = "trailTime"
+type = "integer"
+``````````
+name = "count"
+type = "integer"
+[[.returns]]
+type = "terraindeformation"
+
+[TerrainDeformRandom]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "minDelta"
+type = "number"
+``````````
+name = "maxDelta"
+type = "number"
+``````````
+name = "duration"
+type = "integer"
+``````````
+name = "updateInterval"
+type = "integer"
+[[.returns]]
+type = "terraindeformation"
+
+[TerrainDeformStop]
+[[.args]]
+name = "deformation"
+type = "terraindeformation"
+``````````
+name = "duration"
+type = "integer"
+
+[TerrainDeformStopAll]
+
+[AddSpecialEffect]
+[[.args]]
+name = "modelName"
+type = "string"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "effect"
+
+[AddSpecialEffectLoc]
+[[.args]]
+name = "modelName"
+type = "string"
+``````````
+name = "where"
+type = "location"
+[[.returns]]
+type = "effect"
+
+[AddSpecialEffectTarget]
+[[.args]]
+name = "modelName"
+type = "string"
+``````````
+name = "targetWidget"
+type = "widget"
+``````````
+name = "attachPointName"
+type = "string"
+[[.returns]]
+type = "effect"
+
+[DestroyEffect]
+[[.args]]
+name = "whichEffect"
+type = "effect"
+
+[AddSpellEffect]
+[[.args]]
+name = "abilityString"
+type = "string"
+``````````
+name = "t"
+type = "effecttype"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "effect"
+
+[AddSpellEffectLoc]
+[[.args]]
+name = "abilityString"
+type = "string"
+``````````
+name = "t"
+type = "effecttype"
+``````````
+name = "where"
+type = "location"
+[[.returns]]
+type = "effect"
+
+[AddSpellEffectById]
+[[.args]]
+name = "abilityId"
+type = "integer"
+``````````
+name = "t"
+type = "effecttype"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "effect"
+
+[AddSpellEffectByIdLoc]
+[[.args]]
+name = "abilityId"
+type = "integer"
+``````````
+name = "t"
+type = "effecttype"
+``````````
+name = "where"
+type = "location"
+[[.returns]]
+type = "effect"
+
+[AddSpellEffectTarget]
+[[.args]]
+name = "modelName"
+type = "string"
+``````````
+name = "t"
+type = "effecttype"
+``````````
+name = "targetWidget"
+type = "widget"
+``````````
+name = "attachPoint"
+type = "string"
+[[.returns]]
+type = "effect"
+
+[AddSpellEffectTargetById]
+[[.args]]
+name = "abilityId"
+type = "integer"
+``````````
+name = "t"
+type = "effecttype"
+``````````
+name = "targetWidget"
+type = "widget"
+``````````
+name = "attachPoint"
+type = "string"
+[[.returns]]
+type = "effect"
+
+[AddLightning]
+[[.args]]
+name = "codeName"
+type = "string"
+``````````
+name = "checkVisibility"
+type = "boolean"
+``````````
+name = "x1"
+type = "number"
+``````````
+name = "y1"
+type = "number"
+``````````
+name = "x2"
+type = "number"
+``````````
+name = "y2"
+type = "number"
+[[.returns]]
+type = "lightning"
+
+[AddLightningEx]
+[[.args]]
+name = "codeName"
+type = "string"
+``````````
+name = "checkVisibility"
+type = "boolean"
+``````````
+name = "x1"
+type = "number"
+``````````
+name = "y1"
+type = "number"
+``````````
+name = "z1"
+type = "number"
+``````````
+name = "x2"
+type = "number"
+``````````
+name = "y2"
+type = "number"
+``````````
+name = "z2"
+type = "number"
+[[.returns]]
+type = "lightning"
+
+[DestroyLightning]
+[[.args]]
+name = "whichBolt"
+type = "lightning"
+[[.returns]]
+type = "boolean"
+
+[MoveLightning]
+[[.args]]
+name = "whichBolt"
+type = "lightning"
+``````````
+name = "checkVisibility"
+type = "boolean"
+``````````
+name = "x1"
+type = "number"
+``````````
+name = "y1"
+type = "number"
+``````````
+name = "x2"
+type = "number"
+``````````
+name = "y2"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[MoveLightningEx]
+[[.args]]
+name = "whichBolt"
+type = "lightning"
+``````````
+name = "checkVisibility"
+type = "boolean"
+``````````
+name = "x1"
+type = "number"
+``````````
+name = "y1"
+type = "number"
+``````````
+name = "z1"
+type = "number"
+``````````
+name = "x2"
+type = "number"
+``````````
+name = "y2"
+type = "number"
+``````````
+name = "z2"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[GetLightningColorA]
+[[.args]]
+name = "whichBolt"
+type = "lightning"
+[[.returns]]
+type = "number"
+
+[GetLightningColorR]
+[[.args]]
+name = "whichBolt"
+type = "lightning"
+[[.returns]]
+type = "number"
+
+[GetLightningColorG]
+[[.args]]
+name = "whichBolt"
+type = "lightning"
+[[.returns]]
+type = "number"
+
+[GetLightningColorB]
+[[.args]]
+name = "whichBolt"
+type = "lightning"
+[[.returns]]
+type = "number"
+
+[SetLightningColor]
+[[.args]]
+name = "whichBolt"
+type = "lightning"
+``````````
+name = "r"
+type = "number"
+``````````
+name = "g"
+type = "number"
+``````````
+name = "b"
+type = "number"
+``````````
+name = "a"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[GetAbilityEffect]
+[[.args]]
+name = "abilityString"
+type = "string"
+``````````
+name = "t"
+type = "effecttype"
+``````````
+name = "index"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[GetAbilityEffectById]
+[[.args]]
+name = "abilityId"
+type = "integer"
+``````````
+name = "t"
+type = "effecttype"
+``````````
+name = "index"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[GetAbilitySound]
+[[.args]]
+name = "abilityString"
+type = "string"
+``````````
+name = "t"
+type = "soundtype"
+[[.returns]]
+type = "string"
+
+[GetAbilitySoundById]
+[[.args]]
+name = "abilityId"
+type = "integer"
+``````````
+name = "t"
+type = "soundtype"
+[[.returns]]
+type = "string"
+
+[GetTerrainCliffLevel]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "integer"
+
+[SetWaterBaseColor]
+[[.args]]
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[SetWaterDeforms]
+[[.args]]
+name = "val"
+type = "boolean"
+
+[GetTerrainType]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "integer"
+
+[GetTerrainVariance]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "integer"
+
+[SetTerrainType]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "terrainType"
+type = "integer"
+``````````
+name = "variation"
+type = "integer"
+``````````
+name = "area"
+type = "integer"
+``````````
+name = "shape"
+type = "integer"
+
+[IsTerrainPathable]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "t"
+type = "pathingtype"
+[[.returns]]
+type = "boolean"
+
+[SetTerrainPathable]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "t"
+type = "pathingtype"
+``````````
+name = "flag"
+type = "boolean"
+
+[CreateImage]
+[[.args]]
+name = "file"
+type = "string"
+``````````
+name = "sizeX"
+type = "number"
+``````````
+name = "sizeY"
+type = "number"
+``````````
+name = "sizeZ"
+type = "number"
+``````````
+name = "posX"
+type = "number"
+``````````
+name = "posY"
+type = "number"
+``````````
+name = "posZ"
+type = "number"
+``````````
+name = "originX"
+type = "number"
+``````````
+name = "originY"
+type = "number"
+``````````
+name = "originZ"
+type = "number"
+``````````
+name = "imageType"
+type = "integer"
+[[.returns]]
+type = "image"
+
+[DestroyImage]
+[[.args]]
+name = "whichImage"
+type = "image"
+
+[ShowImage]
+[[.args]]
+name = "whichImage"
+type = "image"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetImageConstantHeight]
+[[.args]]
+name = "whichImage"
+type = "image"
+``````````
+name = "flag"
+type = "boolean"
+``````````
+name = "height"
+type = "number"
+
+[SetImagePosition]
+[[.args]]
+name = "whichImage"
+type = "image"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "z"
+type = "number"
+
+[SetImageColor]
+[[.args]]
+name = "whichImage"
+type = "image"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+
+[SetImageRender]
+[[.args]]
+name = "whichImage"
+type = "image"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetImageRenderAlways]
+[[.args]]
+name = "whichImage"
+type = "image"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetImageAboveWater]
+[[.args]]
+name = "whichImage"
+type = "image"
+``````````
+name = "flag"
+type = "boolean"
+``````````
+name = "useWaterAlpha"
+type = "boolean"
+
+[SetImageType]
+[[.args]]
+name = "whichImage"
+type = "image"
+``````````
+name = "imageType"
+type = "integer"
+
+[CreateUbersplat]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "name"
+type = "string"
+``````````
+name = "red"
+type = "integer"
+``````````
+name = "green"
+type = "integer"
+``````````
+name = "blue"
+type = "integer"
+``````````
+name = "alpha"
+type = "integer"
+``````````
+name = "forcePaused"
+type = "boolean"
+``````````
+name = "noBirthTime"
+type = "boolean"
+[[.returns]]
+type = "ubersplat"
+
+[DestroyUbersplat]
+[[.args]]
+name = "whichSplat"
+type = "ubersplat"
+
+[ResetUbersplat]
+[[.args]]
+name = "whichSplat"
+type = "ubersplat"
+
+[FinishUbersplat]
+[[.args]]
+name = "whichSplat"
+type = "ubersplat"
+
+[ShowUbersplat]
+[[.args]]
+name = "whichSplat"
+type = "ubersplat"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetUbersplatRender]
+[[.args]]
+name = "whichSplat"
+type = "ubersplat"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetUbersplatRenderAlways]
+[[.args]]
+name = "whichSplat"
+type = "ubersplat"
+``````````
+name = "flag"
+type = "boolean"
+
+[SetBlight]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "addBlight"
+type = "boolean"
+
+[SetBlightRect]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "r"
+type = "rect"
+``````````
+name = "addBlight"
+type = "boolean"
+
+[SetBlightPoint]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "addBlight"
+type = "boolean"
+
+[SetBlightLoc]
+[[.args]]
+name = "whichPlayer"
+type = "player"
+``````````
+name = "whichLocation"
+type = "location"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "addBlight"
+type = "boolean"
+
+[CreateBlightedGoldmine]
+[[.args]]
+name = "id"
+type = "player"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "face"
+type = "number"
+[[.returns]]
+type = "unit"
+
+[IsPointBlighted]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[SetDoodadAnimation]
+[[.args]]
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "radius"
+type = "number"
+``````````
+name = "doodadID"
+type = "integer"
+``````````
+name = "nearestOnly"
+type = "boolean"
+``````````
+name = "animName"
+type = "string"
+``````````
+name = "animRandom"
+type = "boolean"
+
+[SetDoodadAnimationRect]
+[[.args]]
+name = "r"
+type = "rect"
+``````````
+name = "doodadID"
+type = "integer"
+``````````
+name = "animName"
+type = "string"
+``````````
+name = "animRandom"
+type = "boolean"
+
+[StartMeleeAI]
+[[.args]]
+name = "num"
+type = "player"
+``````````
+name = "script"
+type = "string"
+
+[StartCampaignAI]
+[[.args]]
+name = "num"
+type = "player"
+``````````
+name = "script"
+type = "string"
+
+[CommandAI]
+[[.args]]
+name = "num"
+type = "player"
+``````````
+name = "command"
+type = "integer"
+``````````
+name = "data"
+type = "integer"
+
+[PauseCompAI]
+[[.args]]
+name = "p"
+type = "player"
+``````````
+name = "pause"
+type = "boolean"
+
+[GetAIDifficulty]
+[[.args]]
+name = "num"
+type = "player"
+[[.returns]]
+type = "aidifficulty"
+
+[RemoveGuardPosition]
+[[.args]]
+name = "hUnit"
+type = "unit"
+
+[RecycleGuardPosition]
+[[.args]]
+name = "hUnit"
+type = "unit"
+
+[RemoveAllGuardPositions]
+[[.args]]
+name = "num"
+type = "player"
+
+[Cheat]
+[[.args]]
+name = "cheatStr"
+type = "string"
+
+[IsNoVictoryCheat]
+[[.returns]]
+type = "boolean"
+
+[IsNoDefeatCheat]
+[[.returns]]
+type = "boolean"
+
+[Preload]
+[[.args]]
+name = "filename"
+type = "string"
+
+[PreloadEnd]
+[[.args]]
+name = "timeout"
+type = "number"
+
+[PreloadStart]
+
+[PreloadRefresh]
+
+[PreloadEndEx]
+
+[PreloadGenClear]
+
+[PreloadGenStart]
+
+[PreloadGenEnd]
+[[.args]]
+name = "filename"
+type = "string"
+
+[Preloader]
+[[.args]]
+name = "filename"
+type = "string"
+
+[FALSE]
+type = "boolean"
+value = false
+
+[TRUE]
+type = "boolean"
+value = true
+
+[JASS_MAX_ARRAY_SIZE]
+type = "integer"
+value = 8192
+
+[PLAYER_NEUTRAL_PASSIVE]
+type = "integer"
+value = 15
+
+[PLAYER_NEUTRAL_AGGRESSIVE]
+type = "integer"
+value = 12
+
+[PLAYER_COLOR_RED]
+type = "integer"
+value = 0
+
+[PLAYER_COLOR_BLUE]
+type = "integer"
+value = 1
+
+[PLAYER_COLOR_CYAN]
+type = "integer"
+value = 2
+
+[PLAYER_COLOR_PURPLE]
+type = "integer"
+value = 3
+
+[PLAYER_COLOR_YELLOW]
+type = "integer"
+value = 4
+
+[PLAYER_COLOR_ORANGE]
+type = "integer"
+value = 5
+
+[PLAYER_COLOR_GREEN]
+type = "integer"
+value = 6
+
+[PLAYER_COLOR_PINK]
+type = "integer"
+value = 7
+
+[PLAYER_COLOR_LIGHT_GRAY]
+type = "integer"
+value = 8
+
+[PLAYER_COLOR_LIGHT_BLUE]
+type = "integer"
+value = 9
+
+[PLAYER_COLOR_AQUA]
+type = "integer"
+value = 10
+
+[PLAYER_COLOR_BROWN]
+type = "integer"
+value = 11
+
+[RACE_HUMAN]
+type = "integer"
+value = 1
+
+[RACE_ORC]
+type = "integer"
+value = 2
+
+[RACE_UNDEAD]
+type = "integer"
+value = 3
+
+[RACE_NIGHTELF]
+type = "integer"
+value = 4
+
+[RACE_DEMON]
+type = "integer"
+value = 5
+
+[RACE_OTHER]
+type = "integer"
+value = 7
+
+[PLAYER_GAME_RESULT_VICTORY]
+type = "integer"
+value = 0
+
+[PLAYER_GAME_RESULT_DEFEAT]
+type = "integer"
+value = 1
+
+[PLAYER_GAME_RESULT_TIE]
+type = "integer"
+value = 2
+
+[PLAYER_GAME_RESULT_NEUTRAL]
+type = "integer"
+value = 3
+
+[ALLIANCE_PASSIVE]
+type = "integer"
+value = 0
+
+[ALLIANCE_HELP_REQUEST]
+type = "integer"
+value = 1
+
+[ALLIANCE_HELP_RESPONSE]
+type = "integer"
+value = 2
+
+[ALLIANCE_SHARED_XP]
+type = "integer"
+value = 3
+
+[ALLIANCE_SHARED_SPELLS]
+type = "integer"
+value = 4
+
+[ALLIANCE_SHARED_VISION]
+type = "integer"
+value = 5
+
+[ALLIANCE_SHARED_CONTROL]
+type = "integer"
+value = 6
+
+[ALLIANCE_SHARED_ADVANCED_CONTROL]
+type = "integer"
+value = 7
+
+[ALLIANCE_RESCUABLE]
+type = "integer"
+value = 8
+
+[ALLIANCE_SHARED_VISION_FORCED]
+type = "integer"
+value = 9
+
+[VERSION_REIGN_OF_CHAOS]
+type = "integer"
+value = 0
+
+[VERSION_FROZEN_THRONE]
+type = "integer"
+value = 1
+
+[ATTACK_TYPE_NORMAL]
+type = "integer"
+value = 0
+
+[ATTACK_TYPE_MELEE]
+type = "integer"
+value = 1
+
+[ATTACK_TYPE_PIERCE]
+type = "integer"
+value = 2
+
+[ATTACK_TYPE_SIEGE]
+type = "integer"
+value = 3
+
+[ATTACK_TYPE_MAGIC]
+type = "integer"
+value = 4
+
+[ATTACK_TYPE_CHAOS]
+type = "integer"
+value = 5
+
+[ATTACK_TYPE_HERO]
+type = "integer"
+value = 6
+
+[DAMAGE_TYPE_UNKNOWN]
+type = "integer"
+value = 0
+
+[DAMAGE_TYPE_NORMAL]
+type = "integer"
+value = 4
+
+[DAMAGE_TYPE_ENHANCED]
+type = "integer"
+value = 5
+
+[DAMAGE_TYPE_FIRE]
+type = "integer"
+value = 8
+
+[DAMAGE_TYPE_COLD]
+type = "integer"
+value = 9
+
+[DAMAGE_TYPE_LIGHTNING]
+type = "integer"
+value = 10
+
+[DAMAGE_TYPE_POISON]
+type = "integer"
+value = 11
+
+[DAMAGE_TYPE_DISEASE]
+type = "integer"
+value = 12
+
+[DAMAGE_TYPE_DIVINE]
+type = "integer"
+value = 13
+
+[DAMAGE_TYPE_MAGIC]
+type = "integer"
+value = 14
+
+[DAMAGE_TYPE_SONIC]
+type = "integer"
+value = 15
+
+[DAMAGE_TYPE_ACID]
+type = "integer"
+value = 16
+
+[DAMAGE_TYPE_FORCE]
+type = "integer"
+value = 17
+
+[DAMAGE_TYPE_DEATH]
+type = "integer"
+value = 18
+
+[DAMAGE_TYPE_MIND]
+type = "integer"
+value = 19
+
+[DAMAGE_TYPE_PLANT]
+type = "integer"
+value = 20
+
+[DAMAGE_TYPE_DEFENSIVE]
+type = "integer"
+value = 21
+
+[DAMAGE_TYPE_DEMOLITION]
+type = "integer"
+value = 22
+
+[DAMAGE_TYPE_SLOW_POISON]
+type = "integer"
+value = 23
+
+[DAMAGE_TYPE_SPIRIT_LINK]
+type = "integer"
+value = 24
+
+[DAMAGE_TYPE_SHADOW_STRIKE]
+type = "integer"
+value = 25
+
+[DAMAGE_TYPE_UNIVERSAL]
+type = "integer"
+value = 26
+
+[WEAPON_TYPE_WHOKNOWS]
+type = "integer"
+value = 0
+
+[WEAPON_TYPE_METAL_LIGHT_CHOP]
+type = "integer"
+value = 1
+
+[WEAPON_TYPE_METAL_MEDIUM_CHOP]
+type = "integer"
+value = 2
+
+[WEAPON_TYPE_METAL_HEAVY_CHOP]
+type = "integer"
+value = 3
+
+[WEAPON_TYPE_METAL_LIGHT_SLICE]
+type = "integer"
+value = 4
+
+[WEAPON_TYPE_METAL_MEDIUM_SLICE]
+type = "integer"
+value = 5
+
+[WEAPON_TYPE_METAL_HEAVY_SLICE]
+type = "integer"
+value = 6
+
+[WEAPON_TYPE_METAL_MEDIUM_BASH]
+type = "integer"
+value = 7
+
+[WEAPON_TYPE_METAL_HEAVY_BASH]
+type = "integer"
+value = 8
+
+[WEAPON_TYPE_METAL_MEDIUM_STAB]
+type = "integer"
+value = 9
+
+[WEAPON_TYPE_METAL_HEAVY_STAB]
+type = "integer"
+value = 10
+
+[WEAPON_TYPE_WOOD_LIGHT_SLICE]
+type = "integer"
+value = 11
+
+[WEAPON_TYPE_WOOD_MEDIUM_SLICE]
+type = "integer"
+value = 12
+
+[WEAPON_TYPE_WOOD_HEAVY_SLICE]
+type = "integer"
+value = 13
+
+[WEAPON_TYPE_WOOD_LIGHT_BASH]
+type = "integer"
+value = 14
+
+[WEAPON_TYPE_WOOD_MEDIUM_BASH]
+type = "integer"
+value = 15
+
+[WEAPON_TYPE_WOOD_HEAVY_BASH]
+type = "integer"
+value = 16
+
+[WEAPON_TYPE_WOOD_LIGHT_STAB]
+type = "integer"
+value = 17
+
+[WEAPON_TYPE_WOOD_MEDIUM_STAB]
+type = "integer"
+value = 18
+
+[WEAPON_TYPE_CLAW_LIGHT_SLICE]
+type = "integer"
+value = 19
+
+[WEAPON_TYPE_CLAW_MEDIUM_SLICE]
+type = "integer"
+value = 20
+
+[WEAPON_TYPE_CLAW_HEAVY_SLICE]
+type = "integer"
+value = 21
+
+[WEAPON_TYPE_AXE_MEDIUM_CHOP]
+type = "integer"
+value = 22
+
+[WEAPON_TYPE_ROCK_HEAVY_BASH]
+type = "integer"
+value = 23
+
+[PATHING_TYPE_ANY]
+type = "integer"
+value = 0
+
+[PATHING_TYPE_WALKABILITY]
+type = "integer"
+value = 1
+
+[PATHING_TYPE_FLYABILITY]
+type = "integer"
+value = 2
+
+[PATHING_TYPE_BUILDABILITY]
+type = "integer"
+value = 3
+
+[PATHING_TYPE_PEONHARVESTPATHING]
+type = "integer"
+value = 4
+
+[PATHING_TYPE_BLIGHTPATHING]
+type = "integer"
+value = 5
+
+[PATHING_TYPE_FLOATABILITY]
+type = "integer"
+value = 6
+
+[PATHING_TYPE_AMPHIBIOUSPATHING]
+type = "integer"
+value = 7
+
+[RACE_PREF_HUMAN]
+type = "integer"
+value = 1
+
+[RACE_PREF_ORC]
+type = "integer"
+value = 2
+
+[RACE_PREF_NIGHTELF]
+type = "integer"
+value = 4
+
+[RACE_PREF_UNDEAD]
+type = "integer"
+value = 8
+
+[RACE_PREF_DEMON]
+type = "integer"
+value = 16
+
+[RACE_PREF_RANDOM]
+type = "integer"
+value = 32
+
+[RACE_PREF_USER_SELECTABLE]
+type = "integer"
+value = 64
+
+[MAP_CONTROL_USER]
+type = "integer"
+value = 0
+
+[MAP_CONTROL_COMPUTER]
+type = "integer"
+value = 1
+
+[MAP_CONTROL_RESCUABLE]
+type = "integer"
+value = 2
+
+[MAP_CONTROL_NEUTRAL]
+type = "integer"
+value = 3
+
+[MAP_CONTROL_CREEP]
+type = "integer"
+value = 4
+
+[MAP_CONTROL_NONE]
+type = "integer"
+value = 5
+
+[GAME_TYPE_MELEE]
+type = "integer"
+value = 1
+
+[GAME_TYPE_FFA]
+type = "integer"
+value = 2
+
+[GAME_TYPE_USE_MAP_SETTINGS]
+type = "integer"
+value = 4
+
+[GAME_TYPE_BLIZ]
+type = "integer"
+value = 8
+
+[GAME_TYPE_ONE_ON_ONE]
+type = "integer"
+value = 16
+
+[GAME_TYPE_TWO_TEAM_PLAY]
+type = "integer"
+value = 32
+
+[GAME_TYPE_THREE_TEAM_PLAY]
+type = "integer"
+value = 64
+
+[GAME_TYPE_FOUR_TEAM_PLAY]
+type = "integer"
+value = 128
+
+[MAP_FOG_HIDE_TERRAIN]
+type = "integer"
+value = 1
+
+[MAP_FOG_MAP_EXPLORED]
+type = "integer"
+value = 2
+
+[MAP_FOG_ALWAYS_VISIBLE]
+type = "integer"
+value = 4
+
+[MAP_USE_HANDICAPS]
+type = "integer"
+value = 8
+
+[MAP_OBSERVERS]
+type = "integer"
+value = 16
+
+[MAP_OBSERVERS_ON_DEATH]
+type = "integer"
+value = 32
+
+[MAP_FIXED_COLORS]
+type = "integer"
+value = 128
+
+[MAP_LOCK_RESOURCE_TRADING]
+type = "integer"
+value = 256
+
+[MAP_RESOURCE_TRADING_ALLIES_ONLY]
+type = "integer"
+value = 512
+
+[MAP_LOCK_ALLIANCE_CHANGES]
+type = "integer"
+value = 1024
+
+[MAP_ALLIANCE_CHANGES_HIDDEN]
+type = "integer"
+value = 2048
+
+[MAP_CHEATS]
+type = "integer"
+value = 4096
+
+[MAP_CHEATS_HIDDEN]
+type = "integer"
+value = 8192
+
+[MAP_LOCK_SPEED]
+type = "integer"
+value = nil
+
+[MAP_LOCK_RANDOM_SEED]
+type = "integer"
+value = nil
+
+[MAP_SHARED_ADVANCED_CONTROL]
+type = "integer"
+value = nil
+
+[MAP_RANDOM_HERO]
+type = "integer"
+value = nil
+
+[MAP_RANDOM_RACES]
+type = "integer"
+value = nil
+
+[MAP_RELOADED]
+type = "integer"
+value = nil
+
+[MAP_PLACEMENT_RANDOM]
+type = "integer"
+value = 0
+
+[MAP_PLACEMENT_FIXED]
+type = "integer"
+value = 1
+
+[MAP_PLACEMENT_USE_MAP_SETTINGS]
+type = "integer"
+value = 2
+
+[MAP_PLACEMENT_TEAMS_TOGETHER]
+type = "integer"
+value = 3
+
+[MAP_LOC_PRIO_LOW]
+type = "integer"
+value = 0
+
+[MAP_LOC_PRIO_HIGH]
+type = "integer"
+value = 1
+
+[MAP_LOC_PRIO_NOT]
+type = "integer"
+value = 2
+
+[MAP_DENSITY_NONE]
+type = "integer"
+value = 0
+
+[MAP_DENSITY_LIGHT]
+type = "integer"
+value = 1
+
+[MAP_DENSITY_MEDIUM]
+type = "integer"
+value = 2
+
+[MAP_DENSITY_HEAVY]
+type = "integer"
+value = 3
+
+[MAP_DIFFICULTY_EASY]
+type = "integer"
+value = 0
+
+[MAP_DIFFICULTY_NORMAL]
+type = "integer"
+value = 1
+
+[MAP_DIFFICULTY_HARD]
+type = "integer"
+value = 2
+
+[MAP_DIFFICULTY_INSANE]
+type = "integer"
+value = 3
+
+[MAP_SPEED_SLOWEST]
+type = "integer"
+value = 0
+
+[MAP_SPEED_SLOW]
+type = "integer"
+value = 1
+
+[MAP_SPEED_NORMAL]
+type = "integer"
+value = 2
+
+[MAP_SPEED_FAST]
+type = "integer"
+value = 3
+
+[MAP_SPEED_FASTEST]
+type = "integer"
+value = 4
+
+[PLAYER_SLOT_STATE_EMPTY]
+type = "integer"
+value = 0
+
+[PLAYER_SLOT_STATE_PLAYING]
+type = "integer"
+value = 1
+
+[PLAYER_SLOT_STATE_LEFT]
+type = "integer"
+value = 2
+
+[SOUND_VOLUMEGROUP_UNITMOVEMENT]
+type = "integer"
+value = 0
+
+[SOUND_VOLUMEGROUP_UNITSOUNDS]
+type = "integer"
+value = 1
+
+[SOUND_VOLUMEGROUP_COMBAT]
+type = "integer"
+value = 2
+
+[SOUND_VOLUMEGROUP_SPELLS]
+type = "integer"
+value = 3
+
+[SOUND_VOLUMEGROUP_UI]
+type = "integer"
+value = 4
+
+[SOUND_VOLUMEGROUP_MUSIC]
+type = "integer"
+value = 5
+
+[SOUND_VOLUMEGROUP_AMBIENTSOUNDS]
+type = "integer"
+value = 6
+
+[SOUND_VOLUMEGROUP_FIRE]
+type = "integer"
+value = 7
+
+[GAME_STATE_DIVINE_INTERVENTION]
+type = "integer"
+value = 0
+
+[GAME_STATE_DISCONNECTED]
+type = "integer"
+value = 1
+
+[GAME_STATE_TIME_OF_DAY]
+type = "integer"
+value = 2
+
+[PLAYER_STATE_GAME_RESULT]
+type = "integer"
+value = 0
+
+[PLAYER_STATE_RESOURCE_GOLD]
+type = "integer"
+value = 1
+
+[PLAYER_STATE_RESOURCE_LUMBER]
+type = "integer"
+value = 2
+
+[PLAYER_STATE_RESOURCE_HERO_TOKENS]
+type = "integer"
+value = 3
+
+[PLAYER_STATE_RESOURCE_FOOD_CAP]
+type = "integer"
+value = 4
+
+[PLAYER_STATE_RESOURCE_FOOD_USED]
+type = "integer"
+value = 5
+
+[PLAYER_STATE_FOOD_CAP_CEILING]
+type = "integer"
+value = 6
+
+[PLAYER_STATE_GIVES_BOUNTY]
+type = "integer"
+value = 7
+
+[PLAYER_STATE_ALLIED_VICTORY]
+type = "integer"
+value = 8
+
+[PLAYER_STATE_PLACED]
+type = "integer"
+value = 9
+
+[PLAYER_STATE_OBSERVER_ON_DEATH]
+type = "integer"
+value = 10
+
+[PLAYER_STATE_OBSERVER]
+type = "integer"
+value = 11
+
+[PLAYER_STATE_UNFOLLOWABLE]
+type = "integer"
+value = 12
+
+[PLAYER_STATE_GOLD_UPKEEP_RATE]
+type = "integer"
+value = 13
+
+[PLAYER_STATE_LUMBER_UPKEEP_RATE]
+type = "integer"
+value = 14
+
+[PLAYER_STATE_GOLD_GATHERED]
+type = "integer"
+value = 15
+
+[PLAYER_STATE_LUMBER_GATHERED]
+type = "integer"
+value = 16
+
+[PLAYER_STATE_NO_CREEP_SLEEP]
+type = "integer"
+value = 25
+
+[UNIT_STATE_LIFE]
+type = "integer"
+value = 0
+
+[UNIT_STATE_MAX_LIFE]
+type = "integer"
+value = 1
+
+[UNIT_STATE_MANA]
+type = "integer"
+value = 2
+
+[UNIT_STATE_MAX_MANA]
+type = "integer"
+value = 3
+
+[AI_DIFFICULTY_NEWBIE]
+type = "integer"
+value = 0
+
+[AI_DIFFICULTY_NORMAL]
+type = "integer"
+value = 1
+
+[AI_DIFFICULTY_INSANE]
+type = "integer"
+value = 2
+
+[PLAYER_SCORE_UNITS_TRAINED]
+type = "integer"
+value = 0
+
+[PLAYER_SCORE_UNITS_KILLED]
+type = "integer"
+value = 1
+
+[PLAYER_SCORE_STRUCT_BUILT]
+type = "integer"
+value = 2
+
+[PLAYER_SCORE_STRUCT_RAZED]
+type = "integer"
+value = 3
+
+[PLAYER_SCORE_TECH_PERCENT]
+type = "integer"
+value = 4
+
+[PLAYER_SCORE_FOOD_MAXPROD]
+type = "integer"
+value = 5
+
+[PLAYER_SCORE_FOOD_MAXUSED]
+type = "integer"
+value = 6
+
+[PLAYER_SCORE_HEROES_KILLED]
+type = "integer"
+value = 7
+
+[PLAYER_SCORE_ITEMS_GAINED]
+type = "integer"
+value = 8
+
+[PLAYER_SCORE_MERCS_HIRED]
+type = "integer"
+value = 9
+
+[PLAYER_SCORE_GOLD_MINED_TOTAL]
+type = "integer"
+value = 10
+
+[PLAYER_SCORE_GOLD_MINED_UPKEEP]
+type = "integer"
+value = 11
+
+[PLAYER_SCORE_GOLD_LOST_UPKEEP]
+type = "integer"
+value = 12
+
+[PLAYER_SCORE_GOLD_LOST_TAX]
+type = "integer"
+value = 13
+
+[PLAYER_SCORE_GOLD_GIVEN]
+type = "integer"
+value = 14
+
+[PLAYER_SCORE_GOLD_RECEIVED]
+type = "integer"
+value = 15
+
+[PLAYER_SCORE_LUMBER_TOTAL]
+type = "integer"
+value = 16
+
+[PLAYER_SCORE_LUMBER_LOST_UPKEEP]
+type = "integer"
+value = 17
+
+[PLAYER_SCORE_LUMBER_LOST_TAX]
+type = "integer"
+value = 18
+
+[PLAYER_SCORE_LUMBER_GIVEN]
+type = "integer"
+value = 19
+
+[PLAYER_SCORE_LUMBER_RECEIVED]
+type = "integer"
+value = 20
+
+[PLAYER_SCORE_UNIT_TOTAL]
+type = "integer"
+value = 21
+
+[PLAYER_SCORE_HERO_TOTAL]
+type = "integer"
+value = 22
+
+[PLAYER_SCORE_RESOURCE_TOTAL]
+type = "integer"
+value = 23
+
+[PLAYER_SCORE_TOTAL]
+type = "integer"
+value = 24
+
+[EVENT_GAME_VICTORY]
+type = "integer"
+value = 0
+
+[EVENT_GAME_END_LEVEL]
+type = "integer"
+value = 1
+
+[EVENT_GAME_VARIABLE_LIMIT]
+type = "integer"
+value = 2
+
+[EVENT_GAME_STATE_LIMIT]
+type = "integer"
+value = 3
+
+[EVENT_GAME_TIMER_EXPIRED]
+type = "integer"
+value = 4
+
+[EVENT_GAME_ENTER_REGION]
+type = "integer"
+value = 5
+
+[EVENT_GAME_LEAVE_REGION]
+type = "integer"
+value = 6
+
+[EVENT_GAME_TRACKABLE_HIT]
+type = "integer"
+value = 7
+
+[EVENT_GAME_TRACKABLE_TRACK]
+type = "integer"
+value = 8
+
+[EVENT_GAME_SHOW_SKILL]
+type = "integer"
+value = 9
+
+[EVENT_GAME_BUILD_SUBMENU]
+type = "integer"
+value = 10
+
+[EVENT_PLAYER_STATE_LIMIT]
+type = "integer"
+value = 11
+
+[EVENT_PLAYER_ALLIANCE_CHANGED]
+type = "integer"
+value = 12
+
+[EVENT_PLAYER_DEFEAT]
+type = "integer"
+value = 13
+
+[EVENT_PLAYER_VICTORY]
+type = "integer"
+value = 14
+
+[EVENT_PLAYER_LEAVE]
+type = "integer"
+value = 15
+
+[EVENT_PLAYER_CHAT]
+type = "integer"
+value = 16
+
+[EVENT_PLAYER_END_CINEMATIC]
+type = "integer"
+value = 17
+
+[EVENT_PLAYER_UNIT_ATTACKED]
+type = "integer"
+value = 18
+
+[EVENT_PLAYER_UNIT_RESCUED]
+type = "integer"
+value = 19
+
+[EVENT_PLAYER_UNIT_DEATH]
+type = "integer"
+value = 20
+
+[EVENT_PLAYER_UNIT_DECAY]
+type = "integer"
+value = 21
+
+[EVENT_PLAYER_UNIT_DETECTED]
+type = "integer"
+value = 22
+
+[EVENT_PLAYER_UNIT_HIDDEN]
+type = "integer"
+value = 23
+
+[EVENT_PLAYER_UNIT_SELECTED]
+type = "integer"
+value = 24
+
+[EVENT_PLAYER_UNIT_DESELECTED]
+type = "integer"
+value = 25
+
+[EVENT_PLAYER_UNIT_CONSTRUCT_START]
+type = "integer"
+value = 26
+
+[EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL]
+type = "integer"
+value = 27
+
+[EVENT_PLAYER_UNIT_CONSTRUCT_FINISH]
+type = "integer"
+value = 28
+
+[EVENT_PLAYER_UNIT_UPGRADE_START]
+type = "integer"
+value = 29
+
+[EVENT_PLAYER_UNIT_UPGRADE_CANCEL]
+type = "integer"
+value = 30
+
+[EVENT_PLAYER_UNIT_UPGRADE_FINISH]
+type = "integer"
+value = 31
+
+[EVENT_PLAYER_UNIT_TRAIN_START]
+type = "integer"
+value = 32
+
+[EVENT_PLAYER_UNIT_TRAIN_CANCEL]
+type = "integer"
+value = 33
+
+[EVENT_PLAYER_UNIT_TRAIN_FINISH]
+type = "integer"
+value = 34
+
+[EVENT_PLAYER_UNIT_RESEARCH_START]
+type = "integer"
+value = 35
+
+[EVENT_PLAYER_UNIT_RESEARCH_CANCEL]
+type = "integer"
+value = 36
+
+[EVENT_PLAYER_UNIT_RESEARCH_FINISH]
+type = "integer"
+value = 37
+
+[EVENT_PLAYER_UNIT_ISSUED_ORDER]
+type = "integer"
+value = 38
+
+[EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER]
+type = "integer"
+value = 39
+
+[EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER]
+type = "integer"
+value = 40
+
+[EVENT_PLAYER_UNIT_ISSUED_UNIT_ORDER]
+type = "integer"
+value = 40
+
+[EVENT_PLAYER_HERO_LEVEL]
+type = "integer"
+value = 41
+
+[EVENT_PLAYER_HERO_SKILL]
+type = "integer"
+value = 42
+
+[EVENT_PLAYER_HERO_REVIVABLE]
+type = "integer"
+value = 43
+
+[EVENT_PLAYER_HERO_REVIVE_START]
+type = "integer"
+value = 44
+
+[EVENT_PLAYER_HERO_REVIVE_CANCEL]
+type = "integer"
+value = 45
+
+[EVENT_PLAYER_HERO_REVIVE_FINISH]
+type = "integer"
+value = 46
+
+[EVENT_PLAYER_UNIT_SUMMON]
+type = "integer"
+value = 47
+
+[EVENT_PLAYER_UNIT_DROP_ITEM]
+type = "integer"
+value = 48
+
+[EVENT_PLAYER_UNIT_PICKUP_ITEM]
+type = "integer"
+value = 49
+
+[EVENT_PLAYER_UNIT_USE_ITEM]
+type = "integer"
+value = 50
+
+[EVENT_PLAYER_UNIT_LOADED]
+type = "integer"
+value = 51
+
+[EVENT_UNIT_DAMAGED]
+type = "integer"
+value = 52
+
+[EVENT_UNIT_DEATH]
+type = "integer"
+value = 53
+
+[EVENT_UNIT_DECAY]
+type = "integer"
+value = 54
+
+[EVENT_UNIT_DETECTED]
+type = "integer"
+value = 55
+
+[EVENT_UNIT_HIDDEN]
+type = "integer"
+value = 56
+
+[EVENT_UNIT_SELECTED]
+type = "integer"
+value = 57
+
+[EVENT_UNIT_DESELECTED]
+type = "integer"
+value = 58
+
+[EVENT_UNIT_STATE_LIMIT]
+type = "integer"
+value = 59
+
+[EVENT_UNIT_ACQUIRED_TARGET]
+type = "integer"
+value = 60
+
+[EVENT_UNIT_TARGET_IN_RANGE]
+type = "integer"
+value = 61
+
+[EVENT_UNIT_ATTACKED]
+type = "integer"
+value = 62
+
+[EVENT_UNIT_RESCUED]
+type = "integer"
+value = 63
+
+[EVENT_UNIT_CONSTRUCT_CANCEL]
+type = "integer"
+value = 64
+
+[EVENT_UNIT_CONSTRUCT_FINISH]
+type = "integer"
+value = 65
+
+[EVENT_UNIT_UPGRADE_START]
+type = "integer"
+value = 66
+
+[EVENT_UNIT_UPGRADE_CANCEL]
+type = "integer"
+value = 67
+
+[EVENT_UNIT_UPGRADE_FINISH]
+type = "integer"
+value = 68
+
+[EVENT_UNIT_TRAIN_START]
+type = "integer"
+value = 69
+
+[EVENT_UNIT_TRAIN_CANCEL]
+type = "integer"
+value = 70
+
+[EVENT_UNIT_TRAIN_FINISH]
+type = "integer"
+value = 71
+
+[EVENT_UNIT_RESEARCH_START]
+type = "integer"
+value = 72
+
+[EVENT_UNIT_RESEARCH_CANCEL]
+type = "integer"
+value = 73
+
+[EVENT_UNIT_RESEARCH_FINISH]
+type = "integer"
+value = 74
+
+[EVENT_UNIT_ISSUED_ORDER]
+type = "integer"
+value = 75
+
+[EVENT_UNIT_ISSUED_POINT_ORDER]
+type = "integer"
+value = 76
+
+[EVENT_UNIT_ISSUED_TARGET_ORDER]
+type = "integer"
+value = 77
+
+[EVENT_UNIT_HERO_LEVEL]
+type = "integer"
+value = 78
+
+[EVENT_UNIT_HERO_SKILL]
+type = "integer"
+value = 79
+
+[EVENT_UNIT_HERO_REVIVABLE]
+type = "integer"
+value = 80
+
+[EVENT_UNIT_HERO_REVIVE_START]
+type = "integer"
+value = 81
+
+[EVENT_UNIT_HERO_REVIVE_CANCEL]
+type = "integer"
+value = 82
+
+[EVENT_UNIT_HERO_REVIVE_FINISH]
+type = "integer"
+value = 83
+
+[EVENT_UNIT_SUMMON]
+type = "integer"
+value = 84
+
+[EVENT_UNIT_DROP_ITEM]
+type = "integer"
+value = 85
+
+[EVENT_UNIT_PICKUP_ITEM]
+type = "integer"
+value = 86
+
+[EVENT_UNIT_USE_ITEM]
+type = "integer"
+value = 87
+
+[EVENT_UNIT_LOADED]
+type = "integer"
+value = 88
+
+[EVENT_WIDGET_DEATH]
+type = "integer"
+value = 89
+
+[EVENT_DIALOG_BUTTON_CLICK]
+type = "integer"
+value = 90
+
+[EVENT_DIALOG_CLICK]
+type = "integer"
+value = 91
+
+[EVENT_GAME_LOADED]
+type = "integer"
+value = 256
+
+[EVENT_GAME_TOURNAMENT_FINISH_SOON]
+type = "integer"
+value = 257
+
+[EVENT_GAME_TOURNAMENT_FINISH_NOW]
+type = "integer"
+value = 258
+
+[EVENT_GAME_SAVE]
+type = "integer"
+value = 259
+
+[EVENT_PLAYER_ARROW_LEFT_DOWN]
+type = "integer"
+value = 261
+
+[EVENT_PLAYER_ARROW_LEFT_UP]
+type = "integer"
+value = 262
+
+[EVENT_PLAYER_ARROW_RIGHT_DOWN]
+type = "integer"
+value = 263
+
+[EVENT_PLAYER_ARROW_RIGHT_UP]
+type = "integer"
+value = 264
+
+[EVENT_PLAYER_ARROW_DOWN_DOWN]
+type = "integer"
+value = 265
+
+[EVENT_PLAYER_ARROW_DOWN_UP]
+type = "integer"
+value = 266
+
+[EVENT_PLAYER_ARROW_UP_DOWN]
+type = "integer"
+value = 267
+
+[EVENT_PLAYER_ARROW_UP_UP]
+type = "integer"
+value = 268
+
+[EVENT_PLAYER_UNIT_SELL]
+type = "integer"
+value = 269
+
+[EVENT_PLAYER_UNIT_CHANGE_OWNER]
+type = "integer"
+value = 270
+
+[EVENT_PLAYER_UNIT_SELL_ITEM]
+type = "integer"
+value = 271
+
+[EVENT_PLAYER_UNIT_SPELL_CHANNEL]
+type = "integer"
+value = 272
+
+[EVENT_PLAYER_UNIT_SPELL_CAST]
+type = "integer"
+value = 273
+
+[EVENT_PLAYER_UNIT_SPELL_EFFECT]
+type = "integer"
+value = 274
+
+[EVENT_PLAYER_UNIT_SPELL_FINISH]
+type = "integer"
+value = 275
+
+[EVENT_PLAYER_UNIT_SPELL_ENDCAST]
+type = "integer"
+value = 276
+
+[EVENT_PLAYER_UNIT_PAWN_ITEM]
+type = "integer"
+value = 277
+
+[EVENT_UNIT_SELL]
+type = "integer"
+value = 286
+
+[EVENT_UNIT_CHANGE_OWNER]
+type = "integer"
+value = 287
+
+[EVENT_UNIT_SELL_ITEM]
+type = "integer"
+value = 288
+
+[EVENT_UNIT_SPELL_CHANNEL]
+type = "integer"
+value = 289
+
+[EVENT_UNIT_SPELL_CAST]
+type = "integer"
+value = 290
+
+[EVENT_UNIT_SPELL_EFFECT]
+type = "integer"
+value = 291
+
+[EVENT_UNIT_SPELL_FINISH]
+type = "integer"
+value = 292
+
+[EVENT_UNIT_SPELL_ENDCAST]
+type = "integer"
+value = 293
+
+[EVENT_UNIT_PAWN_ITEM]
+type = "integer"
+value = 294
+
+[LESS_THAN]
+type = "integer"
+value = 0
+
+[LESS_THAN_OR_EQUAL]
+type = "integer"
+value = 1
+
+[EQUAL]
+type = "integer"
+value = 2
+
+[GREATER_THAN_OR_EQUAL]
+type = "integer"
+value = 3
+
+[GREATER_THAN]
+type = "integer"
+value = 4
+
+[NOT_EQUAL]
+type = "integer"
+value = 5
+
+[UNIT_TYPE_HERO]
+type = "integer"
+value = 0
+
+[UNIT_TYPE_DEAD]
+type = "integer"
+value = 1
+
+[UNIT_TYPE_STRUCTURE]
+type = "integer"
+value = 2
+
+[UNIT_TYPE_FLYING]
+type = "integer"
+value = 3
+
+[UNIT_TYPE_GROUND]
+type = "integer"
+value = 4
+
+[UNIT_TYPE_ATTACKS_FLYING]
+type = "integer"
+value = 5
+
+[UNIT_TYPE_ATTACKS_GROUND]
+type = "integer"
+value = 6
+
+[UNIT_TYPE_MELEE_ATTACKER]
+type = "integer"
+value = 7
+
+[UNIT_TYPE_RANGED_ATTACKER]
+type = "integer"
+value = 8
+
+[UNIT_TYPE_GIANT]
+type = "integer"
+value = 9
+
+[UNIT_TYPE_SUMMONED]
+type = "integer"
+value = 10
+
+[UNIT_TYPE_STUNNED]
+type = "integer"
+value = 11
+
+[UNIT_TYPE_PLAGUED]
+type = "integer"
+value = 12
+
+[UNIT_TYPE_SNARED]
+type = "integer"
+value = 13
+
+[UNIT_TYPE_UNDEAD]
+type = "integer"
+value = 14
+
+[UNIT_TYPE_MECHANICAL]
+type = "integer"
+value = 15
+
+[UNIT_TYPE_PEON]
+type = "integer"
+value = 16
+
+[UNIT_TYPE_SAPPER]
+type = "integer"
+value = 17
+
+[UNIT_TYPE_TOWNHALL]
+type = "integer"
+value = 18
+
+[UNIT_TYPE_ANCIENT]
+type = "integer"
+value = 19
+
+[UNIT_TYPE_TAUREN]
+type = "integer"
+value = 20
+
+[UNIT_TYPE_POISONED]
+type = "integer"
+value = 21
+
+[UNIT_TYPE_POLYMORPHED]
+type = "integer"
+value = 22
+
+[UNIT_TYPE_SLEEPING]
+type = "integer"
+value = 23
+
+[UNIT_TYPE_RESISTANT]
+type = "integer"
+value = 24
+
+[UNIT_TYPE_ETHEREAL]
+type = "integer"
+value = 25
+
+[UNIT_TYPE_MAGIC_IMMUNE]
+type = "integer"
+value = 26
+
+[ITEM_TYPE_PERMANENT]
+type = "integer"
+value = 0
+
+[ITEM_TYPE_CHARGED]
+type = "integer"
+value = 1
+
+[ITEM_TYPE_POWERUP]
+type = "integer"
+value = 2
+
+[ITEM_TYPE_ARTIFACT]
+type = "integer"
+value = 3
+
+[ITEM_TYPE_PURCHASABLE]
+type = "integer"
+value = 4
+
+[ITEM_TYPE_CAMPAIGN]
+type = "integer"
+value = 5
+
+[ITEM_TYPE_MISCELLANEOUS]
+type = "integer"
+value = 6
+
+[ITEM_TYPE_UNKNOWN]
+type = "integer"
+value = 7
+
+[ITEM_TYPE_ANY]
+type = "integer"
+value = 8
+
+[ITEM_TYPE_TOME]
+type = "integer"
+value = 2
+
+[CAMERA_FIELD_TARGET_DISTANCE]
+type = "integer"
+value = 0
+
+[CAMERA_FIELD_FARZ]
+type = "integer"
+value = 1
+
+[CAMERA_FIELD_ANGLE_OF_ATTACK]
+type = "integer"
+value = 2
+
+[CAMERA_FIELD_FIELD_OF_VIEW]
+type = "integer"
+value = 3
+
+[CAMERA_FIELD_ROLL]
+type = "integer"
+value = 4
+
+[CAMERA_FIELD_ROTATION]
+type = "integer"
+value = 5
+
+[CAMERA_FIELD_ZOFFSET]
+type = "integer"
+value = 6
+
+[BLEND_MODE_NONE]
+type = "integer"
+value = 0
+
+[BLEND_MODE_DONT_CARE]
+type = "integer"
+value = 0
+
+[BLEND_MODE_KEYALPHA]
+type = "integer"
+value = 1
+
+[BLEND_MODE_BLEND]
+type = "integer"
+value = 2
+
+[BLEND_MODE_ADDITIVE]
+type = "integer"
+value = 3
+
+[BLEND_MODE_MODULATE]
+type = "integer"
+value = 4
+
+[BLEND_MODE_MODULATE_2X]
+type = "integer"
+value = 5
+
+[RARITY_FREQUENT]
+type = "integer"
+value = 0
+
+[RARITY_RARE]
+type = "integer"
+value = 1
+
+[TEXMAP_FLAG_NONE]
+type = "integer"
+value = 0
+
+[TEXMAP_FLAG_WRAP_U]
+type = "integer"
+value = 1
+
+[TEXMAP_FLAG_WRAP_V]
+type = "integer"
+value = 2
+
+[TEXMAP_FLAG_WRAP_UV]
+type = "integer"
+value = 3
+
+[FOG_OF_WAR_MASKED]
+type = "integer"
+value = 1
+
+[FOG_OF_WAR_FOGGED]
+type = "integer"
+value = 2
+
+[FOG_OF_WAR_VISIBLE]
+type = "integer"
+value = 4
+
+[CAMERA_MARGIN_LEFT]
+type = "integer"
+value = 0
+
+[CAMERA_MARGIN_RIGHT]
+type = "integer"
+value = 1
+
+[CAMERA_MARGIN_TOP]
+type = "integer"
+value = 2
+
+[CAMERA_MARGIN_BOTTOM]
+type = "integer"
+value = 3
+
+[EFFECT_TYPE_EFFECT]
+type = "integer"
+value = 0
+
+[EFFECT_TYPE_TARGET]
+type = "integer"
+value = 1
+
+[EFFECT_TYPE_CASTER]
+type = "integer"
+value = 2
+
+[EFFECT_TYPE_SPECIAL]
+type = "integer"
+value = 3
+
+[EFFECT_TYPE_AREA_EFFECT]
+type = "integer"
+value = 4
+
+[EFFECT_TYPE_MISSILE]
+type = "integer"
+value = 5
+
+[EFFECT_TYPE_LIGHTNING]
+type = "integer"
+value = 6
+
+[SOUND_TYPE_EFFECT]
+type = "integer"
+value = 0
+
+[SOUND_TYPE_EFFECT_LOOPED]
+type = "integer"
+value = 1
diff --git a/server-beta/libs/jass/japi.lni b/server-beta/libs/jass/japi.lni
new file mode 100644
index 00000000..23d1b97c
--- /dev/null
+++ b/server-beta/libs/jass/japi.lni
@@ -0,0 +1,722 @@
+[japi]
+type = 'table'
+[[.source]]
+type = 'library'
+name = 'jass.japi'
+nick = 'japi'
+
+<default>
+type = 'function'
+parent = {
+ 1 = {
+ type = 'library',
+ name = 'jass.japi',
+ nick = 'japi',
+ },
+}
+
+[EXGetUnitAbility]
+[[.args]]
+name = "u"
+type = "unit"
+``````````
+name = "abilcode"
+type = "integer"
+[[.returns]]
+type = "ability"
+
+[EXGetUnitAbilityByIndex]
+[[.args]]
+name = "u"
+type = "unit"
+``````````
+name = "index"
+type = "integer"
+[[.returns]]
+type = "ability"
+
+[EXGetAbilityId]
+[[.args]]
+name = "abil"
+type = "ability"
+[[.returns]]
+type = "integer"
+
+[EXGetAbilityState]
+[[.args]]
+name = "abil"
+type = "ability"
+``````````
+name = "state_type"
+type = "integer"
+[[.returns]]
+type = "number"
+
+[EXSetAbilityState]
+[[.args]]
+name = "abil"
+type = "ability"
+``````````
+name = "state_type"
+type = "integer"
+``````````
+name = "value"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[EXGetAbilityDataReal]
+[[.args]]
+name = "abil"
+type = "ability"
+``````````
+name = "level"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+[[.returns]]
+type = "number"
+
+[EXSetAbilityDataReal]
+[[.args]]
+name = "abil"
+type = "ability"
+``````````
+name = "level"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+``````````
+name = "value"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[EXGetAbilityDataInteger]
+[[.args]]
+name = "abil"
+type = "ability"
+``````````
+name = "level"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[EXSetAbilityDataInteger]
+[[.args]]
+name = "abil"
+type = "ability"
+``````````
+name = "level"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+``````````
+name = "value"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[EXGetAbilityDataString]
+[[.args]]
+name = "abil"
+type = "ability"
+``````````
+name = "level"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[EXSetAbilityDataString]
+[[.args]]
+name = "abil"
+type = "ability"
+``````````
+name = "level"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+``````````
+name = "value"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[EXSetAbilityString]
+[[.args]]
+name = "abilcode"
+type = "integer"
+``````````
+name = "level"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+``````````
+name = "value"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[EXSetAbilityAEmeDataA]
+[[.args]]
+name = "abil"
+type = "ability"
+``````````
+name = "unitid"
+type = "integer"
+[[.returns]]
+type = "boolean"
+
+[EXGetItemDataString]
+[[.args]]
+name = "itemcode"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[EXSetItemDataString]
+[[.args]]
+name = "itemcode"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+``````````
+name = "value"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[EXGetEventDamageData]
+[[.args]]
+name = "edd_type"
+type = "integer"
+[[.returns]]
+type = "integer"
+
+[EXSetEventDamage]
+[[.args]]
+name = "amount"
+type = "number"
+[[.returns]]
+type = "boolean"
+
+[EXGetEffectX]
+[[.args]]
+name = "e"
+type = "effect"
+[[.returns]]
+type = "number"
+
+[EXGetEffectY]
+[[.args]]
+name = "e"
+type = "effect"
+[[.returns]]
+type = "number"
+
+[EXGetEffectZ]
+[[.args]]
+name = "e"
+type = "effect"
+[[.returns]]
+type = "number"
+
+[EXSetEffectXY]
+[[.args]]
+name = "e"
+type = "effect"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+
+[EXSetEffectZ]
+[[.args]]
+name = "e"
+type = "effect"
+``````````
+name = "z"
+type = "number"
+
+[EXGetEffectSize]
+[[.args]]
+name = "e"
+type = "effect"
+[[.returns]]
+type = "number"
+
+[EXSetEffectSize]
+[[.args]]
+name = "e"
+type = "effect"
+``````````
+name = "size"
+type = "number"
+
+[EXEffectMatRotateX]
+[[.args]]
+name = "e"
+type = "effect"
+``````````
+name = "angle"
+type = "number"
+
+[EXEffectMatRotateY]
+[[.args]]
+name = "e"
+type = "effect"
+``````````
+name = "angle"
+type = "number"
+
+[EXEffectMatRotateZ]
+[[.args]]
+name = "e"
+type = "effect"
+``````````
+name = "angle"
+type = "number"
+
+[EXEffectMatScale]
+[[.args]]
+name = "e"
+type = "effect"
+``````````
+name = "x"
+type = "number"
+``````````
+name = "y"
+type = "number"
+``````````
+name = "z"
+type = "number"
+
+[EXEffectMatReset]
+[[.args]]
+name = "e"
+type = "effect"
+
+[EXSetEffectSpeed]
+[[.args]]
+name = "e"
+type = "effect"
+``````````
+name = "speed"
+type = "number"
+
+[EXDisplayChat]
+[[.args]]
+name = "p"
+type = "player"
+``````````
+name = "chat_recipient"
+type = "integer"
+``````````
+name = "message"
+type = "string"
+
+[EXExecuteScript]
+[[.args]]
+name = "script"
+type = "string"
+[[.returns]]
+type = "string"
+
+[EXSetUnitFacing]
+[[.args]]
+name = "u"
+type = "unit"
+``````````
+name = "angle"
+type = "number"
+
+[EXPauseUnit]
+[[.args]]
+name = "u"
+type = "unit"
+``````````
+name = "flag"
+type = "boolean"
+
+[EXSetUnitCollisionType]
+[[.args]]
+name = "enable"
+type = "boolean"
+``````````
+name = "u"
+type = "unit"
+``````````
+name = "t"
+type = "integer"
+
+[EXSetUnitMoveType]
+[[.args]]
+name = "u"
+type = "unit"
+``````````
+name = "t"
+type = "integer"
+
+[EXGetItemDataString]
+[[.args]]
+name = "itemcode"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[EXSetItemDataString]
+[[.args]]
+name = "itemcode"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+``````````
+name = "value"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[EXGetBuffDataString]
+[[.args]]
+name = "buffcode"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+[[.returns]]
+type = "string"
+
+[EXSetBuffDataString]
+[[.args]]
+name = "buffcode"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+``````````
+name = "value"
+type = "string"
+[[.returns]]
+type = "boolean"
+
+[EXDclareButtonIcon]
+[[.args]]
+name = "art"
+type = "string"
+
+[EXBlendButtonIcon]
+[[.args]]
+name = "mask"
+type = "string"
+``````````
+name = "image"
+type = "string"
+``````````
+name = "newArt"
+type = "string"
+
+[EXSetUnitArrayString]
+[[.args]]
+name = "unitCode"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+``````````
+name = "index"
+type = "integer"
+``````````
+name = "value"
+type = "string"
+
+[EXSetUnitInteger]
+[[.args]]
+name = "unitCode"
+type = "integer"
+``````````
+name = "data_type"
+type = "integer"
+``````````
+name = "value"
+type = "integer"
+
+[ABILITY_STATE_COOLDOWN]
+type = "integer"
+value = 1
+
+[ABILITY_DATA_TARGS]
+type = "integer"
+value = 100
+
+[ABILITY_DATA_CAST]
+type = "integer"
+value = 101
+
+[ABILITY_DATA_DUR]
+type = "integer"
+value = 102
+
+[ABILITY_DATA_HERODUR]
+type = "integer"
+value = 103
+
+[ABILITY_DATA_COST]
+type = "integer"
+value = 104
+
+[ABILITY_DATA_COOL]
+type = "integer"
+value = 105
+
+[ABILITY_DATA_AREA]
+type = "integer"
+value = 106
+
+[ABILITY_DATA_RNG]
+type = "integer"
+value = 107
+
+[ABILITY_DATA_DATA_A]
+type = "integer"
+value = 108
+
+[ABILITY_DATA_DATA_B]
+type = "integer"
+value = 109
+
+[ABILITY_DATA_DATA_C]
+type = "integer"
+value = 110
+
+[ABILITY_DATA_DATA_D]
+type = "integer"
+value = 111
+
+[ABILITY_DATA_DATA_E]
+type = "integer"
+value = 112
+
+[ABILITY_DATA_DATA_F]
+type = "integer"
+value = 113
+
+[ABILITY_DATA_DATA_G]
+type = "integer"
+value = 114
+
+[ABILITY_DATA_DATA_H]
+type = "integer"
+value = 115
+
+[ABILITY_DATA_DATA_I]
+type = "integer"
+value = 116
+
+[ABILITY_DATA_UNITID]
+type = "integer"
+value = 117
+
+[ABILITY_DATA_HOTKET]
+type = "integer"
+value = 200
+
+[ABILITY_DATA_UNHOTKET]
+type = "integer"
+value = 201
+
+[ABILITY_DATA_RESEARCH_HOTKEY]
+type = "integer"
+value = 202
+
+[ABILITY_DATA_NAME]
+type = "integer"
+value = 203
+
+[ABILITY_DATA_ART]
+type = "integer"
+value = 204
+
+[ABILITY_DATA_TARGET_ART]
+type = "integer"
+value = 205
+
+[ABILITY_DATA_CASTER_ART]
+type = "integer"
+value = 206
+
+[ABILITY_DATA_EFFECT_ART]
+type = "integer"
+value = 207
+
+[ABILITY_DATA_AREAEFFECT_ART]
+type = "integer"
+value = 208
+
+[ABILITY_DATA_MISSILE_ART]
+type = "integer"
+value = 209
+
+[ABILITY_DATA_SPECIAL_ART]
+type = "integer"
+value = 210
+
+[ABILITY_DATA_LIGHTNING_EFFECT]
+type = "integer"
+value = 211
+
+[ABILITY_DATA_BUFF_TIP]
+type = "integer"
+value = 212
+
+[ABILITY_DATA_BUFF_UBERTIP]
+type = "integer"
+value = 213
+
+[ABILITY_DATA_RESEARCH_TIP]
+type = "integer"
+value = 214
+
+[ABILITY_DATA_TIP]
+type = "integer"
+value = 215
+
+[ABILITY_DATA_UNTIP]
+type = "integer"
+value = 216
+
+[ABILITY_DATA_RESEARCH_UBERTIP]
+type = "integer"
+value = 217
+
+[ABILITY_DATA_UBERTIP]
+type = "integer"
+value = 218
+
+[ABILITY_DATA_UNUBERTIP]
+type = "integer"
+value = 219
+
+[ABILITY_DATA_UNART]
+type = "integer"
+value = 220
+
+[EVENT_DAMAGE_DATA_VAILD]
+type = "integer"
+value = 0
+
+[EVENT_DAMAGE_DATA_IS_PHYSICAL]
+type = "integer"
+value = 1
+
+[EVENT_DAMAGE_DATA_IS_ATTACK]
+type = "integer"
+value = 2
+
+[EVENT_DAMAGE_DATA_IS_RANGED]
+type = "integer"
+value = 3
+
+[EVENT_DAMAGE_DATA_DAMAGE_TYPE]
+type = "integer"
+value = 4
+
+[EVENT_DAMAGE_DATA_WEAPON_TYPE]
+type = "integer"
+value = 5
+
+[EVENT_DAMAGE_DATA_ATTACK_TYPE]
+type = "integer"
+value = 6
+
+[CHAT_RECIPIENT_ALL]
+type = "integer"
+value = 0
+
+[CHAT_RECIPIENT_ALLIES]
+type = "integer"
+value = 1
+
+[CHAT_RECIPIENT_OBSERVERS]
+type = "integer"
+value = 2
+
+[CHAT_RECIPIENT_REFEREES]
+type = "integer"
+value = 2
+
+[CHAT_RECIPIENT_PRIVATE]
+type = "integer"
+value = 3
+
+[YDWE_OBJECT_TYPE_ABILITY]
+type = "integer"
+value = 0
+
+[YDWE_OBJECT_TYPE_BUFF]
+type = "integer"
+value = 1
+
+[YDWE_OBJECT_TYPE_UNIT]
+type = "integer"
+value = 2
+
+[YDWE_OBJECT_TYPE_ITEM]
+type = "integer"
+value = 3
+
+[YDWE_OBJECT_TYPE_UPGRADE]
+type = "integer"
+value = 4
+
+[YDWE_OBJECT_TYPE_DOODAD]
+type = "integer"
+value = 5
+
+[YDWE_OBJECT_TYPE_DESTRUCTABLE]
+type = "integer"
+value = 6
+
+[ITEM_DATA_ART]
+type = "integer"
+value = 1
+
+[ITEM_DATA_UBERTIP]
+type = "integer"
+value = 3
+
+[ITEM_DATA_NAME]
+type = "integer"
+value = 4
+
+[BUFF_DATA_ART]
+type = "integer"
+value = 1
+
+[BUFF_DATA_TIP]
+type = "integer"
+value = 2
+
+[BUFF_DATA_UBERTIP]
+type = "integer"
+value = 3
diff --git a/server-beta/libs/test/basic.lni b/server-beta/libs/test/basic.lni
new file mode 100644
index 00000000..2b214678
--- /dev/null
+++ b/server-beta/libs/test/basic.lni
@@ -0,0 +1,2 @@
+[ThisIsAVeryVeryLongNameThatNobodyWouldUseItInHisProjectSoICanUseItForTest]
+type = integer
diff --git a/server-beta/locale/en-US/libs/@lua/basic.lni b/server-beta/locale/en-US/libs/@lua/basic.lni
new file mode 100644
index 00000000..7dbf8d60
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/basic.lni
@@ -0,0 +1,239 @@
+[arg]
+description = 'Command-line arguments of Lua Standalone.'
+
+[assert]
+description = 'Calls error if the value of its argument is false.'
+
+[collectgarbage]
+[[.enums]]
+name = 'opt'
+enum = '"collect"'
+description = 'Performs a full garbage-collection cycle.'
+``````````
+name = 'opt'
+enum = '"stop"'
+description = 'Stops automatic execution.'
+``````````
+name = 'opt'
+enum = '"restart"'
+description = 'Restarts automatic execution.'
+``````````
+name = 'opt'
+enum = '"count"'
+description = 'Returns the total memory in Kbytes.'
+``````````
+name = 'opt'
+enum = '"step"'
+description = 'Performs a garbage-collection step.'
+``````````
+name = 'opt'
+enum = '"setpause"'
+description = 'Set pause.'
+``````````
+name = 'opt'
+enum = '"setstepmul"'
+description = 'Set step multiplier.'
+``````````
+name = 'opt'
+enum = '"isrunning"'
+description = 'Returns whether the collector is running.'
+
+["collectgarbage Lua 5.4"]
+[[.enums]]
+name = 'opt'
+enum = '"collect"'
+description = 'Performs a full garbage-collection cycle.'
+``````````
+name = 'opt'
+enum = '"stop"'
+description = 'Stops automatic execution.'
+``````````
+name = 'opt'
+enum = '"restart"'
+description = 'Restarts automatic execution.'
+``````````
+name = 'opt'
+enum = '"count"'
+description = 'Returns the total memory in Kbytes.'
+``````````
+name = 'opt'
+enum = '"step"'
+description = 'Performs a garbage-collection step.'
+``````````
+name = 'opt'
+enum = '"setpause"'
+description = 'Set pause.'
+``````````
+name = 'opt'
+enum = '"setstepmul"'
+description = 'Set step multiplier.'
+``````````
+name = 'opt'
+enum = '"incremental"'
+description = 'Change the collector mode to incremental.'
+``````````
+name = 'opt'
+enum = '"generational"'
+description = 'Change the collector mode to generational.'
+``````````
+name = 'opt'
+enum = '"isrunning"'
+description = 'Returns whether the collector is running.'
+
+[dofile]
+description = 'Opens the named file and executes its contents as a Lua chunk.'
+
+[error]
+description = 'Terminates the last protected function called and returns message as the error object.'
+
+[_G]
+description = 'Holds the global environment.'
+
+[getfenv]
+description = 'Returns the current environment in use by the function. `f` can be a Lua function or a number that specifies the function at that stack level.'
+
+[getmetatable]
+description = 'Returns the metatable of the given object.'
+
+[ipairs]
+description = [[
+----------------
+```lua
+for i, v in ipairs(t) do
+ body
+end
+```
+]]
+
+[load]
+description = 'Loads a chunk.'
+[[.enums]]
+name = 'mode'
+enum = '"b"'
+description = 'Only binary chunks.'
+``````````
+name = 'mode'
+enum = '"t"'
+description = 'Only text chunks.'
+``````````
+name = 'mode'
+enum = '"bt"'
+description = 'Both binary and text.'
+
+['load Lua 5.1']
+description = 'Loads a chunk using function `func` to get its pieces. Each call to `func` must return a string that concatenates with previous results.'
+
+[loadfile]
+description = 'Loads a chunk from file.'
+[[.enums]]
+name = 'mode'
+enum = '"b"'
+description = 'Only binary chunks.'
+``````````
+name = 'mode'
+enum = '"t"'
+description = 'Only text chunks.'
+``````````
+name = 'mode'
+enum = '"bt"'
+description = 'Both binary and text.'
+
+['loadfile Lua 5.1']
+description = 'Loads a chunk from file `filename` or from the standard input, if no file name is given.'
+
+[loadstring]
+description = 'Loads a chunk from the given string.'
+
+[module]
+description = 'Creates a module'
+
+[next]
+description = 'Returns the next index of the table and its associated value.'
+
+[pairs]
+description = [[
+----------------
+```lua
+for k, v in pairs(t) do
+ body
+end
+```
+]]
+
+[pcall]
+description = 'Calls function with the given arguments in protected mode.'
+
+[print]
+description = 'Receives any number of arguments and prints their values to stdout.'
+
+[rawequal]
+description = 'Checks whether v1 is equal to v2, without invoking the `__eq` metamethod.'
+
+[rawget]
+description = 'Gets the real value of `table[index]`, without invoking the `__index` metamethod.'
+
+[rawlen]
+description = 'Returns the length of the object `v`, without invoking the `__len` metamethod.'
+
+[rawset]
+description = 'Sets the real value of `table[index]` to `value`, without invoking the `__newindex` metamethod.'
+
+[select]
+[[.enums]]
+name = 'index'
+enum = '"#"'
+description = 'Returns the total number of extra arguments.'
+``````````
+name = 'index'
+code = 'integer'
+description = 'Returns all arguments after number `index`.'
+
+[setfenv]
+description = 'Sets the environment to be used by the given function. `f` can be a Lua function or a number that specifies the function at that stack level.'
+
+[setmetatable]
+description = 'Sets the metatable for the given table.'
+
+[tonumber]
+description = 'Tries to convert its argument to a number.'
+
+[tostring]
+description = 'Receives a value of any type and converts it to a string in a human-readable format.'
+
+[type]
+description = 'Returns the type of its only argument, coded as a string.'
+
+["_VERSION Lua 5.1"]
+description = 'Running Lua version.'
+
+["_VERSION Lua 5.2"]
+description = 'Running Lua version.'
+
+["_VERSION Lua 5.3"]
+description = 'Running Lua version.'
+
+["_VERSION Lua 5.4"]
+description = 'Running Lua version.'
+
+[warn]
+description = 'Emits a warning with a message composed by the concatenation of all its arguments (which should be strings).'
+
+[xpcall]
+description = 'Calls function `f` with the given arguments in protected mode with a new message handler.'
+
+['xpcall Lua 5.1']
+description = 'Calls function `f` in protected mode with a new message handler.'
+
+[require]
+description = 'Loads the given module, returns any value returned by the given module(`true` when `nil`).'
+
+["require Lua 5.4"]
+description = 'Loads the given module, returns any value returned by the searcher(`true` when `nil`). Besides that value, also returns as a second result the loader data returned by the searcher, which indicates how `require` found the module. (For instance, if the module came from a file, this loader data is the file path.)'
+
+[unpack]
+description = [[
+-------
+```lua
+return list[i], list[i+1], ···, list[j]
+```
+]]
diff --git a/server-beta/locale/en-US/libs/@lua/bit32.lni b/server-beta/locale/en-US/libs/@lua/bit32.lni
new file mode 100644
index 00000000..13630970
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/bit32.lni
@@ -0,0 +1,57 @@
+[arshift]
+description = [[
+Returns the number `x` shifted `disp` bits to the right. Negative displacements shift to the left.
+
+This shift operation is what is called arithmetic shift. Vacant bits on the left are filled with copies of the higher bit of `x`; vacant bits on the right are filled with zeros.
+]]
+
+[band]
+description = 'Returns the bitwise *and* of its operands.'
+
+[bnot]
+description = [[
+Returns the bitwise negation of `x`.
+
+```lua
+assert(bit32.bnot(x) == (-1 - x) % 2^32)
+```
+]]
+
+[bor]
+description = 'Returns the bitwise *or* of its operands.'
+
+[btest]
+description = 'Returns a boolean signaling whether the bitwise *and* of its operands is different from zero.'
+
+[bxor]
+description = 'Returns the bitwise *exclusive or* of its operands.'
+
+[extract]
+description = 'Returns the unsigned number formed by the bits `field` to `field + width - 1` from `n`.'
+
+[replace]
+description = 'Returns a copy of `n` with the bits `field` to `field + width - 1` replaced by the value `v` .'
+
+[lrotate]
+description = 'Returns the number `x` rotated `disp` bits to the left. Negative displacements rotate to the right.'
+
+[lshift]
+description = [[
+Returns the number `x` shifted `disp` bits to the left. Negative displacements shift to the right. In any direction, vacant bits are filled with zeros.
+
+```lua
+assert(bit32.lshift(b, disp) == (b * 2^disp) % 2^32)
+```
+]]
+
+[rrotate]
+description = 'Returns the number `x` rotated `disp` bits to the right. Negative displacements rotate to the left.'
+
+[rshift]
+description = [[
+Returns the number `x` shifted `disp` bits to the right. Negative displacements shift to the left. In any direction, vacant bits are filled with zeros.
+
+```lua
+assert(bit32.rshift(b, disp) == math.floor(b % 2^32 / 2^disp))
+```
+]]
diff --git a/server-beta/locale/en-US/libs/@lua/coroutine.lni b/server-beta/locale/en-US/libs/@lua/coroutine.lni
new file mode 100644
index 00000000..910638ec
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/coroutine.lni
@@ -0,0 +1,42 @@
+[create]
+description = 'Creates a new coroutine.'
+
+[isyieldable]
+description = 'Returns true when the running coroutine can yield.'
+
+['isyieldable Lua 5.4']
+description = 'Returns true when the coroutine `co` can yield. The default for `co` is the running coroutine.'
+
+[close]
+description = 'Closes coroutine `co` , closing all its pending to-be-closed variables and putting the coroutine in a dead state.'
+
+[resume]
+description = 'Starts or continues the execution of coroutine `co`.'
+
+[running]
+description = 'Returns the running coroutine plus a boolean, true when the running coroutine is the main one.'
+
+[status]
+description = 'Returns the status of coroutine `co`.'
+[[.enums]]
+name = 'status'
+enum = '"running"'
+description = 'Is running.'
+``````````
+name = 'status'
+enum = '"suspended"'
+description = 'Is suspended or not started.'
+``````````
+name = 'status'
+enum = '"normal"'
+description = 'Is active but not running.'
+``````````
+name = 'status'
+enum = '"dead"'
+description = 'Has finished or stopped with an error.'
+
+[wrap]
+description = 'Creates a new coroutine.'
+
+[yield]
+description = 'Suspends the execution of the calling coroutine.'
diff --git a/server-beta/locale/en-US/libs/@lua/debug.lni b/server-beta/locale/en-US/libs/@lua/debug.lni
new file mode 100644
index 00000000..44d5317f
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/debug.lni
@@ -0,0 +1,148 @@
+["debug.debug"]
+description = 'Enters an interactive mode with the user, running each string that the user enters.'
+
+[getfenv]
+description = 'Returns the environment of object `o` .'
+
+[gethook]
+description = 'Returns the current hook settings of the thread.'
+
+[getinfo]
+description = 'Returns a table with information about a function.'
+[[.enums]]
+name = 'what'
+enum = '"n"'
+description = '`name` and `namewhat`'
+``````````
+name = 'what'
+enum = '"S"'
+description = '`source`, `short_src`, `linedefined`, `lastlinedefined`, and `what`'
+``````````
+name = 'what'
+enum = '"l"'
+description = '`currentline`'
+``````````
+name = 'what'
+enum = '"t"'
+description = '`istailcall`'
+``````````
+name = 'what'
+enum = '"u"'
+description = '`nups`, `nparams`, and `isvararg`'
+``````````
+name = 'what'
+enum = '"f"'
+description = '`func`'
+``````````
+name = 'what'
+enum = '"L"'
+description = '`activelines`'
+
+['getinfo Lua 5.1']
+description = 'Returns a table with information about a function.'
+[[.enums]]
+name = 'what'
+enum = '"n"'
+description = '`name` and `namewhat`'
+``````````
+name = 'what'
+enum = '"S"'
+description = '`source`, `short_src`, `linedefined`, `lastlinedefined`, and `what`'
+``````````
+name = 'what'
+enum = '"l"'
+description = '`currentline`'
+``````````
+name = 'what'
+enum = '"t"'
+description = '`istailcall`'
+``````````
+name = 'what'
+enum = '"u"'
+description = '`nups`'
+``````````
+name = 'what'
+enum = '"f"'
+description = '`func`'
+``````````
+name = 'what'
+enum = '"L"'
+description = '`activelines`'
+
+[getlocal]
+description = 'Returns the name and the value of the local variable with index `local` of the function at level `f` of the stack.'
+
+['getlocal Lua 5.1']
+description = 'Returns the name and the value of the local variable with index `local` of the function at level `level` of the stack.'
+
+[getmetatable]
+description = 'Returns the metatable of the given value.'
+
+[getregistry]
+description = 'Returns the registry table.'
+
+[getupvalue]
+description = 'Returns the name and the value of the upvalue with index `up` of the function.'
+
+[getuservalue]
+description = 'Returns the Lua value associated to u.'
+
+["getuservalue Lua 5.4"]
+description = [[
+Returns the `n`-th user value associated
+to the userdata `u` plus a boolean,
+`false` if the userdata does not have that value.
+]]
+
+[setCstacklimit]
+description = [[
+Sets a new limit for the C stack. This limit controls how deeply nested calls can go in Lua, with the intent of avoiding a stack overflow.
+
+In case of success, this function returns the old limit. In case of error, it returns `false`.
+]]
+
+[setfenv]
+description = 'Sets the environment of the given `object` to the given `table` .'
+
+[sethook]
+description = 'Sets the given function as a hook.'
+[[.enums]]
+name = 'mask'
+enum = '"c"'
+description = 'Calls hook when Lua calls a function.'
+``````````
+name = 'mask'
+enum = '"r"'
+description = 'Calls hook when Lua returns from a function.'
+``````````
+name = 'mask'
+enum = '"l"'
+description = 'Calls hook when Lua enters a new line of code.'
+
+[setlocal]
+description = 'Assigns the `value` to the local variable with index `local` of the function at `level` of the stack.'
+
+[setmetatable]
+description = 'Sets the metatable for the given value to the given table (which can be nil).'
+
+[setupvalue]
+description = 'Assigns the `value` to the upvalue with index `up` of the function.'
+
+[setuservalue]
+description = 'Sets the given value as the Lua value associated to the given udata.'
+
+["setuservalue Lua 5.4"]
+description = [[
+Sets the given `value` as
+the `n`-th user value associated to the given `udata`.
+`udata` must be a full userdata.
+]]
+
+[traceback]
+description = 'Returns a string with a traceback of the call stack. The optional message string is appended at the beginning of the traceback.'
+
+[upvalueid]
+description = 'Returns a unique identifier (as a light userdata) for the upvalue numbered `n` from the given function.'
+
+[upvaluejoin]
+description = 'Make the `n1`-th upvalue of the Lua closure `f1` refer to the `n2`-th upvalue of the Lua closure `f2`.'
diff --git a/server-beta/locale/en-US/libs/@lua/file.lni b/server-beta/locale/en-US/libs/@lua/file.lni
new file mode 100644
index 00000000..58bb2278
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/file.lni
@@ -0,0 +1,91 @@
+[close]
+description = 'Close `file`.'
+
+[flush]
+description = 'Saves any written data to `file`.'
+
+[lines]
+description = [[
+------
+```lua
+for c in file:lines(...) do
+ body
+end
+```
+]]
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+description = 'Reads a numeral and returns it as number.'
+``````````
+name = 'mode'
+enum = '"a"'
+description = 'Reads the whole file.'
+``````````
+name = 'mode'
+enum = '"l"'
+description = 'Reads the next line skipping the end of line.'
+``````````
+name = 'mode'
+enum = '"L"'
+description = 'Reads the next line keeping the end of line.'
+``````````
+name = 'mode'
+code = 'number'
+description = 'Reads a string with up to this number of bytes.'
+
+[read]
+description = 'Reads the `file`, according to the given formats, which specify what to read.'
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+description = 'Reads a numeral and returns it as number.'
+``````````
+name = 'mode'
+enum = '"a"'
+description = 'Reads the whole file.'
+``````````
+name = 'mode'
+enum = '"l"'
+description = 'Reads the next line skipping the end of line.'
+``````````
+name = 'mode'
+enum = '"L"'
+description = 'Reads the next line keeping the end of line.'
+``````````
+name = 'mode'
+code = 'number'
+description = 'Reads a string with up to this number of bytes.'
+
+[seek]
+description = 'Sets and gets the file position, measured from the beginning of the file.'
+[[.enums]]
+name = 'whence'
+enum = '"set"'
+description = 'Base is beginning of the file.'
+``````````
+name = 'whence'
+enum = '"cur"'
+description = 'Base is current position.'
+``````````
+name = 'whence'
+enum = '"end"'
+description = 'Base is end of file.'
+
+[setvbuf]
+description = 'Sets the buffering mode for an output file.'
+[[.enums]]
+name = 'mode'
+enum = '"no"'
+description = 'Output operation appears immediately.'
+``````````
+name = 'mode'
+enum = '"full"'
+description = 'Performed only when the buffer is full.'
+``````````
+name = 'mode'
+enum = '"line"'
+description = 'Buffered until a newline is output.'
+
+[write]
+description = 'Writes the value of each of its arguments to `file`.'
diff --git a/server-beta/locale/en-US/libs/@lua/io.lni b/server-beta/locale/en-US/libs/@lua/io.lni
new file mode 100644
index 00000000..2b405f2f
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/io.lni
@@ -0,0 +1,230 @@
+[stdin]
+description = 'standard input.'
+
+[stdout]
+description = 'standard output.'
+
+[stderr]
+description = 'standard error.'
+
+[close]
+description = 'Close `file` or default output file.'
+
+[flush]
+description = 'Saves any written data to default output file.'
+
+[input]
+description = 'Sets `file` as the default input file.'
+
+["lines Lua 5.1"]
+description = [[
+------
+```lua
+for c in io.lines(filename, ...) do
+ body
+end
+```
+]]
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+description = 'Reads a numeral and returns it as number.'
+``````````
+name = 'mode'
+enum = '"*a"'
+description = 'Reads the whole file.'
+``````````
+name = 'mode'
+enum = '"*l"'
+description = 'Reads the next line skipping the end of line.'
+``````````
+name = 'mode'
+code = 'number'
+description = 'Reads a string with up to this number of bytes.'
+
+["lines Lua 5.3"]
+description = [[
+------
+```lua
+for c in io.lines(filename, ...) do
+ body
+end
+```
+]]
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+description = 'Reads a numeral and returns it as number.'
+``````````
+name = 'mode'
+enum = '"a"'
+description = 'Reads the whole file.'
+``````````
+name = 'mode'
+enum = '"l"'
+description = 'Reads the next line skipping the end of line.'
+``````````
+name = 'mode'
+enum = '"L"'
+description = 'Reads the next line keeping the end of line.'
+``````````
+name = 'mode'
+code = 'number'
+description = 'Reads a string with up to this number of bytes.'
+
+["lines LuaJIT"]
+description = [[
+------
+```lua
+for c in io.lines(filename, ...) do
+ body
+end
+```
+]]
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+description = 'Reads a numeral and returns it as number.'
+``````````
+name = 'mode'
+enum = '"*a"'
+description = 'Reads the whole file.'
+``````````
+name = 'mode'
+enum = '"*l"'
+description = 'Reads the next line skipping the end of line.'
+``````````
+name = 'mode'
+enum = '"*L"'
+description = 'Reads the next line keeping the end of line.'
+``````````
+name = 'mode'
+code = 'number'
+description = 'Reads a string with up to this number of bytes.'
+
+[open]
+description = 'Opens a file, in the mode specified in the string `mode`.'
+[[.enums]]
+name = 'mode'
+enum = '"r"'
+description = 'Read mode.'
+``````````
+name = 'mode'
+enum = '"w"'
+description = 'Write mode.'
+``````````
+name = 'mode'
+enum = '"a"'
+description = 'Append mode.'
+``````````
+name = 'mode'
+enum = '"r+"'
+description = 'Update mode, all previous data is preserved.'
+``````````
+name = 'mode'
+enum = '"w+"'
+description = 'Update mode, all previous data is erased.'
+``````````
+name = 'mode'
+enum = '"a+"'
+description = 'Append update mode, previous data is preserved, writing is only allowed at the end of file.'
+
+[output]
+description = 'Sets `file` as the default output file.'
+
+[popen]
+description = 'Starts program prog in a separated process.'
+[[.enums]]
+name = 'mode'
+enum = '"r"'
+description = 'Read data from this program by `file`.'
+``````````
+name = 'mode'
+enum = '"w"'
+description = 'Write data to this program by `file`.'
+
+["read Lua 5.1"]
+description = 'Reads the `file`, according to the given formats, which specify what to read.'
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+description = 'Reads a numeral and returns it as number.'
+``````````
+name = 'mode'
+enum = '"*a"'
+description = 'Reads the whole file.'
+``````````
+name = 'mode'
+enum = '"*l"'
+description = 'Reads the next line skipping the end of line.'
+``````````
+name = 'mode'
+code = 'number'
+description = 'Reads a string with up to this number of bytes.'
+
+["read Lua 5.3"]
+description = 'Reads the `file`, according to the given formats, which specify what to read.'
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+description = 'Reads a numeral and returns it as number.'
+``````````
+name = 'mode'
+enum = '"a"'
+description = 'Reads the whole file.'
+``````````
+name = 'mode'
+enum = '"l"'
+description = 'Reads the next line skipping the end of line.'
+``````````
+name = 'mode'
+enum = '"L"'
+description = 'Reads the next line keeping the end of line.'
+``````````
+name = 'mode'
+code = 'number'
+description = 'Reads a string with up to this number of bytes.'
+
+["read LuaJIT"]
+description = 'Reads the `file`, according to the given formats, which specify what to read.'
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+description = 'Reads a numeral and returns it as number.'
+``````````
+name = 'mode'
+enum = '"*a"'
+description = 'Reads the whole file.'
+``````````
+name = 'mode'
+enum = '"*l"'
+description = 'Reads the next line skipping the end of line.'
+``````````
+name = 'mode'
+enum = '"*L"'
+description = 'Reads the next line keeping the end of line.'
+``````````
+name = 'mode'
+code = 'number'
+description = 'Reads a string with up to this number of bytes.'
+
+[tmpfile]
+description = 'In case of success, returns a handle for a temporary file.'
+
+[type]
+description = 'Checks whether `obj` is a valid file handle.'
+[[.enums]]
+name = 'type'
+enum = '"file"'
+description = 'Is an open file handle.'
+``````````
+name = 'type'
+enum = '"closed file"'
+description = 'Is a closed file handle.'
+``````````
+name = 'type'
+code = 'nil'
+description = 'Is not a file handle.'
+
+[write]
+description = 'Writes the value of each of its arguments to default output file.'
diff --git a/server-beta/locale/en-US/libs/@lua/math.lni b/server-beta/locale/en-US/libs/@lua/math.lni
new file mode 100644
index 00000000..034153e7
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/math.lni
@@ -0,0 +1,132 @@
+[abs]
+description = 'Returns the absolute value of `x`.'
+
+[acos]
+description = 'Returns the arc cosine of `x` (in radians).'
+
+[asin]
+description = 'Returns the arc sine of `x` (in radians).'
+
+["atan Lua 5.1"]
+description = 'Returns the arc tangent of `x` (in radians).'
+
+["atan Lua 5.3"]
+description = 'Returns the arc tangent of `y/x` (in radians).'
+
+[atan2]
+description = 'Returns the arc tangent of `y/x` (in radians).'
+
+[ceil]
+description = 'Returns the smallest integral value larger than or equal to `x`.'
+
+[cos]
+description = 'Returns the cosine of `x` (assumed to be in radians).'
+
+[cosh]
+description = 'Returns the hyperbolic cosine of `x` (assumed to be in radians).'
+
+[deg]
+description = 'Converts the angle `x` from radians to degrees.'
+
+[exp]
+description = 'Returns the value `e^x` (where `e` is the base of natural logarithms).'
+
+[floor]
+description = 'Returns the largest integral value smaller than or equal to `x`.'
+
+[fmod]
+description = 'Returns the remainder of the division of `x` by `y` that rounds the quotient towards zero.'
+
+[frexp]
+description = 'Decompose `x` into tails and exponents. Returns `m` and `e` such that `x = m * (2 ^ e)`, `e` is an integer and the absolute value of `m` is in the range [0.5, 1) (or zero when `x` is zero).'
+
+[huge]
+description = 'A value larger than any other numeric value.'
+
+[log]
+description = 'Returns the logarithm of `x` in the given base.'
+
+['log Lua 5.1']
+description = 'Returns the natural logarithm of `x` .'
+
+[log10]
+description = 'Returns the base-10 logarithm of x.'
+
+[ldexp]
+description = 'Returns `m * (2 ^ e)` .'
+
+[max]
+description = 'Returns the argument with the maximum value, according to the Lua operator `<`.'
+
+[maxinteger]
+description = 'An integer with the maximum value for an integer.'
+
+[min]
+description = 'Returns the argument with the minimum value, according to the Lua operator `<`.'
+
+[mininteger]
+description = 'An integer with the minimum value for an integer.'
+
+[modf]
+description = 'Returns the integral part of `x` and the fractional part of `x`.'
+
+[pi]
+description = 'The value of *π*.'
+
+[pow]
+description = 'Returns `x ^ y` .'
+
+[rad]
+description = 'Converts the angle `x` from degrees to radians.'
+
+[random]
+description = [[
+* `math.random()`: Returns a float in the range [0,1).
+* `math.random(n)`: Returns a integer in the range [1, n].
+* `math.random(m, n)`: Returns a integer in the range [m, n].
+]]
+
+[randomseed]
+description = 'Sets `x` as the "seed" for the pseudo-random generator.'
+
+["randomseed Lua 5.4"]
+description = [[
+* `math.randomseed(x, y)`: Concatenate `x` and `y` into a 128-bit `seed` to reinitialize the pseudo-random generator.
+* `math.randomseed(x)`: Equate to `math.randomseed(x, 0)` .
+* `math.randomseed()`: Generates a seed with a weak attempt for randomness.
+]]
+
+[sin]
+description = 'Returns the sine of `x` (assumed to be in radians).'
+
+[sinh]
+description = 'Returns the hyperbolic sine of `x` (assumed to be in radians).'
+
+[sqrt]
+description = 'Returns the square root of `x`.'
+
+[tan]
+description = 'Returns the tangent of `x` (assumed to be in radians).'
+
+[tanh]
+description = 'Returns the hyperbolic tangent of `x` (assumed to be in radians).'
+
+[tointeger]
+description = 'If the value `x` is convertible to an integer, returns that integer.'
+
+[type]
+[[.enums]]
+name = 'type'
+enum = '"integer"'
+description = '`x` is an integer.'
+``````````
+name = 'type'
+enum = '"float"'
+description = '`x` is a float.'
+``````````
+name = 'type'
+code = 'nil'
+description = '`x` is not a number.'
+
+[ult]
+description = 'Returns `true` if and only if `m` is below `n` when they are compared as unsigned integers.'
diff --git a/server-beta/locale/en-US/libs/@lua/os.lni b/server-beta/locale/en-US/libs/@lua/os.lni
new file mode 100644
index 00000000..82b7c228
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/os.lni
@@ -0,0 +1,38 @@
+[clock]
+description = 'Returns an approximation of the amount in seconds of CPU time used by the program.'
+
+[data]
+description = 'Returns a string or a table containing date and time, formatted according to the given string `format`.'
+
+[difftime]
+description = 'Returns the difference, in seconds, from time `t1` to time `t2`.'
+
+[execute]
+description = 'Passes `command` to be executed by an operating system shell.'
+
+['execute Lua 5.1']
+description = 'Passes `command` to be executed by an operating system shell.'
+
+[exit]
+description = 'Calls the ISO C function `exit` to terminate the host program.'
+
+['exit Lua 5.1']
+description = 'Calls the C function `exit` to terminate the host program.'
+
+[getenv]
+description = 'Returns the value of the process environment variable `varname`.'
+
+[remove]
+description = 'Deletes the file with the given name.'
+
+[rename]
+description = 'Renames the file or directory named `oldname` to `newname`.'
+
+[setlocale]
+description = 'Sets the current locale of the program.'
+
+[time]
+description = 'Returns the current time when called without arguments, or a time representing the local date and time specified by the given table.'
+
+[tmpname]
+description = 'Returns a string with a file name that can be used for a temporary file.'
diff --git a/server-beta/locale/en-US/libs/@lua/package.lni b/server-beta/locale/en-US/libs/@lua/package.lni
new file mode 100644
index 00000000..1c8b633a
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/package.lni
@@ -0,0 +1,29 @@
+[config]
+description = 'A string describing some compile-time configurations for packages.'
+
+[cpath]
+description = 'The path used by `require` to search for a C loader.'
+
+[loaded]
+description = 'A table used by `require` to control which modules are already loaded.'
+
+[loaders]
+description = 'A table used by `require` to control how to load modules.'
+
+[loadlib]
+description = 'Dynamically links the host program with the C library `libname`.'
+
+[path]
+description = 'The path used by `require` to search for a Lua loader.'
+
+[preload]
+description = 'A table to store loaders for specific modules.'
+
+[searchers]
+description = 'A table used by `require` to control how to load modules.'
+
+[searchpath]
+description = 'Searches for the given `name` in the given `path`.'
+
+[seeall]
+describing = 'Sets a metatable for `module` with its `__index` field referring to the global environment, so that this module inherits values from the global environment. To be used as an option to function `module` .'
diff --git a/server-beta/locale/en-US/libs/@lua/string.lni b/server-beta/locale/en-US/libs/@lua/string.lni
new file mode 100644
index 00000000..2055b16b
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/string.lni
@@ -0,0 +1,72 @@
+[byte]
+description = 'Returns the internal numeric codes of the characters `s[i], s[i+1], ..., s[j]`.'
+
+[char]
+description = 'Returns a string with length equal to the number of arguments, in which each character has the internal numeric code equal to its corresponding argument.'
+
+[dump]
+description = 'Returns a string containing a binary representation (a *binary chunk*) of the given function.'
+
+[find]
+description = 'Looks for the first match of [`pattern`](https://www.lua.org/manual/5.3/manual.html#6.4.1) in the string.'
+
+[format]
+description = 'Returns a formatted version of its variable number of arguments following the description given in its first argument.'
+
+[gmatch]
+description = [[
+----------
+```lua
+s = "hello world from Lua"
+for w in string.gmatch(s, "%a+") do
+ print(w)
+end
+```
+]]
+
+["gmatch Lua 5.4"]
+description = [[
+----------
+```lua
+s = "hello world from Lua"
+for w in string.gmatch(s, "%a+") do
+ print(w)
+end
+```
+]]
+
+[gsub]
+description = 'Returns a copy of s in which all (or the first `n`, if given) occurrences of the [`pattern`](https://www.lua.org/manual/5.3/manual.html#6.4.1) have been replaced by a replacement string specified by `repl`.'
+
+[len]
+description = 'Returns its length.'
+
+[lower]
+description = 'Returns a copy of this string with all uppercase letters changed to lowercase.'
+
+[match]
+description = 'Looks for the first match of [`pattern`](https://www.lua.org/manual/5.3/manual.html#6.4.1) in the string.'
+
+[pack]
+description = 'Returns a binary string containing the values `v1`, `v2`, etc. packed (that is, serialized in binary form) according to the format string [`fmt`](https://www.lua.org/manual/5.3/manual.html#6.4.2).'
+
+[packsize]
+description = 'Returns the size of a string resulting from `string.pack` with the given format.'
+
+[rep]
+description = 'Returns a string that is the concatenation of `n` copies of the string `s` separated by the string `sep`.'
+
+['rep Lua 5.1']
+description = 'Returns a string that is the concatenation of `n` copies of the string `s` .'
+
+[reverse]
+description = 'Returns a string that is the string `s` reversed.'
+
+[sub]
+description = 'Returns the substring of the string that starts at `i` and continues until `j`.'
+
+[unpack]
+description = 'Returns the values packed in string according to the format string [`fmt`](https://www.lua.org/manual/5.3/manual.html#6.4.2).'
+
+[upper]
+description = 'Returns a copy of this string with all lowercase letters changed to uppercase.'
diff --git a/server-beta/locale/en-US/libs/@lua/table.lni b/server-beta/locale/en-US/libs/@lua/table.lni
new file mode 100644
index 00000000..d32ea4ae
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/table.lni
@@ -0,0 +1,39 @@
+[concat]
+description = [[
+--------
+```lua
+return list[i]..sep..list[i+1] ··· sep..list[j]
+```
+]]
+
+[insert]
+description = 'Inserts element `value` at position `pos` in `list`.'
+
+[maxn]
+description = 'Returns the largest positive numerical index of the given table, or zero if the table has no positive numerical indices.'
+
+[move]
+description = [[
+Moves elements from table `a1` to table `a2`.
+```lua
+a2[t],··· = a1[f],···,a1[e]
+return a2
+```
+]]
+
+[pack]
+description = 'Returns a new table with all arguments stored into keys `1`, `2`, etc. and with a field `"n"` with the total number of arguments.'
+
+[remove]
+description = 'Removes from `list` the element at position `pos`, returning the value of the removed element.'
+
+[sort]
+description = 'Sorts list elements in a given order, *in-place*, from `list[1]` to `list[#list]`.'
+
+[unpack]
+description = [[
+-------
+```lua
+return list[i], list[i+1], ···, list[j]
+```
+]]
diff --git a/server-beta/locale/en-US/libs/@lua/utf8.lni b/server-beta/locale/en-US/libs/@lua/utf8.lni
new file mode 100644
index 00000000..c7ab9bf3
--- /dev/null
+++ b/server-beta/locale/en-US/libs/@lua/utf8.lni
@@ -0,0 +1,40 @@
+[char]
+description = 'Receives zero or more integers, converts each one to its corresponding UTF-8 byte sequence and returns a string with the concatenation of all these sequences.'
+
+[charpattern]
+description = 'The pattern which matches exactly one UTF-8 byte sequence, assuming that the subject is a valid UTF-8 string.'
+
+[codes]
+description = [[
+--------
+```lua
+for p, c in utf8.codes(s) do
+ body
+end
+```
+]]
+
+["codes Lua 5.4"]
+description = [[
+--------
+```lua
+for p, c in utf8.codes(s) do
+ body
+end
+```
+]]
+
+[codepoint]
+description = 'Returns the codepoints (as integers) from all characters in `s` that start between byte position `i` and `j` (both included).'
+
+["codepoint Lua 5.4"]
+description = 'Returns the codepoints (as integers) from all characters in `s` that start between byte position `i` and `j` (both included).'
+
+[len]
+description = 'Returns the number of UTF-8 characters in string `s` that start between positions `i` and `j` (both inclusive).'
+
+["len Lua 5.4"]
+description = 'Returns the number of UTF-8 characters in string `s` that start between positions `i` and `j` (both inclusive).'
+
+[offset]
+description = 'Returns the position (in bytes) where the encoding of the `n`-th character of `s` (counting from position `i`) starts.'
diff --git a/server-beta/locale/en-US/script.lni b/server-beta/locale/en-US/script.lni
new file mode 100644
index 00000000..9c108203
--- /dev/null
+++ b/server-beta/locale/en-US/script.lni
@@ -0,0 +1,122 @@
+DIAG_LINE_ONLY_SPACE = 'Line with spaces only.'
+DIAG_LINE_POST_SPACE = 'Line with postspace.'
+DIAG_UNUSED_LOCAL = 'Unused local `{}`.'
+DIAG_UNDEF_GLOBAL = 'Undefined global `{}`.'
+DIAG_UNDEF_ENV_CHILD = 'Undefined variable `{}` (overloaded `_ENV` ).'
+DIAG_UNDEF_FENV_CHILD = 'Undefined variable `{}` (inside module).'
+DIAG_GLOBAL_IN_NIL_ENV = 'Invalid global (`_ENV` is `nil`).'
+DIAG_GLOBAL_IN_NIL_FENV = 'Invalid global (module environment is `nil`).'
+DIAG_UNUSED_LABEL = 'Unused label `{}`.'
+DIAG_UNUSED_FUNCTION = 'Unused functions.'
+DIAG_UNUSED_VARARG = 'Unused vararg.'
+DIAG_REDEFINED_LOCAL = 'Redefined local `{}`.'
+DIAG_DUPLICATE_INDEX = 'Duplicate index `{}`.'
+DIAG_DUPLICATE_METHOD = 'Duplicate method `{}`.'
+DIAG_PREVIOUS_CALL = 'Parsed as function call for the previous line. It may be necessary to add a `;` before.'
+DIAG_OVER_MAX_ARGS = 'The function takes only {:d} parameters, but you passed {:d}.'
+DIAG_OVER_MAX_ARGS = 'Only has {} variables, but you set {} values.'
+DIAG_AMBIGUITY_1 = 'Compute `{}` first. You may need to add brackets.'
+DIAG_LOWERCASE_GLOBAL = 'Global variable in lowercase initial.'
+DIAG_EMPTY_BLOCK = 'Empty block.'
+DIAG_DIAGNOSTICS = 'Lua Diagnostics.'
+DIAG_SYNTAX_CHECK = 'Lua Syntax Check.'
+DIAG_NEED_VERSION = 'Supported in {}, current is {}.'
+DIAG_DEFINED_VERSION = 'Defined in {}, current is {}.'
+DIAG_DEFINED_CUSTOM = 'Defined in {}.'
+DIAG_DUPLICATE_CLASS = 'Duplicate class.'
+DIAG_UNDEFINED_CLASS = 'Undefined Class.'
+DIAG_CYCLIC_EXTENDS = 'Cyclic extends.'
+DIAG_INEXISTENT_PARAM = 'Inexistent param.'
+DIAG_DUPLICATE_PARAM = 'Duplicate param.'
+DIAG_NEED_CLASS = 'Class needs to be defined first.'
+DIAG_DUPLICATE_FIELD = 'Duplicate field.'
+DIAG_SET_CONST = 'Assignment to const variable.'
+
+MWS_NOT_SUPPORT = '{} dose not support multi workspace for now, I may need to restart to support the new workspace ...'
+MWS_RESTART = 'Restart'
+MWS_NOT_COMPLETE = 'Workspace is not complete yet. You may try again later...'
+MWS_COMPLETE = 'Workspace is complete now. You may try again...'
+MWS_MAX_PRELOAD = 'Preloaded files has reached the upper limit ({}), you need to manually open the files that need to be loaded.'
+MWS_UCONFIG_FAILED = 'Saving user setting failed.'
+MWS_UCONFIG_UPDATED = 'User setting updated.'
+MWS_WCONFIG_UPDATED = 'Workspace setting updated.'
+
+PARSER_CRASH = 'Parser crashed! Last words:{}'
+PARSER_UNKNOWN = 'Unknown syntax error...'
+PARSER_MISS_NAME = '<name> expected.'
+PARSER_UNKNOWN_SYMBOL = 'Unexpected symbol `{symbol}`.'
+PARSER_MISS_SYMBOL = 'Missed symbol `{symbol}`.'
+PARSER_MISS_ESC_X = 'Should be 2 hexadecimal digits.'
+PARSER_UTF8_SMALL = 'At least 1 hexadecimal digit.'
+PARSER_UTF8_MAX = 'Should between {min} and {max} .'
+PARSER_ERR_ESC = 'Invalid escape sequence.'
+PARSER_MUST_X16 = 'Should be hexadecimal digits.'
+PARSER_MISS_EXPONENT = 'Missed digits for the exponent.'
+PARSER_MISS_EXP = '<exp> expected.'
+PARSER_MISS_FIELD = '<field> expected.'
+PARSER_MISS_METHOD = '<method> expected.'
+PARSER_ARGS_AFTER_DOTS = '`...` should be the last arg.'
+PARSER_KEYWORD = '<keyword> cannot be used as name.'
+PARSER_EXP_IN_ACTION = 'Unexpected <exp> .'
+PARSER_BREAK_OUTSIDE = '<break> not inside a loop.'
+PARSER_MALFORMED_NUMBER = 'Malformed number.'
+PARSER_ACTION_AFTER_RETURN = '<eof> expected after `return`.'
+PARSER_ACTION_AFTER_BREAK = '<eof> expected after `break`.'
+PARSER_NO_VISIBLE_LABEL = 'No visible label `{label}` .'
+PARSER_REDEFINE_LABEL = 'Label `{label}` already defined.'
+PARSER_UNSUPPORT_SYMBOL = '{version} does not support this grammar.'
+PARSER_UNEXPECT_DOTS = 'Cannot use `...` outside a vararg function.'
+PARSER_UNKNOWN_TAG = 'Unknown tag.'
+PARSER_MULTI_TAG = 'Dose not support multi tags.'
+PARSER_UNEXPECT_LFUNC_NAME = 'Local function can only use identifiers as name.'
+PARSER_ERR_LCOMMENT_END = 'Multi-line annotations should be closed by `{symbol}` .'
+PARSER_ERR_C_LONG_COMMENT = 'Lua should use `--[[ ]]` for multi-line annotations.'
+PARSER_ERR_LSTRING_END = 'Long string should be closed by `{symbol}` .'
+PARSER_ERR_ASSIGN_AS_EQ = 'Should use `=` for assignment.'
+PARSER_ERR_EQ_AS_ASSIGN = 'Should use `==` for equal.'
+PARSER_ERR_UEQ = 'Should use `~=` for not equal.'
+PARSER_ERR_THEN_AS_DO = 'Should use `then` .'
+PARSER_ERR_DO_AS_THEN = 'Should use `do` .'
+PARSER_MISS_END = 'Miss corresponding `end` .'
+PARSER_ERR_COMMENT_PREFIX = 'Lua should use `--` for annotations.'
+PARSER_MISS_SEP_IN_TABLE = 'Miss symbol `,` or `;` .'
+
+SYMBOL_ANONYMOUS = '<Anonymous>'
+
+HOVER_DOCUMENT_LUA51 = '[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-{})'
+HOVER_DOCUMENT_LUA52 = '[View documents](http://www.lua.org/manual/5.2/manual.html#pdf-{})'
+HOVER_DOCUMENT_LUA53 = '[View documents](http://www.lua.org/manual/5.3/manual.html#pdf-{})'
+HOVER_DOCUMENT_LUA54 = '[View documents](http://www.lua.org/work/doc/manual.html#pdf-{})'
+HOVER_DOCUMENT_LUAJIT = '[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-{})'
+HOVER_MULTI_PROTOTYPE = '({} prototypes)'
+
+ACTION_DISABLE_DIAG = 'Disable diagnostics ({}).'
+ACTION_MARK_GLOBAL = 'Mark `{}` as defined global.'
+ACTION_REMOVE_SPACE = 'Clear all postemptive spaces.'
+ACTION_ADD_SEMICOLON = 'Add `;` .'
+ACTION_ADD_BRACKETS = 'Add brackets.'
+ACTION_RUNTIME_VERSION = 'Change runtime version to {} .'
+ACTION_OPEN_LIBRARY = 'Load globals from {} .'
+ACTION_ADD_DO_END = 'Add `do ... end` .'
+ACTION_FIX_LCOMMENT_END = 'Modify to the correct multi-line annotations closing symbol.'
+ACTION_ADD_LCOMMENT_END = 'Close multi-line annotations.'
+ACTION_FIX_C_LONG_COMMENT = 'Modify to Lua multi-line annotations format.'
+ACTION_FIX_LSTRING_END = 'Modify to the correct long string closing symbol.'
+ACTION_ADD_LSTRING_END = 'Close long string.'
+ACTION_FIX_ASSIGN_AS_EQ = 'Modify to `=` .'
+ACTION_FIX_EQ_AS_ASSIGN = 'Modify to `==` .'
+ACTION_FIX_UEQ = 'Modify to `~=` .'
+ACTION_FIX_THEN_AS_DO = 'Modify to `then` .'
+ACTION_FIX_DO_AS_THEN = 'Modify to `do` .'
+ACTION_ADD_END = 'Add `end` (infer the addition location ny indentations).'
+ACTION_FIX_COMMENT_PREFIX = 'Modify to `--` .'
+
+COMMAND_DISABLE_DIAG = 'Disable diagnostics'
+COMMAND_MARK_GLOBAL = 'Mark defined global'
+COMMAND_REMOVE_SPACE = 'Clear all postemptive spaces'
+COMMAND_ADD_BRACKETS = 'Add brackets'
+COMMAND_RUNTIME_VERSION = 'Change runtime version'
+COMMAND_OPEN_LIBRARY = 'Load globals from 3rd library'
+
+DEBUG_MEMORY_LEAK = "{} I'm sorry for the serious memory leak. The language service will be restarted soon."
+DEBUG_RESTART_NOW = 'Restart now'
diff --git a/server-beta/locale/zh-CN/libs/@lua/basic.lni b/server-beta/locale/zh-CN/libs/@lua/basic.lni
new file mode 100644
index 00000000..d4b234b0
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/basic.lni
@@ -0,0 +1,239 @@
+[arg]
+description = '独立版Lua的启动参数。'
+
+[assert]
+description = '如果其参数 `v` 的值为假,它就调用 `error`。'
+
+[collectgarbage]
+[[.enums]]
+name = 'opt'
+enum = '"collect"'
+description = '做一次完整的垃圾收集循环。'
+``````````
+name = 'opt'
+enum = '"stop"'
+description = '停止垃圾收集器的运行。'
+``````````
+name = 'opt'
+enum = '"restart"'
+description = '重启垃圾收集器的自动运行。'
+``````````
+name = 'opt'
+enum = '"count"'
+description = '以 K 字节数为单位返回 Lua 使用的总内存数。'
+``````````
+name = 'opt'
+enum = '"step"'
+description = '单步运行垃圾收集器。'
+``````````
+name = 'opt'
+enum = '"setpause"'
+description = '设置收集器的 `间歇率`。'
+``````````
+name = 'opt'
+enum = '"setstepmul"'
+description = '设置收集器的 `步进倍率`。'
+``````````
+name = 'opt'
+enum = '"isrunning"'
+description = '返回表示收集器是否在工作的布尔值。'
+
+["collectgarbage Lua 5.4"]
+[[.enums]]
+name = 'opt'
+enum = '"collect"'
+description = '做一次完整的垃圾收集循环。'
+``````````
+name = 'opt'
+enum = '"stop"'
+description = '停止垃圾收集器的运行。'
+``````````
+name = 'opt'
+enum = '"restart"'
+description = '重启垃圾收集器的自动运行。'
+``````````
+name = 'opt'
+enum = '"count"'
+description = '以 K 字节数为单位返回 Lua 使用的总内存数。'
+``````````
+name = 'opt'
+enum = '"step"'
+description = '单步运行垃圾收集器。'
+``````````
+name = 'opt'
+enum = '"setpause"'
+description = '设置收集器的 `间歇率`。'
+``````````
+name = 'opt'
+enum = '"setstepmul"'
+description = '设置收集器的 `步进倍率`。'
+``````````
+name = 'opt'
+enum = '"incremental"'
+description = '改变收集器模式为增量模式。'
+``````````
+name = 'opt'
+enum = '"generational"'
+description = '改变收集器模式为分代模式。'
+``````````
+name = 'opt'
+enum = '"isrunning"'
+description = '返回表示收集器是否在工作的布尔值。'
+
+[dofile]
+description = '打开该名字的文件,并执行文件中的 Lua 代码块。'
+
+[error]
+description = '中止上一次保护函数调用, 将错误对象 message 返回。'
+
+[_G]
+description = '内部储存有全局环境。'
+
+[getfenv]
+description = '返回给定函数的环境。`f` 可以是一个Lua函数,也可是一个表示调用栈层级的数字。'
+
+[getmetatable]
+description = '返回该对象的元表。'
+
+[ipairs]
+description = [[
+----------------
+```lua
+for i, v in ipairs(t) do
+ body
+end
+```
+]]
+
+[load]
+description = '加载一个代码块。'
+[[.enums]]
+name = 'mode'
+enum = '"b"'
+description = '只能是二进制代码块。'
+``````````
+name = 'mode'
+enum = '"t"'
+description = '只能是文本代码块。'
+``````````
+name = 'mode'
+enum = '"bt"'
+description = '可以是二进制也可以是文本。'
+
+['load Lua 5.1']
+description = '使用 `func` 分段加载代码块。每次调用 `func` 必须返回一个字符串用于连接前文。'
+
+[loadfile]
+description = '从文件中获取代码块。'
+[[.enums]]
+name = 'mode'
+enum = '"b"'
+description = '只能是二进制代码块。'
+``````````
+name = 'mode'
+enum = '"t"'
+description = '只能是文本代码块。'
+``````````
+name = 'mode'
+enum = '"bt"'
+description = '可以是二进制也可以是文本。'
+
+['loadfile Lua 5.1']
+description = '从 `filename` 或标准输入中加载代码块。'
+
+[loadstring]
+description = '使用给定字符串加载代码块。'
+
+[module]
+description = '创建一个模块'
+
+[next]
+description = '返回该键的下一个键及其关联的值。'
+
+[pairs]
+description = [[
+----------------
+```lua
+for k, v in pairs(t) do
+ body
+end
+```
+]]
+
+[pcall]
+description = '传入参数,以 *保护模式* 调用函数 `f` 。'
+
+[print]
+description = '接收任意数量的参数,并将它们的值打印到 `stdout`。'
+
+[rawequal]
+description = '在不触发任何元方法的情况下 检查 `v1` 是否和 `v2` 相等。'
+
+[rawget]
+description = '在不触发任何元方法的情况下 获取 `table[index]` 的值。'
+
+[rawlen]
+description = '在不触发任何元方法的情况下 返回对象 `v` 的长度。'
+
+[rawset]
+description = '在不触发任何元方法的情况下 将 `table[index]` 设为 `value`。'
+
+[select]
+[[.enums]]
+name = 'index'
+enum = '"#"'
+description = '返回参数的个数。'
+``````````
+name = 'index'
+code = 'integer'
+description = '返回参数中第 `index` 个之后的部分。'
+
+[setfenv]
+description = '设置给定函数的环境。 `f` 可以是一个Lua函数,也可是一个表示调用栈层级的数字。'
+
+[setmetatable]
+description = '给指定表设置元表。'
+
+[tonumber]
+description = '尝试把参数转换为一个数字。'
+
+[tostring]
+description = '可以接收任何类型,它将其转换为人可阅读的字符串形式。'
+
+[type]
+description = '将参数的类型编码为一个字符串返回。'
+
+["_VERSION Lua 5.1"]
+description = '当前解释器版本号。'
+
+["_VERSION Lua 5.2"]
+description = '当前解释器版本号。'
+
+["_VERSION Lua 5.3"]
+description = '当前解释器版本号。'
+
+["_VERSION Lua 5.4"]
+description = '当前解释器版本号。'
+
+[warn]
+description = '使用所有参数组成的字符串消息来发送警告。'
+
+[xpcall]
+description = '传入参数并设置一个消息处理器 `msgh`,以 *保护模式* 调用函数 `f` 。'
+
+["xpcall Lua 5.1"]
+description = '设置一个消息处理器 `err`,以 *保护模式* 调用函数 `f` 。'
+
+[require]
+description = '加载一个模块,返回该模块的返回值(`nil`时为`true`)。'
+
+["require Lua 5.4"]
+description = '加载一个模块,返回该模块的返回值(`nil`时为`true`)与搜索器返回的加载数据。默认搜索器的加载数据指示了加载位置,对于文件来说就是文件路径。'
+
+[unpack]
+description = [[
+-------
+```lua
+return list[i], list[i+1], ···, list[j]
+```
+]]
diff --git a/server-beta/locale/zh-CN/libs/@lua/bit32.lni b/server-beta/locale/zh-CN/libs/@lua/bit32.lni
new file mode 100644
index 00000000..35aa22cc
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/bit32.lni
@@ -0,0 +1,55 @@
+[arshift]
+description = [[
+返回 `x` 向右位移 `disp` 位的结果。`disp` 为负时向左位移。这是算数位移操作,左侧的空位使用 `x` 的高位填充,右侧空位使用 `0` 填充。
+]]
+
+[band]
+description = '返回参数按位与的结果。'
+
+[bnot]
+description = [[
+返回 `x` 按位取反的结果。
+
+```lua
+assert(bit32.bnot(x) == (-1 - x) % 2^32)
+```
+]]
+
+[bor]
+description = '返回参数按位或的结果。'
+
+[btest]
+description = '参数按位与的结果不为0时,返回 `true` 。'
+
+[bxor]
+description = '返回参数按位异或的结果。'
+
+[extract]
+description = '返回 `n` 中第 `field` 到第 `field + width - 1` 位组成的结果。'
+
+[replace]
+description = '返回 `v` 的第 `field` 到第 `field + width - 1` 位替换 `n` 的对应位后的结果。'
+
+[lrotate]
+description = '返回 `x` 向左旋转 `disp` 位的结果。`disp` 为负时向右旋转。'
+
+[lshift]
+description = [[
+返回 `x` 向左位移 `disp` 位的结果。`disp` 为负时向右位移。空位总是使用 `0` 填充。
+
+```lua
+assert(bit32.lshift(b, disp) == (b * 2^disp) % 2^32)
+```
+]]
+
+[rrotate]
+description = '返回 `x` 向右旋转 `disp` 位的结果。`disp` 为负时向左旋转。'
+
+[rshift]
+description = [[
+返回 `x` 向右位移 `disp` 位的结果。`disp` 为负时向左位移。空位总是使用 `0` 填充。
+
+```lua
+assert(bit32.lshift(b, disp) == (b * 2^disp) % 2^32)
+```
+]]
diff --git a/server-beta/locale/zh-CN/libs/@lua/coroutine.lni b/server-beta/locale/zh-CN/libs/@lua/coroutine.lni
new file mode 100644
index 00000000..42f1cb8f
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/coroutine.lni
@@ -0,0 +1,42 @@
+[create]
+description = '创建一个主体函数为 `f` 的新协程。'
+
+[isyieldable]
+description = '如果正在运行的协程可以让出,则返回真。'
+
+['isyieldable Lua 5.4']
+description = '如果协程 `co` 可以让出,则返回真。`co` 默认为正在运行的协程。'
+
+[close]
+description = '关闭协程 `co`,并关闭它所有等待 *to-be-closed* 的变量,并将协程状态设为 `dead` 。'
+
+[resume]
+description = '开始或继续协程 `co` 的运行。'
+
+[running]
+description = '返回当前正在运行的协程加一个布尔量。 如果当前运行的协程是主线程,其为真。'
+
+[status]
+description = '以字符串形式返回协程 `co` 的状态。'
+[[.enums]]
+name = 'status'
+enum = '"running"'
+description = '正在运行。'
+``````````
+name = 'status'
+enum = '"suspended"'
+description = '挂起或是还没有开始运行。'
+``````````
+name = 'status'
+enum = '"normal"'
+description = '是活动的,但并不在运行。'
+``````````
+name = 'status'
+enum = '"dead"'
+description = '运行完主体函数或因错误停止。'
+
+[wrap]
+description = '创建一个主体函数为 `f` 的新协程。'
+
+[yield]
+description = '挂起正在调用的协程的执行。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/debug.lni b/server-beta/locale/zh-CN/libs/@lua/debug.lni
new file mode 100644
index 00000000..0ed9e219
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/debug.lni
@@ -0,0 +1,140 @@
+["debug.debug"]
+description = '进入一个用户交互模式,运行用户输入的每个字符串。'
+
+[getfenv]
+description = '返回对象 `o` 的环境。'
+
+[gethook]
+description = '返回三个表示线程钩子设置的值: 当前钩子函数,当前钩子掩码,当前钩子计数 。'
+
+[getinfo]
+description = '返回关于一个函数信息的表。'
+[[.enums]]
+name = 'what'
+enum = '"n"'
+description = '`name` 和 `namewhat`'
+``````````
+name = 'what'
+enum = '"S"'
+description = '`source`,`short_src`,`linedefined`,`lastlinedefined`,和 `what`'
+``````````
+name = 'what'
+enum = '"l"'
+description = '`currentline`'
+``````````
+name = 'what'
+enum = '"t"'
+description = '`istailcall`'
+``````````
+name = 'what'
+enum = '"u"'
+description = '`nups`,`nparams`,和`isvararg`'
+``````````
+name = 'what'
+enum = '"f"'
+description = '`func`'
+``````````
+name = 'what'
+enum = '"L"'
+description = '`activelines`'
+
+['getinfo Lua 5.1']
+description = '返回关于一个函数信息的表。'
+[[.enums]]
+name = 'what'
+enum = '"n"'
+description = '`name` 和 `namewhat`'
+``````````
+name = 'what'
+enum = '"S"'
+description = '`source`,`short_src`,`linedefined`,`lastlinedefined`,和 `what`'
+``````````
+name = 'what'
+enum = '"l"'
+description = '`currentline`'
+``````````
+name = 'what'
+enum = '"t"'
+description = '`istailcall`'
+``````````
+name = 'what'
+enum = '"u"'
+description = '`nups`'
+``````````
+name = 'what'
+enum = '"f"'
+description = '`func`'
+``````````
+name = 'what'
+enum = '"L"'
+description = '`activelines`'
+
+[getlocal]
+description = '返回在栈的 `f` 层处函数的索引为 `local` 的局部变量的名字和值。'
+
+['getlocal Lua 5.1']
+description = '返回在栈的 `level` 层处函数的索引为 `local` 的局部变量的名字和值。'
+
+[getmetatable]
+description = '返回给定 `value` 的元表。'
+
+[getregistry]
+description = '返回注册表。'
+
+[getupvalue]
+description = '返回函数 `f` 的第 `up` 个上值的名字和值。'
+
+[getuservalue]
+description = '返回关联在 `u` 上的 `Lua` 值。'
+
+["getuservalue Lua 5.4"]
+description = '返回关联在 `u` 上的第 `n` 个 `Lua` 值,以及一个布尔,`false`表示值不存在。'
+
+[setCstacklimit]
+description = [[
+设置新的C栈限制。该限制控制Lua中嵌套调用的深度,以避免堆栈溢出。
+
+如果设置成功,该函数返回之前的限制;否则返回`false`。
+]]
+
+[setfenv]
+description = '将 `table` 设置为 `object` 的环境。'
+
+[sethook]
+description = '将一个函数作为钩子函数设入。'
+[[.enums]]
+name = 'mask'
+enum = '"c"'
+description = '每当 Lua 调用一个函数时,调用钩子。'
+``````````
+name = 'mask'
+enum = '"r"'
+description = '每当 Lua 从一个函数内返回时,调用钩子。'
+``````````
+name = 'mask'
+enum = '"l"'
+description = '每当 Lua 进入新的一行时,调用钩子。'
+
+[setlocal]
+description = '将 `value` 赋给 栈上第 `level` 层函数的第 `local` 个局部变量。'
+
+[setmetatable]
+description = '将 `value` 的元表设为 `table` (可以是 `nil`)。'
+
+[setupvalue]
+description = '将 `value` 设为函数 `f` 的第 `up` 个上值。'
+
+["setuservalue Lua 5.4"]
+description = '将 `value` 设为 `udata` 的第 `n` 个关联值。'
+
+[setuservalue]
+description = '将 `value` 设为 `udata` 的关联值。'
+
+[traceback]
+description = '返回调用栈的栈回溯信息。 字符串可选项 `message` 被添加在栈回溯信息的开头。'
+
+[upvalueid]
+description = '返回指定函数第 `n` 个上值的唯一标识符(一个轻量用户数据)。'
+
+[upvaluejoin]
+description = '让 Lua 闭包 `f1` 的第 `n1` 个上值 引用 `Lua` 闭包 `f2` 的第 `n2` 个上值。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/file.lni b/server-beta/locale/zh-CN/libs/@lua/file.lni
new file mode 100644
index 00000000..4dcace0f
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/file.lni
@@ -0,0 +1,91 @@
+[close]
+description = '关闭 `file`。'
+
+[flush]
+description = '将写入的数据保存到 `file` 中。'
+
+[lines]
+description = [[
+------
+```lua
+for c in file:lines(...) do
+ body
+end
+```
+]]
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
+``````````
+name = 'mode'
+enum = '"a"'
+description = '从当前位置开始读取整个文件。'
+``````````
+name = 'mode'
+enum = '"l"'
+description = '读取一行并忽略行结束标记。'
+``````````
+name = 'mode'
+enum = '"L"'
+description = '读取一行并保留行结束标记。'
+``````````
+name = 'mode'
+code = 'number'
+description = '读取一个不超过这个数量字节数的字符串。'
+
+[read]
+description = '读文件 `file`, 指定的格式决定了要读什么。'
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
+``````````
+name = 'mode'
+enum = '"a"'
+description = '从当前位置开始读取整个文件。'
+``````````
+name = 'mode'
+enum = '"l"'
+description = '读取一行并忽略行结束标记。'
+``````````
+name = 'mode'
+enum = '"L"'
+description = '读取一行并保留行结束标记。'
+``````````
+name = 'mode'
+code = 'number'
+description = '读取一个不超过这个数量字节数的字符串。'
+
+[seek]
+description = '设置及获取基于文件开头处计算出的位置。'
+[[.enums]]
+name = 'whence'
+enum = '"set"'
+description = '基点为 0 (文件开头)。'
+``````````
+name = 'whence'
+enum = '"cur"'
+description = '基点为当前位置。'
+``````````
+name = 'whence'
+enum = '"end"'
+description = '基点为文件尾。'
+
+[setvbuf]
+description = '设置输出文件的缓冲模式。'
+[[.enums]]
+name = 'mode'
+enum = '"no"'
+description = '不缓冲;输出操作立刻生效。'
+``````````
+name = 'mode'
+enum = '"full"'
+description = '完全缓冲;只有在缓存满或调用 flush 时才做输出操作。'
+``````````
+name = 'mode'
+enum = '"line"'
+description = '行缓冲;输出将缓冲到每次换行前。'
+
+[write]
+description = '将参数的值逐个写入 `file`。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/io.lni b/server-beta/locale/zh-CN/libs/@lua/io.lni
new file mode 100644
index 00000000..34f6d5eb
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/io.lni
@@ -0,0 +1,230 @@
+[stdin]
+description = '标准输入。'
+
+[stdout]
+description = '标准输出。'
+
+[stderr]
+description = '标准错误。'
+
+[close]
+description = '关闭 `file` 或默认输出文件。'
+
+[flush]
+description = '将写入的数据保存到默认输出文件中。'
+
+[input]
+description = '设置 `file` 为默认输入文件。'
+
+["lines Lua 5.1"]
+description = [[
+------
+```lua
+for c in io.lines(filename, ...) do
+ body
+end
+```
+]]
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
+``````````
+name = 'mode'
+enum = '"*a"'
+description = '从当前位置开始读取整个文件。'
+``````````
+name = 'mode'
+enum = '"*l"'
+description = '读取一行并忽略行结束标记。'
+``````````
+name = 'mode'
+code = 'number'
+description = '读取一个不超过这个数量字节数的字符串。'
+
+["lines Lua 5.3"]
+description = [[
+------
+```lua
+for c in io.lines(filename, ...) do
+ body
+end
+```
+]]
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
+``````````
+name = 'mode'
+enum = '"a"'
+description = '从当前位置开始读取整个文件。'
+``````````
+name = 'mode'
+enum = '"l"'
+description = '读取一行并忽略行结束标记。'
+``````````
+name = 'mode'
+enum = '"L"'
+description = '读取一行并保留行结束标记。'
+``````````
+name = 'mode'
+code = 'number'
+description = '读取一个不超过这个数量字节数的字符串。'
+
+["lines LuaJIT"]
+description = [[
+------
+```lua
+for c in io.lines(filename, ...) do
+ body
+end
+```
+]]
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
+``````````
+name = 'mode'
+enum = '"*a"'
+description = '从当前位置开始读取整个文件。'
+``````````
+name = 'mode'
+enum = '"*l"'
+description = '读取一行并忽略行结束标记。'
+``````````
+name = 'mode'
+enum = '"*L"'
+description = '读取一行并保留行结束标记。'
+``````````
+name = 'mode'
+code = 'number'
+description = '读取一个不超过这个数量字节数的字符串。'
+
+[open]
+description = '用字符串 `mode` 指定的模式打开一个文件。'
+[[.enums]]
+name = 'mode'
+enum = '"r"'
+description = '读模式。'
+``````````
+name = 'mode'
+enum = '"w"'
+description = '写模式。'
+``````````
+name = 'mode'
+enum = '"a"'
+description = '追加模式。'
+``````````
+name = 'mode'
+enum = '"r+"'
+description = '更新模式,所有之前的数据都保留。'
+``````````
+name = 'mode'
+enum = '"w+"'
+description = '更新模式,所有之前的数据都删除。'
+``````````
+name = 'mode'
+enum = '"a+"'
+description = '追加更新模式,所有之前的数据都保留,只允许在文件尾部做写入。'
+
+[output]
+description = '设置 `file` 为默认输出文件。'
+
+[popen]
+description = '用一个分离进程开启程序 `prog` 。'
+[[.enums]]
+name = 'mode'
+enum = '"r"'
+description = '从这个程序中读取数据。'
+``````````
+name = 'mode'
+enum = '"w"'
+description = '向这个程序写入输入。'
+
+["read Lua 5.1"]
+description = '读文件 `file`, 指定的格式决定了要读什么。'
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
+``````````
+name = 'mode'
+enum = '"*a"'
+description = '从当前位置开始读取整个文件。'
+``````````
+name = 'mode'
+enum = '"*l"'
+description = '读取一行并忽略行结束标记。'
+``````````
+name = 'mode'
+code = 'number'
+description = '读取一个不超过这个数量字节数的字符串。'
+
+["read Lua 5.3"]
+description = '读文件 `file`, 指定的格式决定了要读什么。'
+[[.enums]]
+name = 'mode'
+enum = '"n"'
+description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
+``````````
+name = 'mode'
+enum = '"a"'
+description = '从当前位置开始读取整个文件。'
+``````````
+name = 'mode'
+enum = '"l"'
+description = '读取一行并忽略行结束标记。'
+``````````
+name = 'mode'
+enum = '"L"'
+description = '读取一行并保留行结束标记。'
+``````````
+name = 'mode'
+code = 'number'
+description = '读取一个不超过这个数量字节数的字符串。'
+
+["read LuaJIT"]
+description = '读文件 `file`, 指定的格式决定了要读什么。'
+[[.enums]]
+name = 'mode'
+enum = '"*n"'
+description = '读取一个数字,根据 Lua 的转换文法返回浮点数或整数。'
+``````````
+name = 'mode'
+enum = '"*a"'
+description = '从当前位置开始读取整个文件。'
+``````````
+name = 'mode'
+enum = '"*l"'
+description = '读取一行并忽略行结束标记。'
+``````````
+name = 'mode'
+enum = '"*L"'
+description = '读取一行并保留行结束标记。'
+``````````
+name = 'mode'
+code = 'number'
+description = '读取一个不超过这个数量字节数的字符串。'
+
+[tmpfile]
+description = '如果成功,返回一个临时文件的句柄。'
+
+[type]
+description = '检查 `obj` 是否是合法的文件句柄。'
+[[.enums]]
+name = 'type'
+enum = '"file"'
+description = '是一个打开的文件句柄。'
+``````````
+name = 'type'
+enum = '"closed file"'
+description = '是一个关闭的文件句柄。'
+``````````
+name = 'type'
+code = 'nil'
+description = '不是文件句柄。'
+
+[write]
+description = '将参数的值逐个写入默认输出文件。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/math.lni b/server-beta/locale/zh-CN/libs/@lua/math.lni
new file mode 100644
index 00000000..fba72360
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/math.lni
@@ -0,0 +1,132 @@
+[abs]
+description = '返回 `x` 的绝对值。'
+
+[acos]
+description = '返回 `x` 的反余弦值(用弧度表示)。'
+
+[asin]
+description = '返回 `x` 的反正弦值(用弧度表示)。'
+
+["atan Lua 5.1"]
+description = '返回 `x` 的反正切值(用弧度表示)。'
+
+["atan Lua 5.3"]
+description = '返回 `y/x` 的反正切值(用弧度表示)。'
+
+[atan2]
+description = '返回 `y/x` 的反正切值(用弧度表示)。'
+
+[ceil]
+description = '返回不小于 `x` 的最小整数值。'
+
+[cos]
+description = '返回 `x` 的余弦(假定参数是弧度)。'
+
+[cosh]
+description = '返回 `x` 的双曲余弦(假定参数是弧度)。'
+
+[deg]
+description = '将角 `x` 从弧度转换为角度。'
+
+[exp]
+description = '返回 `e^x` 的值 (e 为自然对数的底)。'
+
+[floor]
+description = '返回不大于 `x` 的最大整数值。'
+
+[fmod]
+description = '返回 `x` 除以 `y`,将商向零圆整后的余数。'
+
+[frexp]
+description = '将 `x` 分解为尾数与指数,返回值符合 `x = m * (2 ^ e)` 。`e` 是一个整数,`m` 是 [0.5, 1) 之间的规格化小数 (`x` 为0时 `m` 为0)。'
+
+[huge]
+description = '一个比任何数字值都大的浮点数。'
+
+[ldexp]
+description = '返回 `m * (2 ^ e)` 。'
+
+[log]
+description = '返回以指定底的 `x` 的对数。'
+
+['log Lua 5.1']
+description = '返回 `x` 的自然对数。'
+
+[log10]
+description = '返回 `x` 的以10为底的对数。'
+
+[max]
+description = '返回参数中最大的值, 大小由 Lua 操作 `<` 决定。'
+
+[maxinteger]
+description = '最大值的整数。'
+
+[min]
+description = '返回参数中最小的值, 大小由 Lua 操作 `<` 决定。'
+
+[mininteger]
+description = '最小值的整数。'
+
+[modf]
+description = '返回 `x` 的整数部分和小数部分。'
+
+[pi]
+description = '*π* 的值。'
+
+[pow]
+description = '返回 `x ^ y` 。'
+
+[rad]
+description = '将角 `x` 从角度转换为弧度。'
+
+[random]
+description = [[
+* `math.random()`: 返回 [0,1) 区间内一致分布的浮点伪随机数。
+* `math.random(n)`: 返回 [1, n] 区间内一致分布的整数伪随机数。
+* `math.random(m, n)`: 返回 [m, n] 区间内一致分布的整数伪随机数。
+]]
+
+[randomseed]
+description = '把 `x` 设为伪随机数发生器的“种子”: 相同的种子产生相同的随机数列。'
+
+["randomseed Lua 5.4"]
+description = [[
+* `math.randomseed(x, y)`: 将 `x` 与 `y` 连接为128位的种子来重新初始化伪随机生成器。
+* `math.randomseed(x)`: 等同于 `math.randomseed(x, 0)` 。
+* `math.randomseed()`: Generates a seed with a weak attempt for randomness.
+]]
+
+[sin]
+description = '返回 `x` 的正弦值(假定参数是弧度)。'
+
+[sinh]
+description = '返回 `x` 的双曲正弦值(假定参数是弧度)。'
+
+[sqrt]
+description = '返回 `x` 的平方根。'
+
+[tan]
+description = '返回 `x` 的正切值(假定参数是弧度)。'
+
+[tanh]
+description = '返回 `x` 的双曲正切值(假定参数是弧度)。'
+
+[tointeger]
+description = '如果 `x` 可以转换为一个整数, 返回该整数。'
+
+[type]
+[[.enums]]
+name = 'type'
+enum = '"integer"'
+description = '`x` 是一个整数。'
+``````````
+name = 'type'
+enum = '"float"'
+description = '`x` 是一个浮点数。'
+``````````
+name = 'type'
+code = 'nil'
+description = '`x` 不是一个数字。'
+
+[ult]
+description = '如果整数 `m` 和 `n` 以无符号整数形式比较, `m` 在 `n` 之下,返回布尔真否则返回假。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/os.lni b/server-beta/locale/zh-CN/libs/@lua/os.lni
new file mode 100644
index 00000000..e3702667
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/os.lni
@@ -0,0 +1,38 @@
+[clock]
+description = '返回程序使用的按秒计 CPU 时间的近似值。'
+
+[data]
+description = '返回一个包含日期及时刻的字符串或表。 格式化方法取决于所给字符串 `format`。'
+
+[difftime]
+description = '返回以秒计算的时刻 `t1` 到 `t2` 的差值。'
+
+[execute]
+description = '调用系统解释器执行 `command`。'
+
+['execute Lua 5.1']
+description = '调用系统解释器执行 `command`。'
+
+[exit]
+description = '调用 ISO C 函数 `exit` 终止宿主程序。'
+
+['exit Lua 5.1']
+description = '调用 C 函数 `exit` 终止宿主程序。'
+
+[getenv]
+description = '返回进程环境变量 `varname` 的值。'
+
+[remove]
+description = '删除指定名字的文件。'
+
+[rename]
+description = '将名字为 `oldname` 的文件或目录更名为 `newname`。'
+
+[setlocale]
+description = '设置程序的当前区域。'
+
+[time]
+description = '当不传参数时,返回当前时刻。 如果传入一张表,就返回由这张表表示的时刻。'
+
+[tmpname]
+description = '返回一个可用于临时文件的文件名字符串。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/package.lni b/server-beta/locale/zh-CN/libs/@lua/package.lni
new file mode 100644
index 00000000..209a9dc1
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/package.lni
@@ -0,0 +1,29 @@
+[config]
+description = '一个描述有一些为包管理准备的编译期配置信息的串。'
+
+[cpath]
+description = '这个路径被 `require` 在 C 加载器中做搜索时用到。'
+
+[loaded]
+description = '用于 `require` 控制哪些模块已经被加载的表。'
+
+[loaders]
+description = '用于 `require` 控制如何加载模块的表。'
+
+[loadlib]
+description = '让宿主程序动态链接 C 库 `libname` 。'
+
+[path]
+description = '这个路径被 `require` 在 Lua 加载器中做搜索时用到。'
+
+[preload]
+description = '保存有一些特殊模块的加载器。'
+
+[searchers]
+description = '用于 `require` 控制如何加载模块的表。'
+
+[searchpath]
+description = '在指定 `path` 中搜索指定的 `name` 。'
+
+[seeall]
+description = '给 `module` 设置一个元表,该元表的 `__index` 域为全局环境,这样模块便会继承全局环境的值。可作为 `module` 函数的选项。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/string.lni b/server-beta/locale/zh-CN/libs/@lua/string.lni
new file mode 100644
index 00000000..6aa78cce
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/string.lni
@@ -0,0 +1,61 @@
+[byte]
+description = '返回字符 `s[i]`, `s[i+1]`, ... ,`s[j]` 的内部数字编码。'
+
+[char]
+description = '接收零或更多的整数。 返回和参数数量相同长度的字符串。 其中每个字符的内部编码值等于对应的参数值。'
+
+[dump]
+description = '返回包含有以二进制方式表示的(一个 *二进制代码块* )指定函数的字符串。'
+
+[find]
+description = '查找第一个字符串中匹配到的 [`pattern`](https://cloudwu.github.io/lua53doc/manual.html#6.4.1)。'
+
+[format]
+description = '返回不定数量参数的格式化版本,格式化串为第一个参数。'
+
+[gmatch]
+description = [[
+----------
+```lua
+s = "hello world from Lua"
+for w in string.gmatch(s, "%a+") do
+ print(w)
+end
+```
+]]
+
+[gsub]
+description = '将字符串中,所有的(或是在 `n` 给出时的前 `n` 个) [`pattern`](https://cloudwu.github.io/lua53doc/manual.html#6.4.1) 都替换成 `repl` ,并返回其副本。'
+
+[len]
+description = '返回其长度。'
+
+[lower]
+description = '将其中的大写字符都转为小写后返回其副本。'
+
+[match]
+description = '在字符串中找到第一个能用 [`pattern`](https://cloudwu.github.io/lua53doc/manual.html#6.4.1) 匹配到的部分。'
+
+[pack]
+description = '返回一个打包了(即以二进制形式序列化) `v1`, `v2` 等值的二进制字符串。 字符串 [`fmt`](https://cloudwu.github.io/lua53doc/manual.html#6.4.2) 为打包格式。'
+
+[packsize]
+description = '返回以指定格式用 `string.pack` 打包的字符串的长度。'
+
+[rep]
+description = '返回 `n` 个字符串 `s` 以字符串 `sep` 为分割符连在一起的字符串。'
+
+['rep Lua 5.1']
+description = '返回 `n` 个字符串 `s` 连在一起的字符串。'
+
+[reverse]
+description = '返回字符串的翻转串。'
+
+[sub]
+description = '返回字符串的子串, 该子串从 `i` 开始到 `j` 为止。'
+
+[unpack]
+description = '返回以格式 [`fmt`](https://cloudwu.github.io/lua53doc/manual.html#6.4.2) 打包在字符串中的值。'
+
+[upper]
+description = '接收一个字符串,将其中的小写字符都转为大写后返回其副本。'
diff --git a/server-beta/locale/zh-CN/libs/@lua/table.lni b/server-beta/locale/zh-CN/libs/@lua/table.lni
new file mode 100644
index 00000000..9163d8e5
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/table.lni
@@ -0,0 +1,39 @@
+[concat]
+description = [[
+--------
+```lua
+return list[i]..sep..list[i+1] ··· sep..list[j]
+```
+]]
+
+[insert]
+description = '在 `list` 的位置 `pos` 处插入元素 `value`。'
+
+[maxn]
+description = '返回给定表的最大正数索引,如果表没有正数索引,则返回零。'
+
+[move]
+description = [[
+将元素从表 `a1` 移到表 `a2`。
+```lua
+a2[t],··· = a1[f],···,a1[e]
+return a2
+```
+]]
+
+[pack]
+description = '返回用所有参数以键 `1`,`2`, 等填充的新表, 并将 `"n"` 这个域设为参数的总数。'
+
+[remove]
+description = '移除 `list` 中 `pos` 位置上的元素,并返回这个被移除的值。'
+
+[sort]
+description = '在表内从 `list[1]` 到 `list[#list]` *原地* 对其间元素按指定次序排序。'
+
+[unpack]
+description = [[
+-------
+```lua
+return list[i], list[i+1], ···, list[j]
+```
+]]
diff --git a/server-beta/locale/zh-CN/libs/@lua/utf8.lni b/server-beta/locale/zh-CN/libs/@lua/utf8.lni
new file mode 100644
index 00000000..0af45153
--- /dev/null
+++ b/server-beta/locale/zh-CN/libs/@lua/utf8.lni
@@ -0,0 +1,24 @@
+[char]
+description = '接收零或多个整数, 将每个整数转换成对应的 UTF-8 字节序列,并返回这些序列连接到一起的字符串。'
+
+[charpattern]
+description = '用于精确匹配到一个 UTF-8 字节序列的模式,它假定处理的对象是一个合法的 UTF-8 字符串。'
+
+[codes]
+description = [[
+--------
+```lua
+for p, c in utf8.codes(s) do
+ body
+end
+```
+]]
+
+[codepoint]
+description = '以整数形式返回 `s` 中 从位置 `i` 到 `j` 间(包括两端) 所有字符的编号。'
+
+[len]
+description = '返回字符串 `s` 中 从位置 `i` 到 `j` 间 (包括两端) UTF-8 字符的个数。'
+
+[offset]
+description = '返回编码在 `s` 中的第 `n` 个字符的开始位置(按字节数) (从位置 `i` 处开始统计)。'
diff --git a/server-beta/locale/zh-CN/script.lni b/server-beta/locale/zh-CN/script.lni
new file mode 100644
index 00000000..b441db5a
--- /dev/null
+++ b/server-beta/locale/zh-CN/script.lni
@@ -0,0 +1,122 @@
+DIAG_LINE_ONLY_SPACE = '只有空格的空行。'
+DIAG_LINE_POST_SPACE = '后置空格。'
+DIAG_UNUSED_LOCAL = '未使用的局部变量 `{}`。'
+DIAG_UNDEF_GLOBAL = '未定义的全局变量 `{}`。'
+DIAG_UNDEF_ENV_CHILD = '未定义的变量 `{}`(重载了 `_ENV` )。'
+DIAG_UNDEF_FENV_CHILD = '未定义的变量 `{}`(处于模块中)。'
+DIAG_GLOBAL_IN_NIL_ENV = '不能使用全局变量(`_ENV`被置为了`nil`)。'
+DIAG_GLOBAL_IN_NIL_FENV = '不能使用全局变量(模块被置为了`nil`)。'
+DIAG_UNUSED_LABEL = '未使用的标签 `{}`。'
+DIAG_UNUSED_FUNCTION = '未使用的函数。'
+DIAG_UNUSED_VARARG = '未使用的不定参数。'
+DIAG_REDEFINED_LOCAL = '重定义局部变量 `{}`。'
+DIAG_DUPLICATE_INDEX = '重复的索引 `{}`。'
+DIAG_DUPLICATE_METHOD = '重复的方法 `{}`。'
+DIAG_PREVIOUS_CALL = '解析为了上一行的函数调用。你可能需要在前面加一个 `;`。'
+DIAG_OVER_MAX_ARGS = '函数只接收 {:d} 个参数,但你传了 {:d} 个。'
+DIAG_OVER_MAX_VALUES = '只有 {} 个变量,但你设置了 {} 个值。'
+DIAG_AMBIGUITY_1 = '会优先运算 `{}`,你可能需要加个括号。'
+DIAG_LOWERCASE_GLOBAL = '首字母小写的全局变量'
+DIAG_EMPTY_BLOCK = '空代码块'
+DIAG_DIAGNOSTICS = 'Lua 诊断'
+DIAG_SYNTAX_CHECK = 'Lua 语法检查'
+DIAG_NEED_VERSION = '在 {} 中是合法的,当前为 {}'
+DIAG_DEFINED_VERSION = '在 {} 中有定义,当前为 {}'
+DIAG_DEFINED_CUSTOM = '在 {} 中有定义'
+DIAG_DUPLICATE_CLASS = '重复定义的 Class 。'
+DIAG_UNDEFINED_CLASS = '未定义的 Class 。'
+DIAG_CYCLIC_EXTENDS = '循环继承。'
+DIAG_INEXISTENT_PARAM = '不存在的参数。'
+DIAG_DUPLICATE_PARAM = '重复的参数。'
+DIAG_NEED_CLASS = '需要先定义 Class 。'
+DIAG_DUPLICATE_FIELD = '重复定义的 field 。'
+DIAG_SET_CONST = '不能对常量赋值。'
+
+MWS_NOT_SUPPORT = '{} 目前还不支持多工作目录,我可能需要重启才能支持新的工作目录...'
+MWS_RESTART = '重启'
+MWS_NOT_COMPLETE = '工作目录还没有准备好,你可以稍后再试一下...'
+MWS_COMPLETE = '工作目录准备好了,你可以再试一下了...'
+MWS_MAX_PRELOAD = '预加载文件数已达上限({}),你需要手动打开需要加载的文件。'
+MWS_UCONFIG_FAILED = '用户配置保存失败。'
+MWS_UCONFIG_UPDATED = '用户配置已更新。'
+MWS_WCONFIG_UPDATED = '工作区配置已更新。'
+
+PARSER_CRASH = '语法解析崩溃了!遗言:{}'
+PARSER_UNKNOWN = '未知语法错误...'
+PARSER_MISS_NAME = '缺少名称。'
+PARSER_UNKNOWN_SYMBOL = '未知符号`{symbol}`。'
+PARSER_MISS_SYMBOL = '缺少符号`{symbol}`。'
+PARSER_MISS_ESC_X = '必须是2个16进制字符。'
+PARSER_UTF8_SMALL = '至少有1个字符。'
+PARSER_UTF8_MAX = '必须在 {min} 与 {max} 之间。'
+PARSER_ERR_ESC = '错误的转义符。'
+PARSER_MUST_X16 = '必须是16进制字符。'
+PARSER_MISS_EXPONENT = '缺少指数部分。'
+PARSER_MISS_EXP = '缺少表达式。'
+PARSER_MISS_FIELD = '缺少域名。'
+PARSER_MISS_METHOD = '缺少方法名。'
+PARSER_ARGS_AFTER_DOTS = '`...`必须是最后一个参数。'
+PARSER_KEYWORD = '关键字无法作为名称。'
+PARSER_EXP_IN_ACTION = '表达式不能独立存在。'
+PARSER_BREAK_OUTSIDE = '`break`必须在循环内部。'
+PARSER_MALFORMED_NUMBER = '无法构成有效数字。'
+PARSER_ACTION_AFTER_RETURN = '`return`之后不能再执行代码。'
+PARSER_ACTION_AFTER_BREAK = '`break`之后不能再执行代码。'
+PARSER_NO_VISIBLE_LABEL = '标签`{label}`不可见。'
+PARSER_REDEFINE_LABEL = '标签`{label}`重复定义。'
+PARSER_UNSUPPORT_SYMBOL = '{version} 不支持该符号。'
+PARSER_UNEXPECT_DOTS = '`...`只能在不定参函数中使用。'
+PARSER_UNKNOWN_TAG = '不支持的标签。'
+PARSER_MULTI_TAG = '只能设置一个标签。'
+PARSER_UNEXPECT_LFUNC_NAME = '局部函数只能使用标识符作为名称。'
+PARSER_ERR_LCOMMENT_END = '应使用`{symbol}`来关闭多行注释。'
+PARSER_ERR_C_LONG_COMMENT = 'Lua应使用`--[[ ]]`来进行多行注释。'
+PARSER_ERR_LSTRING_END = '应使用`{symbol}`来关闭长字符串。'
+PARSER_ERR_ASSIGN_AS_EQ = '应使用`=`来进行赋值操作。'
+PARSER_ERR_EQ_AS_ASSIGN = '应使用`==`来进行等于判断。'
+PARSER_ERR_UEQ = '应使用`~=`来进行不等于判断。'
+PARSER_ERR_THEN_AS_DO = '应使用`then`。'
+PARSER_ERR_DO_AS_THEN = '应使用`do`。'
+PARSER_MISS_END = '缺少对应的`end`。'
+PARSER_ERR_COMMENT_PREFIX = 'Lua应使用`--`来进行注释。'
+PARSER_MISS_SEP_IN_TABLE = '需要用`,`或`;`进行分割。'
+
+SYMBOL_ANONYMOUS = '<匿名函数>'
+
+HOVER_DOCUMENT_LUA51 = '[查看文档](http://www.lua.org/manual/5.1/manual.html#pdf-{})'
+HOVER_DOCUMENT_LUA52 = '[查看文档](http://www.lua.org/manual/5.2/manual.html#pdf-{})'
+HOVER_DOCUMENT_LUA53 = '[查看文档](http://cloudwu.github.io/lua53doc/manual.html#pdf-{})'
+HOVER_DOCUMENT_LUA54 = '[查看文档](http://www.lua.org/work/doc/manual.html#pdf-{})'
+HOVER_DOCUMENT_LUAJIT = '[查看文档](http://www.lua.org/manual/5.1/manual.html#pdf-{})'
+HOVER_MULTI_PROTOTYPE = '({} 个原型)'
+
+ACTION_DISABLE_DIAG = '禁用诊断({})。'
+ACTION_MARK_GLOBAL = '标记 `{}` 为已定义的全局变量。'
+ACTION_REMOVE_SPACE = '清除所有后置空格。'
+ACTION_ADD_SEMICOLON = '添加 `;` 。'
+ACTION_ADD_BRACKETS = '添加括号。'
+ACTION_RUNTIME_VERSION = '修改运行版本为 {} 。'
+ACTION_OPEN_LIBRARY = '加载 {} 中的全局变量。'
+ACTION_ADD_DO_END = '添加 `do ... end` 。'
+ACTION_FIX_LCOMMENT_END = '改用正确的多行注释关闭符号。'
+ACTION_ADD_LCOMMENT_END = '关闭多行注释。'
+ACTION_FIX_C_LONG_COMMENT = '修改为 Lua 的多行注释格式。'
+ACTION_FIX_LSTRING_END = '改用正确的长字符串关闭符号。'
+ACTION_ADD_LSTRING_END = '关闭长字符串。'
+ACTION_FIX_ASSIGN_AS_EQ = '改为 `=` 。'
+ACTION_FIX_EQ_AS_ASSIGN = '改为 `==` 。'
+ACTION_FIX_UEQ = '改为 `~=` 。'
+ACTION_FIX_THEN_AS_DO = '改为 `then` 。'
+ACTION_FIX_DO_AS_THEN = '改为 `do` 。'
+ACTION_ADD_END = '添加 `end` (根据缩进推测添加位置)。'
+ACTION_FIX_COMMENT_PREFIX = '改为 `--` 。'
+
+COMMAND_DISABLE_DIAG = '禁用诊断'
+COMMAND_MARK_GLOBAL = '标记全局变量'
+COMMAND_REMOVE_SPACE = '清除所有后置空格'
+COMMAND_ADD_BRACKETS = '添加括号'
+COMMAND_RUNTIME_VERSION = '修改运行版本'
+COMMAND_OPEN_LIBRARY = '加载第三方库中的全局变量'
+
+DEBUG_MEMORY_LEAK = '{} 很抱歉发生了严重的内存泄漏,语言服务即将重启。'
+DEBUG_RESTART_NOW = '立即重启'
diff --git a/server-beta/src/config.lua b/server-beta/src/config.lua
new file mode 100644
index 00000000..2da1762d
--- /dev/null
+++ b/server-beta/src/config.lua
@@ -0,0 +1,194 @@
+local util = require 'utility'
+local DiagnosticDefaultSeverity = require 'define.DiagnosticDefaultSeverity'
+
+local function Boolean(v)
+ if type(v) == 'boolean' then
+ return true, v
+ end
+ return false
+end
+
+local function Integer(v)
+ if type(v) == 'number' then
+ return true, math.floor(v)
+ end
+ return false
+end
+
+local function String(v)
+ return true, tostring(v)
+end
+
+local function Str2Hash(sep)
+ return function (v)
+ if type(v) == 'string' then
+ local t = {}
+ for s in v:gmatch('[^'..sep..']+') do
+ t[s] = true
+ end
+ return true, t
+ end
+ if type(v) == 'table' then
+ local t = {}
+ for _, s in ipairs(v) do
+ if type(s) == 'string' then
+ t[s] = true
+ end
+ end
+ return true, t
+ end
+ return false
+ end
+end
+
+local function Array(checker)
+ return function (tbl)
+ if type(tbl) ~= 'table' then
+ return false
+ end
+ local t = {}
+ for _, v in ipairs(tbl) do
+ local ok, result = checker(v)
+ if ok then
+ t[#t+1] = result
+ end
+ end
+ return true, t
+ end
+end
+
+local function Hash(keyChecker, valueChecker)
+ return function (tbl)
+ if type(tbl) ~= 'table' then
+ return false
+ end
+ local t = {}
+ for k, v in pairs(tbl) do
+ local ok1, key = keyChecker(k)
+ local ok2, value = valueChecker(v)
+ if ok1 and ok2 then
+ t[key] = value
+ end
+ end
+ if not next(t) then
+ return false
+ end
+ return true, t
+ end
+end
+
+local function Or(...)
+ local checkers = {...}
+ return function (obj)
+ for _, checker in ipairs(checkers) do
+ local suc, res = checker(obj)
+ if suc then
+ return true, res
+ end
+ end
+ return false
+ end
+end
+
+local ConfigTemplate = {
+ runtime = {
+ version = {'Lua 5.3', String},
+ library = {{}, Str2Hash ';'},
+ path = {{
+ "?.lua",
+ "?/init.lua",
+ "?/?.lua"
+ }, Array(String)},
+ },
+ diagnostics = {
+ enable = {true, Boolean},
+ globals = {{}, Str2Hash ';'},
+ disable = {{}, Str2Hash ';'},
+ severity = {
+ util.deepCopy(DiagnosticDefaultSeverity),
+ Hash(String, String),
+ },
+ },
+ workspace = {
+ ignoreDir = {{}, Str2Hash ';'},
+ ignoreSubmodules= {true, Boolean},
+ useGitIgnore = {true, Boolean},
+ maxPreload = {300, Integer},
+ preloadFileSize = {100, Integer},
+ library = {{}, Hash(
+ String,
+ Or(Boolean, Array(String))
+ )}
+ },
+ completion = {
+ enable = {true, Boolean},
+ callSnippet = {true, Boolean},
+ },
+ plugin = {
+ enable = {false, Boolean},
+ path = {'.vscode/lua-plugin/*.lua', String},
+ },
+}
+
+local OtherTemplate = {
+ associations = {{}, Hash(String, String)},
+ exclude = {{}, Hash(String, Boolean)},
+}
+
+local Config, Other
+
+local function init()
+ if Config then
+ return
+ end
+
+ Config = {}
+ for c, t in pairs(ConfigTemplate) do
+ Config[c] = {}
+ for k, info in pairs(t) do
+ Config[c][k] = info[1]
+ end
+ end
+
+ Other = {}
+ for k, info in pairs(OtherTemplate) do
+ Other[k] = info[1]
+ end
+end
+
+local function setConfig(self, config, other)
+ xpcall(function ()
+ for c, t in pairs(config) do
+ for k, v in pairs(t) do
+ local region = ConfigTemplate[c]
+ if region then
+ local info = region[k]
+ local suc, v = info[2](v)
+ if suc then
+ Config[c][k] = v
+ else
+ Config[c][k] = info[1]
+ end
+ end
+ end
+ end
+ for k, v in pairs(other) do
+ local info = OtherTemplate[k]
+ local suc, v = info[2](v)
+ if suc then
+ Other[k] = v
+ else
+ Other[k] = info[1]
+ end
+ end
+ log.debug('Config update: ', util.dump(Config), util.dump(Other))
+ end, log.error)
+end
+
+init()
+
+return {
+ setConfig = setConfig,
+ config = Config,
+ other = Other,
+}
diff --git a/server-beta/src/define/DiagnosticDefaultSeverity.lua b/server-beta/src/define/DiagnosticDefaultSeverity.lua
new file mode 100644
index 00000000..cc26cab2
--- /dev/null
+++ b/server-beta/src/define/DiagnosticDefaultSeverity.lua
@@ -0,0 +1,21 @@
+return {
+ ['unused-local'] = 'Hint',
+ ['unused-function'] = 'Hint',
+ ['undefined-global'] = 'Warning',
+ ['global-in-nil-env'] = 'Warning',
+ ['unused-label'] = 'Hint',
+ ['unused-vararg'] = 'Hint',
+ ['trailing-space'] = 'Hint',
+ ['redefined-local'] = 'Hint',
+ ['newline-call'] = 'Information',
+ ['redundant-parameter'] = 'Hint',
+ ['ambiguity-1'] = 'Warning',
+ ['lowercase-global'] = 'Information',
+ ['undefined-env-child'] = 'Information',
+ ['duplicate-index'] = 'Warning',
+ ['duplicate-method'] = 'Warning',
+ ['empty-block'] = 'Hint',
+ ['redundant-value'] = 'Hint',
+ ['emmy-lua'] = 'Warning',
+ ['set-const'] = 'Error',
+}
diff --git a/server-beta/src/define/DiagnosticSeverity.lua b/server-beta/src/define/DiagnosticSeverity.lua
new file mode 100644
index 00000000..05bd3659
--- /dev/null
+++ b/server-beta/src/define/DiagnosticSeverity.lua
@@ -0,0 +1,6 @@
+return {
+ Error = 1,
+ Warning = 2,
+ Information = 3,
+ Hint = 4,
+}
diff --git a/server-beta/src/language.lua b/server-beta/src/language.lua
new file mode 100644
index 00000000..3294c5b2
--- /dev/null
+++ b/server-beta/src/language.lua
@@ -0,0 +1,136 @@
+local fs = require 'bee.filesystem'
+local lni = require 'lni'
+
+local function supportLanguage()
+ local list = {}
+ for path in (ROOT / 'locale'):list_directory() do
+ if fs.is_directory(path) then
+ list[#list+1] = path:filename():string():lower()
+ end
+ end
+ return list
+end
+
+local function osLanguage()
+ return LANG:lower()
+end
+
+local function getLanguage(id)
+ local support = supportLanguage()
+ -- 检查是否支持语言
+ if support[id] then
+ return id
+ end
+ -- 根据语言的前2个字母来找近似语言
+ for _, lang in ipairs(support) do
+ if lang:sub(1, 2) == id:sub(1, 2) then
+ return lang
+ end
+ end
+ -- 使用英文
+ return 'enUS'
+end
+
+local function loadFileByLanguage(name, language)
+ local path = ROOT / 'locale' / language / (name .. '.lni')
+ local buf = io.load(path)
+ if not buf then
+ return {}
+ end
+ local suc, tbl = xpcall(lni, log.error, buf, path:string())
+ if not suc then
+ return {}
+ end
+ return tbl
+end
+
+local function formatAsArray(str, ...)
+ local index = 0
+ local args = {...}
+ return str:gsub('%{(.-)%}', function (pat)
+ local id, fmt
+ local pos = pat:find(':', 1, true)
+ if pos then
+ id = pat:sub(1, pos-1)
+ fmt = pat:sub(pos+1)
+ else
+ id = pat
+ fmt = 's'
+ end
+ id = tonumber(id)
+ if not id then
+ index = index + 1
+ id = index
+ end
+ return ('%'..fmt):format(args[id])
+ end)
+end
+
+local function formatAsTable(str, ...)
+ local args = ...
+ return str:gsub('%{(.-)%}', function (pat)
+ local id, fmt
+ local pos = pat:find(':', 1, true)
+ if pos then
+ id = pat:sub(1, pos-1)
+ fmt = pat:sub(pos+1)
+ else
+ id = pat
+ fmt = 's'
+ end
+ if not id then
+ return
+ end
+ return ('%'..fmt):format(args[id])
+ end)
+end
+
+local function loadLang(name, language)
+ local tbl = loadFileByLanguage(name, 'en-US')
+ if language ~= 'en-US' then
+ local other = loadFileByLanguage(name, language)
+ for k, v in pairs(other) do
+ tbl[k] = v
+ end
+ end
+ return setmetatable(tbl, {
+ __index = function (self, key)
+ self[key] = key
+ return key
+ end,
+ __call = function (self, key, ...)
+ local str = self[key]
+ local suc, res
+ if type(...) == 'table' then
+ suc, res = pcall(formatAsTable, str, ...)
+ else
+ suc, res = pcall(formatAsArray, str, ...)
+ end
+ if suc then
+ return res
+ else
+ -- 这里不能使用翻译,以免死循环
+ log.warn(('[%s][%s-%s] formated error: %s'):format(
+ language, name, key, str
+ ))
+ return str
+ end
+ end,
+ })
+end
+
+local function init()
+ local id = osLanguage()
+ local language = getLanguage(id)
+ log.info(('VSC language: %s'):format(id))
+ log.info(('LS language: %s'):format(language))
+ return setmetatable({ id = language }, {
+ __index = function (self, name)
+ local tbl = loadLang(name, language)
+ self[name] = tbl
+ return tbl
+ end,
+ })
+end
+
+return init()
diff --git a/server-beta/src/proto/provider.lua b/server-beta/src/proto/provider.lua
index 38428362..f5636a2f 100644
--- a/server-beta/src/proto/provider.lua
+++ b/server-beta/src/proto/provider.lua
@@ -1,13 +1,19 @@
-local util = require 'utility'
-local cap = require 'proto.capability'
-local pub = require 'pub'
-local task = require 'task'
-local files = require 'files'
-local proto = require 'proto.proto'
-local inte = require 'proto.interface'
+local util = require 'utility'
+local cap = require 'proto.capability'
+local pub = require 'pub'
+local task = require 'task'
+local files = require 'files'
+local proto = require 'proto.proto'
+local inte = require 'proto.interface'
+local workspace = require 'workspace'
proto.on('initialize', function (params)
--log.debug(util.dump(params))
+ if params.workspaceFolders then
+ local name = params.workspaceFolders[1].name
+ local uri = params.workspaceFolders[1].uri
+ workspace.init(name, uri)
+ end
return {
capabilities = cap.initer,
}
diff --git a/server-beta/src/workspace/init.lua b/server-beta/src/workspace/init.lua
new file mode 100644
index 00000000..7cbe15d7
--- /dev/null
+++ b/server-beta/src/workspace/init.lua
@@ -0,0 +1,3 @@
+local workspace = require 'workspace.workspace'
+
+return workspace
diff --git a/server-beta/src/workspace/workspace.lua b/server-beta/src/workspace/workspace.lua
new file mode 100644
index 00000000..d3669031
--- /dev/null
+++ b/server-beta/src/workspace/workspace.lua
@@ -0,0 +1,9 @@
+local m = {}
+m.type = 'workspace'
+
+function m.init(name, uri)
+ m.name = name
+ m.uri = uri
+end
+
+return m